天天看点

pytorch版yolov3训练自己数据集

目录

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

开始训练:

如果日志正常输出那证明可以运行了

pytorch版yolov3训练自己数据集

如果中断了,可以恢复训练

将待测试图片放到data/samples中,然后运行

如果使用cocoAPI使用以下命令:

可以使用<code>python -c from utils import utils;utils.plot_results()</code>

创建drawLog.py

pytorch版yolov3训练自己数据集

详细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梳理。

代码改变世界

继续阅读