OpenMMLab 实战营打卡 - 第 五 课

Posted 苦瓜汤补钙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenMMLab 实战营打卡 - 第 五 课相关的知识,希望对你有一定的参考价值。

(五)MMDetection 代码教学

AI实战营第五课!最热门的目标检测工具箱 MMDetection 来啦!本节课为如何使用 MMDetection 训练自己的模型!链接5 MMDetection 代码教学_哔哩哔哩_bilibili

目录

一、目标检测工具包MMDetection

1.支持的模型和数据集

 2.广泛应用

 3.MMDetection可以做什么

4.MMDetection环境搭建

二、MMDetection 项目

1.重要概念——配置文件

2.代码库结构

 3.配置文件的运作方式

 4.两段检测器的构成

5.单段检测器的构成

6.常用训练策略

7.训练自己的检测模型

三、COCO数据集

1.数据集介绍

2.数据集格式

3.数据集标注格式

BBOX 标注格式

 标注、类别、图像 id 的对应关系

4.在MMDetection中配置COCO数据集

四、MMDetection 中的自定义

1.数据集格式

2.数据集

3.数据处理流水线

五、MMDetection3D的安装和依赖

1.依赖

 2.安装


一、目标检测工具包MMDetection

  MMDetection就是用于做目标检测的一个工具包,面向深度学习时代,首发在2018年,后续经过不断迭代出来1.0版本和2.0版本。

1.支持的模型和数据集

  支持点云、视觉、多模态检测算法。

  支持室内、室外场景的数据集。

  60多篇论文复现,400多个预训练模型,可直接使用。

 2.广泛应用

 3.MMDetection可以做什么

  MMDetection提供400余个性能优良的预训练模型,开箱即用,几行Python API即可调用强大的检测能力。
  MMDetection涵盖60余个目标检测算法,并提供方便易用的工具,经过简单的配置文件改写和调参就可以训练自己的目标检测模型。

4.MMDetection环境搭建

  可以使用 MIM 配置 MMCV 和 MMDetection。

二、MMDetection 项目

1.重要概念——配置文件

深度学习模型的训练涉及几个方面:

− 模型结构 模型有几层、每层多少通道数等等

− 数据集 用什么数据训练模型:数据集划分、数据文件路径、数据增强策略等等

− 训练策略 梯度下降算法、学习率参数、batch_size、训练总轮次、学习率变化策略等等

− 运行时 GPU、分布式环境配置等等

− 一些辅助功能 如打印日志、定时保存checkpoint等等

在 OpenMMLab 项目中,所有这些项目都涵盖在一个配置文件中,一个配置文件定义了一个完整的训练过程

− model 字段定义模型

− data 字段定义数据

− optimizer、lr_config 等字段定义训练策略

− load_from 字段定义与训练模型的参数文件

2.代码库结构

open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark (github.com)

 3.配置文件的运作方式

 4.两段检测器的构成

5.单段检测器的构成

6.常用训练策略

  通常使用SGD算法配合不同的学习率策略,所有策略均包含一个学习率升温过程。

optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)
# learning policy
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=0.001,
step=[8, 11])
runner = dict(type='EpochBasedRunner', max_epochs=12)

7.训练自己的检测模型

  通常基于微调训练:

使用基于COCO预训练的检测模型作为梯度下降的“起点”

使用自己的数据进行“微调训练”,通常需要降低学习率

  具体到 MMDetection,需要:

选择一个基础模型,下载对应的配置文件和预训练模型的参数文件

将数据整理成MMDetection的支持的格式,如COCO格式或者自定义格式

修改配置文件:

三、COCO数据集

1.数据集介绍

  微软于2014年提出,最常用的是2017年版本。https://cocodataset.org/

全集 33W 张图像

针对多种任务进行了标注

80类、150W 物体标注用于目标检测实例分割

2.数据集格式

  完整的 COCO 数据集包含一系列单独存放的图片,和若干“标注文件”(annotation files),每个标注文件定义了一个数据子集,包含对应的图片路径,以及图片上的所有标注信息。

3.数据集标注格式

BBOX 标注格式

 标注、类别、图像 id 的对应关系

4.在MMDetection中配置COCO数据集

 

四、MMDetection 中的自定义

1.数据集格式

  一个列表包含所有图像, 每个图像包含所有物体标注。 ​​​​​​​
[ 
    
    'filename': 'a.jpg',
    'width': 1280,
    'height': 720, 'ann': 
    'bboxes': <np.ndarray> (n, 4),
    'labels': <np.ndarray> (n, ), 'bboxes_ignore': <np.ndarray> (k, 4), (optional field)
    'labels_ignore': <np.ndarray> (k, ) (optional field),
    'masks': [poly] 
    ,
...
]

2.数据集

dataset_type = 'CustomDataset'  
data_root = 'dataset_path/'     #自定义数据集的根目录
classes=('clsname1','clasname2',...)     #自定义数据集的类别名

#配置 batch_size
#配置 Dataloader 进程数
data = dict(
    samples_per_gpu=2,
    workers_per_gpu=2,
#针对训练、验证、测试子集,分别配置:
# 数据类型 = 自定义数据集
# 标注文件的路径(自定义格式中包含ndarray,需要用pkl格式)
# 图像目录的路径
# 数据处理流水线
    train=dict(
        type=dataset_type,
        ann_file='train/custom_anno.pkl',
        img_prefix='train',
        pipeline=train_pipeline),
    val=dict(
        type=dataset_type,
        ann_file='val/custom_anno.pkl',
        img_prefix='val',
        pipeline=test_pipeline),
    test=dict(
        type=dataset_type,
        ann_file='val/custom_anno.pkl',
        img_prefix='val',
        pipeline=test_pipeline))

3.数据处理流水线

 

五、MMDetection3D的安装和依赖​​​​​​​

1.依赖

  MMDetection3D总共有四个依赖,分别是基础库MMCV、用于检测与分割的MMDet和MMSeg,如果你使用的是1.1版本 MMDetection3D,它还依赖于MMEngine这个基础库。

 2.安装

  安装可参考OpenMMLab 实战营打卡 - 第 三 课 MMClassification

以上是关于OpenMMLab 实战营打卡 - 第 五 课的主要内容,如果未能解决你的问题,请参考以下文章

OpenMMLab 实战营打卡 - 第 4 课

OpenMMLab 实战营打卡 - 第 四 课 目标检测算法基础

OpenMMLab 实战营打卡-第5课

OpenMMLab 实战营打卡 - 第 5 课

OpenMMLab 实战营打卡 - 第 三 课

OpenMMLab 实战营打卡 - 第 7 课