Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Yolo training yolo with own dataset

I want to build a database with Yolo and this is my first time working with deep learning

  1. how can I build a database for Yolo and train it?
  2. How do I get the weights of the classifications?
  3. Is it too difficult for someone new to Deep Learning?
like image 882
diegokabir Avatar asked Oct 25 '25 02:10

diegokabir


1 Answers

Yes you can do it with ease!! and welcome to the Deep learning Community. You are welcome.

First download the darknet folder from Link

Go inside the folder and type make in command prompt

git clone https://github.com/pjreddie/darknet
cd darknet
make

Define these files -

data/custom.names
data/images
data/train.txt
data/test.txt

Now its time to label the images using LabelImg and save it in YOLO format which will generate corresponding label .txt files for the images dataset.

LabelImg labelling guide

Labels of our objects should be saved in data/custom.names.

Custom.names example

Using the script you can split the dataset into train and test-

import glob, os

dataset_path = '/media/subham/Data1/deep_learning/usecase/yolov3/images'

# Percentage of images to be used for the test set
percentage_test = 20

# Create and/or truncate train.txt and test.txt
file_train = open('train.txt', 'w')  
file_test = open('test.txt', 'w')

# Populate train.txt and test.txt
counter = 1  
index_test = round(100 / percentage_test)  
for pathAndFilename in glob.iglob(os.path.join(dataset_path, "*.jpg")):  
    title, ext = os.path.splitext(os.path.basename(pathAndFilename))

    if counter == index_test+1:
        counter = 1
        file_test.write(dataset_path + "/" + title + '.jpg' + "\n")
    else:
        file_train.write(dataset_path + "/" + title + '.jpg' + "\n")
        counter = counter + 1

For train our object detector we can use the existing pre trained weights that are already trained on huge data sets. From here we can download the pre trained weights to the root directory.

Create a yolo-custom.data file in the custom_data directory which should contain information regarding the train and test data sets

classes=2
train=custom_data/train.txt
valid=custom_data/test.txt
names=custom_data/custom.names
backup=backup/

Now we have to make changes in our yolov3.cfg for training our model. For two classes. Based on the required performance we can select the YOLOv3 configuration file. For this example we will be using yolov3.cfg. We can duplicate the file from cfg/yolov3.cfg to custom_data/cfg/yolov3-custom.cfg

The maximum number of iterations for which our network should be trained is set with the param max_batches=4000. Also update steps=3200,3600 which is 80%, 90% of max_batches. We will need to update the classes and filters params of [yolo] and [convolutional] layers that are just before the [yolo] layers. In this example since we have a single class (tesla) we will update the classes param in the [yolo] layers to 1 at line numbers: 610, 696, 783 Similarly we will need to update the filters param based on the classes count filters=(classes + 5) * 3. For two classes we should set filters=21 at line numbers: 603, 689, 776 All the configuration changes are made to custom_data/cfg/yolov3-custom.cfg

Now, we have defined all the necessary items for training the YOLOv3 model. To train-

./darknet detector train custom_data/detector.data custom_data/cfg/yolov3-custom.cfg darknet53.conv.74
like image 139
Subham Tiwari Avatar answered Oct 26 '25 19:10

Subham Tiwari



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!