【mmdetection小目标检测教程】四、修改配置文件,训练专属于你的目标检测模型

在前面我们已经搭建了环境、完成了高分辨率图片切分成小图,本文将介绍如何使用mmdetection配置文件训练检测模型


mmdetection小目标检测系列教程:
一、openmmlab基础环境搭建(含mmcv、mmengine、mmdet的安装)
二、labelimg标注文件voc格式转coco格式
三、使用sahi库切分高分辨率图片,一键生成coco格式数据集
四、修改配置文件,训练专属于你的目标检测模型
五、使用mmdet和mmcv的api进行图像/视频推理预测,含异步推理工作

1.数据准备

首先先确保数据已经准确就绪,数据集结构如下:

.
├── ./CITATION.cff
├── ./configs
├── ./data
│   ├── ./data/slice
│   │   ├── ./data/slice/annotations
│   │   ├── ./data/slice/annotations
│   │   │   ├── ./data/slice/annotations/instances_train2017.json
│   │   │   └── ./data/slice/annotations/instances_val2017.json
│   │   ├── ./data/slice/train2017
│   │   │   ├── ./data/slice/train2017/1.jpg
│   │   │   ├── ./data/slice/train2017/2.jpg
│   │   └── ./data/slice/val2017
│   │   │   ├── ./data/slice/val2017/1.jpg
│   │   │   ├── ./data/slice/val2017/2.jpg
├── ./demo
├── ./docker
├── ./docs
├── ./LICENSE
├── ./MANIFEST.in
├── ./mmdet
├── ./mmdet.egg-info
├── ./model-index.yml
├── ./projects
├── ./pytest.ini
├── ./README.md
├── ./README_zh-CN.md
├── ./requirements
├── ./requirements.txt
├── ./resources
├── ./setup.cfg
├── ./setup.py
├── ./tests
├── ./tools

2.修改类别

在mmdetection中,一共需要修改两处类别,分别是mmdet/datasets/coco.pymmdet/evaluation/functional/class_names.py

(1)第一处修改

进入mmdet/datasets/coco.py,找到15行的METAINFO,将其注释掉,并且新增为自己的类别,替换为下面的代码;我这里是四个类,分别是(‘1’, ‘5’, ‘12’, ‘16’),并且需要将下面的’palette’也进行适当的修改,这个是不同类别框的颜色,只要保持数量和类别数量一致即可

    METAINFO = {
        'classes':
            ('1', '5', '12', '16'),
        # palette is a list of color tuples, which is used for visualization.
        'palette':
            [(220, 20, 60), (119, 11, 32), (0, 0, 142), (0, 0, 230), ]
    }

替换后截图
在这里插入图片描述

(2)第二处修改

进入mmdet/evaluation/functional/class_names.py,找到69行的coco_classes,将其注释掉,将下面的代码进行替换

def coco_classes():
    return [
        '1', '5', '12', '16'
    ]

替换后截图
在这里插入图片描述

3.修改config文件

mmdetection提供了非常丰富的目标检测算法,算法列表如下,算法详情可以去mmdetection的github查看:mmdetection的github链接

在开始算法配置之前,首先需要明确我们即将要使用哪一种算法,我这里以yolox为例进行配置;进入config/yolox文件夹,里面有一个metafile.yaml的文件,这个就是不同深度网络的简介,包括训练显存占用、训练轮次、使用的数据集、最终的准确率、权重文件等,更方面进行精度复现;其次是README.md和各种不同深度的网络配置

在这里插入图片描述
这里我选择yolox_l为例

(1)总包

首先我们进入yolox_l_8xb8-300e_coco.py这个文件,这个文件的第一行指向了我们接下来要去的路——同级目录下的yolox_s_8xb8-300e_coco.py,mmdetection中所有的配置文件均采用继承的方法进行,因此找到第一行就知道接下去去哪些文件进行配置了;下面几行不需要修改
在这里插入图片描述

(2)分包1

接着我们进入yolox_s_8xb8-300e_coco.py文件,第一行指向的是上层目录下的__base__文件下的两个子文件,一会我们再去找
在这里插入图片描述
找到第39行,这里我们需要将num_classes修改为自己的类别数量,我这里是4
在这里插入图片描述
接着我们需要修改数据集的根目录,在70行的位置进行修改
在这里插入图片描述
在117行和118行需要修改训练集的标注文件路径和图像文件路径
在这里插入图片描述
在141行和147行需要修改batch_size,在155行和156行修改验证集的标注文件路径和图像文件路径
在这里插入图片描述
在176行需要修改自己的学习率,可以根据线性缩放原则进行修改:按照公式 lr_new = lr_default * (batch_size_new * GPU_number_new) / (batch_size_default * GPU_number_default) 调整学习率
在这里插入图片描述
至此,这个文件的修改已经基本完成了

(3)分包2

进入上层目录的__base__/schedules/schedule_1x.py文件进行修改(一般在文件最前),这个文件基本不需要作太多的修改,可以根据自己情况修改一些参数
在这里插入图片描述

(4)分包3

进入上层目录的__base__/default_runtime.py文件进行修改,这个文件也是根据自身情况进行适当修改
在这里插入图片描述
至此,配置文件的修改已经基本结束了

4.训练模型

(1)单卡训练

打开终端,输入下述命令开始训练

python tools/train.py configs/yolox/yolox_l_8xb8-300e_coco.py --auto-scale-lr --work-dir work_dirs/yolox_l --amp

其中,第一个参数就是总包py文件,--auto-scale-lr是学习率自适应,--work-dir指定存放checkpoint和log文件的位置,--amp使用自动精度训练,避免显存溢出

(2)多卡训练

打开终端,输入下述命令开始训练

./dist_train.sh configs/yolox/yolox_l_8xb8-300e_coco.py 2

其中,第一个参数仍是总包py文件,第二个参数是使用的gpu块数

  • 10
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhijun.li@Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值