概述
本文总结yolo作者实现的darknet版本的yolo3训练数据集格式。
数据集文件目录最终数据集需要3个文本文件和2个目录
train.txt # 文本文件 保存训练图片目录列表 test.txt # 文本文件 保存测试图片目录列表 class.names # 文本文件 保存分类名称 labels # 目录 保存每个图片的边界框和分类信息 JPEGImages # 目录 保存所有的图片train.txt和test.txt
这两个文本文件格式很简单 每行一个图片的绝对路径即可。
内容如下
/yolo3_dateset_181224/JPEGImages/983_2018_11_27_08_43_25_167090_7980.jpg/yolo3_dateset_181224/JPEGImages/952_2018_11_27_15_13_33_062760_6636.jpg/yolo3_dateset_181224/JPEGImages/970_2018_11_27_13_04_22_315053_6764.jpg/yolo3_dateset_181224/JPEGImages/994_2018_11_27_09_12_57_493763_4692.jpgclass.names
这个文件用于存储各个分类的名字 每个分类一行
我的例子只有两个分类
dmJPEGImages
存储图片的目录。所有的图片在这个目录下并列排放 不需要分子目录。
需要注意的是 JPEGImages必须和labels在同一个目录下。因为darknet程序是按照这个约定去寻找图片的。
labels这个目录下存放所有的标注信息 每个图片一个对应的txt文件 txt文件必须和图片名字相同 后缀不同 。
# ls yolo3_dateset_181224/labels/983_2018_11_27_08_43_25_167090_7980.txt # 注意它的名字和图片是相同的2018_10_25_14_06_26_956996_7112.txt
每个txt文件可以有多行 每行标注一个bbox和一个分类。
每行格式如下
class_index center_x cnter_y w h
每行五个字段 用空格分开。第一个字段class_index是分类的序号 从数字0开始 对应class.names里的顺序。center_x和cnter_y是bbox中心的坐标 w和h是bbox的宽和高。注意着四个值都是小于1的浮点数 center_x和w是绝对值除以图片宽度得到的 cnter_y和h是绝对值除以图片高度得到的。
例子
1 0.543125 0.353333333333 0.25125 0.56启动训练前的其它准备 1. 编译生成darknet
按照需求修改Makefile
GPU 1 CUDNN 1OPENCV 0OPENMP 0DEBUG 0
在显卡机器上 我修改了最上面两行。然后make以下 生成darknet可执行文件及so库。
2. 下载预训练的 darknet53wget https://pjreddie.com/media/files/darknet53.conv.743. 准备网络配置文件
可以从官方github上下载一个模板来改 我用的yolov3-voc.cfg来修改。
具体修改方法可以参考文末的《yolo3训练自己的数据集》。
除了文中对应的字段 我还修改了文件开头的训练总步数
原始内容
[net]# Testing batch 1 subdivisions 1# Training# batch 64# subdivisions 16width 416height 416channels 3momentum 0.9decay 0.0005angle 0saturation 1.5exposure 1.5hue .1learning_rate 0.001burn_in 1000max_batches 50200policy stepssteps 40000,45000scales .1,.1
我修改后的内容 有框的地方就是修改的地方 主要加快训练 减少训练步数
4. 准备数据集配置文件xx.data数据集配置文件一般以data结尾。我的例子中命名为daimao.data。
$ cat yolo3_cfg/daimao.data classes 2 # 类个数train ./yolo3_dateset_181224/train.txt # 训练图片名单文件valid ./yolo3_dateset_181224/test.txt # 测试图片名单文件names ./yolo3_cfg/daimao.names # 类名文件backup ./backup # 生成模型的存放目录5. 启动训练
./darknet detector train yolo3_cfg/daimao.data yolo3_cfg/yolov3-voc.cfg darknet53.conv.74
生成的weights文件存在backup目录下。
参考资料官网 YOLO: Real-Time Object Detection
github源码
yolo3训练自己的数据集
本文链接: http://yoloes.immuno-online.com/view-751071.html