Windows下使用COCO数据集训练Yolo(darknet)

本文主要记录使用COCO 数据集训练darknet网络获取yolo权重的过程,主要包括:数据集处理及训练过程。
参考资料:
1.CSDN – 在COCO数据集中制作Darknet的训练集
2.Github – COCO_forYOLO
3.Github – hwrenx/coco2yolo
4.Github – philferriere/cocoapi (windows)
5.Github – AlexeyAB/darknet
6.博客园 – darknet-训练自己的yolov3模型

推荐使用:java – coco-to-yolo(包含完整流程)
推荐参考:Getting Started with Darknet YOLO and MS COCO for Object Detection

1 数据集处理

1.1 下载数据集

下载COCO 数据集,主要部分:

  • 训练用的train数据集
  • 验证用的val数据集
  • 测试用的test数据集
  • 对应的annotations数据集标注

将所有imageannotations解压到各自文件夹内即可

1.2 处理标签文件

需要进行的处理:

  • 使用COCO APIannotationjson中提取出单个文件的标注
  • 整合各个数据集中图片的绝对路径集合
  • 修改coco.data文件

自己整理了一个脚本:Github – coco2yolo。下载后将两个脚本放在数据集根目录,运行coco2yolo.py即可。

运行脚本前需要安装的库:

  • pycocotools
  • Cython
  • matplotlib

其中Windows下是无法直接通过pip install安装pycocotools的(作者没有考虑Windows环境),可能会出现无效参数/Wno-cpp等错误,需要使用WIndows版本的pycocotools手动安装:

成功运行后会生成coco.data,用其覆盖掉darknet/cfg/coco.data,并在darknet/cfg下创建一个新的文件夹backup

2 使用darknet

  1. Windows下使用AlexeyAB的darknet:项目地址。使用build/darknet下的darknet.sln即可,注意版本要求和opencv依赖配置(具体要求见Github的README)。
  • 最好设置成Realease x64版本
  • 需要将cudnn路径加入到环境变量中:示例截图
  • OpenCV最好安装在C:\\opencv_3.0,且不可以使用3.1及以上的版本对应issue
  1. 编译完成后到C:\opencv_3.0\opencv\build\x64\vc14\bin里找到以下文件放到darknet/build/darknet/x64下面
  • opencv_world320.dll / opencv_world340.dll
  • opencv_ffmpeg320_64.dll / opencv_ffmpeg340_64.dll
  1. 如果提示找不到cudnn64_7.dll,到path/to/your/cudnn/bin路径下拷贝一份

  2. 确认C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1路径是否存在且包含bininclude,如果没有就从自己的CUDA路径下面拷贝一份(默认路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x

  3. 根据实际情况更改yolov3.cfg参考链接

  4. 使用darknet.exe进行训练:darknet.exe detector train cfg/coco.data cfg/yolov3.cfg,训练时可以设置初始权重或中断恢复权重:darknet.exe detector train cfg/coco.data cfg/yolov3.cfg backup.weight,一个很方便的预训练卷积层权重:wget https://pjreddie.com/media/files/darknet53.conv.74

错误记录:
1.错误 error C2054 在“using”之后应输入“(” (编译源文件…) opencv版本错误(3.4.1+)
2.错误 error MSB3721 … 已退出,返回代码为 1 更换VS 2015
3.错误 error : expected a “;” 更换VS 2015
4.错误 error C1083: 无法打开包括文件: “cudnn.h”: No such file or directory 未在path中设置cudnn或路径错误

正文完

    原文作者:hwrenx
    原文地址: https://www.jianshu.com/p/cf164eb4c4f1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞