windows10一站式YOLOv2训练自己的数据集
-
00.准备
- 安装Windows10
- 下载相关安装包:
- VS2015社区版(下载链接:https://www.ithome.com/html/win10/164028.htm)
- OpenCV3.3.1源码包(下载链接:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.3.1/opencv-3.3.1-vc14.exe/download)
- CUDA8.0_win10安装包(下载链接:https://developer.nvidia.com/cuda-80-ga2-download-archive)
- cudnn8.0_win10_x64压缩包(下载链接:http://download.csdn.net/download/k_shmily/10002883)
- darknet19_448.conv.23 预训练文件(下载链接:https://pjreddie.com/media/files/darknet19_448.conv.23)
- 以下已打包:http://download.csdn.net/download/sinat_25453705/10191886
- Python3.5
- Darknet源码(YOLOv2)
- pthread库(YOLOv2依赖)
- python重命名脚本
- LabelImgv1.3.3
-
环境配置
- 安装VS,比较简单略。(注:vs默认用的是C#开发环境,安装过程需要勾选通用Windows开发工具)
- 安装Python
- 配置OpenCV(不需要安装,解压exe文件夹到指定文件夹)
- 配置系统环境变量:右键计算机>>属性>>高级系统设置>>高级>>环境变量,找到path>>编辑>>添加你的OpenCV路径,如:D:\opencv\build\x64\vc14\bin
- 打开VS2015,新建一个C++空项目,并在源文件中添加.cpp文件
- 打开视图>其他窗口>>属性窗口,选择属性管理器列表的Debug | x64 >>右键Microsoft.Cpp.x64.user>>属性
- 通用属性>>VC++ 目录>>包含目录,添加
D:\opencv\build\includeD:\opencv\build\include\opencvD:\opencv\build\include\opencv2
- 通用属性>>VC++ 目录>>库目录,添加
D:\opencv\build\x64\vc14\lib
- 通用属性>>链接器>>输入>>附加依赖项中,添加
-
opencv_world331.lib(注:331即opencv版本号3.3.1,如果其他版本换上对应版本号即可) opencv_world331d.lib
-
- 通用属性>>VC++ 目录>>包含目录,添加
- OpenCV配置结束,加上头文件
#include<opencv2/opencv.hpp>使用imread、imshow函数,测试打开图片,显示图片。(略)
- 安装CUDA(会提示关闭VS)
- 解压cudnn压缩包,将bin、include、lib\x64下的文件复制到CUDA的安装目录下对应的文件夹,如:将bin下面的文件复制到
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin下。 - 解压pthread库到指定目录。
- 解压darknet-master到指定目录。
- 用VS打开build\darknet\darkner.sln
- 设置解决方案为 Release x64
- 打开菜单栏的项目>>属性>>VC++ 目录>>包含目录,添加刚才解压的pthread和CUDA目录,如:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\includeD:\Pre-built.2\include
- VC++ 目录>>库目录,添加相应库路径,如:
D:\Pre-built.2\lib\x64C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
- 通用属性>>C/C++>>预处理器>>预处理器定义,编辑添加,以下:
CUDNNOPENCV_TIMESPEC_DEFINED_CRT_SECURE_NO_WARNINGS_CRT_RAND_SGPUWIN32NDEBUG_CONSOLE
- 通用属性>>C/C++>>常规>>等级警告修改为3,将警告视为错误修改为否。
- 设置解决方案为 Release x64
选择Release x64解决方案,生成解决方案。得到darknet.exe。
- 将tiny-yolo-voc.weights(https://pjreddie.com/media/files/tiny-yolo-voc.weights)复制到darknet-master\build\darknet\x64下
- 打开命令行,输入:
darknet.exe detector test data/voc.data tiny-yolo-voc.cfg tiny-yolo-voc.weights data/dog.jpg
- 如果显示出图片,终端显示对应的类别和匹配度,则表示环境已搭建成功!
-
01.开始制作数据集
- a.使用网上的数据集
- b.自己制作(本文主要记录训练自己数据集的过程)
- 拍照!拍照!拍照!大量的拍!虽然我一共也只用了250张左右。存储去文件夹中,并命名为Image
- 对图片进行重命名:编辑pack文件夹下的rename.py,修改你的图片路径。在终端输入:
python rename.py - 解压LabelImg工具,Windows下直接打开,Open Dir打开图片的目录。选择Create RectBox开始标注,并为类别命名,如Cube(我这里用了魔方的蓝面),标注结束,选择Save保存对应的xml文件。(注:xml可能会和图片同一路径,可以统一把xml文件复制出去,与Image同一目录)
- 在darknet-master\build\darknet\x64\data目录下创建文件夹voc_data,并将Image和xml复制到这
- 使用网友的工具对数据集Image,xml进行处理,主要参考:http://blog.csdn.net/qq_34484472/article/details/73135354
- 02.开始训练
- 修改配置文件
- 修改darknet-master\build\darknet\x64\data\voc.data
- 主要是修改类别数量,以及训练集和测试集的路径:
- 修改darknet-master\build\darknet\x64\data\voc.names为类别名称:Cube
- 修改darknet-master\build\darknet\x64\tiny-yolo-voc.cfg重中之重!
- 第2行:
batch=64 - 第3行:
subdivisions=16(注:这里默认为8,GTX850M会出现out of memory的情况,可以按8的倍数适当增加) - 第114行:
filter=30(注:filters=(classes+coords+1)*num,即:1类) - 第120行:
classes=1
- 第2行:
- 修改darknet-master\build\darknet\x64\data\voc.data
- 下载YOLO的预训练文件:darknet19_448.conv.23复制到darknet-master\build\darknet\x64\下。
- 在命令行下输入:
darknet.exe detector train data/voc.data tiny-yolo-voc.cfg darknet19_448.conv.23 - 训练中!如果出现找不到txt文件,请参考上面网友处理数据集时的解决方案。如果出现无法打开图片,请把Image里对应用编号的图片,替换trainImage和validateImage下的图片。
- 训练结束后,backup目录下得到tiny-yolo-voc_final.weights
- 修改配置文件
- 03.评估训练结果
- 效果图
-
- 待续
- 04.总结
- 躺坑之后的小小备忘录。拾人牙慧,见笑了!
- 05.参考