Hey guys. I’ve been wondering to find the dataset from the assignment of the YOLO Algorithm. It does said that it’s provided by drive.ai. But i can’t find where the data is located. Is there anyone knows? Or is it in W3A1/images?
Yes, those are images to be used for prediction. There is no data set for training, since that part is not included in this assignment.
If you want to train a model, then, you need to start with any of YOLO variations, like YOLOv3, Keras version of v3, v4 or Pytorch version (v5)… You can easily find in Web and start downloading.
You can use COCO data set if you want. Of course, there are some data services for YOLO like roboflow.
If you want to use your own data, you need to start with annotations, i.e, create a bounding box and add label. It is very time consuming work. But, if you are interested in, you can use labelImg. (There is some others, but this may be starting point, since it supports YOLO format.)
Training also takes huge amount of time, like a couple of days or more.
I see. Thanks for the recommendations! I actually train my own CNN for YOLO Algorithm to try to learn how it works and try not to use pre-trained model. But of course i need some data. And i see that you mentioned roboflow which for me it’s suitable, so thanks!
Oh and by the way @anon57530071 , Does data in YOLO algorithm has an image and the annotations seperately? I found that it has like 15,000 image and also a .txt file which is for the annotations which is for the bounding box. I downloaded it from roboflow.
One annotation file for one image text. An annotation file includes class number and bounding box information. You will create a list of image files for training. Associated text file will be read at that time.
But what if i receive One annotation file only that is filled in order with the bounding boxes, and have the Classes seperated into a file? And also do you know how to setup data like this? That has the bounding box? Because i have no idea about that. Maybe some advice would help me. Thanks again!
Directory structure is slightly different by version of YOLO. Data format is unchanged, but configuration file and python file to be modified are totally version/implementation oriented.
Key work items including resource types are;
- Training data - multiple image files and associated annotation files. Each annotation file is prepared for a particular image, and includes class information (just a digit) and bounding box information (4 variables). In a particular version, test data is separated from training data with a specified ratio in a configuration file.
- List of training samples (and test samples in some versions). This is an important file in a training phase. The file name needs to be specified to a configuration file.
- Class definition file. This is a separate file, which includes a list of class names (like car, bicycle, …). And, starting from 0, this correspond to the class ID in an annotation file.
- Number of classes. You need to change configuration file to set a proper number of classes. In addition, you will be requested to update a filter number which is calculated by given formula which depends on the version. In the case of YOLO3, if I remember correctly, it is (class num + 5)*3.
- Weights for YOLO. You will be requested to set an initial weights for training. Typically, you should download from Web. But, requested format may be different. Sometimes you need to convert it to Keras format or others. -
- Anchor file. This is to define initial shape of anchors. You can potentially use default one which is provided by each version of YOLO, like yolo_anchors.txt.
- Additionally, you may need to change batch size and subdivision size in a configuration file, which is the same file that you work for modification of class number and filter size described above.
There may be more, but that what came across.
Typically, lots of conversions in there, you need to work by yourself. So, first thing that you need to do is, to decide the version and derivative of YOLO, download that version and follow the instructions.
On single guidance for YOLO, unfortunately… So, your friend may be Google.
@BryanEL here are some thoughts from my experience training YOLO v2 level code on a custom dataset that have been memorialized in other threads:
Here’s a tldr
training YOLO from scratch is completely non-trivial. It takes a lot of data that you know well and a lot of computation. You need to do augmentation to ensure objects exist in all locations of the training set, otherwise you train predominantly on finding objects in the center of an image and most grid cell locations have no training at all.Grid cell and anchor box size needs to be tuned to the data, especially if you expect many objects small relative to image size. Speaking of anchor boxes, it is very important that you not use default anchor box count and shapes if those don’t match your dataset as it will lead to poor training outcomes. You will need to do the k-means analysis yourself to find the optimal number of and shapes of anchors for your data. Every object detection data set I looked at either used JSON or XML and every one had a complex record that included the bounding box and the class. If they are not paired in the training data, you can’t do detection (meaning localization + classification) until they are. The data set I worked with, mentioned in and linked from those threads, used JSON. Each record had lots of things I didn’t care about, so I had to write my own crawler to extract the bits I wanted. At least circa v2, which is what this course was based on, the YOLO creators broke the pipeline apart and had different architecture for location training and classification training because trying to learn all the parameters at once was too hard. My experience suggested I should do the same but I never completed the refactoring.
If you do go down this path, please post your experience.
Ok, thanks for the threads that you’ve shared! And also thanks @anon57530071 for the advices!