一、前言
keras版本的yolov3训练的收敛效果以及模型的精度与c版本的darknet框架下yolov3训练相比,后者经过论证要比前者好很多,本文是基于这段时间的学习,捣鼓出来的,欢迎大家一起共享交流。
二、训练及验证
1. labelimg数据标注
- 通过爬虫工具爬取图片(其他途径也可以)
- 脚本过滤重复的图片
- 人工过滤图片
- 确保图片数据集尽可能多,涉及包含的各个场景
- 使用脚本预标注
- 人工标注
- 脚本处理 标注结果,确保最终标注的结果是一张图片对应一个xml
2. 训练环境准备
- Ubuntu16.04
- GTX1060及以上显卡
- 安装CUDA、CUDNN
- Python3.6
3. 下载代码
https://github.com/swliu2016/train-core-yolov3-darknet.git
git clone https://github.com/swliu2016/train-core-yolov3-darknet.git
cd train-core-yolov3-darknet
4. 修改Makefile文件
GPU=1 #如果使用GPU设置为1,CPU设置为0,GPU下的darknet运行会比CPU环境下快500倍
CUDNN=1 #如果使用CUDNN设置为1,否则为0
OPENCV=0 #如果调用摄像头,还需要设置OPENCV为1,否则为0
OPENMP=0 #如果使用OPENMP设置为1,否则为0
DEBUG=0 #如果使用DEBUG设置为1,否则为0
5. 编译:
make clean 后 make -j8
6. 下载yolov3预训练模型(可以跳过)
https://pjreddie.com/media/files/yolov3.weights
7. 测试yolov3预训练模型(可以跳过)
./darknet detect cfg/yolov3.cfg yolov3.weights 'img'
8. 用tools/create_darknet_train_dirs.py脚本voc数据集准备生成四个文件夹: (其中ImageSets文件下包含Main文件夹,Self文件夹下包含DarknetLabel,DarknetModel,Test文件夹)
注:需要自己修改生成文件夹的路径,跟后面的配置文件路径对应