YOLOV3+opencv+vs配置过程,遇到的问题及解决方法

YOLOV3学习

最近进行目标检测的学习,网上看了好多博客,也走了不少弯路,写一个博客记录自己的学习之路。

1、环境配置

配置环境配置主要参考了下面的博客
1、用VS2015编译用GPU训练的Yolov3工程

之前用的opencv版本3.1.0的,在配置好之后老出现C2039:xx不是cv::dnn成员的错误,后来经过查阅资料发现是opencv版本的问题,随后安装了opencv3.4.2的版本,发现错误消失。
随后在另一个电脑上重新编译出现很多错误,通过添加相关路径得以解决问题,主要还是CUDA有关path未做好,如下图
YOLOV3+opencv+vs配置过程,遇到的问题及解决方法_第1张图片
YOLOV3+opencv+vs配置过程,遇到的问题及解决方法_第2张图片

2、代码测试

随后又参考了该博主的另一个博客
2、Yolov3+C+++opencv+VS2015成功检测

3、训练数据

训练数据参考如下:
3、Yolov3:win10下训练自己的数据(GPU版)(详细步骤)
labelImg下载地址:链接:https://pan.baidu.com/s/10shUEP5by65TS-D8MfK28Q
提取码:6uyc
下载的文件是编译好的,可执行的labelImg.exe文件。直接将文件放在windows环境下,双击可执行。具体参考下面链接:windows下使用labelImg标注图像
注意:
1、标记用的图片最好处理成是416416或13的倍数,因为训练过程中算法会把图片生成1313的格进行,416是13的倍数。
2、保存txt和xml的方法见下图。
YOLOV3+opencv+vs配置过程,遇到的问题及解决方法_第3张图片

4、出现问题如下

1、YOLOV3+opencv+vs配置过程,遇到的问题及解决方法_第4张图片
解决方法:yolov3-voc.cfg文件内未按要求改数据,重新调整后无此错误了。
我的指令为:

cd /d F:\yolo\20191231\darknet-master\build\darknet\x64
darknet.exe detector train data/voc.data yolov3-voc20191231.cfg darknet53.conv.74 data/weights
 其中我的命名是 yolov3-voc20191231.cfg,你的改为自己对应文件的名称。

2、YOLOV3+opencv+vs配置过程,遇到的问题及解决方法_第5张图片
解决方法:训练用的txt文件中的类名称没有修改,重新把新生成的文件放进去后可以编译了(所以要严格按照顺序修改,不然会漏掉,这样运行时就会出错)。

3、YOLOV3+opencv+vs配置过程,遇到的问题及解决方法_第6张图片上面的这个错误是后期做大量图片训练时遇到的一个错误,经过几天的研究分析发现因为标记过程中类名输错了一个,然后标记过程中的目录没有删掉它,训练时没把错误的名字算进去,所以一直报错了,后来把错误的也算上后,错误消失了,也就是说标记过程中出现几个类,训练时就要有几个类。
4、windows下训练yolo时出现CUDA Error: out of memory问题的解决
出现这个错误的原因是我把cfg文件中的subdivision的参数更改成了32,原数值为16,查阅资料之后发现是这个问题,更换过之后就恢复了正常。

subdivision:这个参数很有意思的,它会让你的每一个batch不是一下子都丢到网络里。而是分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iteration。这样会降低对显存的占用情况。如果设置这个参数为1的话就是一次性把所有batch的图片都丢到网络里,如果为2的话就是一次丢一半。

参考链接:https://blog.csdn.net/qq_33485434/article/details/80432054

5、其他

Windows下深度学习标注工具LabelImg安装和使用指南
出现错误

An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.

1、使用anaconda出现CondaHTTPError问题的解决
2、os.mkdir FileNotFoundError: [Errno 2] No such file or directory:

6、有用的方法

如果想批量给图片命名,还可以用下面的方法,链接如下:
1、如何用bat命令对某一文件夹下图片批量命名
2、Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)

先写这些吧,回头再逐步完善。

你可能感兴趣的:(YOLOV3,opencv)