基于关键点的目标检测算法:CornerNet
字数 2311 2025-10-27 17:41:11
基于关键点的目标检测算法:CornerNet
题目描述
CornerNet是一种创新的单阶段目标检测算法,其核心思想是将目标检测问题转化为关键点检测问题。与传统的基于锚框(anchor boxes)的方法不同,CornerNet通过检测每个目标的左上角和右下角两个关键点,并将它们配对,从而确定目标的边界框。这种方法避免了设计和计算大量锚框的开销,并取得了优异的性能。
解题过程
-
核心思想与问题转化
- 传统方法的局限:以Faster R-CNN和YOLO为代表的主流方法严重依赖预先设定好的锚框。这些锚框有不同的尺寸和长宽比,用于在图像上滑动采样。这种方法存在两个问题:1) 需要生成和计算大量的锚框(通常数以万计),许多锚框与真实目标无关,造成计算浪费和正负样本不平衡;2) 锚框的超参数(如尺寸、比例)对最终性能影响较大,需要精心设计。
- CornerNet的创新:CornerNet摒弃了锚框。它认为,一个物体的边界框可以由其左上角和右下角两个点唯一定义。因此,目标检测任务被重新定义为:
- 关键点检测:检测所有目标类别的左上角点和右下角点。
- 关键点分组:判断哪些左上角点和右下角点属于同一个目标,并将它们组合成边界框。
-
网络结构:CornerNet的骨干网络与输出
- 骨干网络:CornerNet使用Hourglass网络作为特征提取器。Hourglass网络是一种对称的编码器-解码器结构,通过多次下采样和上采样,能够有效地捕捉图像中不同尺度的信息,并生成高分辨率的特征图,这对于精确定位关键点至关重要。
- 预测头:在Hourglass网络输出的特征图上,连接两个预测分支,分别用于预测左上角点和右下角点。每个分支都包含三个输出:
- 热图:这是最主要的输出。热图的大小为
H x W x C,其中H和W是特征图的高和宽,C是目标类别数(不包括背景类)。热图中的每个通道对应一个物体类别,每个位置的值是一个分数,表示该位置是某类物体角点的概率。例如,热图heatmaps[i, j, k] = 0.9表示位置(i, j)是第k类物体角点的概率很高。 - 嵌入向量:这个输出用于解决关键点分组问题。嵌入向量图的大小为
H x W x 1(这里为简化,实际可能有多个维度,但核心思想是每个角点位置预测一个一维或多维的向量)。属于同一个目标的左上角点和右下角点,它们的嵌入向量在向量空间中的距离应该很近;而属于不同目标的角点,其嵌入向量距离应该很远。 这样,网络可以通过学习,让同一物体的两个角点拥有相似的“标签”。 - 偏移量:由于特征图是原图下采样的结果(例如,下采样了4倍),从特征图坐标映射回原图坐标时会有量化误差(精度损失)。偏移量图的大小为
H x W x 2,它为每个角点位置预测一个微小的(Δx, Δy)偏移量,用于对角点在原图中的位置进行精细调整,从而提高定位精度。
- 热图:这是最主要的输出。热图的大小为
-
关键点检测的细节:热图标签的生成
- 我们如何为训练数据生成热图的真实标签(Ground Truth)?假设有一个真实边界框,我们知道其左上角点
p在原图上的坐标。 - 不是简单的“一点”标签:如果只在热图上角点
p的对应位置标记为1(正样本),其他位置都为0(负样本),那么正样本会非常稀少,训练会很不稳定。 - 使用高斯核“扩散”:CornerNet采用了一种更聪明的方法。它以真实角点
p为中心,制作一个二维高斯分布(一个圆形的“热区”),并将其“涂抹”在热图上。在中心点p处值最高(接近1),随着距离中心点越远,值按高斯分布递减。这样,热图上角点p附近的位置也会有非零的响应,它们被视为“软”的正样本或较容易的样本,这有助于网络训练,并使定位更加鲁棒。
- 我们如何为训练数据生成热图的真实标签(Ground Truth)?假设有一个真实边界框,我们知道其左上角点
-
关键步骤:角点分组(关联嵌入)
- 现在网络已经预测出了所有可能是左上角或右下角的点。接下来最大的挑战是:如何知道哪个左上角和哪个右下角属于同一个物体?
- 关联嵌入的魔力:这就是“嵌入向量”发挥作用的地方。CornerNet为每个检测到的角点(无论是左上还是右下)提取其对应的嵌入向量值。
- 分组策略:对于每一个预测的左上角点,我们计算它与所有预测的右下角点的嵌入向量之间的距离(例如L1距离)。如果一对左上角和右下角点的嵌入向量距离很小,那么它们就很可能属于同一个物体。我们为这一对角点组成一个候选边界框。
- 得分计算:这个候选边界框的最终得分是三个分数的平均值:左上角点的热图得分、右下角点的热图得分、以及这对角点嵌入向量的相似度得分。
-
后处理:非极大值抑制
- 和大多数检测器一样,CornerNet也会对同一个物体产生多个重叠的、得分不同的边界框。
- 应用NMS:我们需要使用非极大值抑制来去除冗余的检测框。具体过程是:
- 将所有候选边界框按最终得分从高到低排序。
- 选择得分最高的框,将其加入到最终输出列表中。
- 计算这个框与剩余所有框的交并比。删除所有与当前框IoU大于某个阈值(如0.5)的框(因为它们很可能是对同一个物体的重复检测)。
- 从剩余的框中继续选择得分最高的,重复步骤2和3,直到没有框剩下。
总结
CornerNet通过将目标检测转化为关键点检测和配对问题,提供了一种新颖且有效的思路。它省去了繁琐的锚框设计,通过检测“角点”并利用“嵌入向量”进行分组,实现了端到端的目标检测。其核心流程可概括为:Hourglass网络提取特征 -> 预测角点热图、嵌入向量和偏移量 -> 通过嵌入向量距离匹配左上角和右下角点 -> 组合成边界框并应用NMS输出最终结果。