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
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
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.
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 .
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
Okay , It's done ！！！ Stand up flag！！！ One more tomorrow ！！！