Overslaan naar inhoud

Wachtrijbeheer met Ultralytics YOLOv8 šŸš€

Wat is wachtrijmanagement?

Wachtrijmanagement met behulp van Ultralytics YOLOv8 Het gaat om het organiseren en controleren van rijen mensen of voertuigen om wachttijden te verkorten en de efficiƫntie te verbeteren. Het gaat om het optimaliseren van wachtrijen om de klanttevredenheid en de systeemprestaties te verbeteren in verschillende omgevingen zoals de detailhandel, banken, luchthavens en gezondheidszorg.



Kijken: Wachtrijmanagement implementeren met Ultralytics YOLOv8 | Luchthaven en metrostation

Voordelen van wachtrijmanagement?

  • Kortere wachttijden: Wachtrijbeheersystemen organiseren wachtrijen efficiĆ«nt, waardoor de wachttijden voor klanten tot een minimum worden beperkt. Dit leidt tot een grotere tevredenheid omdat klanten minder tijd kwijt zijn met wachten en meer tijd overhouden voor producten of diensten.
  • Verhoogde efficiĆ«ntie: Door wachtrijmanagement te implementeren kunnen bedrijven hun middelen effectiever toewijzen. Door wachtrijgegevens te analyseren en de inzet van personeel te optimaliseren, kunnen bedrijven hun activiteiten stroomlijnen, kosten verlagen en de algehele productiviteit verbeteren.

Toepassingen in de echte wereld

Logistiek Detailhandel
Wachtrijbeheer bij ticketbalie op luchthaven met behulp van Ultralytics YOLOv8 Wachtrijbewaking in mensenmassa's met behulp van Ultralytics YOLOv8
Wachtrijbeheer bij ticketbalie op luchthaven Gebruiken Ultralytics YOLOv8 Wachtrijbewaking in menigte Ultralytics YOLOv8

Wachtrijbeheer met YOLOv8 Voorbeeld

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

video_writer = cv2.VideoWriter("queue_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

queue = solutions.QueueManager(
    names=model.names,
    reg_pts=queue_region,
    line_thickness=3,
    fontsize=1.0,
    region_color=(255, 144, 31),
)

while cap.isOpened():
    success, im0 = cap.read()

    if success:
        tracks = model.track(im0, show=False, persist=True, verbose=False)
        out = queue.process_queue(im0, tracks)

        video_writer.write(im0)
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
        continue

    print("Video frame is empty or video processing has been successfully completed.")
    break

cap.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

video_writer = cv2.VideoWriter("queue_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

queue = solutions.QueueManager(
    names=model.names,
    reg_pts=queue_region,
    line_thickness=3,
    fontsize=1.0,
    region_color=(255, 144, 31),
)

while cap.isOpened():
    success, im0 = cap.read()

    if success:
        tracks = model.track(im0, show=False, persist=True, verbose=False, classes=0)  # Only person class
        out = queue.process_queue(im0, tracks)

        video_writer.write(im0)
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
        continue

    print("Video frame is empty or video processing has been successfully completed.")
    break

cap.release()
cv2.destroyAllWindows()

Argumenten QueueManager

Naam Type Standaard Beschrijving
names dict model.names Een woordenboek dat klassen-ID's aan klassenamen koppelt.
reg_pts list of tuples [(20, 400), (1260, 400)] Punten die de veelhoek van het telgebied definiƫren. Standaard een voorgedefinieerde rechthoek.
line_thickness int 2 Dikte van de annotatielijnen.
track_thickness int 2 Dikte van de spoorlijnen.
view_img bool False Of de afbeeldingsframes moeten worden weergegeven.
region_color tuple (255, 0, 255) Kleur van de telgebiedlijnen (BGR).
view_queue_counts bool True Of de wachtrijtellingen moeten worden weergegeven.
draw_tracks bool False Of sporen van de objecten moeten worden getekend.
count_txt_color tuple (255, 255, 255) Kleur van de teltekst (BGR).
track_color tuple None Kleur van de sporen. Als NoneVerschillende kleuren worden gebruikt voor verschillende sporen.
region_thickness int 5 Dikte van de lijnen van het telgebied.
fontsize float 0.7 Lettergrootte voor de tekstannotaties.

Argumenten model.track

Naam Type Standaard Beschrijving
source im0 None bronmap voor afbeeldingen of video's
persist bool False Blijvende sporen tussen frames
tracker str botsort.yaml Volgmethode 'bytetrack' of 'botsort'
conf float 0.3 Vertrouwensdrempel
iou float 0.5 Drempel IOU
classes list None filter resultaten op klasse, d.w.z. classes=0, of classes=[0,2,3]
verbose bool True De resultaten van het volgen van objecten weergeven

FAQ

Hoe kan ik Ultralytics YOLOv8 gebruiken voor real-time wachtrijbeheer?

Om Ultralytics YOLOv8 te gebruiken voor real-time wachtrijbeheer, kun je de volgende stappen volgen:

  1. Laad het YOLOv8 model met YOLO("yolov8n.pt").
  2. Leg de videofeed vast met cv2.VideoCapture.
  3. Definieer het interessegebied (ROI) voor wachtrijbeheer.
  4. Frames verwerken om objecten te detecteren en wachtrijen te beheren.

Hier is een minimaal voorbeeld:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video.mp4")
queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

queue = solutions.QueueManager(
    names=model.names,
    reg_pts=queue_region,
    line_thickness=3,
    fontsize=1.0,
    region_color=(255, 144, 31),
)

while cap.isOpened():
    success, im0 = cap.read()
    if success:
        tracks = model.track(im0, show=False, persist=True, verbose=False)
        out = queue.process_queue(im0, tracks)
        cv2.imshow("Queue Management", im0)
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break

cap.release()
cv2.destroyAllWindows()

Door gebruik te maken van Ultralytics HUB kun je dit proces stroomlijnen door een gebruiksvriendelijk platform te bieden voor het implementeren en beheren van je oplossing voor wachtrijbeheer.

Wat zijn de belangrijkste voordelen van het gebruik van Ultralytics YOLOv8 voor wachtrijbeheer?

Het gebruik van Ultralytics YOLOv8 voor wachtrijbeheer biedt verschillende voordelen:

  • Dalende wachttijden: Organiseert wachtrijen op een efficiĆ«nte manier, waardoor de wachttijd voor klanten afneemt en de tevredenheid toeneemt.
  • EfficiĆ«ntie verbeteren: Analyseert wachtrijgegevens om de inzet van personeel en werkzaamheden te optimaliseren en zo kosten te besparen.
  • Real-time waarschuwingen: Biedt realtime meldingen voor lange wachtrijen, zodat er snel kan worden ingegrepen.
  • Schaalbaarheid: Gemakkelijk schaalbaar in verschillende omgevingen, zoals winkels, luchthavens en de gezondheidszorg.

Bekijk voor meer informatie onze oplossingen voor wachtrijbeheer.

Waarom zou ik kiezen voor Ultralytics YOLOv8 in plaats van concurrenten zoals TensorFlow of Detectron2 voor wachtrijbeheer?

Ultralytics YOLOv8 heeft verschillende voordelen ten opzichte van TensorFlow en Detectron2 voor wachtrijbeheer:

  • Real-time prestaties: YOLOv8 staat bekend om zijn real-time detectiemogelijkheden en biedt hogere verwerkingssnelheden.
  • Gebruiksgemak: Ultralytics biedt een gebruiksvriendelijke ervaring, van training tot implementatie, via Ultralytics HUB.
  • Voorgetrainde modellen: Toegang tot een reeks voorgetrainde modellen, waardoor de tijd die nodig is voor het instellen tot een minimum wordt beperkt.
  • Ondersteuning door de gemeenschap: Uitgebreide documentatie en actieve ondersteuning van de community maken het oplossen van problemen eenvoudiger.

Leer hoe je aan de slag kunt met Ultralytics YOLO.

Kan Ultralytics YOLOv8 meerdere soorten wachtrijen aan, zoals op luchthavens en in de detailhandel?

Ja, Ultralytics YOLOv8 kan verschillende soorten wachtrijen beheren, waaronder die in luchthavens en winkelomgevingen. Door de QueueManager te configureren met specifieke regio's en instellingen, kan YOLOv8 zich aanpassen aan verschillende wachtrij-indelingen en dichtheden.

Voorbeeld voor luchthavens:

queue_region_airport = [(50, 600), (1200, 600), (1200, 550), (50, 550)]
queue_airport = solutions.QueueManager(
    names=model.names,
    reg_pts=queue_region_airport,
    line_thickness=3,
    fontsize=1.0,
    region_color=(0, 255, 0),
)

Bekijk voor meer informatie over diverse toepassingen onze sectie Toepassingen in de echte wereld.

Wat zijn enkele reƫle toepassingen van Ultralytics YOLOv8 in wachtrijmanagement?

Ultralytics YOLOv8 wordt gebruikt in verschillende echte toepassingen voor wachtrijbeheer:

  • Detailhandel: Bewaakt kassalijnen om wachttijden te verkorten en de klanttevredenheid te verbeteren.
  • Luchthavens: Beheert wachtrijen bij ticketbalies en veiligheidscontroles voor een soepelere passagierservaring.
  • Gezondheidszorg: Optimaliseert de patiĆ«ntenstroom in klinieken en ziekenhuizen.
  • Banken: Verbetert de klantenservice door wachtrijen in banken efficiĆ«nt te beheren.

Bekijk onze blog over echt wachtrijbeheer voor meer informatie.



Gemaakt op 2024-04-02, Bijgewerkt op 2024-07-14
Auteurs: RizwanMunawar (1), glenn-jocher (5), IvorZhu331 (1), Burhan-Q (1)

Reacties