目录
1. 环境搭建
2. 数据集构建
1. xml文件生成需要Labelimg软件
2. VOC2007 数据集格式
3. 创建*.names file,
4. 更新data/coco.data,其中保存的是很多配置信息
5. 更新cfg文件,修改类别相关信息
6. 数据集格式说明
3. 训练模型
4. 测试模型
5. 评估模型
6. 可视化
7. 高级进阶-网络结构更改
将github库download下来。
建议在linux环境下使用anaconda进行搭建
安装需要的软件
环境要求:
python >= 3.7
pytorch >= 1.1
numpy
tqdm
opencv-python
其中只需要注意pytorch的安装:
到https://pytorch.org/中根据操作系统,python版本,cuda版本等选择命令即可。
关于深度学习环境搭建请参看:https://www.cnblogs.com/pprp/p/9463974.html
anaconda常用用法:https://www.cnblogs.com/pprp/p/9463124.html
在Windows下使用LabelImg软件进行标注,能在网上下载,或者通过github搜索得到。
使用快捷键:
通过以上软件主要构造好JPEGImages和Annotations文件夹中内容,Main文件夹中的txt文件可以通过python脚本生成:
生成labels文件,voc_label.py文件具体内容如下:
到底为止,VOC格式数据集构造完毕,但是还需要继续构造符合darknet格式的数据集(coco)。
需要说明的是:如果打算使用coco评价标准,需要构造coco中json格式,如果要求不高,只需要VOC格式即可,使用作者写的mAP计算程序即可。
voc的xml转coco的json文件脚本:xml2json.py
(运行<code>bash yolov3/data/get_coco_dataset.sh</code>,仿照格式将数据放到其中)
但是这个库还需要其他模型:
其中保存的是你的所有的类别,每行一个类别,如data/coco.names:
打开cfg文件夹下的yolov3.cfg文件,大体而言,cfg文件记录的是整个网络的结构,是核心部分,具体内容讲解请见:https://pprp.github.io/2018/09/20/tricks.html
只需要更改每个[yolo]层前边卷积层的filter个数即可:
每一个[region/yolo]层前的最后一个卷积层中的 filters=预测框的个数(mask对应的个数,比如mask=0,1,2, 代表使用了anchors中的前三对,这里预测框个数就应该是3*(classes+5) ,5的意义是4个坐标+1个置信度代表这个格子含有目标的概率,也就是论文中的tx,ty,tw,th,po
举个例子:我有三个类,n = 3, 那么filter = 3x(n+5) = 24
2007_train.txt内容示例:
注意images和labels文件架构一致性,因为txt是通过简单的替换得到的:
预训练模型:
Darknet <code>*.weights</code> format: https://pjreddie.com/media/files/yolov3.weights
PyTorch <code>*.pt</code> format: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI
开始训练:
如果日志正常输出那证明可以运行了
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5MTOyUzM2kTMx0yNzMzMyQzM3EDNxUDM5EDMy0SM4ITM2ETMvwVNwkTMwIzLcFDOyEjNxEzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
如果中断了,可以恢复训练
将待测试图片放到data/samples中,然后运行
如果使用cocoAPI使用以下命令:
可以使用<code>python -c from utils import utils;utils.plot_results()</code>
创建drawLog.py
详细cfg文件讲解:https://pprp.github.io/2018/09/20/YOLO cfg文件解析/
参考资料以及网络更改经验:https://pprp.github.io/2019/06/20/YOLO经验总结/
欢迎在评论区进行讨论,也便于我继续完善该教程。
ps: 最近写了一个一键生成脚本,可以直接将VOC2007数据格式转换为U版yolov3要求的格式,地址在这里:https://github.com/pprp/voc2007_for_yolo_torch
ps: 如何添加注意力机制?https://www.cnblogs.com/pprp/p/12241054.html 这是《从零开始学习YOLOv3》系列教程的第7篇,剩余的可以关注GiantPandaCV公众号查看历史文章,或者直接翻阅笔者之前的历史文章。更多注意力机制模块和即插即用模块可以访问:https://github.com/pprp/SimpleCVReproduction/tree/master/Plug-and-play module,欢迎star
YOLOv4出来了,点击这篇文章查看笔者总结的YOLOv4梳理。
代码改变世界