YOLOv8 | Object Detection on a Custom Dataset using YOLOv8
ฝัง
- เผยแพร่เมื่อ 26 ก.ย. 2024
- YOLOv8
Ultralytics YOLOv8, developed by Ultralytics, is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection, image segmentation and image classification tasks.
Official YOLOv8 github repo: github.com/ult...
#######################################################
For queries: Comment in comment section or you can mail me at aarohisingla1987@gmail.com
#######################################################
#yolov8 #yolo #objectdetection #yolov5 #yolov8 #yolov7 #yolov9 #yolov10
I have gone through your various tutorials, I can guarantee 100% that everyone will understand this concept. Thank you so much you're doing an amazing job.
Glad to hear that!
maam ,please give me code how to extract detected objects in an image and save those images in seperate files ,like if we detect 5 objects in an image using yolov8,and that image is saved in a file ,then i need the detected objects seperated please help maam@@CodeWithAarohi
Wow!! you are brilliant ma'am. Up to date every time. Thank you so much for the invaluable pieces of information.
Glad you liked it!
Code with Aarohi is Best TH-cam channel for Artificial Intelligence #CodeWithAarohi
Im new to Yolo and with the help of your video i was able to run the code. Thank you for your efforts
Glad I could help!
Excellent, Elite and Eloquent content and crystal-clear explanations. If possible, provide object detection with voice or sound output ie. object name.
Thanks Aarohi
It was as simple as your previous videos.
Glad you liked it!
Your videos are very informative, in understanding the deep learning models and neurul network s.lots of love from Lahore Pakistan
Glad to hear that!
Never mind again with my previous question. I got the solution. Thanks
Glad to hear that!
You plainly explained it.Thankyou so much👍👍
Glad it was helpful!
It's a great video. I have tried it out and it's working like a charm. Thank you
Glad video is helpful!
I really enjoyed your video. I found it to be very concise.
Glad you enjoyed it!
Hello Mam,
the video was very helpful thank you for making such good content.
can you explain how layer freezing works how we can do it on our pretrained model in yolo it would be quite helpful for us to understand thank you.
Thank you for such a great video! Can you please also make a video to show how to implement focal loss function to YOLOv8?
thank you so much mam.. l learn much from your videos thanks alot of... 💗💗💗
My pleasure 😊
Amazing video, everything is clear.
Great to hear!
I am trying to do a traffic light detection project on google colab and during training I am encountering path related errors. What I had in my .yaml file is configuration of train, val, test folders each containing images, labels folders with paths as /content/drive/MyDrive/dataset/train/images and such is the same for /content/..../train/labels. Now what should there exactly be for it to run without errors? Would you have an idea? What paths I should add in every case? Any suggestions from anyone?
Actually i started watching this video after 23min after uploading, this is very amazing. When are you going to release how to train seg, det and cls model as you mentioned in the endition of this video? We'll buy a coffee one day!
Hi, Glad you liked my video. And I will release the Image segmentation on Custom dataset in next 3-4 hours :)
@@CodeWithAarohi can't explain the thankful but over all best of good luck! Resile and Prosper in this year2023. Need to tell others about this work !
@@boazmwubahimana4702 th-cam.com/video/myle_dNJjqg/w-d-xo.html
@@CodeWithAarohi thanks
maam ,please give me code how to extract detected objects in an image and save those images in seperate files ,like if we detect 5 objects in an image using yolov8,and that image is saved in a file ,then i need the detected objects seperated please help maam
Hi Arohi. It is very good video and one request could you create playlists for going throughout the papers from yolov1 - v9(present version)? It would be very very beneficial
I will try!
thank for your video madam. hope you have a great day
Thank you! You too!
Again a really nice video. But from next time could you please share the jupyter notebook as well.That will be a big help.
Sure I will
from ultralytics import YOLO
model=YOLO('yolov8n-seg.pt')
model.predict(source='img.jpg')
Mam Code Is Running But Still It not saving the segmented image
model.predict(source='img.jpg', save=True)
Hi, incredible explanation and video, I have some questions if you don't mind :
1.Is this working for a video, for example, and in that case, should I train the model with small part of videos?
2.If I want to detect a lot of things in a video of a city, should I train the model several times, one for each class (objects)
Thank you so much!
1- Yolov8 is trained on images only. Train your model on images and then you can detect objects from videos also. 2- Create a dataset for all the objects at once. And then train your model on that dataset. No need to train model for separate objects one by one.
I really liked the content and the way you explained it. Is it always required to have a text file for every single image? Doesnt that make it very hard considering people only have images with them? Can you share more knowledge on how you created that custom dataset so that it could be trained on YOLOv8?
Yes, you always need annotations for each image in txt format. This is the mandatory step to use this algorithm.
Thank you for the video. I want to show the timer value in the bounding box for each introduced object, how should I do it?
amazing and up to data as always !
Thank you
As usual, great job!
Thank you
@@CodeWithAarohi you're welcome
how can i reuse this trained model by saving it
You will get a weight file after training then you have to write a inference script you can get that from yoloV8 docs probs and go through the inference script
Madam please use google cloab and explain object reidentification concept and code next video please
hi, great video, can we here testing matrices on test data, like classification reports for CNNs
Nice
Thanks
Hy aarohi , could you pls also make videos on productionizing models , dufferent ways
Will there be any case of transfer learning to add a new class (x classes + new class) to a previously trained model YOLOv8 (x classes)?
I have trained a custome dataset on Yolov8. The training set consists 600 images. Unfortunatelly, when I have trained the yolov8 it only trained on 30 images, so could you please help me to solve this problem..thanks in advance.
Check if the format of images are correct.
nice video
Thanks
Could you please do a tutorial on how to use yolo for object detection in cases where the objects you want to detect are not in the pretrained dataset. As in , to use the pretrained model for feature extraction and detect the custom objects.
hi, thank you for the documentation.
I have a problem about predict images. i trained my model and predict image grayscale but i come into view error : ValueError: axes don't match array.
What should I do? I must predict image grayscale.
Your model should be trained on grayscale images if you want to make prediction on grayscale image because colored images have 3 channels and grayscale images have channel 1.
"yolo is not recognized as an internal or external command operable program or batch file"; I am facing this problem when I am going to execute the yolo command. Please give me some advice to solve this problem
Great explanation ! thank youu
Glad it was helpful!
Mam, can you come up with video data rather than image data and same video. Just change the dataset with video, will be helpful
Can you please explain why the background is there in confusion matrix even i don't have a class called background.did it trained with other classes
after using task=predict command it is showing "448x640 10 humans, 16.0ms
" but the output image is not shown. Iam running it on pycharm
mam is there any video on you channel which shos how to install, which folders to opt for and while dealing with ultralytics env on your channel
Hi great tutorial, can you provide the dataset that you used for this tutorial? I want to see the format of the text files
Check this dataset. This dataset have 2 classes - table and chair. universe.roboflow.com/search?q=furniture%2520detection%2520object%2520detection&p=3
Hello ma'am, when I am running the first command line to detect......I am getting this error...(yolov8_myenv) E:\MTP Project\YOLO_P1>!yolo task=detect mode=predict model=y
olov8n.pt source="images/1.jpg"
'!yolo' is not recognized as an internal or external command,
operable program or batch file.
Can you please help me with this.🙏
I am getting the Box(P = 0 R = 0 mAP50 = 0 mAP50-95 = 0 )zero at the time of training the dataset at the epochs any solution for this issue???
Hello, WIth GPU (with cuda) it doesnt work but with cpu it works.
NotImplementedError: Could not run 'torchvision::nms' with arguments from the 'CUDA' backend. This could be because the operator doesn't exist for this backend, or was omitted during the selective/custom build process (if using custom build)
Aarohi ma'am, I have a dataset of chest xrays. I want to predict the active tb and latent tb . but the other 2 classes dont have annotations. how to approach this?
Thanks for the excellent explanation. I am having one doubt. What is mAP50 and mAP50-95? What should we measure for accuracy purpose?
mAP50 is the mean Average Precision at a 50% IoU (Intersection over Union) threshold. IoU is a measure of the overlap between the predicted bounding box and the ground truth bounding box. A threshold of 50% means that the predicted bounding box is considered a correct detection if it overlaps with the ground truth bounding box by at least 50%.
mAP50-95 is the mean Average Precision averaged over the range of IoU thresholds from 50% to 95%, with a step size of 5%.
@CodeWithAarohi, Hello, I traind the yolov8 (detect) on custom dataset now how can I assess the yolov8 model with test dataset where I can get Recall , Precision, mAP, confusion matrix, curvs, and accurecy.
how can I detect using a python script, the consol shows me that the image is processed but I can't find where it's saved
By default it get stored in "runs" folder. If your image is not there then use save=True in your command
Can you make video about model inference using NVIDIA triton server and yolo how optimise the model using triton
Hello, Thank you very much for your reply. i also want to know how to capture the accuracy of the model. information like
( How many images testing
How many clear
How many are not clear
Model|accuracy|%|images tested) need to be captured. Can you please help me with this
@CodeWithAarohi, please can you help with directions on how to features for yolo v8, a layer before the output layer where I can find images features, bounding features, confidence/probability before it get to the output layer. I need it for the training of another model. Thank you
USing this code, you can get boxes, clabels and probability scores.
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
#results = model("images/person.jpg", save=True)
results = model("images/1.jpg", save=True)
class_names = ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']
for result in results:
boxes = result.boxes # Boxes object for bbox outputs
probs = result.probs # Class probabilities for classification outputs
cls = boxes.cls.tolist() # Convert tensor to list
xyxy = boxes.xyxy
xywh = boxes.xywh # box with xywh format, (N, 4)
conf = boxes.conf
print(cls)
for class_index in cls:
class_name = class_names[int(class_index)]
print("Class:", class_name)
Very very useful, madam can you share a notebook and custom dataset. It will be helpful
Dataset is downloaded from roboflow. And these commands are here github.com/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb
Thanks for this video
Most welcome
Can u please share the link for github repo shown in the video . Could not locate that in the description of the video unless i missed it.
Results saved to runs\detect\train2
I cannot find the runs folder . What Can I do ?
@@dhondyash1017 you will see the results folder in the directory from where you are running the code.
@@CodeWithAarohi Thank you !
Great video! Do you know how to choose specific model to train (i.e. yolov8s or yolov8m) without passing pretrained weights?
Yes, you cando that. Get the yaml file of that model. It is available in yolov8 github repo. And then change the number of classes. Leave the other things as it is.
How to get other metrics like accuracy, specificity and sensitivity ??
Will it be stored anywhere or if not how to get tp, fp, values, so that any metrics can be calculated ??
To calculate metrics such as accuracy, specificity, and sensitivity, you'll need a confusion matrix which we already have.
Accuracy = (True Positives + True Negatives) / Total Predictions
Sensitivity = True Positives / (True Positives + False Negatives)
Specificity = True Negatives / (True Negatives + False Positives)
Precision = True Positives / (True Positives + False Positives)
@@CodeWithAarohi Thanks a lot for replying !!
Yea, I can calculate final value manually. But if i want to draw graph/curve, then how can i extract values at every epochs ?? Also, how to plot the ROC curve ??
@@siddharthabhat2825 use results.txt file. All the results are saved there. Using this results.txt file. You can plot the graphs for all the epochs.
@@CodeWithAarohi results.csv gives precision, recall, mAP & other loss values. Is it possible to get tp, fp, tn ,fn values ??
Thanks a lot mam
Most welcome 😊
Thank you so much ma'am. Your instruction is very clear and easy to understand.
But I don't know how to intepret the results: confusion matrix, the charts (box loss etc.).
Is there any standard documentation to follow?
Thank you
Confusion Matrix:
True Positive (TP): Correctly predicted positive instances.
True Negative (TN): Correctly predicted negative instances.
False Positive (FP): Incorrectly predicted positive instances.
False Negative (FN): Incorrectly predicted negative instances.
Accuracy: (TP + TN) / (TP + TN + FP + FN)
Precision: TP / (TP + FP)
Recall (Sensitivity): TP / (TP + FN)
F1 Score: 2 * (Precision * Recall) / (Precision + Recall)
Use these metrics to gauge the model's performance, considering the balance between precision and recall.
Loss Charts (e.g., Box Loss):
Training Loss: Measures how well the model is learning during training. A decrease indicates learning.
Validation/Test Loss: Indicates how well the model generalizes to new data. Monitor for overfitting (training loss significantly lower than validation loss).
Understanding these metrics helps you assess the model's accuracy, ability to identify positives/negatives, and potential overfitting.
@@CodeWithAarohi Thank you ma'am!!
how can we use multupke file yaml to train yolo??
Hi Thank you for the valuable information and my question which tools you used for labeling? Thank you
Sometime I use labelImg tool and sometime I work with roboflow.
how to evolve yolov8 hyperparameter with raytune?
Thank you for your tutorial.The v8 is easier to install environment required and train custom data’s than v7😂😂😂😂
You are welcome
Am having serious issues with v7
mam how are you having predict and all folders ?
please tell me how to setup env from starting.
Run these commands one by one-
# In below command 3.9 is my python version with which I want to create separate environment
py -3.9 -m venv myvenv
myvenv\Scripts\activate
pip install ultralytics
pip install jupyter notebook
# To open jupyter notebook type:
jupyter notebook
@@CodeWithAarohi mam while installing labelImg ....I am facing issue "ERROR: Failed Building wheel for PyQt5-sip"
Thank You so much 🤗🤗🤗
You're welcome 😊
is it possible to convert yolov8 to .pb file tensorflow TF2.?
Hi..
To train custom dataset in python script
model = YOLO() # with no pre-trained parameters
To do the same in cmd what should I fill for model param
yolo task=detect mode=train model="" data=data.yaml
If I don't want to use pre-trained model
Could you plz help out?
yolo task=detect mode=train data=data.yaml
I trained the yolov8 model but is there any way that I can download the trained model???
After training your model stored in runs folder. And if you want to use pretrained models then you can get it from yolov8 github repo
Hi, I am in the first step and try to predict model in CLI, I cannot get the "result saved to runs\detect\..." thing. It takes the image, model etc. but does not give the result, why?
Use save=True in command
hi, I have a question. if I divide the dataset into training and testing only, is it necessary to run the validation part? and if not, during inference how to find out the mAP?
Skipping validation means you won't be monitoring the model's performance during training.
You should only skip this part if you're confident in your training procedure and the dataset quality.
Regarding inference and calculating mAP without a validation set-
1-Run inference on your test dataset and get the predicted bounding boxes.
2- Calculate Intersection over Union (IoU) between predicted bounding boxes and ground truth bounding boxes.
3- Use the IoU values to compute Precision-Recall curves for each class.
4- Compute Average Precision (AP) for each class.
5- Calculate mAP by taking the mean of AP across all classes.
Here is a code for validation. you can try with this code: github.com/ultralytics/ultralytics/blob/main/ultralytics/models/yolo/detect/val.py
@@CodeWithAarohi If I split the data into train, val, and test sets, should I use the mAP from the validation set as the benchmark, or do I also need to calculate the mAP from the test set? By the way, I am conducting research on object detection and I am still confused about which mAP should be used as the benchmark: the mAP from the validation set or the mAP from the test set? Please help me.
can i know where to get the yolov8_pretrained script that you used in the video?
I am sorry, I am not sure which folder yo are talking about. Can you share the time stamp where I discussed it.
Great video & great explanation Ma'am!🙌 Does it require GPU to run? Because I tried running it on Jupyter notebook & the kernel was getting restarted frequently🙁
It can work on both (CPU and GPU)
Thank you for this amazing tutorial but can you tell me how to implement this model on Android app.. ?
Convert your model into tflite and then use that for Android App
Hi Aarohi! thank you for your detailed tutorials. Could you please make a video about using a YOLOv8 object detection model in an Android app? I'd appreciate it a llllllot!!!
Will try to cover that soon!
ma'am how can we optimize the hyper parameters of Yolov8 ?
docs.ultralytics.com/modes/train/#arguments
Thank you so much, Aarohi, for your excellent explanation. You have saved me a lot of time. Quick question . I need to get the exact pixel location(say: 300x200) of those objects detected by Yolo. Do you know how to go about it, please? Any code example will be highly appreciated
Did you find a solution?
can you explain the labels annotation in details? Is it x,y of the top left corner + width and height normalized?
x-coordinate of the center: This is the x-coordinate of the center of the bounding box relative to the width of the image.
y-coordinate of the center: This is the y-coordinate of the center of the bounding box relative to the height of the image.
Width of the bounding box: This is the width of the bounding box relative to the width of the image.
Height of the bounding box: This is the height of the bounding box relative to the height of the image.
These coordinates are often normalized to the range [0, 1], where (0, 0) represents the top-left corner of the image, and (1, 1) represents the bottom-right corner.
Ma'am please make a video,when we clone GitHub yolov8 respitory then how we can train model please make video and if we modify in loss.py then what is command to train please request from subscriber
From where to get tp tn fp fn
mam ,In this I got Some Error ,please tell me some solution to this problem😓
Try to provide absolute path in your data.yaml file. Also you can delete the label.cache file and the try to train the model.
@@CodeWithAarohi
Thank you mam, it's working👨💻
Nice Tutorial.Thank you So much. Can you suggest how to save the name of the objects detected in the image or video in a txt file using yolov8?
You can try something like this: import cv2
import numpy as np
# Load the YOLOv8 model
net = cv2.dnn.readNet("path/to/yolov8.weights", "path/to/yolov8.cfg")
# Load the input image or video
cap = cv2.VideoCapture("path/to/input.mp4")
# Loop over each frame
while True:
ret, frame = cap.read()
if not ret:
break
# Prepare the frame for inference
blob = cv2.dnn.blobFromImage(frame, 1/255.0, (416, 416), swapRB=True, crop=False)
net.setInput(blob)
outs = net.forward(get_outputs_names(net))
# Loop over each detection
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.5:
# Extract the bounding box for the detection
x, y, w, h = (detection[0:4] * np.array([width, height, width, height])).astype("int")
# Open the text file and write the class label and confidence score
with open("detections.txt", "a") as f:
f.write("{} {:.2f}
".format(class_labels[class_id], confidence))
# Display the frame with detections
cv2.imshow("frame", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
i keep getting this error when i try to import ultralytics into the python notebook, although the CLI commands are working and i am able to see the predictions: AttributeError: 'OutStream' object has no attribute 'reconfigure'.
Any solutions?
I am not sure about the error but you can try to upgrade the jupyter notebook or reinstall it.
how did you connect your local dataset to jupyter?
Just paste the dataset and jupyter notebook in same folder and then provide the path of your dataset in dataset.yaml file
Hello Ma'am. In my case just getting summary of predicted image but not getting the predicted image.
Use save=True in command
@@CodeWithAarohi Thank you
Dear Aarohi. How could I activate nvidia cuda for yolov8?
# Train the model with 2 GPUs
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device=[0, 1]) . If you are using single gpu the write device=0
i am trying this in google colab I just want to use this YOLOv8 model and show result
but runs folder is not getting formed and i cant find a way to store results and display it
if i set " save_conf=True " then runs folders gets form and in predection folder croped images are getting stored
please help
so CLI use kar ke pata nahe kaise save karna h
par py me model.predict() save=True pass karne ke bad save ho ra
Hi Aarohi ,can you make video for detecting objectts from floor plan images using yolov8 as i cannot find any resource for that. It would be really helpful if you make one
Great Video.
What the format that I need to follow for dataset preparation. Same as yolov5,7 images->train,val , lables->train,val
Yes, exactly
@@CodeWithAarohi Can You make a video on how to use a onnx format file or a core ml file in mobile devices for live detection on V8 version
Ma'am , what if the source is webcam or external camera , can it detect object in real time and can we use this model separately to detect from Web cam with bounding box in real time ?
Please answer this
Yes, you can use webcam as input to your Object Detection model.
if i want to use a custome model combiend with pre trained model, how can i do that??
You want to detect all the classes which are present in pretrained model with the classes of your custom model?
@@CodeWithAarohi i have some classes that i need in pre trainned model, and some other not existe, so i must create my coustume model. so, how can i combien between two??
Thanks a lot for your great tutorial . But, can you please explain how to convert yolov8 to tflite model and use it with raspberry pi + coral usb accelerator?
Will cover in upcoming videos
@@CodeWithAarohi I'll be so grateful, and I'll appreciate it.
Thanks for the tutorial... when you are programming to make a video on custom image segmentation ?
It will be up in 30 minutes 🙂
th-cam.com/video/myle_dNJjqg/w-d-xo.html
hello mam! i have an issue .. when i run it on 2 classes after training the class name and confidence level show correctly but when i run it on 5 classes then instead on class name it show the indexes of these class...i check m yaml file everything is perfect... i will be thankful
I am not sure what is the issue. Need to see the related files to find out the problem.
Thank you for amazing tutorial. I am just nor clear with yaml file. Do I have to prepare it manually? Please give me solution this.I will be so thankful to you.
Yes, You have to prepare it yourself. Just create a file and name it data.yaml and then paste the below code:
train: /path/to/train/images
val: /path/to/val/images
nc: 2
names: ['class1', 'class2']
You have to change the paths and class names and number as per your dataset
@@CodeWithAarohi Thank you man
Thanks!
Is it possible to change the size of the images at training and set a custom one?
Yes, Use this argument: imgsz 640
Hello ma'am, i would like to know if we can add the logic into it?? And if yes then how? I'm currently working on a project where i want to detect traffic violations such as without_helmet, and then if a rider falls into that category i want to capture the image of the number plate corresponding to the rider and then apply OCR. Please help us!
Yes, You can implement this. You need 2 models. First model will detect traffic_violations and then if traffic_violation detected then use another model which is trained to detect license plates. And if license plate is detected then use easy-ocr to fetch the details of that license plate. I will try to do a video on this.
@@CodeWithAarohi thank you ma'am, there's another violation which is crosswalk violation, if a vehicle is standing on a crosswalk it should detect it as a violation, can i implement something like that with MASK R-CNN or Yolov8??
where can i get that code to use??