论文阅读:CornerNet: Detecting Objects as Paired Keypoints

CornerNet

简介

很多目标检测会采用anchor来提升目标检测的定位精度,使用anchor主要有两个缺点:

  1. 通常需要大量的anchor,但是只有少部分的anchors会与ground truth重叠,造成正负样本的不均衡,降低训练的效率;
  2. 使用anchor需要一些超参数和设计方法,包括了anchor的数量、尺寸和比例等。需要通过对超参数调参完成anchor的设计,在多尺度框架下应对多分辨率会更加复杂。

CornerNet 是一个比较出色的One-Stage的目标检测方法,同时也是一种Anchor-free 的目标检测方法。文章的第一个创新点是Boundin box 用一对关键点表示,包括左上角点和右下角点。

backbone网络使用的是hourglass,分别使用一个网络检测预测同一种类的所有instances的左上角点和右下角点的热图,embedding vector 和offset。其中embedding vector 用于判断哪一对角点属于同一instance,offset 解决的是由降采样造成的定位精度下降。
在这里插入图片描述

文章的第二个创新点是corner pooling。所解决的问题是要检测的角点通常不在物体内部,因此不能使用局部特征定位两个角点。在每个位置上,corner pooling max-pools all features vectors to the right from the first feature map, max-pools all features vectors to the right from the second feature map, and add the two pooled results togehter.
在这里插入图片描述

CornerNet

角点检测

主干网络hourglass后解两个预测模块,分别输出左上角点与右下角点的heatmaps、embeddings、offsets。其中heatmaps有C个通道(C为类别数),每个通道对应一个类别;本文中的embedding是标量,用于聚类角点;offset采用了光滑L1损失。

在这里插入图片描述

对于每个角点,只有一个真值坐标,其他坐标都是负的。由一些负样本得到的bounding box与真值的overlap可能也会比较高,应该降低对这些负样本的惩罚。文章中,如果某一负样本落在真值的半径内,则降低对该负样本的惩罚,系数为 e − x 2 + y 2 2 ρ 2 e^{-\frac{x^2+y^2}{2\rho^2}} e2ρ2x2+y2,其中 ρ \rho ρ为半径的 1 / 3 1/3 1/3,半径由生成最低IoU大于 t t t决定。设 p c i j p_{cij} pcij为预测热图中类别 c c c在位置 ( i , j ) (i, j) (i,j)的得分, y c i j y_{cij} ycij为添加过惩罚系数后的热图得分,采用focal loss后,目标函数为:
在这里插入图片描述

y c i j y_{cij} ycij可以降低对真值周围的负样本的惩罚。

由于降采样将坐标 ( x , y ) (x, y) (x,y)映射至 ( ⌊ x n ⌋ , ⌊ y n ⌋ ) (\lfloor \frac{x}{n}\rfloor, \lfloor \frac{y}{n}\rfloor) (nx,ny),会降低角点的定位精度,需要预测角点的偏移量
在这里插入图片描述
偏移量目标函数为:
在这里插入图片描述

聚类角点

在同一幅图片中,可能会出现多个物体,因此可以检测得到多个左上角点、右下角点。需要判断一对角点是否来自同一物体,本文采用了multi-person pose estimatation 中的embedding vector。该做法是,首先检测所有的人的joint,对每个joint生成一个embedding, 根据embedding的距离对joint进行聚类。

文章中采用了一维的embedding vector,记 e t k e_{tk} etk为物体 k k k的左上(top-left)角点的embedding, e b k 为 物 体 e_{bk}为物体 ebkk$的右上(bottom-left)角点的embedding,使用pull loss 训练网络以聚类角点,使用 push loss 以分离角点:

在这里插入图片描述

其中 e k e_k ek e t k e_tk etk e b k e_{bk} ebk的均值, Δ \Delta Δ设为1。类似于focal loss,这两个loss只设置在真值角点。

corner pooling

在这里插入图片描述

最终的损失为:
\begin{equation}
L = L_{det} + \alpha L_{pull} + \beta L_{push} + \gamma L_{off}
\end{equation}

MSCoCO 实验

在这里插入图片描述
从当时实验结果看,该方法比大多数的one-stage方法要好,但是对比SNIP明显不足,而且现在CoCo上mAP要比现在好很多。

思考

这篇文章提供了一个目标检测的anchor-free方法的思路,对我最大的影响有两点:

  1. 要想直接检测目标的Bounding box的点不能依靠局部特征,文中的corner pooling很有借鉴意义,尤其是想在图像中直接检测目标的3D Bounding box, 困难更大。 这点可以在找找之前一篇文章,检测物体的3D bb的。
  2. 目标函数 L d e t L_{det} Ldet y c i j y_{cij} ycij的设置有一些模糊集合的意思,把原来0和1的离散标签改成了由超参数 t t t控制的连续标签, 然后使用focal loss 的变形。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值