官方文档:
https://mmdetection.readthedocs.io/zh_CN/stable/tutorials/config.html
数据集准备:
注:我的数据集是是VOC的xml格式,且已经划分好train、val、trainval、test的了,即\VOCdevkit\VOC2007\ImageSets\Main
中已经有相应的txt文件了。
1. 数据集格式化
运行pascal_voc.py
将xml转json文件格式:
python tools\dataset_converters\pascal_voc.py data\VOCdevkit --out-dir data\coco\annotations --out-format coco
需注意的细节:
- 这里的split 我增加了test,因为我的数据集里包含test set
- mmdet\core\evaluation -> class_names.py里的voc_classes修改为自己数据集的类
- 将图片按训练集、验证集、测试集划分复制到coco文件夹下(参考他的):
import mmcv
import shutil
root_path = 'E:/litchi_project/mmdetection/data/VOCdevkit/VOC2007/' # 绝对路径,按需修改
txt_path = root_path + 'ImageSets/Main/'
jpg_path = root_path + 'JPEGImages/'
splits = ['train', 'val', 'test'] # 我只复制了这三个部分的图,trainval不知有必要不
for split in splits:
print('copy images by', split)
src_path = txt_path + split + '.txt'
save_path = "E:/litchi_project/mmdetection/data/coco/" + split + '2017/'
mmcv.mkdir_or_exist(save_path)
with open(src_path, 'r') as f:
for ele in f.readlines():
cur_jpgname = ele.strip() # 提取当前图像的文件名
total_jpgname = jpg_path + cur_jpgname + '.jpg' # 获取图像全部路径
shutil.copy(total_jpgname, save_path + cur_jpgname + '.jpg')
print(split, 'copy done!')
- 生成的json文件中,图片的filename路径为"VOC2007/JPEGImages/2021-11-19-04019.jpg",这里不知会不会为后续训练等造成影响;
果然还是有影响:
FileNotFoundError:</