在前面我们已经搭建了环境、完成了高分辨率图片切分成小图,本文将介绍如何使用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.py
和mmdet/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)单卡训练
打开终端,输入下述命令开始训练文章来源:https://www.toymoban.com/news/detail-543219.html
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块数文章来源地址https://www.toymoban.com/news/detail-543219.html
到了这里,关于【mmdetection小目标检测教程】四、修改配置文件,训练专属于你的目标检测模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!