https://arxiv.org/abs/2004.10934
如果你有兴趣,YOLO的系列的损失函数也是一绝,了解下:https://mp.weixin.qq.com/s?__biz=MzIzNDM2OTMzOQ==&mid=2247487059&idx=1&sn=9e2c5ee7923ddd36c889507c70ddb804&chksm=e8f63607df81bf11c4597a116b4812af35570ada98220a283af295c829bb60473089a41d80eb&mpshare=1&scene=23&srcid=0722LIxqziSJe01Uv5ddFGvI&sharer_sharetime=1595423944083&sharer_shareid=7ac210d5394f53b68ccf96c0ef8a72ed#rd
链接:https://pan.baidu.com/s/15Q_7bNe4Ca0OluBM_2je5A
提取码:4da9
放于主文件夹下即可
下载:官网地址:https://opencv.org/的releases选项中下载合适版本的zip或者直接github下载
编译:进入opencv主文件夹
mkdir build
cd build
cmake ..
make -j8
sudo make install
下载:https://github.com/AlexeyAB/darknet
编译:打开Makefile文件
set:
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=0
LIBSO=0
ZED_CAMERA=0
ZED_CAMERA_v2_8=0
# set GPU=1 and CUDNN=1 to speedup on GPU
# set CUDNN_HALF=1 to further speedup 3 x times (Mixed-precision on Tensor Cores) GPU: Volta, Xavier, Turing and higher
# set AVX=1 and OPENMP=1 to speedup on CPU (if error occurs then set AVX=0)
# set ZED_CAMERA=1 to enable ZED SDK 3.0 and above
# set ZED_CAMERA_v2_8=1 to enable ZED SDK 2.X
#然后make -j8 命令编译
./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg
如果编译了opencv会直接显示结果,如果没有编译会在主文件夹下生成结果图片
参考材料如下,在此致谢
https://blog.csdn.net/ly_twt/article/details/105761312
https://blog.csdn.net/ly_twt/article/details/105577683
https://www.cnblogs.com/bob-jianfeng/p/12888111.html
1 VOC数据集的下载(07的train+test+val 12的train+val)
1.1 百度网盘
链接:https://pan.baidu.com/s/1ZAQiELMUfhNqLoyQXEK4rQ
提取码:mbmn
1.2 或者直接
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
1.3 解压需要注意
将以上压缩包放在同一文件夹中进行解压,解压后,所有的数据都会解压到VOCdevkit文件夹中。将VOCdevkit文件夹放在darknet目录中就行。注意:因为VOCtest_06-Nov-2007和VOCtrainval_06-Nov-2007解压后都是VOC2007,所以要先解压VOCtest_06-Nov-2007,然后将文件名由VOC2007改成VOC2007_test,然后再解压VOCtrainval_06-Nov-2007)
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
tar xvf VOCtrainval_11-May-2012.tar
解压后,VOCdevkit文件夹中主要有:
./ VOC2007
./ VOC2007_test
./ VOC2012
./ VOCcode
./ 以及一些示例
1.4 制作label标签文件
将darknet/scripts目录下的voc_label.py文件,拷贝至darknet目录。打开voc_label.py文件,修改第7行,将列表的最后一个元组修改为('2007_test', 'test'):
修改第58行,将2007_test改为2007_test_test:
运行voc_label.py文件:
python voc_label.py
运行后,darknet目录下会生7个文件,分别为:
2007_train.txt,2007_val.txt,2007_test_test.txt,2012_train.txt,2012_val.txt,train.txt,train.all.txt
将这7个txt文件放到darknet/VOCdevkit中。
2 预训练权重
链接:https://pan.baidu.com/s/1cQfqKz6-v3njSDoBhF8vRA
提取码:fj8c
3 修改训练配置文件
3.1 修改cfg/voc.data文件
将下图:
改成:
3.2 将cfg/yolov4-custom.cfg进行复制,并将复制后的文件命名为yolo-obj.cfg。
修改cfg/yolo-obj.cfg文件:
3.2.1 如果在训练过程中出现out of memory,将subdivisions修改为32或者64。
其中,batch值可以根据自己的显存大小进行调整。但是batch不能太小,如果batch太小或者等于1,最终训练得到的模型可能会无法收敛。
3.2.2
3.2.3 在文件中,使用Ctrl+F搜索yolo,一共出现在三个地方。修改yolo下面的classes,以及yolo上面的filters:
./darknet detector train cfg/voc.data cfg/yolo-obj.cfg yolov4.conv.137 -gpus 0
观察到如下信息证明训练已开始