仅作笔记整理搬运使用,没有任何程序原创部分,主要给自己提个醒,避免重复搜索工作
一、制作VOC数据集
https://blog.csdn.net/Sunhansong/article/details/107281225
二、darknet框架下载
yolov3官方网站
https://pjreddie.com/darknet/yolo/
AlexeyAB 版本darknet
https://github.com/AlexeyAB/darknet
训练直接可视化,权重有best.weights
三、训练
- 把数据集放在darknet/script中
- 修改voc_label.py中的classes变成自己需要的类别名称,此外将classes上一行的带括号的2012删除,以及最后两句注销.
python3 ./voc_label.py
cat 2007_train.txt 2007_val.txt > train.txt
-
修改配置
修改data/voc.names里面的类别为自己需要的类别名称
修改cfg/voc.data文件
classes= 3
train = /home/shs/darknet/scripts/2007_train.txt
valid = /home/shs/darknet/scripts/2007_test.txt
names = data/voc.names
backup = /home/shs/darknet/backup/
注:classese:类别数量
train:路径为voc数据集文件夹下的2007_train.txt文件的路径
test:路径为voc数据集文件夹下的2007_test.txt文件的路径
names:为data文件夹下的voc.names
backup:为主目录下backup文件夹(主要用来存放训练生成的.weights文件(模型)和.backup文件(用于训练过程中断后继续训练时所用文件))
eval:为voc评价标准
- 修改cfg文件
若用yolov3-tiny.cfg
[net]
#Testing
#batch=1
#subdivisions=1
#Training
batch=64
subdivisions=16 #原来是2,后来运行时总出核心已转储的错,改大了就好了
width=416
height=416
channels=3
[convolutional]
size=1
stride=1
pad=1
filters=93 ##改为3*(classes+1+4)
activation=linear
[yolo]
mask = 0,1,2
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=26 ##改为你自己的数量
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
其中有两处需要修改!yolov3-voc.cfg有三处!
- 训练:
(1)模型下载:
wget https://pjreddie.com/media/files/darknet53.conv.74
(2)可设置训练次数
系统默认会迭代45000次batch,如果需要修改训练次数,进入cfg/yolo3_tiny.cfg修改max_batches的值。
(3)模型保存
训练时默认:迭代次数小于1000时毎迭代100次保存一次模型,迭代次数大于等于1000时毎一万次保存一次模型,保存的模型结果保存在主目录下的backup文件夹下,同时,会保存.backup模型(该模型为:当训练中断时,若想要继续接着上次训练可以使用这个模型),若想修改毎多少次保存一次模型的次数,可以在DarkNet主目录下examples/detector.c文件138行中进行修改
修改完成后,在DarkNet主目录下鼠标右键打开终端输入命令:make,回车进行重新编译
(4)训练终端输入:
./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg darknet53.conv.74 -map
加上-map可在训练时看到map
./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg darknet53.conv.74 2>1 | tee train_yolov3.log
后面命令可保存训练日志train_yolov3.log
(5)
训练时,终端看Avg IOU 😗**这个值越大说明训练效果越好,出现大量的nan则证明训练无效
Region 106 Avg IOU: 0.494182, Class: 0.494590, Obj: 0.000736, No Obj: 0.000152, .5R: 0.000000, .75R: 0.000000, count: 1
658(迭代次数): 6.408302(总的loss损失), 6.909904 avg(平均loss), 0.000187 rate(学习率), 3.666400 seconds(训练batchsize用到的时间), 42112 images(当前已经训练多少图片)
Loaded: 0.000028 seconds
参数信息:
Avg IOU: 当前迭代中,预测的box与