利用YOLOv3SPP网络源码,训练自己的数据集的步骤

您所在的位置:网站首页 yolo源码 利用YOLOv3SPP网络源码,训练自己的数据集的步骤

利用YOLOv3SPP网络源码,训练自己的数据集的步骤

2023-03-11 21:59| 来源: 网络整理| 查看: 265

利用YOLOv3 SPP网络源码,训练自己的数据集的步骤

主要内容利用YOLOv3 SPP网络源码,训练自己的数据集的步骤第一部分1. 下载项目及文件结构介绍2. 训练数据的准备以及目录结构3. 利用标注好的数据集生成一系列相关准备文件,也可参考原作者的[教程](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)3.1 将VOC标注数据转为YOLO标注数据(如果你的数据已经是YOLO格式了,可跳过该步骤)3.2 根据摆放好的数据集信息生成一系列相关准备文件第二部分 解析模型配置文件 总的流程大概是:使用labelImg对自己的数据进行标注—>使用trans_voc2yolo.py脚本进行转换,将VOC标注数据转为YOLO标注数据(使用trans_coco2yolo.py脚本进行转换将COCO标注数据转为YOLO标注数据,待补充)—>生成新的my_yolov3.cfg文件—>下载好预训练权重,开始训练 以下内容主要来自霹雳吧啦Wzup主,主要用来自己学习记录。

第一部分 1. 下载项目及文件结构介绍

首先在https://github.com/WZMIAOMIAO/deep-learning-for-image-processing网址上下载对应的项目。可以参考该项目博主的B站视频 在这里插入图片描述

2. 训练数据的准备以及目录结构 这里建议标注数据时直接生成yolo格式的标签文件.txt,推荐使用免费开源的标注软件(支持yolo格式),https://github.com/tzutalin/labelImg如果之前已经标注成pascal voc的.xml格式了也没关系,通过voc转yolo格式的转化脚本进行转化将自己数据集中的图像大小缩放到与coco数据集一致(图像预处理算法决定的)测试图像时最好将图像缩放到32的倍数,因为YOLOv3 SPP网络最小的特征层是输入尺寸的1/32倍标注好的数据集请按照以下目录结构进行摆放:

├── my_yolo_dataset 自定义数据集根目录│ ├── train 训练集目录│ │ ├── images 训练集图像目录│ │ └── labels 训练集标签目录 │ └── val 验证集目录│ ├── images 验证集图像目录│ └── labels 验证集标签目录

总之,准备自己的数据集按照以上目录结构进行摆放

3. 利用标注好的数据集生成一系列相关准备文件,也可参考原作者的教程

├── data 利用数据集生成的一系列相关准备文件目录│ ├── my_train_data.txt: 该文件里存储的是所有训练图片的路径地址│ ├── my_val_data.txt: 该文件里存储的是所有验证图片的路径地址│ ├── my_data_label.names: 该文件里存储的是所有类别的名称,一个类别对应一行(这里会根据```.json```文件自动生成)│ └── my_data.data: 该文件里记录的是类别数类别信息、train以及valid对应的txt文件

更新Update yolov3-spp.cfg,修改预测器的卷积核个数,这个是根据数据集的类别个数进行计算的。

3.1 将VOC标注数据转为YOLO标注数据(如果你的数据已经是YOLO格式了,可跳过该步骤) 使用trans_voc2yolo.py脚本进行转换,并在./data/文件夹下生成my_data_label.names标签文件,执行脚本前,需要根据自己的路径修改以下参数

# voc数据集根目录以及版本voc_root = "/data/VOCdevkit" # 这里要写真正的数据集目录voc_version = "VOC2012"# 转换的训练集以及验证集对应txt文件,对应VOCdevkit/VOC2012/ImageSets/Main文件夹下的txt文件train_txt = "train.txt"val_txt = "val.txt"# 转换后的文件保存目录save_file_root = "./my_yolo_dataset" # 转换后的文件保存目录# label标签对应json文件label_json_path = './data/pascal_voc_classes.json' # 如果是自己的数据集将里面的类别标签修改为自己的类别标签即可

3.2 根据摆放好的数据集信息生成一系列相关准备文件 使用calculate_dataset.py脚本生成my_train_data.txt文件、my_val_data.txt文件以及my_data.data文件,并生成新的my_yolov3.cfg文件执行脚本前,需要根据自己的路径修改以下参数

# 训练集的labels目录路径train_annotation_dir = "./data/my_yolo_dataset/train/labels"# 验证集的labels目录路径val_annotation_dir = "./data/my_yolo_dataset/val/labels"# 上一步生成的my_data_label.names文件路径(如果没有该文件,可以自己手动编辑一个txt文档,然后重命名为.names格式即可)classes_label = "./data/my_data_label.names"# 原始yolov3-spp.cfg网络结构配置文件cfg_path = "./cfg/yolov3-spp.cfg"

第二部分 解析模型配置文件

在yolov3-spp.cfg文件当中有非常多的层结构, 在搭建网络过程中是根据配置文件当中的网络层结构依次搭建出来的。搭建模型之前需要理解每层的含义以及参数的含义。注意:[net]层结构在网络搭建的过程中,它是不起任何作用的,真正解析的时候是通过convolutional层开始解析的。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 route层结构:当layers取一个值和多个值的时候不一样,concatenate在深度方向上进行拼接 在这里插入图片描述 第二个maxpool的输入是千米那route所指向那一层的输出 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 这里的yolo并不是我们最后的预测器,并不是图中的Conv2d层,是接在每个预测器之后的一个结构,对预测结果进行处理以及生成一系列anchors。 在这里插入图片描述 接下来使用parse_config.py: 解析yolov3-spp.cfg文件 利用解析好的文件搭建yolov3-spp网络



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3