YOLOv8 Object Counting in Real-time with Webcam, OpenCV and Supervision

Поділитися
Вставка
  • Опубліковано 8 чер 2024
  • Curious about how to build an application capable of detecting objects on a camera stream in real time? You are in the right place! Together we will learn how to access the webcam using OpenCV, detect objects with YOLOv8, and count them with Supervision.
    Chapters:
    0:00 Introduction
    0:38 Webcam inference with YOLOv8 CLI
    02:12 Accessing webcam with OpenCV
    07:05 Webcam inference with YOLOv8 SDK
    08:25 Drawing bounding boxes
    10:05 Using polygon zones to count detections
    14:28 Eliminating double detections with agnostic NMS
    16:07 Few extra tricks
    18:59 Conclusion
    Resources:
    🌏 Roboflow: roboflow.com
    🌌 Roboflow Universe: universe.roboflow.com
    📷 Demo repository: github.com/SkalskiP/yolov8-live
    🤩 Supervision documentation: roboflow.github.io/supervision
    ⭐ Supervision repository: github.com/roboflow/supervision
    Stay updated with the projects I'm working on at github.com/roboflow and github.com/SkalskiP! ⭐
  • Наука та технологія

КОМЕНТАРІ • 278

  • @pcsolutionsezcloudsystems5929
    @pcsolutionsezcloudsystems5929 Рік тому +14

    I get this error: "...too many values to unpack (expected 4)" pointing inside the labels array. Why am I getting this error this error? What should I do to fix it? :)
    pip list: ...numpy 1.24.2, torch 2.0.0, torchvision 0.15.1, ultralytics 8.0.82, supervision 0.6.0

    • @Roboflow
      @Roboflow  Рік тому +9

      Please downgrade supervision to version 0.3.0

    • @NoName-un2qr
      @NoName-un2qr Рік тому +3

      @@Roboflow This comment needs to be pinned. Thank you!!

    • @Roboflow
      @Roboflow  Рік тому +1

      @@NoName-un2qr is it possible to pin 📌 comment?

    • @NoName-un2qr
      @NoName-un2qr Рік тому +2

      @@Roboflow Yes. You should have the option when click the 3 dots near his comment.
      Once again thank you very much for the video. It was great!

    • @Roboflow
      @Roboflow  Рік тому +2

      @@NoName-un2qr awesome! Done! ✅

  • @onyekaokonji28
    @onyekaokonji28 Рік тому +13

    Your content has become the best content I've watched on YT in a while and I love the Supervision package, it's making my work easier. Thanks

    • @SkalskiP
      @SkalskiP Рік тому

      Hi 👋! It's Peter from the video. You have no idea how happy I am to read things like that. Thanks a lot for saying that. It is really motivating.

  • @SphinxKingStone
    @SphinxKingStone 11 місяців тому +1

    omg thank you so much, everyone is using yolo on it's own and not with OpenCV and that's exactly what I needed

  • @UZMAALFATMI
    @UZMAALFATMI 7 місяців тому +1

    Well explained @Peter. Useful and informative video that can cover multiple use-cases. Thanks a lot!

    • @Roboflow
      @Roboflow  7 місяців тому

      Thanks a lot for kind words! 🔥

  • @phamtienthinh1795
    @phamtienthinh1795 4 місяці тому

    It's so cool, thank you for showing basic function to work with YOLO, i'm having a small task that required learning object detection and I was frustrated to find some tutorial, this was really a big help

  • @user-xo5pe4le7i
    @user-xo5pe4le7i 3 місяці тому

    God bless you, you have made my life much easier. Keep up the good work

  • @wishnu8358
    @wishnu8358 Рік тому +3

    Hi, your video is great. I've been using your code with my own model to count bacteria inside the zone and it works perfectly! Thank you for sharing the knowledge.

    • @Roboflow
      @Roboflow  Рік тому

      You’ve been using Supervision to count bacteria? This is awesome! I’d love to take a look.

    • @fcgfgfgh
      @fcgfgfgh Рік тому +1

      how can i use my model insted of importing yolov8 from ultralytics ?

    • @Roboflow
      @Roboflow  Рік тому

      @@fcgfgfgh is that model a custom YOLOv8 or any other? If other, than what's the model??

    • @houdabekkourialami3581
      @houdabekkourialami3581 4 місяці тому

      If it's a custom yolov8 model then how can i do it?

  • @user-ew5nl9bo4l
    @user-ew5nl9bo4l Місяць тому

    Great video sir....!. Mass respect from India ...!

  • @user-qq4hm9ov3o
    @user-qq4hm9ov3o 3 місяці тому +1

    it was great to see how easy is it to remove a class from detections! Great job @roboflow!😁

    • @Roboflow
      @Roboflow  3 місяці тому

      Thanks a lot! Glad you liked Supervision utilities;)

  • @tomaszbazelczuk4987
    @tomaszbazelczuk4987 Рік тому +2

    Great stuff Piotr!!!

  • @tharunm4802
    @tharunm4802 Рік тому +1

    Thank you so much bro.... Very helpful 🙂👍

    • @Roboflow
      @Roboflow  Рік тому

      I'm super happy to hear that!

  • @amirsabbagh2974
    @amirsabbagh2974 Рік тому

    That was great, thanks!

  • @chetanmundhe7899
    @chetanmundhe7899 8 місяців тому +1

    Great, thanks for this. Keep doing.

    • @Roboflow
      @Roboflow  8 місяців тому

      Thanks a lot! 🙏🏻

  • @Jkfyr99
    @Jkfyr99 Рік тому +1

    these videos are amazing

  • @danielmeshulam8013
    @danielmeshulam8013 Рік тому +1

    thank you for this video! very helpful.
    but i am a problem. the line "import cv2" in not identified what should i do?

  • @joffreveloz2410
    @joffreveloz2410 3 місяці тому +1

    Exlente video he aprendido mucho

  • @geronimomorales
    @geronimomorales 7 місяців тому

    Hi Peter. I have a question regarding filtering detections. Filtering sv.Detections is the same as passing class ids as additional argument in the predict method or there are some performance issue with the second alternative?

  • @gisanimrahma7803
    @gisanimrahma7803 10 місяців тому +1

    Hi, thank you for the tutorial. I'm working on my project right now and it helps me a lot. But this project require me to know the fps, is there a way to show it?

  • @augbir
    @augbir 6 місяців тому

    Impressive mate!

  • @abdshomad
    @abdshomad Рік тому +3

    Always love your content and its small jokes when things go wrong. Thank you!
    👍++

    • @SkalskiP
      @SkalskiP Рік тому +1

      Hello it is Peter from the video :) Uf... I was worried that I'm the only one who find those jokes funny hahaha

    • @abdshomad
      @abdshomad Рік тому +1

      @@SkalskiP the delay, pause and its silence/cricket sounds make the mistakes (and its solutions) long lasting in our memory. Like it alot! 😁

    • @SkalskiP
      @SkalskiP Рік тому

      @@abdshomad I'll keep that in mind next time when I'll make some spectacular mistake. Given that you are frequent viewer what do you think about the format of this video? I code in editor instead notebook. And I write the code instead of just explaining what I did?

    • @abdshomad
      @abdshomad Рік тому +1

      @@SkalskiP Thank you. Firstly, better explain in it vs code. Cleaner. But... please also show it runs on Colab. Roboflow Notebooks are very helpful. Colab helpful for quick POC. We dont have to prepare venv, conda, pip install huge packages (pytorch, detectron, etc).

    • @SkalskiP
      @SkalskiP Рік тому +1

      @@abdshomad thanks a lot for your opinion. I also need to balance it all out not to make suuuuper long videos. But I see your point. VS code is a lot cleaner when it comes to explaining the code. On the other hand notebooks are super convenient. This time no notebook, as you need to have access to GPU. But there is repo with example ;)

  • @amirsabbagh2974
    @amirsabbagh2974 Рік тому +2

    When the number of objects increases, my model does not display the label format that I specified and only displays the object code, how can I display the specified label in any case?

  • @SoroorMalekmohamadi
    @SoroorMalekmohamadi Рік тому +1

    That's a fantastic tutorial! Thank you so much!
    I have a question: if it's possible for you to guide me on how to implement re-identification (or maybe re-tracking) of the same object with YOLOv8?

    • @Roboflow
      @Roboflow  Рік тому +1

      Create a new thread here: github.com/roboflow/notebooks/discussions/categories/q-a I'll try to help you out. I'm really busy but I'll try to do my best.

  • @zetacode5925
    @zetacode5925 Рік тому +1

    Thank you so much for this amazing tutorial! I have a question: I'm interested in extracting the results from a frame like the result, specifically the count of objects and their corresponding types, and then outputting them in JSON format. Do you have any suggestions or ideas on how I can accomplish this?

  • @renatoherrig776
    @renatoherrig776 10 місяців тому

    Is it possible I change the "zone_annotator = sv.PolygonZoneAnnotator(zone=zone,color=sv.Color.white(),thickness=2,text_thickness=4,text_scale=2)" position. For example, display the red box with the object number on the left/bottom side on the screen?

  • @kiangg8964
    @kiangg8964 Рік тому +2

    Is it possible to do multiple polygon zones inside 1 frame?

  • @wei48221
    @wei48221 Рік тому +2

    Awesome!!

    • @SkalskiP
      @SkalskiP Рік тому

      Hi! It is Peter from the video! I'm super happy you liked it :))

  • @vickyfikriachri2311
    @vickyfikriachri2311 Місяць тому

    Thanks for your complete step by step coding video. Kinna like it. I followed yolo since v3, but never know we can filter out hand or other unrelated object to be detected

  • @jong_jh
    @jong_jh Рік тому +2

    thank you !

  • @mahmutkamalak601
    @mahmutkamalak601 Рік тому

    Hello , thank you for great video. I would like to know if I can save the results as a time-stamped data in csv format. If you respond, it makes me pleasure. Best regards

  • @newjx
    @newjx Рік тому +1

    Master piece

  • @yashmoondhra8309
    @yashmoondhra8309 7 місяців тому

    Awesome!

  • @NOXRTGAMING
    @NOXRTGAMING Рік тому +1

    hi how can i desactivite de log in the console ?? like exaple all this "0: 384x640 1 person, 1 chair, 4 potted plants, 1 bed, 37.0ms
    Speed: 1.0ms preprocess, 37.0ms inference, 5.0ms postprocess per image at shape (1, 3, 640, 640)
    0: 384x640 1 person, 1 chair, 4 potted plants, 1 bed, 35.0ms
    Speed: 2.0ms preprocess, 35.0ms inference, 3.0ms postprocess per image at shape (1, 3, 640, 640)" thank you !

  • @tuananhtran7518
    @tuananhtran7518 5 місяців тому

    What version of Ubuntu and ros are using in your video ?❤

  • @jayarajdhanapriya5938
    @jayarajdhanapriya5938 Рік тому +1

    Hi @SkalskiP , that was a wonderful explanation. Is it possible to track the objects that comes in or goes out using a polygon zone like you did using a line in your earlier video? If yes, how can i get the count of objects (in/out) separately for each class.

    • @Roboflow
      @Roboflow  Рік тому +1

      We do not have that feature yet, but it sounds useful. Would you be kind enough and create an issue in the supervision repo: github.com/roboflow/supervision/issues ?

    • @jayarajdhanapriya5938
      @jayarajdhanapriya5938 Рік тому +1

      Done. Thanks for the response!

    • @Roboflow
      @Roboflow  Рік тому

      @@jayarajdhanapriya5938 thanks a lot 🙏🏻

  • @MedexRND
    @MedexRND 2 місяці тому +1

    Hello sir,
    How can I develop real-time webcam functionality using a dataset I've created?

  • @lphonehacks
    @lphonehacks 12 днів тому

    how do you create a virtual environment at 00:45? on my end it says invalid syntax

  • @muhammedenesgurkan1365
    @muhammedenesgurkan1365 6 місяців тому

    I have an error: i caanot use boxannotator and detections it says unused reference initpy

  • @SuperGugax
    @SuperGugax Рік тому +1

    I absolutely love your videos! YOLO is indeed amazing. But I do have a question: How do I do it so that I can only detect and count people (whether it's a webcam feed or a video)?

    • @Roboflow
      @Roboflow  Рік тому +1

      You can try adding detections = detections[detections.class_id == 0] ?

    • @SuperGugax
      @SuperGugax Рік тому

      @@Roboflow I guess that makes sense, silly me 😅 Thx for the reply, btw! Help is always appreciated 😊

  • @seanolivieri4829
    @seanolivieri4829 6 місяців тому

    I keep getting 2 detections for the same class even after writing agnostic_nms=True is there a way to say: Just detect 1 of each class in the whole window, the one with higher confidence?

  • @jarjar621
    @jarjar621 9 місяців тому

    dont know what version of python you are using. im using 3.9 and i cant install specific version of ultralytics

  • @subhashgupta1596
    @subhashgupta1596 6 місяців тому

    any idea how to freeze the other classes and take only one class

  • @hchattaway
    @hchattaway Рік тому +2

    I use Linux/Ubuntu as it looks like you're doing.. :) Would you say that within the ML/Vision industry the Linux platform is the most common? I rarely see Windows being used as the platform of choice for this application.

    • @SkalskiP
      @SkalskiP Рік тому +1

      Hi 👋! It's Peter from the video. Yup, I used my Linux PC for this video, as I needed access to my GPU locally. Usually, I record stuff in colab on my Mac. All in all I'd say that most of the people I worked with use Mac or Linux. Windows is for sure the least frequently used.

  • @talhanadeem8664
    @talhanadeem8664 2 місяці тому

    I am using a windows 11 and it doesn't show me the webcam only the terminal in vscode

  • @Yonglee7015
    @Yonglee7015 7 місяців тому

    how about IP carmera? opencv read via RSTP is very slow.

  • @emrullahurgan
    @emrullahurgan Рік тому +1

    Hi dude, your video is very good. I have a question. I trained a four-label model. I want to show the count of each label in this model separately on the screen. Do you have a suggestion?

    • @Roboflow
      @Roboflow  Рік тому +1

      Thanks a lot for the kind word 🙏🏻 are we talking about per class current count in zone?

    • @emrullahurgan
      @emrullahurgan Рік тому

      @@Roboflow Yes, that's right

  • @user-re1tr8rr5g
    @user-re1tr8rr5g Рік тому +1

    Hello, I have a problem with LineZone in supervision 0.7.0, and it not working. I've tried to follow the same way with your previous video about track and count object, any idea?

    • @Roboflow
      @Roboflow  Рік тому

      Could you describe your problems here: github.com/roboflow/supervision/discussions/categories/q-a? I'll try to help you :)

  • @user-so9en8wz5b
    @user-so9en8wz5b Рік тому +1

    Thank you for video!
    I'm curious about how to write the code to load an ONNX model. I would like to load an ONNX model, but I'm not sure how to do it. When using the code from the video, I encounter an input size error. Are there any helpful videos or resources that I can refer to in this case?

    • @Roboflow
      @Roboflow  Рік тому

      Maybe we should do some ONNX tutorials... 🤔

    • @user-so9en8wz5b
      @user-so9en8wz5b Рік тому

      @@Roboflow ua-cam.com/play/PLZCA39VpuaZZ1cjH4vEIdXIb0dCpZs3Y5.html
      It appears that there are no videos for ONNX models.
      Not much information available...
      Thank you

  • @robertoramos5649
    @robertoramos5649 Рік тому

    is there any way of taking only 4 labels, for example, truck, car, bus and motorcycle instead of only one or all? thanks a lot for sharing ur knowledge!

    • @Roboflow
      @Roboflow  Рік тому +1

      That should work:
      class_ids = np.array[1, 2, 3] #

  • @pcsolutionsezcloudsystems5929
    @pcsolutionsezcloudsystems5929 Рік тому +1

    I don't have NVidia cards (nor can I use CUDA for that matter). How can I make use of the GPU when running the "yolo detect predict..." local inference on processors with UHD Graphics 600 & 630 and Intel N100 & N200 processors?

    • @Roboflow
      @Roboflow  Рік тому +1

      I’m afraid those GPUs are not supported by PyTorch

  • @pcsolutionsezcloudsystems5929
    @pcsolutionsezcloudsystems5929 Рік тому +1

    Is it possible to use the YoloV8 model in .onnx format rather than .pt, for real-time object detection? I only ask thinking the detection/prediction should take less time. And if so, would you be able to make such a video? :)

    • @Roboflow
      @Roboflow  Рік тому +1

      Yeah YOLOv8 can be converted to ONNX. I was even thinking about video like that. Not strictly about ONNX but… optimization. Pruning and quantization… does it sound interesting?

    • @ManuelHernandez-zq5em
      @ManuelHernandez-zq5em Рік тому

      @@Roboflow Yes! Absolutely! Thank you!! 👍

  • @YigalBZ
    @YigalBZ 10 місяців тому

    How to use it with custom class?

  • @zy.r.4323
    @zy.r.4323 Рік тому +1

    Thank you for the video Piotr! How handle multiple camera detections and counting in zone and save results in database. Can you make a video tutorial about it

    • @Roboflow
      @Roboflow  Рік тому

      Hi 👋🏻 we are thinking about showing how to save YOLOv8 detections to CSV. Would that be interesting for you? As for multi stream setup, you think about having single model and multiple streams?

    • @zy.r.4323
      @zy.r.4323 Рік тому +1

      @@Roboflow hi! thanks for ur reply. Saving to csv is great also. I trained custom dataset with 1 class only and need to count it in multiple streams.

    • @Roboflow
      @Roboflow  Рік тому +1

      @@zy.r.4323 sure but I need to ask if you plan to run only one one model for inference, or have one model per one stream?

    • @zy.r.4323
      @zy.r.4323 Рік тому

      @@Roboflow only one model for inference.

    • @Roboflow
      @Roboflow  Рік тому +1

      @@zy.r.4323 let me think about it. I want to add some utilities for supervision.

  • @yonatanarbel281
    @yonatanarbel281 Рік тому +2

    Hi Friend, great tutorial! Cheers for that..
    how can I know the class number of a given item? for example, you know the class number of apple and person.. You got it somewhere probably :)
    where can i see this list so i can filter other items from the list? thanks!

    • @Roboflow
      @Roboflow  Рік тому

      Hi sorry for the late response. I was a bit busy with a new video. Take a look here: github.com/ultralytics/ultralytics/blob/9e58c32c15835e54e57f7b8c925367a64cb94951/ultralytics/datasets/coco128.yaml

    • @yonatanarbel281
      @yonatanarbel281 Рік тому

      @@Roboflow thanks 🙏🏼

  • @body1024
    @body1024 Рік тому +1

    thank you
    i have a question
    i have a trained instance segmentation yolov8 model and also detectron2 model on custom dataset and what i need is to run inference on new data images and use the output to make annotation on the new images and add them to my train dataset by uploading them to my roboflow dataset later
    so is there any way i can do that ?

    • @Roboflow
      @Roboflow  Рік тому

      Hi 👋! Do you need fully automated solution or are okey with manual steps?

    • @body1024
      @body1024 Рік тому +1

      @@Roboflow Yes, anything helpful 🤩

    • @Roboflow
      @Roboflow  Рік тому +1

      @@body1024 we could start by using YOLOv8 CLI to run prediction on your images pyt pass save_txt=True. That should save your predictions in YOLO txt annotation files. You should be able to upload those annotations and images to Roboflow. Let me know if that worked ;)

  • @datatekjung
    @datatekjung Рік тому +2

    It looks awesome. May I use your script, then where can I get it?

    • @Roboflow
      @Roboflow  Рік тому +1

      Of course, you can! This is open source :) Here it is: github.com/SkalskiP/yolov8-live

  • @rajshekhar1036
    @rajshekhar1036 3 місяці тому

    Can it be used to count humans on real if yes can u tell the possible changes

  • @joaquimpereira4995
    @joaquimpereira4995 3 місяці тому +1

    Did they remove yolov8 compatibility from supervision? Mine insists there isn't v8 version only v5

    • @Roboflow
      @Roboflow  3 місяці тому +1

      Now it is called from_ultralytics

  • @user-by4dy8hy6j
    @user-by4dy8hy6j 10 місяців тому

    i wanna clear all my installed dataset and args to make another yolo. how can i do that???? Its a long time problem. PLEASE HEEELP TO CLEAR ALL before making another version!

  • @user-hg2vq1mt4y
    @user-hg2vq1mt4y Рік тому +1

    Hello, thank you for your great video! May i ask you a question, can it be use on yolov7 model?

    • @Roboflow
      @Roboflow  Рік тому

      Yup it can. It will be just a bit mor of work. Because YOLOv7 does not have pip package. But I made stuff like that in the past. It is very much possible.

    • @user-hg2vq1mt4y
      @user-hg2vq1mt4y Рік тому

      @@Roboflow OK, Thank you for the quick response. It means, i need to change several parts on the code to suit yolov7 model, right?

    • @Roboflow
      @Roboflow  Рік тому

      @@user-hg2vq1mt4y First of all what are you planning to do? Is it going to be really time processing? Do you plan to use zones?

    • @user-hg2vq1mt4y
      @user-hg2vq1mt4y Рік тому

      @@Roboflow i am going to do real time object detection (Hand gesture detection) using yolov7 model, but i haven't been able to find a way to do it in using webcam. Hope you can help me :)

    • @Roboflow
      @Roboflow  Рік тому

      @@user-hg2vq1mt4y do you want to runn it as stand alone app or is it part of some larger system?

  • @aytalksenofontov6194
    @aytalksenofontov6194 7 місяців тому +1

    Hi! can I use Yolov8 via a live stream link, not via a connected webcam, only via the player link?

    • @Roboflow
      @Roboflow  7 місяців тому

      Sure! Take a look here: docs.ultralytics.com/modes/predict/?h=rtsp#inference-sources

  • @AdityaSingh-hm8ky
    @AdityaSingh-hm8ky День тому +2

    hi, the pre trained model that u used how can we use if i want to train a custom dataset and then use it? like how to use it for model trained on custom dataset on collab but i want to detect in real time how to get that? can i download the already trained model on collab on my pc?

    • @Roboflow
      @Roboflow  22 години тому

      We have a tutorial where I show how to train YOLOv8 model on custom dataset. At the end of the video I show how to use custom model for inference. Among other things I show where your custom model is saved. You need to to download that file to your local.

  • @soslankudzoev6349
    @soslankudzoev6349 9 місяців тому +1

    @SkalskiP Hi Peter, what operating system are you using?

    • @Roboflow
      @Roboflow  9 місяців тому

      I usually use MacOS, but I used Ubuntu for this video.

  • @steved1122
    @steved1122 7 місяців тому +1

    bonjour merci pour le travail ! tu utilise la version 0.2.0 de supervision mais il n'y a que la versin 0.16.0 de dispo qui ne contient pas la fonction detections.from_yolov8 ! comment puis je faire
    ? merci

    • @Roboflow
      @Roboflow  7 місяців тому

      Hi! All versions are available. You just need to install it like this: pip install supervision==0.2.0

  • @Aron-0-1
    @Aron-0-1 4 місяці тому +1

    Hey @Roboflow can this same model work in Raspberry pi 5 or Nvidia Jetson Nano without any optimization or quantization ?

    • @Roboflow
      @Roboflow  4 місяці тому

      It will 100% run on Jetson Nano

    • @Aron-0-1
      @Aron-0-1 4 місяці тому

      ​@@Roboflow , Hey, i followed every step, in my jetson nano, unfortunately i got an error that "Illegal instruction (core dumped) related to core system incompatibility. Do you have a way i can tweak and handle this. Looking forward to your response. I would really appreciate.
      Thank you again !

  • @pcsolutionsezcloudsystems5929
    @pcsolutionsezcloudsystems5929 Рік тому +1

    I don't know if anyone has requested but, would it be possible for you to do a video using YoloV8 ONNX Object Detection Counting in Real-time with OpenVINO ? That would be one really interesting video to watch!! :)

    • @Roboflow
      @Roboflow  Рік тому

      Both ideas sound awesome! Added to long list of ideas :)

    • @pcsolutionsezcloudsystems5929
      @pcsolutionsezcloudsystems5929 Рік тому

      @@Roboflow Yeah! Reason is, there are many low cost miniPC's with Intel processors and, OpenVINO can make use of their integrated GPU's. OpenVINO can be installed with one 'pip' command and that's it. So you doing such a video would be superb!

  • @gWK-lm5du
    @gWK-lm5du Рік тому +1

    Is there a way to get the coordinates of the bounding box in real time from Supervision or YOLOV8 itself?

    • @Roboflow
      @Roboflow  Рік тому

      `detections.xyxy` - it is `numpy` array with coordinates

    • @gWK-lm5du
      @gWK-lm5du Рік тому

      @@Roboflow Thanks☺️ I wanna use yolov8 for my project! Thanks to you. Maybe I will do my best!

  • @maiquelkappel7745
    @maiquelkappel7745 Рік тому +1

    Congratulations on the job. Can you make a video of yolov8, mss and numpay, capturing the image directly from the monitor screen?

    • @Roboflow
      @Roboflow  Рік тому

      You ask if we can do it or if that is possible?

    • @maiquelkappel7745
      @maiquelkappel7745 Рік тому

      @@Roboflow It is possible, because I already use a script made in python and yolov5, which detects objects on the monitor screen. But there were profound changes in yolov8 and my script stopped working with the new version of yolov. Thanks for the quick response buddy.

    • @maiquelkappel7745
      @maiquelkappel7745 Рік тому

      So I ask, do you know how to do it?

    • @Roboflow
      @Roboflow  Рік тому

      @@maiquelkappel7745 I can see us making video about it but I think we won’t do it soon. We have a lot on our TODO list.

    • @maiquelkappel7745
      @maiquelkappel7745 Рік тому +1

      @@Roboflow Okay, thanks anyway for your attention!

  • @juanolano2818
    @juanolano2818 Рік тому +4

    Thank you for this great tutorial! May be you can help me with this error I am getting? When I run the main with the "results = model(frame)" line added, it is throwing the following error (see below). If I use YOLOv5, it works perfect, but with YOLOv8 it throws this error. I have created a virtual environment and followed the tutorial step by step. Any ideas? Thanks!
    OSError Traceback (most recent call last)
    Cell In [16], line 22
    19 break;
    21 if __name__ == "__main__":
    ---> 22 main(model)
    Cell In [16], line 10, in main(model)
    7 ret, frame = cap.read()
    8 assert ret
    ---> 10 result = model(frame)
    12 cv2.imshow("yolov8", frame)
    14 k = cv2.waitKey(1)
    File c:\Python38\lib\site-packages\ultralytics\yolo\engine\model.py:58, in YOLO.__call__(self, source, **kwargs)
    57 def __call__(self, source, **kwargs):
    ---> 58 return self.predict(source, **kwargs)
    File c:\Python38\lib\site-packages\torch\autograd\grad_mode.py:27, in _DecoratorContextManager.__call__..decorate_context(*args, **kwargs)
    24 @functools.wraps(func)
    25 def decorate_context(*args, **kwargs):
    26 with self.clone():
    ---> 27 return func(*args, **kwargs)
    File c:\Python38\lib\site-packages\ultralytics\yolo\engine\model.py:130, in YOLO.predict(self, source, **kwargs)
    ...
    --> 205 s = self._ext_to_normal(_getfinalpathname(s))
    206 except FileNotFoundError:
    207 previous_s = s
    OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '[[[ 69 76 103]
    [ 67 75 102]
    [ 65 75 103]
    ...
    [ 56 71 96]
    [ 59 73 98]
    [ 60 73 99]]

    [[ 70 77 103]
    [ 70 77 104]
    [ 67 76 103]
    ...
    [ 59 73 98]
    [ 59 73 98]
    [ 60 73 99]]

    [[ 72 80 104]
    [ 71 78 103]
    [ 70 78 105]
    ...
    [ 62 74 98]
    [ 62 74 98]
    [ 61 73 98]]

    ...

    [[ 59 95 138]
    [ 61 97 139]
    [ 61 97 137]
    ...
    [ 35 48 49]
    [ 33 48 50]
    [ 33 50 51]]

    [[ 59 97 138]
    [ 59 97 138]
    [ 61 99 138]
    ...
    [ 37 49 51]
    [ 37 50 52]
    [ 36 51 53]]

    [[ 60 99 138]
    [ 60 99 138]
    [ 59 99 137]
    ...
    [ 40 50 52]
    [ 39 51 53]
    [ 38 51 53]]]'

    • @SkalskiP
      @SkalskiP Рік тому +1

      Hello 👋! It's Peter from the video. Could you give it another try? I just updated the code.

    • @SkalskiP
      @SkalskiP Рік тому +1

      Unfortunately it was a bit outdated...

    • @juanolano2818
      @juanolano2818 Рік тому +1

      ​@@SkalskiP Thanks for the reply. I found the issue: I was running the code on python3.8.5. I upgraded it to 3.10 and now it works. May be it works since 3.9 . In case you find someone else with a similar issue, now you know the solution, Have a great day!

    • @SkalskiP
      @SkalskiP Рік тому

      @@juanolano2818 oh. Interesting I think it should run on 3.8 too. Regardless. I’m happy that you managed to solve the problem. ;)

  • @faizelkhan3951
    @faizelkhan3951 Рік тому

    I know yolo5 and 7 supports multiple streams, does Supervision support multiple streams?

    • @Roboflow
      @Roboflow  Рік тому

      👋🏻 hello! Supervision is not a model like YOLO but rather a set of computer vision tools, that aim to help you build video analytics apps. So to do something useful with your detections

  • @hchattaway
    @hchattaway Рік тому +1

    I've been trying to run this code but its failing in the supervision/detection/core.py file...
    xyxy=yolov8_results.boxes.xyxy.cpu().numpy(),
    AttributeError: 'list' object has no attribute 'boxes'
    I put in a bug report.... Any idea what this might be? I'd love to be able to finish your suite of tutorials on this!
    I am using supervision 0.2.0 and I tried it with the latest 0.2.1.. same thing....
    Thanks!

    • @Roboflow
      @Roboflow  Рік тому

      I just responded to the issue. Let me know if that fixed your problem.

    • @hchattaway
      @hchattaway Рік тому +1

      ​@@Roboflow Yes that fixed it! Thanks for the quick response... and after continuing on I see you had the same problem in the video! So I just needed to continue watching... ugh....

    • @Roboflow
      @Roboflow  Рік тому

      @@hchattaway yes 🙌 looks like it is not intuitive

  • @refty_
    @refty_ Рік тому +1

    can we detect object if the object inside the object, example we only detect spoon if the spoon inside the cup bounding box

    • @Roboflow
      @Roboflow  Рік тому

      Is the object inside the same class or not? If the same class it will be hard if different I think we can we would need to experiment a bit with model parameters.

    • @refty_
      @refty_ Рік тому

      @roboflow thanks for the answer, its not the same class, so we only counting spoon class if the spoon inside the cup bounding box and not counting the spoon outside the bounding box

  • @riseandgrindthere
    @riseandgrindthere Місяць тому

    Sir how can i filter with respect to confidence

  • @seanolivieri4829
    @seanolivieri4829 10 місяців тому

    I have a problem with the resolution, I can't change it, I tried everything I know but still shows 640,480,3. Any solution?

    • @Pablo-qe7zm
      @Pablo-qe7zm 8 місяців тому

      minute 6:45 , on line 21, write this instead cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

  • @salmabif
    @salmabif 7 місяців тому

    how to count object in image by yolo8?

  • @milindchaudhari1676
    @milindchaudhari1676 Рік тому +1

    Hey, can you please guide me on overlapping object detection, as im willing to use YOLO for peach🍑 fruit detection in my project, the problem is, fruits are very dense and are overlapping with each other as well as occluded by the leaves, so can you please help me with that?

    • @Roboflow
      @Roboflow  Рік тому

      Do you have some image/video sable that we could discuss?

    • @jirivchi
      @jirivchi Рік тому

      @Milindn Chaudhari. I am also working in the same project, but in my case are totamotes and with leaves is quite difficult to count.

    • @milindchaudhari1676
      @milindchaudhari1676 Рік тому

      @@jirivchi hii, bro, would like to stay in touch with u, so in case any problem occurs to any of us, we may discuss it along....! If u don't mind share ur details where we can connect 🙏

    • @Roboflow
      @Roboflow  Рік тому

      @@milindchaudhari1676 haha awesome :) to see people find friends in our comment section

  • @hammad2147
    @hammad2147 Рік тому +2

    Hi can you make a video on explaining the code of YoloV8 a little bit

    • @SkalskiP
      @SkalskiP Рік тому

      Hi 👋! It's Peter from the vdeo. Anything spcyfic that is interesting to you?

    • @hammad2147
      @hammad2147 Рік тому +1

      @@SkalskiP thanks peter after watching your latest video ,all my doubts are now clear , more power to u bro

    • @SkalskiP
      @SkalskiP Рік тому +1

      @@hammad2147 thanks a lot! Stay tuned I already have great ideas for next videos ;)

  • @elang1110
    @elang1110 7 місяців тому +1

    i get this error
    AttributeError: type object 'Detections' has no attribute 'from_yolov8'
    how do i fix them
    * i install using conda env (pip instal --user supervision)
    supervison (0.16.0)
    code :
    import os
    import cv2
    import supervision as sv
    from supervision import Detections
    from ultralytics import YOLO
    hand_sign = {0: "good_luck", 1: "hello", 2: "ily", 3: "no", 4: "please", 5: "sorry", 6: "thank_you", 7: "yes"}
    model_path = os.path.join('.', 'runs', 'detect', 'train', 'weights', 'last.pt')
    model = YOLO(model_path)
    cap = cv2.VideoCapture(0)
    box_annotate = sv.BoxAnnotator(
    thickness=2,
    text_thickness=2,
    text_scale=1
    )
    while True:
    ret, frame = cap.read()
    result = model(frame)[0]
    detect = sv.Detections.from_yolov8(result)
    # labels = []
    frame = box_annotate.annotate(scene=frame, detections=Detections)
    cv2.imshow("yoloV8", frame)
    if(cv2.waitKey(1) == 27):
    break

    • @DrFatBear
      @DrFatBear 3 місяці тому

      i know this is way late, but replace detect = sv.Detections.from_yolov8(result) with sv.Detections.from_ultralytics(result)

  • @ThongMr
    @ThongMr 6 місяців тому +1

    Hello Amin! I get the error: AttributeError: type object 'Detections' has no attribute 'from_yolov8''

    • @allankroco9711
      @allankroco9711 6 місяців тому

      same problem! exist the attribute 'from_yolov5' but still giving erro! :(

    • @ThongMr
      @ThongMr 6 місяців тому

      @@allankroco9711 I try use 'from_ultralytics" is ok.

    • @DrFatBear
      @DrFatBear 3 місяці тому

      detections = sv.Detections.from_ultralytics(result)

  • @oldadajbych8123
    @oldadajbych8123 10 місяців тому +1

    Great video, unfortunately, several times, you have typed the code exactly where the youtube progress bar is, so when I wanted to follow you, I had to look for a better shot when the code was scrolled. Please type the code a little higher on the screen (if possible) next time. Thanks

    • @Roboflow
      @Roboflow  10 місяців тому

      Awesome feedback! Thanks a lot for that. I’ll keep that in mind next time.

  • @hoangtuhuynh5416
    @hoangtuhuynh5416 Рік тому +1

    Can you make a video to run with onnx model? I really appreciate that

    • @Roboflow
      @Roboflow  Рік тому

      Webcam + onnx model?

    • @hoangtuhuynh5416
      @hoangtuhuynh5416 Рік тому +1

      @@Roboflow yes please

    • @Roboflow
      @Roboflow  Рік тому

      @@hoangtuhuynh5416 sounds cool! I'm not sure but I think we don't have any ONNX tutorial. I'll pass the idea to the team :)

  • @tharunm4802
    @tharunm4802 Рік тому +1

    Bro how to store the object count value in the variable?

    • @Roboflow
      @Roboflow  Рік тому

      I'm not sure I understand your question but count = len(detections) should work.

  • @sanchaythalnerkar9736
    @sanchaythalnerkar9736 9 місяців тому

    How can I use another webcam like on jetson nano , or custom

    • @Roboflow
      @Roboflow  9 місяців тому

      Do you face any problems with Webcams on Jetson Nano? Those should work the same way.

  • @fcgfgfgh
    @fcgfgfgh Рік тому +1

    how i can use my trained yolov8 model ?

    • @Roboflow
      @Roboflow  Рік тому

      You can just provide the path to your pt file. Something like that: model = YOLO("path/to/your/model.pt")

  • @nhanduong5917
    @nhanduong5917 7 місяців тому +1

    Can I build the program on Windows OS as you did on Linux?

    • @Roboflow
      @Roboflow  7 місяців тому

      You probably can. :)

    • @nhanduong5917
      @nhanduong5917 5 місяців тому

      @@Roboflow I tried running it on Jetson Nano using Linux OS, but I failed, it showed the error "illegal instruction (core dumped)". Could you tell me how to fix it?

  • @taylorgonzalez9406
    @taylorgonzalez9406 Рік тому

    Is there a way to pass yolov8 a numpyArray instead of cv2.VideoCapture?

    • @Roboflow
      @Roboflow  Рік тому

      Hi you actually pass frame to YOLOv8 model. If you take a loo kat our code we actually do ret, frame = cap.read(). That frame is numpy array.

    • @taylorgonzalez9406
      @taylorgonzalez9406 Рік тому +1

      That's what I thought however when I try to pass in a numpy array directly I get the following error: RuntimeError: Given groups=1, weight of size [16, 3, 3, 3], expected input[1, 4, 384, 640] to have 3 channels, but got 4 channels instead
      Here's my script:
      #def onCook(scriptOp):
      cap = op('null1').numpyArray(delayed=True)
      model = YOLO("yolov8n.pt")
      box_annotator = sv.BoxAnnotator(thickness = 2, text_thickness=2, text_scale=1)
      while True:
      result = model(cap, agnostic_nms=True)[0]
      detections = sv.Detections.from_yolov8(result)
      labels =[ f"{model.model.names[class_id]} {confidence:0.2f}" for _, confidence, class_id, _ in detections ]
      frame = box_annotator.annotate(scene=frame, detections=detections, labels=labels)
      scriptOp.copyNumpyArray(cap)
      return

    • @Roboflow
      @Roboflow  Рік тому +1

      @@taylorgonzalez9406 could you set up a thread here github.com/roboflow/supervision/discussions/categories/q-a ?

    • @taylorgonzalez9406
      @taylorgonzalez9406 Рік тому

      @@Roboflow yes!

  • @s.j.screation
    @s.j.screation Місяць тому

    IndexError: index 738 is out of bounds for axis 0 with size 720

  • @JuuliaMachado
    @JuuliaMachado Рік тому +1

    Hi! I really love your tutorial, but I have one question... If I want to recognize other object, that is not in the data? ex: recognize wheels, what should I do?
    Thanks!!!

    • @Roboflow
      @Roboflow  Рік тому

      You can try zero-shot detection: ua-cam.com/video/cMa77r3YrDk/v-deo.html or if that won't work train a custom model with custom data: ua-cam.com/video/wuZtUMEiKWY/v-deo.html

  • @EgeSener
    @EgeSener Рік тому +2

    Hello can we count number of objects when one of them enters the zone, just using supervision libary?

    • @SkalskiP
      @SkalskiP Рік тому

      Hello 👋! It is Peter from the video. Not yet, but I have that on our roadmap. Feel free to add your feature here: github.com/roboflow/supervision/issues. That will help us to prioritise work better.

  • @user-dv7eo8in6z
    @user-dv7eo8in6z 4 місяці тому

    i got big error. the msg is
    AttributeError: type object 'Detections' has no attribute 'from_yolov8'. Did you mean: 'from_yolov5'?

    • @Roboflow
      @Roboflow  4 місяці тому

      Use requirements.txt to install packages

    • @user-dv7eo8in6z
      @user-dv7eo8in6z 4 місяці тому

      ​@@Roboflow you didn't included requirement.txt in supervision github.
      i already installed all of python package requirement.txt that you uploaded.
      i am using viusal studio code with python.

    • @user-dv7eo8in6z
      @user-dv7eo8in6z 4 місяці тому

      my code is this.
      import cv2
      import argparse
      from ultralytics import YOLO
      import supervision as sv
      def parse_argument() -> argparse.Namespace:
      parser = argparse.ArgumentParser(description="YOLOv8 LIVE")
      parser.add_argument("--webcam-resolution", default=[1920, 1080], nargs=2, type=int)
      args = parser.parse_args()
      return args
      def main():
      args = parse_argument()
      frame_width, frame_height = args.webcam_resolution
      cap = cv2.VideoCapture(0)
      cap.set(cv2.CAP_PROP_FRAME_WIDTH, frame_width)
      cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frame_height)
      model = YOLO("yolov8l.pt")

      box_annotator = sv.BoxAnnotator(
      thickness=2,
      text_thickness=2,
      text_scale=1
      )
      while True:
      ret, frame = cap.read()
      result = model(frame)[0]
      detections = sv.Detections.from_yolov8(result)
      frame = box_annotator.annotate(scene=frame, detections=detections)
      cv2.imshow("yolov8l", frame)
      if (cv2.waitKey(30) == 27):
      break
      if __name__== "__main__":
      main()

    • @user-dv7eo8in6z
      @user-dv7eo8in6z 4 місяці тому

      and the result is this.
      PS C:\Users\kyutae\yolov8> & C:/Users/kyutae/AppData/Local/Programs/Python/Python310/python.exe c:/Users/kyutae/yolov8/main.py
      0: 384x640 (no detections), 476.6ms
      Speed: 6.0ms preprocess, 476.6ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)
      Traceback (most recent call last):
      File "c:\Users\kyutae\yolov8\main.py", line 46, in
      main()
      File "c:\Users\kyutae\yolov8\main.py", line 35, in main
      detections = sv.Detections.from_yolov8(result)
      AttributeError: type object 'Detections' has no attribute 'from_yolov8'. Did you mean: 'from_yolov5'?

  • @pcsolutionsezcloudsystems5929
    @pcsolutionsezcloudsystems5929 Рік тому +1

    How can I write the same code in .NET Core C#? 🙂

    • @Roboflow
      @Roboflow  Рік тому

      I've never done anything like that :/

  • @malcolm-charleskendall2640
    @malcolm-charleskendall2640 3 місяці тому

    How do I quit running the feed without killing my terminal? Dumb question but im very new to this

  • @dgadstv3876
    @dgadstv3876 3 місяці тому

    while True:
    ret, frame = cap.read()
    result = model(frame)[0]
    detections = sv.Detections.from_yolov5(result) ****.from_yolov8 is not available attrribute? so i had to change to .from_yolov5
    labels=[
    f"{model.model.names[class_id]},{confidence:0.2f}"
    for _ , confidence, class_id, _
    in detections
    ]

    • @DrFatBear
      @DrFatBear 3 місяці тому

      yolo8 has been deprecated use from_ ultralytics , you will still get new errors down the line however. so it is best to downgrade the version of supervision you are using, pip uninstall supervision, pip install supervision==0.3.0 and use from_yolo8

  • @rolandojrhernandez4905
    @rolandojrhernandez4905 Рік тому

    I don't know how to deploy this in web framework with tracking and counting

    • @rolandojrhernandez4905
      @rolandojrhernandez4905 Рік тому +1

      I'm doing this because of my research that will help our local community, I've trained my own data that I can use and right now I'm studying implementation in building an app for the user to use.

    • @Roboflow
      @Roboflow  Рік тому

      @@rolandojrhernandez4905 you only want to do object detection?

  • @thesungoeswest
    @thesungoeswest 9 місяців тому +1

    thanks but it wont work for mac os 10.15

    • @Roboflow
      @Roboflow  9 місяців тому

      What’s the problem you face on MacOS?

  • @hassenmaged5989
    @hassenmaged5989 Рік тому

    hey bro please help me if want to make the output label in another language how can i do that in mainpy file i want to make if yolo detect class 0 show label in another language 🙏

    • @Roboflow
      @Roboflow  Рік тому

      Hi 👋🏻! What do you mean another language? Programming language?

    • @hassenmaged5989
      @hassenmaged5989 Рік тому +1

      @@Roboflow i want make output detection in arabic language
      or if yolo detection class 0 show text "any language" in frame window how can i use this function ?

    • @Roboflow
      @Roboflow  Рік тому +1

      @@hassenmaged5989 that's super easy! problem is that it is quite hard to give you the code snipet here. Could you start a thread here: github.com/roboflow/supervision/discussions/categories/q-a I'll help you out :)

    • @hassenmaged5989
      @hassenmaged5989 Рік тому +1

      @@Roboflow ok thank you, i make the post

    • @Roboflow
      @Roboflow  Рік тому +1

      @@hassenmaged5989 perfect! Thanks a lot ;)

  • @systembreaker4651
    @systembreaker4651 Рік тому

    How can i use the tutorial with pycharm

    • @Roboflow
      @Roboflow  Рік тому

      I’m not sure I understand your question. You can open open and edit the code same way I did in VS code.

    • @systembreaker4651
      @systembreaker4651 Рік тому

      @@Roboflow ok 👌 thanks i had another question how can i train custom objects detecte

  • @maiquelkappel7745
    @maiquelkappel7745 Рік тому

    Let's all wait, shall we? Soon someone shares the knowledge on youtube. Then we can adapt the code. I even think I'll make a video on youtube too. 🙂

  • @thaddolson
    @thaddolson 6 місяців тому

    Are you for hire to help me with a project?

  • @gangababu2063
    @gangababu2063 7 місяців тому +2

    latest changes :
    while True:
    ret, frame = cap.read()
    if not ret:
    cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
    continue
    result = model(frame)[0]
    detections = sv.Detections.from_ultralytics(result)
    labels = [f"{model.model.names[class_id]} confidence:{confidence}" for _,
    _, confidence, class_id, _ in detections]

  • @Aboodsawaftah
    @Aboodsawaftah Рік тому +1

    hello, firstly thank you
    but i have this error I don't no why
    for _, confidence, class_id, _
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    ValueError: too many values to unpack (expected 4)

    • @Roboflow
      @Roboflow  Рік тому

      Let me fix that

    • @Roboflow
      @Roboflow  Рік тому

      What version of supervision do you have installed?

    • @Aboodsawaftah
      @Aboodsawaftah Рік тому

      @@Roboflow the last one

    • @Aboodsawaftah
      @Aboodsawaftah Рік тому

      @@Roboflow 0.5.2'

    • @Roboflow
      @Roboflow  Рік тому

      @@Aboodsawaftah but this project use older version of supervision - take a look at requirements.txt