毕设做隧道病害自动检测,使用YOLO v3训练自己的数据集,以作学习记录。
#一、配置环境
我是win7的系统,显卡GTX1070;
1.安装 vs2015
2.CUDA 9.0官网地址:https://developer.nvidia.com/cuda-75-downloads-archive
3. CUDNN for CUDA 9.0 官网地址:https://developer.nvidia.com/rdp/cudnn-archive(需要注册)
4.opencv 3.42 官网地址:https://opencv.org/releases/page/2/ 解压到D盘,添加path系统环境
#二、下载darknet,并编译darknet.exe
1.darknet 下载地址:https://github.com/AlexeyAB/darknet
1.1 打开darknet .sln
出现加载失败:未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 10.0.props”。
解决:打开darknet.vcxproj,将CUDA版本改为自己的版本(9.0),重新加载
1.2 选择Release x64编译出现错误:MSB3721: 命令“”C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe” 后面跟了一大堆参数
解决:将compute_75,sm_75删除
1.3 编译出现错误:无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory darknet E:\darknet-master\src\http_stream.cpp
解决:添加属性表,将opencv3.42的路径配置好,包含目录与库目录,链接器-输入-依赖项:opencv_world342.lib和opencv_world342d.lib
1.4出现错误:无法解析的外部符号 cudnnSetConvolution
解决:在链接器-常规-附加库目录添加:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64
1.5
编译成功-在darknet-master\build\darknet\x64文件夹中生成 darknet.exe
测试: 权重下载:https://pjreddie.com/media/files/yolov3.weights
在cmd中 cd 到darknet-master\build\darknet\x64文件夹后运行: darknet_yolo_v3.cmd
错误:not compiled with opencv ,saving to predictions.png 没有弹出结果(opencv的问题,没有解决)
结果保存在darknet\x64文件夹中:predictions.jpg
#三、训练自己的数据集
1.下载labelImg 免命令安装(Windows) https://github.com/tzutalin/labelImg/releases
打开labellmg.exe,进行漫长的标记,保存时格式选YOLO,会得到对应的.txt文件
2.参考帖子 https://blog.csdn.net/qq_36417014/article/details/88577729#commentsedit
得到2018_train.txt和2018_val.txt 并修改 voc.data yolov3-voc.cfg voc.names
3.下载预先训练的权重:darknet53.conv.74 :https://pjreddie.com/media/files/darknet53.conv.74
4.开始训练:打开cmd,cd到\darknet-master\build\darknet\x64\文件夹
运行darknet.exe detector train data/voc.data yolov3-voc.cfg darknet53.conv.74 >> yolov3.log
训练日志输出到yolov3.log(可以可视化训练过程)
#四、测试自己的数据
1.打开cmd,cd到\darknet-master\build\darknet\x64\文件夹
darknet.exe detector test voc.data yolov3-voc.cfg yolov3-voc-train_10000.weights -ext_output -dont_show <2018_val.txt> results/result.txt
其中:
2018_val.txt是测试图片的地址
(批量检测参考帖子https://blog.csdn.net/qq_33350808/article/details/88135048)
输出结果框图片在output文件夹,文本结果在result.txt