天天看点

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

目录

  • 写在前头
  • 编译运行
    • 运行环境及准备
    • 安装编译环境
    • 收集数据
    • 进行配置
    • 执行训练
    • 测试训练结果
  • 拓展
  • 错误汇总
  • 小结

写在前头

第一次写,写了一下午感觉写的还是比较细致的,在最后也附上了源码链接,如果在参照此方法训练数据出现任何问题的欢迎微信(BreakALegToday)交流探讨,共同进步。自己也是小白一个,希望能够一步步有所改进~~~~也欢迎大佬提点指导。下面开始跑起来~

编译运行

运行环境及准备

  1. 笔记本(最好有带gpu的电脑)
  2. pytorch版yolov3
  3. Win10系统:

    3.1 安装Git

  4. python环境及编译器

    4.1 安装python3.7

    4.2 安装pycharm

    4.3 安装pipenv 构建虚拟环境(嫌麻烦的可以安装AnaConda)

    4.4 下载labelImg标注工具

  5. 安装CUDNN+CUDA加速运行,教程

安装编译环境

  1. 安装源文件及构建python虚拟环境

选择一个路径,打开powershell(在文件夹空白处shift+鼠标右键)输入以下代码

git clone https://github.com/ultralytics/yolov3.git
           
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

转移到yolov3文件夹下,使用pipenv shell创建该文件夹下的虚拟环境。

pipenv shell
           
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
  1. 安装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是程序中画图有用到

收集数据

  1. 一些公开数据(持续更新)

    红细胞数据集

    螺母数据集

    昆虫数据集

  2. 收集自己数据

    若不想收集数据的话可以使用上述数据。如果想训练自己特定的目标时,则需要先收集数据。

    选择免费无水印的图片库pixabay,相应的收集参照教程

    pycharm新建一个collect.py

    win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
    pixabay的组织形式有点变化,在上述教程上稍微做了些改动,主要是链接地址的变化,可参看源码

运行成功后如下,从图片第3页开始总共下载1页

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

下载完成后,先删除一些无效图片或不相关图片,再进行标注,标注工具LabelImg

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

可以在view里面设置自动保存等,快捷键d下一张图,a上一张图,w框选器

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

标注完成后更改保存路径,每一张图片都有对应的一张xml的

进行配置

  1. 数据拷贝至data目录下

    本次训练采用红细胞来训练,可参考,下载后的数据放到Data文件夹中并将JPEGImages重命名为Images

    win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
  2. 划分数据

    运行根目录下的maketxt.py将数据集划分,再运行labelPy.py获取图像路径及标注信息

    win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
  3. 配置文件

    配置训练数据和网络结构,在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,只需更改一个

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

同时更改cfg中的batch类

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

执行训练

  1. 准备权重文件

    直接运行会报错,需准备权重文件,参照Solution.2下载权重yolov3-tiny.weighs 并放于weights文件夹下

    win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
  2. 执行训练

    在pycharm的terminal中运行下列代码

python train.py --data data/RedBlood.data --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights --epochs 10
           
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

能够开始训练,如果安装了CUDNN CUDA的话能够看到GPU的使用情况,此处用的为CPU训练~~有示例未使用了转换的权重文件进行处理,详见Expend.3

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

训练完成后的显示上图,并在文档中生成一个best.pt的权重文件

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

同时我用带GPU的电脑训练了另一类数据,效果还可以,训练完成结果如上。

测试训练结果

在images里面随机挑几张图片放入simple中,运行如下指令

python detect.py --data data/rbc.data --cfg cfg/yolov3-tiny.cfg --weights weights/best.pt
           
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

在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

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

在powershell中运行可以得到yolov3-tiny.conv.15

./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
           
win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

在源码中附有该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报安装失败

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

Solution.1:去官方网站上下载安装指令

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

Error.2:不转换权重时出现的错误

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

默认权重文件为weights/ultralytics68.pt,而直接运行时,发现在weights文件夹下无该类文件,故进行下载,而国内又被屏蔽。所以需要自己下载后转换

Solution.2:

官网下载权重文件

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

小结

上述源码链接还有很多待完善的部分,如下:

problem.1:直接用下载的weight和转换后conv.15训练的区别多大,或者说finetune的技巧?(貌似conv.15是保留相应的前15层权重最后一层不要??)

problem.2:如何用我训练的数据连接摄像头进行动态识别? 参见Expend.4

problem.3:粗略通熟的理解算法,以及能够作哪些调整对训练有比较大的帮助,减少时间、提高精度等等?

problem.4:如何部署到手机上进行操作?

以上问题一个个慢慢学习逐渐解决,首要目标!先能用再来优~附上张微信名片,欢迎交流和指导,再接再厉!

win10+pytorch+yolov3 训练爬取数据写在前头编译运行拓展错误汇总小结

继续阅读