仅作笔记整理搬运使用,没有任何程序原创部分,主要给自己提个醒,避免重复搜索工作
一、Darknet-master
https://github.com/AlexeyAB/darknet
更改makefile文件
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
……
#cd到darknet-master目录下
make -j16
测试图片,结果保存在darknet-master/predictions.jpg
./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg
参考
https://blog.csdn.net/weixin_44771532/article/details/105495755
二、VOC数据集
VOCdevkit文件夹放在darknet目录中
darknet/scripts下的voc_label.py拷贝至darknet目录。
打开voc_label.py
因为以voc2012为数据集
#sets=[('2012', 'train'), ('2012', 'val'), ('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
sets=[('2012', 'train'), ('2012', 'val')]
最后一行
#os.system("cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt > train.txt")
#os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt > train.all.txt")
os.system("cat 2012_train.txt 2012_val.txt > train.txt")
然后
python voc_label.py
darknet目录下会生2个文件:2012_train.txt和2012_val.txt
三、配置文件
1 、 打开cfg/voc.data
classes= 20 #类别数
train = /home/s/darknet-master/2012_train.txt
valid = /home/s/darknet-master/2012_val.txt
names = data/voc.names #类别名称
backup = /home/s/darknet-master/backup/#模型存放
2、将cfg/yolov4-custom.cfg进行复制,并将复制后的文件命名为yolov4-obj.cfg。
修改cfg/yolov4-obj.cfg文件:
修改6、7行,否则容易有out of memory错误
batch=16
subdivisions=32
修改20、22行
max_batches = 20000 #类别数量*2000
steps=16000,18000 #分别是0.8*max_batches,0.9max_batches
在文件中,使用Ctrl+F搜索yolo,一共出现三个地方。修改yolo下面的classes,以及yolo上面的filters:
[convolutional]
……
filters=75 #(类别数+5)*3
……
[yolo]
……
classes=20 #类别数
……
四、开始训练
./darknet detector train cfg/voc.data cfg/yolov4-obj.cfg yolov4.conv.137 -m
五、测试
./darknet detector test cfg/voc.data cfg/yolo-obj.cfg yolo-obj_xxxx.weights
参考博客:
https://blog.csdn.net/ly_twt/article/details/105577683
https://blog.csdn.net/ly_twt/article/details/105761312