gluoncv|gluoncv yolo3训练自己的数据集

gluoncv yolo3训练自己的数据集
1. 将所有的原始数据(每外包的标注数据)转化为统一的标注数据, raw2uniform.py
统一前:

C:\wild-k8-050-127.jpgh940 388 966 407C:\wild-k8-050-127.jpgr902 362 940 401

统一后:
wild-k2-820-044.jpgcar752 362 769 376wild-k2-820-044.jpgvan800 353 820 376

2. 将总的标注数据转换成单个的,一张图片一个txt的标注数据,2single_txt_label.py
3. 将每一个txt文件转换为xml文件,txt2xml.py
以下同keras_yolo3项目
1. 在JPEGImages文件夹下放所有的图片
2. 在LabelSets文件夹下放每一个张图片的txt 标签文件,长这样:
q 269 142 511 433q 104 664 472 757

第一个代表类别,第二个代表坐标
3. 用DATA/目录下的txt_toXML2.py 生成xml文件,每个xml文件对应一张图片,名字与图片的名字对应
4. 用DATA/目录下的generate_Main.py将数据分割成训练集,测试集,验证集,训练验证集
训练阶段 准备自制的数据 数据文件夹格式应该与pascal voc一样:
VOCtemplate└── VOC2018├── Annotations│└── 000001.xml├── ImageSets│└── Main│└── train.txt└── JPEGImages└── 000001.jpg

xml包含框位置,train.txt包含图片与对应xml索引
将文件放在与VOC2007,VOC2012并列的位置
~/.mxnet/datasets/voc/VOC2007~/.mxnet/datasets/voc/VOC2012~/.mxnet/datasets/voc/VOC2018

更改读数据的路径
# train_yolov3.pytrain_dataset = gdata.VOCDetection(splits=[(2018, 'train'),])val_dataset = gdata.VOCDetection(splits=[(2018, 'val')])

更改训练类别
# gluoncv/data/pascal_voc/detection.pyCLASSES = ['car']

推理的时候 【gluoncv|gluoncv yolo3训练自己的数据集】推理的时候修改--pretrained这个参数,指向训练好的参数
自制数据:https://gluon-cv.mxnet.io/build/examples_datasets/detection_custom.html
原文:http://www.huanghanqing.com/2018/11/18/gluoncv-yolo3%E8%AE%AD%E7%BB%83%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%B0%E6%8D%AE%E9%9B%86/

    推荐阅读