OpenMMLab 目标检测
Posted Arrow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenMMLab 目标检测相关的知识,希望对你有一定的参考价值。
OpenMMLab 目标检测
- 1. 目标检测简介
- 2. 基础知识
- 3. 两阶段目标检测算法
- 4. 单阶段目标检测算法
- 5. 无锚框目标检测算法
- 6. Detection Transformers
- 7. 目标检测模型的评估方法
- 8. MMDetection实战
1. 目标检测简介
- 一个目标框至少6个参数(矩形框<4>、类别<1>、置信度<1>)
- 两阶段目标检测的开山之作: Faster R-CNN (也是目标检测任务中的一个开山之作)
- 单阶段目标检测算法的代表作:YOLO<推荐使用V5>、SSD
- 网络结构
网络部件 | 功能 | 详细描述 |
---|---|---|
主干网络 | 产生多级特征图 | 空间分辨率会越来越小,通道数通常会越来越大,信息会越来越集中,通常就集中到channel上,channel就会越来越多 |
颈部 | 融合不同级的特征 | 越靠近输入的级,其细节更好,但语义信息比较弱,输出多尺度(多种分辨率)的特征图。不同分辨率的特征图通常用于检测不同大小的物体 |
检测头 | 通常是由一个或多个卷积构成的模块,只要在这个特征图上扫一下, 在对应位置如果有物体就可以给一个输出 |
1.1 滑窗
-
工作原理
-
不足之外 (效率太代、计算量太大)
-
改进思路 1:区域提议
- 依赖外部算法,Selective Search不是神经网络的一部分,不可训练,不符合学习的理念。
- 依赖外部算法,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 目标检测的主要内容,如果未能解决你的问题,请参考以下文章