目录
前言
使用yolov3框架训练自己的数据大致分为这四步:
- 准备数据集
- 创建文件结构
- 格式化文件
-
修改yolo的配置文件
一、准备数据集
使用labelme对自己数据集的图片进行打标处理
如图所示
打标之后保存的json文件要保存在自己知道的文件夹里
例如这样
二、创建文件结构
创建如图所示的文件结构
- config和data文件夹需要自己创建
- config文件夹里custom.data.txt保存的信息如下图所示
- yolov3-custom.cfg里保存的是模型的结构以及配置参数
- data文件夹下保存数据集的图片,打标后保存的json文件,labels里保存解析之后的数据,文件名与数据集图片名一致
- classes.names里保存数据集的分类名称
- train和val文件里保存数据集的路径,最好是绝对路径
- utils文件夹通常是 YOLOv3 或其他深度学习项目中用来存放辅助工具和功能的地方,可以直接用,不用自己创建
- weights里是darknet模型和yolo层的权重参数,需下载使用
三、格式化文件
- 上一步创建了文件结构
- 这一步填充每个文件夹中的数据
1.data文件夹
- data文件夹的结构如图所示
- custom里保存的是整个数据集的文件
- 图片分成训练集和验证集
- 标签也分成训练集和验证集
- jsons里的json数据通过utils里的json2yolo.py文件进行解析,提取出每张打标图片的类别,矩形框的中心点坐标和框的宽高并将其保存在labels文件夹内
- 标签文件与图片同名,但更改为txt文件
- classes.names里的类别手动输入,一行一个类别,注意与json2yolo里的字典顺序一致
- train.txt和val.txt里的信息是每张图片的绝对路径,可以由下面的代码帮助实现
import os
path = "D:\Code\YOLO\YOLOv3_try\data\custom\images\\train"
target = 'data\\custom\\train.txt'
file_name = os.listdir(path) # 获取文件夹下每个文件的名字
with open(target, 'w') as t:
for i in file_name: # 遍历每个图片名
j = path + '\\' + i # 将图片名加上文件夹路径 变成绝对路径
t.write(j + '\n') # 将图片绝对路径写入txt文件
2.config文件夹
custom.data.txt里是一些文件的绝对路径
yolov3-custom.cfg里是模型的结构和参数
卷积层 yolo层 路由层 残差层等
四、修改yolo的配置文件
1.train文件
- train文件里要修改运行配置
- 有些路径要更换为自己创建文件路径
2.json2yolo文件
- 这里的字典顺序跟classes.names文件一致即可
- 这里的两个路径都要改成自己文件的绝对路径
3.datasets文件
- 配置文件这里使用的是相对路径
- 如果像我这样使用绝对路径的话直接删除有路径的那两行即可