系列文章目录
第一课:【OpenMMLab】OpenMMLab概述
第二课:【OpenMMLab】人体姿态估计、关键点检测与MMPose
第三课:【openMMLab】MMPose 代码教程
第四课:【OpenMMLab】深度学习预训练与 MMPreTrain
第五课: 【OpenMMLab】MMPretrain 代码教程
目标检测
课程视频:https://www.bilibili.com/video/BV1Ak4y1p7W9
任务介绍
给定一张图像,用矩形框框出所有感兴趣的物体,同时给出每个矩形框中物体的类别。
如下图,检测到图像中央的椅子并给出类别。
目标检测 vs 图像分类
图像分类通常只有一个物体,位于图像中央,是图像的主题内容;目标检测处理的图像中,物体数量、位置和大小都不确定。
目标检测应用
目标检测技术的演进
基础知识
框 Bounding Box
框泛指图像上的矩形框,边界横平竖直
描述一个框需要 4个像素值:
- 方式1:左上右下边界坐标(l,t,r,b)
- 方式2:中心坐标和框的长宽(x,y,w,h)
边界框通常指紧密包围感兴趣物体的框检测任务要求为图中出现的每个物体预测一个边界框
交并比 Intersection of Union
交并比(loU)定义为两矩形框交集面积与并集面积之比,是矩形框重合程度的衡量指标
基本思路
基本流程
- 用模型做密集预测,得到预测图,每个位置包含类别概率、边界框回归的预测结果
- 保留预测类别不是背景的“框
- 基于“框"中心,和边界框回归结果,进行边界框解码
- 后处理: 非极大值抑制 (Non-Maximum Suppression
问题难点
- 需要同时解决“是什么”和“在哪里”
- 图中物体位置、数量、尺度变化多样
滑窗 Sliding Window
一个好的检测器应满足不重、不漏的要求;滑窗是实现这个要求的一个朴素手段
- 设定一个固定大小的窗口
- 遍历图像所有位置,所到之处用分类模型(假设已经训练好)识别窗口中的内容
- 为了检测不同大小、不同形状的物体,可以使用不同大小、长宽比的窗口扫描图片
滑窗问题: 难以承受的计算量
改进思路1: 使用启发式算法替换暴力遍历用相对低计算量的方式粗筛出可能包含物体的位置,再使用卷积网络预测早期二阶段方法使用,依赖外部算法,系统实现复杂;
改进思路 2: 减少冗余计算,使用卷积网络实现密集预测目前普遍采用的方式
问题: 重叠部分用相同的卷积计算了多次
改进思路: 用卷积一次性计算所有特征,再取出对应位置的特征完成分类
边界框回归 Bounding Box Regression
问题
滑窗(或其他方式产生的基准框)与物体精准边界通常有偏差
处理方法
让模型在预测物体类别同时预测边界框相对于滑窗的偏移量
基于锚框 vs 无锚框
非极大值抑制 Non-Maximum Suppression
滑窗类算法通常会在物体周围给出多个相近的检测框这些框实际指向同一物体,只需要保留其中置信度最高的
非极大值抑制算法的实现:
置信度
模型认可自身预测结果的程度,通常需要为每个框预测一个置信度,我们倾向认可置信度高的预测结果,例如有两个重复的预测结果,丢弃置信度低的
- 部分算法直接取模型预测物体属于特定类别的概率
- 部分算法让模型单独预测一个置信度(训练时有GT,可以得相关信息作为监督)
训练
- 检测头在每个位置产生一个预测(有无物体、类别、位置偏移量)
- 该预测值应与某个真值比较产生损失,进而才可以训练检测器
- 但这个真值在数据标注中并不存在,标注只标出了有物体的地方
- 我们需要基于稀疏的标注框为密集预测的结果产生真值,这个过程称为匹配(Assignment)