【OpenMMLab AI实战营二期笔记】第六天 目标检测和MMDetection

1.什么是目标检测?

在这里插入图片描述

目标检测 vs 图像分类

在这里插入图片描述

目标检测的应用

(1)人脸识别
(2)智慧城市
(3)自动驾驶
(4)下游视觉任务:场景文字识别、人体姿态估计

目标检测技术的演进

在这里插入图片描述
在这里插入图片描述

2.基础知识

框,边界框(Bounding Box)

框泛指图像上的矩形框,边界横平竖直。
边界框通常指紧密包围感兴趣物体的框,检测任务要求为图中出现的每个物体预测一个边界框

交并比(Intersection Over Union)

定义:两矩形框交集面积并集面积之比,是矩形框重合程度的衡量指标。
在这里插入图片描述

感受野

定义:神经网络中,一个神经元能看到的原图的区域
在这里插入图片描述

感受野的中心和步长

感受野的中心:

  • 一般结论比较复杂;
  • 对于尺寸3x3,pad=1的卷积(或池化)堆叠起来的模型,感受野中心=神经元在特征图上的坐标x感受野步长

感受野的步长(=降采样率=特征图尺寸的缩减倍数):

  • 神经网络某一层上,相邻两个神经元的感受野的距离
  • 步长=这一层之前所有stride的乘积
    在这里插入图片描述

有效感受野(Effective RF)

感受野一般很大,但不同像素对激活值的贡献是不同的,也就是说激活值对感受野内的像素求导数,大小不同。影响比较大的像素通常聚集在中间区域,可以认为对应神经元提取了有效感受野范围内的特征。也就是说,感受野边缘的贡献不大,而中心比较重要。
在这里插入图片描述

基于锚框 vs 无锚框

在这里插入图片描述

非极大抑制 Non-Maximum Suppression

滑窗类算法通常会在物体周围给出多个相近的检测框,这些框实际指向同一物体,只需保留其中置信度最高的
在这里插入图片描述
非极大抑制的算法实现:
在这里插入图片描述

置信度 Confidence Score

置信度:模型认可自身预测结果的程度,通常需要为每个框预测一个置信度,我们倾向认可置信度高的预测结果,例如有两个重复的预测结果了,丢弃置信度低的。

  • 部分算法直接取模型预测物体属于特定类别的概率;
  • 部分算法让模型单独预测一个置信度(训练时有GT,可以得相关信息作为监督);
    在这里插入图片描述

正负样本不均衡问题

在这里插入图片描述

3.目标检测的基本思路

检测问题的难点

(1)需要同时解决是什么和在哪里
(2)图中物体位置、数量、尺度变化多样

滑窗 (Sliding Window)

(1)设定一个固定大小的窗口
(2)遍历图像的所有位置,所到之处用分类模型(假设已经训练好)识别窗口中的内容
(3)为了检测不同大小、不同形状的物体,可以使用不同大小、长宽比的窗口扫描图片
缺点:效率问题,计算成本很高。
改进思路1:用启发式算法替换暴力遍历,用相对低计算量的方式粗筛出可能包含物体的位置,再使用卷积网络预测。早期二阶段方法使用,依赖外部算法,系统实现复杂。
改进思路2:减少冗余计算,使用卷积网络实现密集预测,这是目前普遍采用的方式。

分析滑窗中的重复计算

下图中的重叠部分被相同的卷积核卷积,计算冗余了。
在这里插入图片描述

改进思路

用卷积一次性计算全图所有特征,再取出对应位置的特征完成分类
在这里插入图片描述
这样的特征图滑窗相比原图滑窗来说,重叠区域只计算一次卷积特征,与窗的个数无关

在特征图上进行密集预测

在这里插入图片描述

边界框回归 Bounding Box Regression

问题:滑窗与物体精确边界通常有偏差
处理方法:让模型在预测物体类别的同时预测边界框相对于滑窗的偏移量,这种基于同一特征做两个预测的也叫做多任务学习。
在这里插入图片描述

使用密集预测模型进行推理

基本流程:

  • 用模型做密集预测,得到预测图,每个位置包含类别概率、边界框回归的预测结果
  • 保留预测类别不是背景的框
  • 基于框中心,和边界框回归结果,进行边界框解码
  • 后处理:非极大值抑制

如何训练

训练神经网络的一般套路:

  • 模型基于当前参数给出预测
  • 计算loss:衡量预测的好坏
  • 反传loss、更新参数
    密集预测的训练过程:
  • 检测头在每一个位置产生一个预测(有无物体、类别、位置偏移量)
  • 该预测值应与某个真值比较产生损失,进而才可以训练检测器
  • 但这个真值在数据标注中并不存在,标注只标出了有物体的地方
  • 我们需要基于稀疏的标注框为密集预测的结果产生真值,这个过程称为匹配(Assignment)
    在这里插入图片描述
    匹配的基本思路:
    在这里插入图片描述

密集预测的基本范式

在这里插入图片描述

4.密集预测范式的改进:多尺度预测

尺度问题

图像中的物体大小可能有很大的差异。
朴素的密集范式中,如果让模型基于主干网络最后一层或者倒数第二层特征图进行预测:

  • 受限于结构(感受野),只擅长中等大小的物体
  • 高层特征图经过多次采样,位置信息逐层丢失,小物体检测能力较弱,定位精度较低

解决方式

方法一:基于锚框
在这里插入图片描述
方法二:图像金字塔 Image Pyramid
在这里插入图片描述
方法三:基于层次化特征
在这里插入图片描述
方法四:特征金字塔网络 Feature Pyramid Network
在这里插入图片描述

多尺度密集预测范式

在这里插入图片描述

5. 单阶段目标检测算法选讲

Region Proposal Network(2015)

在这里插入图片描述

RPN的主干网络图(VGG上,resnet下)
在这里插入图片描述

YOLO:You Only Look Once(2015)

在这里插入图片描述
YOLO的匹配与框编码
在这里插入图片描述
YOLO的损失函数(现在也不是很常见)
在这里插入图片描述
YOLO的优缺点
在这里插入图片描述

SSD:Single Shot MultiBox Detector (2016)

第一个使用多级特征图
在这里插入图片描述
SSD 的匹配规则
在这里插入图片描述

RetinaNet(2017)

FPN成为主要结构
在这里插入图片描述
提出Focal loss主要为了解决单阶段算法面临的正负样本不均衡问题
在这里插入图片描述
不同负样本对损失函数的贡献
在这里插入图片描述
改进:降低简单负样本的损失
在这里插入图片描述
Focal Loss
在这里插入图片描述

YOLO v3(2018)

在这里插入图片描述
在这里插入图片描述

YOLO v5(2020)

在这里插入图片描述

6. 无锚框目标检测算法

不用锚框会导致对于重叠物体的检测效果特别差,但是借助FPN可以利用不同层次的特征预测。

FCOS,Fully Convolutional One-stage(2019)

在这里插入图片描述
FCOS的预测目标 and 匹配规则
在这里插入图片描述
FCOS的多尺度匹配
在这里插入图片描述
中心度 Center-ness
在这里插入图片描述
FCOS的损失函数
在这里插入图片描述

CenterNet(2019)

在这里插入图片描述

YOLO X(2021)

在这里插入图片描述

YOLO V8(2022)

在这里插入图片描述

7. 单阶段算法和无锚框算法的总结

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41776136/article/details/131112555