目录
- 写在前头
- 编译运行
-
- 运行环境及准备
- 安装编译环境
- 收集数据
- 进行配置
- 执行训练
- 测试训练结果
- 拓展
- 错误汇总
- 小结
写在前头
第一次写,写了一下午感觉写的还是比较细致的,在最后也附上了源码链接,如果在参照此方法训练数据出现任何问题的欢迎微信(BreakALegToday)交流探讨,共同进步。自己也是小白一个,希望能够一步步有所改进~~~~也欢迎大佬提点指导。下面开始跑起来~
编译运行
运行环境及准备
- 笔记本(最好有带gpu的电脑)
- pytorch版yolov3
-
Win10系统:
3.1 安装Git
-
python环境及编译器
4.1 安装python3.7
4.2 安装pycharm
4.3 安装pipenv 构建虚拟环境(嫌麻烦的可以安装AnaConda)
4.4 下载labelImg标注工具
- 安装CUDNN+CUDA加速运行,教程
安装编译环境
- 安装源文件及构建python虚拟环境
选择一个路径,打开powershell(在文件夹空白处shift+鼠标右键)输入以下代码
git clone https://github.com/ultralytics/yolov3.git
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL5gjM4IjMwITMyEjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
转移到yolov3文件夹下,使用pipenv shell创建该文件夹下的虚拟环境。
pipenv shell
-
安装yolov3所需环境
源址中提到所需的环境和安装方式,报Error.1的错误
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
pip3 install torch===1.3.1 torchvision===0.4.2 -f https://download.pytorch.org/whl/torch_stable.html
pip3 install opencv-python
pip3 install tqdm
pip3 install matplotlib
安装完成后都会有Successfully installed xxx的提示,numpy在安装torch时已经安装,matplotlib是程序中画图有用到
收集数据
-
一些公开数据(持续更新)
红细胞数据集
螺母数据集
昆虫数据集
-
收集自己数据
若不想收集数据的话可以使用上述数据。如果想训练自己特定的目标时,则需要先收集数据。
选择免费无水印的图片库pixabay,相应的收集参照教程
pycharm新建一个collect.py
pixabay的组织形式有点变化,在上述教程上稍微做了些改动,主要是链接地址的变化,可参看源码win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
运行成功后如下,从图片第3页开始总共下载1页
下载完成后,先删除一些无效图片或不相关图片,再进行标注,标注工具LabelImg
可以在view里面设置自动保存等,快捷键d下一张图,a上一张图,w框选器
标注完成后更改保存路径,每一张图片都有对应的一张xml的
进行配置
-
数据拷贝至data目录下
本次训练采用红细胞来训练,可参考,下载后的数据放到Data文件夹中并将JPEGImages重命名为Images
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结 -
划分数据
运行根目录下的maketxt.py将数据集划分,再运行labelPy.py获取图像路径及标注信息
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结 -
配置文件
配置训练数据和网络结构,在data文件夹下添加ReadBlood.data 以及ReadBlood.names
ReadBlood.data
classes=1
train=data/train.txt
valid=data/test.txt
names=data/RedBlood.names
backup=backup/
ReadBlood.names
RedBloodCeil
在cfg文件夹yolov3-tiny.cfg配置搜索yolo,更改所有[yolo]下的classes和上面一个filters,只需更改一个
同时更改cfg中的batch类
执行训练
-
准备权重文件
直接运行会报错,需准备权重文件,参照Solution.2下载权重yolov3-tiny.weighs 并放于weights文件夹下
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结 -
执行训练
在pycharm的terminal中运行下列代码
python train.py --data data/RedBlood.data --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights --epochs 10
能够开始训练,如果安装了CUDNN CUDA的话能够看到GPU的使用情况,此处用的为CPU训练~~有示例未使用了转换的权重文件进行处理,详见Expend.3
训练完成后的显示上图,并在文档中生成一个best.pt的权重文件
同时我用带GPU的电脑训练了另一类数据,效果还可以,训练完成结果如上。
测试训练结果
在images里面随机挑几张图片放入simple中,运行如下指令
python detect.py --data data/rbc.data --cfg cfg/yolov3-tiny.cfg --weights weights/best.pt
在output里面有一系列检测结果,可以看到训练的效果一般很多误检测。
拓展
Expend.1 为什么不用AnaConda来构建环境?
使用pipenvl而不用Anaconda的原因是因为之前在做别的项目时,在pyinstaller打包exe时使用pipenv构建的纯净环境能够极大的减少exe的大小。所以一直使用pipenv构建虚拟环境,如果没有这方面需求的可以考虑直接用AnaConda
Expend.2 为什么使用yolov3-tiny.cf来配置?
所需的gpu资源小
Expend.3 使用改造后的weights进行finetune?
之前配置过c++版本的yolov3 生成有.exe的darknet
在powershell中运行可以得到yolov3-tiny.conv.15
./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
在源码中附有该conv.15
Expend.4 摄像头检测
首先将detect.py中的数据改一下
再运行
python detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/best.pt --source 0
错误汇总
Error.1:yoloV3运行需要上述环境,直接参照安装源址或在pycharm里面安装时pytorch报安装失败
Solution.1:去官方网站上下载安装指令
Error.2:不转换权重时出现的错误
默认权重文件为weights/ultralytics68.pt,而直接运行时,发现在weights文件夹下无该类文件,故进行下载,而国内又被屏蔽。所以需要自己下载后转换
Solution.2:
官网下载权重文件
小结
上述源码链接还有很多待完善的部分,如下:
problem.1:直接用下载的weight和转换后conv.15训练的区别多大,或者说finetune的技巧?(貌似conv.15是保留相应的前15层权重最后一层不要??)
problem.2:如何用我训练的数据连接摄像头进行动态识别? 参见Expend.4
problem.3:粗略通熟的理解算法,以及能够作哪些调整对训练有比较大的帮助,减少时间、提高精度等等?
problem.4:如何部署到手机上进行操作?
以上问题一个个慢慢学习逐渐解决,首要目标!先能用再来优~附上张微信名片,欢迎交流和指导,再接再厉!