前面我们准备好了COCO格式的数据集:将YOLO格式的数据集转换为mmdetection格式-CSDN博客https://blog.csdn.net/qq_54708219/article/details/148224187?spm=1001.2014.3001.5501

下面我们使用MMdetection开始训练。

1.创建新的数据集类

首先,在mmdet/datasets里,创建属于自己的数据集文件。因为数据集是coco格式,可直接复制coco.py,文件名更改为Dataset_depth.py,然后把里面的标签改掉。我们需要把coco.py中的类名数据集中的类别标注的颜色换成自己的数据集的类名。这里,类名我修改为BoxDataset,数据集只有两个类别:'shallow_box'和'shallow_half_box',下面的palette是调色板,保持和classes长度一样即可,里面的颜色可以填成自己喜欢的,这里是直接保留了前两个后面全部删除:

2.录入数据集

在mmdet/datasets/init.py中仿照coco的格式把刚才创建的数据集类进行录入:

注意:如果注册完成训练仍然报KeyError,看一下报错的文件路径,可能是导入数据集类的时候一直是conda虚拟环境上的,而不是自己修改后的。解决方案就是顺着报错路径(conda环境路径)重新注册一遍数据集:

3.生成完整的配置文件

在configs文件夹下选择你想训练的模型,例如,我这里选择configs/deformable_detr/deformable-detr_r50_16xb2-50e_coco.py,然后在终端运行以下命令:

python tools/train.py <你所选择的模型路径>
python tools/train.py configs/deformable_detr/deformable-detr_r50_16xb2-50e_coco.py

此时运行会报错,因为他会自动寻找coco数据集而不是自己的(我自己没有下载coco数据集):

但是在当前目录下会生成work_dir文件夹,里面包含了完整的模型配置文件work_dirs/deformable-detr_r50_16xb2-50e_coco/deformable-detr_r50_16xb2-50e_coco.py:

4.修改生成的配置文件

接下来对work_dirs/deformable-detr_r50_16xb2-50e_coco/deformable-detr_r50_16xb2-50e_coco.py进行修改:

(1)数据集位置和数据集类:修改data_root(数据集相对路径)和dataset_type(之前注册的数据集类名):

同时在train_dataloader,test_dataloader,val_dataloader中修改data_root和type:

同时还修改一下val_evaluator和test_evaluator的ann_file:

(2)修改数据集类别数:ctrl+F召唤出搜索框,输入num_classes,把coco数据集的80类改为自己的数据集类别个数(我的是2类):

(3)修改batch_size

ctrl+F召唤出搜索框,输入batch_size,根据显卡算力设置train_dataloader,test_dataloader和val_dataloader的批量大小:

(4)注册数据集的metainfo

参考第一步,在配置文件中注册以下信息:

metainfo = dict(
    classes=('shallow_box', 'shallow_half_box'),
    palette=[(220, 20, 60), (119, 11, 32)]
)

然后在train_dataloader,test_dataloader,val_dataloader中都写入:

(5)修改训练轮数:ctrl+F召唤出搜索框,输入max_epochs,这个模型默认的训练轮数是50

5.训练

然后把3中的命令改为修改后的配置文件路径:

python tools/train.py <你所修改的模型配置文件路径>
python tools/train.py work_dirs/deformable-detr_r50_16xb2-50e_coco/deformable-detr_r50_16xb2-50e_coco.py

看到以下界面说明正常运行:

开始训练,显示学习率,loss等
每个epoch训练结束之后验证

这个时候模型也会自动保存每一轮的权重文件:

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐