gluoncv yolo3训练自己的数据集
1. 将所有的原始数据(每外包的标注数据)转化为统一的标注数据, raw2uniform.py
统一前:
C:\wild-k8-050-127.jpg h 940 388 966 407
C:\wild-k8-050-127.jpg r 902 362 940 401
统一后:
wild-k2-820-044.jpg car 752 362 769 376
wild-k2-820-044.jpg van 800 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 433
q 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.py
train_dataset = gdata.VOCDetection(splits=[(2018, 'train'),])
val_dataset = gdata.VOCDetection(splits=[(2018, 'val')])
更改训练类别
# gluoncv/data/pascal_voc/detection.py
CLASSES = ['car']
推理的时候
推理的时候修改--pretrained这个参数,指向训练好的参数
自制数据:https://gluon-cv.mxnet.io/build/examples_datasets/detection_custom.html