YOLOv3训练自定义数据【超级简明,亲测有效】


手动收集一批手机图片,然后训练一个能够识别手机的YOLOv3模型,最终效果如下图所示:

 

YOLOv3训练自定义数据【超级简明,亲测有效】_第1张图片

感谢untilyouydc博主提供的轮子,可以很方便的爬取百度图片

https://blog.csdn.net/qq_40774175/article/details/81273198

????????????????????????

 

YOLOv3训练自定义数据【超级简明,亲测有效】_第2张图片

 

????????????????????????

 

YOLOv3训练自定义数据【超级简明,亲测有效】_第3张图片


 

本次测试在服务器上的目录为/data_1/git/

  • 下载darknet工程
cd /data_1/git/

git clone https://github.com/pjreddie/darknet

cd darknet

 

  • 修改相应配置
vim Makefile

将GPU=0改为GPU=1,使用GPU进行训练

YOLOv3训练自定义数据【超级简明,亲测有效】_第4张图片

 

  • 执行
make

 

  • 准备训练数据集及相关配置文件 (该目录)
cd /data_1/git/darknet/test/

YOLOv3训练自定义数据【超级简明,亲测有效】_第5张图片


  • JPEGImages 文件夹保存用于训练的图片

YOLOv3训练自定义数据【超级简明,亲测有效】_第6张图片

  • labels 文件夹保存训练图片对应的标注结果

(采用labelImg标注工具: 参考 https://github.com/tzutalin/labelImg )

YOLOv3训练自定义数据【超级简明,亲测有效】_第7张图片

 

  • 将labels下的标注文件拷贝到JPEGImages目录下
cd /data_1/git/darknet/test/labels

scp * ../JPEGImages

cd ../JPEGImages

ls

YOLOv3训练自定义数据【超级简明,亲测有效】_第8张图片

 

  • lxp.names 保存类别对应的标签名称 

 

  • tain.txt & val.txt 保存训练集和验证集图片的绝对路径清单

YOLOv3训练自定义数据【超级简明,亲测有效】_第9张图片

 

  • backup_big 用于保存模型权重文件的中间结果,名称可以随意取
cd /data_1/git/darknet/test/

mkdir backup_big

 

  • lxp.data 保存训练相关参数

(classes对应类别数量,train对应训练集图片路径集合,valid对应验证集训练图片路径集合,names对应类别标签名称文件,backup对应训练过程中保存模型权重文件的中间结果的文件夹)

YOLOv3训练自定义数据【超级简明,亲测有效】_第10张图片

  • yolov3-lxp.cfg

文件详细解释 ???YOLO - YOLOV3 .cfg 配置文件 参数含义

关闭测试模式、开启训练模式,根据需要调整最大迭代次数

vim /data_1/git/darknet/test/yolov3-lxp.cfg

YOLOv3训练自定义数据【超级简明,亲测有效】_第11张图片

在文件中搜索yolo层,将前一个网络层中filters参数进行修改,文件总共有3处需要修改

YOLOv3训练自定义数据【超级简明,亲测有效】_第12张图片

 

  • 下载预训练模型权重
cd /data_1/git/darknet/test/

wget https://pjreddie.com/media/files/darknet53.conv.74
  • 开始训练模型
cd /data_1/git/darknet/

./darknet detector train test/lxp.data test/yolov3-lxp.cfg test/darknet53.conv.74

  • 开始测试模型
cd /data_1/git/darknet/

./darknet detector test test/lxp.data test/yolov3-lxp.cfg test/backup_big/yolov3-lxp_final.weights test/JPEGImages/hold_phone_1.jpg

YOLOv3训练自定义数据【超级简明,亲测有效】_第13张图片

你可能感兴趣的:(python,YOLO,目标检测)