MMDetection 是一个基于 PyTorch 的目标检测开源工具箱。它是 OpenMMLab 项目的一部分。是目前应用最广的算法库
主分支代码目前支持 PyTorch 1.6 以上的版本。代码链接:https://gitee.com/open-mmlab/mmdetection。
模块化设计。MMDetection 将检测框架解耦成不同的模块组件,通过组合不同的模块组件,用户可以便捷地构建自定义的检测模型
支持多种检测任务。MMDetection 支持了各种不同的检测任务,包括目标检测,实例分割,全景分割,以及半监督目标检测。
速度快。基本的框和 mask 操作都实现了 GPU 版本,训练速度比其他代码库更快或者相当,包括 Detectron2, maskrcnn-benchmark 和 SimpleDet。
性能高。MMDetection 这个算法库源自于 COCO 2018 目标检测竞赛的冠军团队 MMDet 团队开发的代码,我们在之后持续进行了改进和提升。 新发布的 RTMDet 还在实时实例分割和旋转目标检测任务中取得了最先进的成果,同时也在目标检测模型中取得了最佳的的参数量和精度平衡。
【课程链接】https://www.bilibili.com/video/BV1Ak4y1p7W9/
【讲师介绍】王若晖 OpenMMLab青年研究员
一阶段算法:SSD、YOLO系列等。二阶段:Faster R-CNN、Mask R-CNN等。
框泛指图像上的矩形框,边界横平坚直
描述一个框需要 4 个像素值:
边界框通常指紧密包围感兴趣物体的框 检测任务要求为图中出现的每个物体预测一个边界框
交并比 (loU) 定义为两矩形框交集面积与并集面积之比,是矩形框重合程度的衡量指标
感受野: 神经网络中,一个神经元能"看到"的原图的区域
换句话说:
感受野的中心
感受野一般很大,但不同像素对激活值的贡献是不同的
换句话说:
激活值对感受野内的像素求导数,大小不同
影响比较大的像素通常聚集在中间区域,可以认为对应神经元 提取了有效感受野范围内的特征
置信度(Confidence Score):模型认可自身预测结果的程度,通常需要为每个框预测一个置信度 我们倾向认可置信度高的预测结果,例如有两个重复的预测结果,丟弃置信度低的
-一个好的检测器应满足不重、不漏的要求, 滑窗是实现这个要求的一个朴素手段。
设定一个固定大小的窗口
遍历图像所有位置,所到之处用分类模型 (假没已经汌统好) 识别窗口中的内容
为了检测不同大小、不同形状的物体,可以使用不同大小、长宽比的窗口扫描图片
缺点,效率低、冗余计算。
改进思路 1:使用启发式算法替换榩力退历
用相对低计算量的方式祖筡出可能包含物体的位置,再使用卷积网络预测 早期二阶段方法使用, 依款外部算法, 系统实现复杂
改进2:分析重复计算,减少冗余计算。
得到框中物体的分类概率
计算出精确的位置!
滑窗类算法通常会在物体周围给出多个相近的检测框 这些框实际指向同一物体,只需要保留其中置信度最高的
基本流程
如何训练
图像中物体大小可能有很大差异 ( 10 p x ∼ 500 p x ) (10 \mathrm{px} \sim 500 \mathrm{px}) (10px∼500px)
朴素的密集范式中,如果让模型基于主干网络最后一层或倒数第二层特征图进行预测:
在原图上设置不同尺寸的基准哐,称为锚诓,基于特征分别预测每个锚诓中是否包含物体
(1) 可以生成不同尺寸的预测框
(2) 可以在同一位置生成多个提议框覆盖不同物体
将图像缩放到不同大小,形成图像金字塔
检测算法在不同大小图像上即可检测出不同大小物体
优势:算法不经改动可以适应不同尺度的物体
劣势: 计算成本成倍增加
可用于模型集成等不在意计算成本的情况
基于主干网络自身产生的多级特征图产生预测结果
由于不同层的感受大小不同,因此不同层级的特征天然适用于检测不同尺寸的物体
优势:计算成本低
劣势: 低层特征抽象级别不够,预测物体比较困难
改进思路: 高层次特征包含足㿟抽象语义 信息。将高层特征融入低层特征,补充低 层特征的语义信息
融合方法:特征求和
单阶段算法直接通过密集预郧产生检测框,相比于两阶段算法,模型结构 简单、速度快、易于在设备上部署
早期由于主干网络、多尺度技术等相关技术不成昡,单阶段算法在性能上 不如两阶段算法, 但因为速度和简洁的优势仍受到工业界青睐
随着单阶段算法性能逐渐提升,成为目标检测的主流方法
RPN 的主干网络,去掉蓝色区域。
最早的单阶段检测器之一, 激发了单阶段算法的研究潮流
主干网络:自行设计的 DarkNet 结构,产生 7 × 7 × 1024 7 \times 7 \times 1024 7×7×1024 维的特征图
检测头: 2 层全连接层产生 7 × 7 7 \times 7 7×7 组预测结果,对应图中 7 × 7 7 \times 7 7×7 个空间位置上物体的类别和边界框的位置
YOLO 的匹配与框编码
YOLO 的优点和缺点
快! 在Pascal VOC 数据集上,使用自己设计的 DarkNet 结构可以达到实时速度,使用相同的 VGG 可以达到 3 倍于 Faster R-CNN 的速度
主干网络:使用 VGG + 额外卷积层,产生 11 级特征图
检测头:在 6 级特征图上进行密集预测,产生所有位置、不同尺度的预测结果
特征生成: ResNet 主干网络 + FPN 产生 P_{3} \sim P_{7} 共 5 级特征图,对应降采样率 8 128 倍
多尺度针框:每级特征图上设置 3 种尺寸×3 种长宽比的针框,覆盖 32 813 像素尺寸
密集预测头:两分支、 5 层卷积构成的检测头,针对每个针框产生 K 个二类预测以及 4 个边界框偏移量 损失函数: Focal Loss
模型结构与 RetinaNet 基本相同: 主干网络 + FPN +两分支、5 层卷积构成的密集预测头 预测目标不同:对于每个点位,预测类别、边界框位置和中心度三组数值
针对 2 D 检测的算法,将传统检测算法中的 “以框表示物体" 变成 “以中心点表示物体",将 2D 检测建模 为关键点检测和额外的回归任务,一个框架可以同时覆盖 2 D 检测、3D 检测、姿态估计等一系列任务
以 YOLO V3 为基准模型改进的无针框检测器
SOTA 的精度和速度