当前位置:   article > 正文

MMDetection训练自定义COCO格式数据集_mmdet coco数据格式

mmdet coco数据格式
1. 安装MMDetection环境

首先确定已安装好MMDetection环境,能正常运行 demo/image_demo.py 输出内容。

这里需要注意一点,如果高版本MMDetection安装输出有问题,建议安装低版本的库 mmcv<2.0以及mmdet<3.0,以及更低版本的pytorch<2.0,这一点非常关键,在MMDetection高版本上运行不了的程序,在低版本上是可以运行的。

2.自定义COCO数据集文件夹存放方式以及命名规范

数据集文件夹存放方式,按照如下格式

  1. --data #顶层文件夹
  2. --coco
  3. --anotations # 标注文件
  4. --instances_train2017.json
  5. --instances_val2017.json
  6. --train2017 # 训练集
  7. --val2017 # 测试集

如下图所示,将数据集文件夹放到mmdetection项目主目录中

3.修改关键文件参数

项目整体架构

  1. configs/_base_
  2. /datasets/coco_detection.py
  3. --> 1.训练输入大小(img_scale)
  4. 2. batch_size(samples_per_GPU)
  5. 3.数据集路径
  6. 4.最底下 evaluation,添加参数(save_best='auto')#保存最好权重
  7. /models/算法核心文件 -->1.确定训练类别数量(num_classes)
  8. /shedules/训练策略 --> 1.确定训练时长(epoch)
  9. configs/文件夹/使用具体哪个训练算法
  10. #训练自己的数据集--修改2个关键核心位置
  11. mmdet/core/
  12. evaluation/class_names.py/ def coco_classes()-->修改为自己的数据集类别
  13. datasets/coco.py/-->class CoCoDataset 修改为自己的类别 CLASSES, PALETTE 几个类别就用几个颜色框

3.1修改 mmdet/core/evaluation/class_names.py def coco_classes()

如果找不到这个文件,直接在项目组里Ctrl+F,搜索class_name.py文件

  1. def coco_classes() -> list:
  2. """Class names of COCO."""
  3. # 写上自定义数据集的类别的名称
  4. # 将上面的COCO类别名称注释掉
  5. return ['0', '1', '2', '3'] # 这里有四个类别

3.2 修改mmdet/datasets/coco.py文件 class COCODataset(BaseDetDataset)

  1. class CocoDataset(BaseDetDataset):
  2. """Dataset for COCO."""
  3. METAINFO = {
  4. #修改为自定义数据集的类别名称,将上面的COCO类别名称注释掉
  5. 'classes': ('0', '1', '2', '3'),
  6. # 这里有4个类别,需要四个颜色框就可以了
  7. 'palette':
  8. [(220, 20, 60), (119, 11, 32), (0, 0, 142), (0, 0, 230),]
  9. }

3.3 重新编译

在文件夹主层目录进行文件编译,目的是对类别编译

python setup.py install 

3.4以Faster RCNN举例

接下来还要修改 FasterRCNN配置文件中类别数量

位置在configs/_base_/models/faster_rcnn_r50_fpn.py

  1. # 找到参数 num_class
  2. # num_classes=80 # 默认coco数据集类别数量
  3. num_classes=4 # 修改为自定义数据集类别数量
4 训练关键参数

关键训练参数 epochbatch_size, input_size

4.1在configs/schedules/schedule_1x.py

max_epoch=12 # 设置训练epoch

4.2 在configs/datasets/coco_detection.py

  1. train_pipeline = [
  2. # 修改scale为需要的输入大小
  3. dict(type='Resize', scale=(1333, 800), keep_ratio=True),]
  4. test_pipeline = [
  5. # 修改scale为需要的输入大小
  6. dict(type='Resize', scale=(1333, 800), keep_ratio=True),]

4.3 进行训练

为了方便可以指定具体参数 tools/train.py

  1. #关键参数
  2. parser.add_argument('--config', default='configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py', help='train config file path')
  3. parser.add_argument('--work-dir', default= 'wordir/faste_rcnn', help='the dir to save logs and models')

启动训练

python tools/train.py

4.4 进行测试

例如,测试faster-rcnn_r50_fpn_1x_coco.py

配置好 config文件夹位置,训练权重位置,工作文件夹

  1. #关键参数
  2. parser.add_argument('--config', default='configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py', help='train config file path')
  3. parser.add_argument('--checkpoint', default='workdir/faster_rcnn/epoch_20', help='checkpoint file')
  4. parser.add_argument('--work-dir', default= 'wordir/faste_rcnn', help='the dir to save logs and models')
python tools/test.py
5. 查看结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/762145
推荐阅读
相关标签
  

闽ICP备14008679号