OpenMMLab 目标检测

Posted Arrow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenMMLab 目标检测相关的知识,希望对你有一定的参考价值。

OpenMMLab 目标检测

1. 目标检测简介

  • 一个目标框至少6个参数(矩形框<4>、类别<1>、置信度<1>)
  • 两阶段目标检测的开山之作: Faster R-CNN (也是目标检测任务中的一个开山之作)
  • 单阶段目标检测算法的代表作:YOLO<推荐使用V5>、SSD
  • 网络结构
网络部件功能详细描述
主干网络产生多级特征图空间分辨率会越来越小,通道数通常会越来越大,信息会越来越集中,通常就集中到channel上,channel就会越来越多
颈部融合不同级的特征越靠近输入的级,其细节更好,但语义信息比较弱,输出多尺度(多种分辨率)的特征图。不同分辨率的特征图通常用于检测不同大小的物体
检测头通常是由一个或多个卷积构成的模块,只要在这个特征图上扫一下, 在对应位置如果有物体就可以给一个输出

1.1 滑窗

  • 工作原理

  • 不足之外 (效率太代、计算量太大)

  • 改进思路 1:区域提议

    • 依赖外部算法,Selective Search不是神经网络的一部分,不可训练,不符合学习的理念。
  • 改进思路 2:分析滑窗中的重复计算

  • 消除滑窗中的重复计算

  • 在特征图上进行密集预测

  • 目标检测技术的演进

2. 基础知识

  • Anchor(锚框):以特征图上的位置在原图上对应的位置为中心设定不同大小、不同长宽比,同时又重合的基准框。

2.1 边界框(Bounding Box)


2.2 交并比 Intersection Over Union

2.3 置信度 Confidence Score

2.4 非极大值抑制 Non-Maximum Suppression

2.5 边界框回归 Bounding Box Regression

2.6 边界框编码 Bbox Coding

3. 两阶段目标检测算法

3.1 多尺度检测技术

4. 单阶段目标检测算法

4.1 YOLO: You Only Look Once (2015)

4.2 SSD: Single Shot MultiBox Detetor (2016)

5. 无锚框目标检测算法

6. Detection Transformers

7. 目标检测模型的评估方法

8. MMDetection实战

8.1 常用命令

  • 使用mim搜索预训练模型
mim search mmdet --model "mask r-cnn"
  • 使用mim下载模型
mim download mmdet --config mask_rcnn_r50_fpn_2x_coo --dest .
  • 分割预测并显示结果
from mmdet.apis import init_detector, inference_detector, show_result_pyplot
config_file = "mask_rcnn_r50_fpn_2x_coco.py"
checkpoint_file = "mask_rcnn_r50_fpn_2x_coco_bbox_mAP-0.354_20200505_003907-3e542a40.pth"
model = init_detector(config_file, checkpoint_file)
result = inference_detector(model, "demo.jpg")
show_result_pyplot(model, "demo.jpg", result)
  • 读取完整的配置文件 (先继承后修改)
## 读基础的配置文件, 在fruit.py中加入下面一行
_base_ = ['yolov3_mibilenetv2_mstrain-416_300e_coco.py']

## 上面一行代码相当于下面的内容
from mmcv import Config
config = Config.fromfile('fruit.py')
print(config.pretty_text)
  • 模型训练
mim train mmdet fruit.py
  • 训练自己的数据集及类别
  • 修改训练epoch(轮数)、学习率(若在预训练的基础上,则改小)和日志
  • 测试在所有测试数据集上的效果
mim test mmdet fruit.py --checkpoint /home/work_dirs/fruit/latest.pth -- show-dir work_dirs/fruit/

8.1 MMDetection环境搭建

8.2 OpenMMLab 项目中的重要概念——配置文件

  • 深度学习模型的训练涉及几个方面:
    • 模型结构:模型有几层、每层多少通道数等等
    • 数据集:即用什么数据训练模型,数据集划分、数据文件路径、数据增强策略等等
    • 训练策略:梯度下降算法、学习率参数、batch_size、训练总轮次、学习率变化策略等等
    • 运行时 GPU、分布式环境配置等等
    • 一些辅助功能 :如打印日志、定时保存checkpoint等等
  • 在 OpenMMLab 项目中,所有这些项目都涵盖在一个配置文件中,一个配置文件定义了一个完整的训练
    过程
    • model:字段定义模型
    • data:字段定义数据
    • optimizer、lr_config: 等字段定义训练策略
    • load_from:字段定义与训练模型的参数文件

8.3 MMDetection代码库结构

8.4 配置文件的运作方式

8.5 两阶段检测器的构成

8.6 单阶段检测器的构成

8.7 RetinaNet 模型配置

8.7.1 主干网络

8.7.2 颈部

8.7.3 bbox head 1

8.7.4 bbox head 2

8.8 训练自己的检测模型

  • 训练:寻找最小梯度,使得损失函数最小的这样一组参数的过程

以上是关于OpenMMLab 目标检测的主要内容,如果未能解决你的问题,请参考以下文章

计算机视觉框架OpenMMLab开源学习:基础介绍

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

OpenMMLab AI实战课笔记

OpenMMlab AI实战营 打卡笔记DAY4

OpenMMLab 实战营打卡 - 第 5 课

计算机视觉框架OpenMMLab开源学习:语义分割基础