It's been a long time , Never blogged ( Low voice bb, I'm busy with my private work recently ). School is about to begin , harm , I'm going back to work !!!
In this tutorial, write a pytorch Version of yolov3 testing , Using the flame detection dataset , The effect is as follows :
So you can make a fire prediction ,yolov3 It's really fragrant , This time it's about github One of the pytorch Implementation version , The effect is good .
that , Next , Just come with me and practice !!!
Old rules , If a worker wants to do a good job, he must sharpen his tools first , Set up the environment !!
It is suggested to use anaconda To quickly build a virtual environment , Very fast !!!
Collect fire pictures from the Internet , And use labelimg Annotate , Get the labeled image and the location information .
as follows :
everything , Start coding!!!!
1. Install the module
stay requirements.txt
It contains what you need this time python modular .
You can use pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
To install the required modules .
2. Download the required weight file
Linux Under the platform ,cd weights/
, And then run bash download_weights.sh
file , You can download the required weight information .
Windows Under the platform , It can be edited directly download_weigths.sh file , Copy the model links in it , Open download in Explorer .
After downloading , stay weights The contents of the document are as follows :
3. Modify the configuration file
Linux Under the platform , function cd config/
Catalog , And then run bash create_custom_model.sh <num-classes>
among Is the class parameter , Modify according to your needs , Here I change it to 1.
Windows Under the platform , To configure git Of bin After the variables in the directory , function sh.exe file . after cd config
After the catalog , function sh create_custom_model.sh <num-classes>
that will do
After execution , modify custom.data, Modify its configuration information .
4. Configure this time yolov3 Data format
The key is coming. , The key is coming. , The key is coming. !!!
In the github Next , For custom data , It is not stated that , It's just a stroke . But it's time to yolov3 The required data format for the version of is the same as voc Format and coco The format is not the same . One for each picture txt Label information . The first column is category information , The next four columns are standardized annotation information . among label It's a category in data/custom/classes.names The index of , <> Represents the scaling factor after scaling
here github No data conversion provided , Two new ones here Annotations and JPEGImages Folder , Will be ready for pictures and xml Tag information in it .
And then run voc2yolov3
file , Generate train.txt
and valid.txt
file information , Divide the dataset into , Save the image path in two txt In file .
And then run voc_annotation.py
Yes xml Tag information for processing , Deal with it as follows txt File form
And remember to modify classes.names The class name of , And copy pictures to images In file . namely
Okay , The data format is finished !!!
Now you can start training .
5. function train.py
# Training orders
python train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data --pretrained_weights weights/darknet53.conv.74
# For additional parameters, see train.py file
# Start training where you left off
python train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data --pretrained_weights checkpoints/yolov3_ckpt_99.pth --epoch
If there is a warning solution UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead.
stay model.py
Calculate the location of the loss In about 192 Add the following two sentences to the left and right of the line :
obj_mask=obj_mask.bool() # convert int8 to bool
noobj_mask=noobj_mask.bool() #convert int8 to bool
The running process is shown in the figure :
It can be done by tensorboard To see what's going on .tensorboard --logdir='logs\'
6. test result
Ding Dong , Ding Dong , It's done right away !!!
python detect.py --image_folder data/imgs/ --weights_path checkpoints/yolov3_ckpt_99.pth --model_def config/yolov3-custom.cfg --class_path data/custom/classes.names
Run the above , It will be right data/imgs The images under the file are predicted , And save the prediction results to output/imgs Under the document
If it's in GPU Training on your computer , stay CPU It's predicted on the computer , It needs to be modified model.load_state_dict(torch.load(opt.weights_path, map_location='cpu'))
Okay , It's done !!! Stand up flag!!! One more tomorrow !!!