CornetNet

CornerNet: Detecting Objects as Paired Keypoints

ECCV 2018 GitHub主页

概要:

  1. 单阶段检测器,但是速度还是很慢(在改进版CornerNet-Lite 中提到);
  2. Anchor-Free,是第一次尝试 将目标框的检测(中心点+宽高)转换为关键点检测(左上点+右下点);
  3. COCO 数据集上单尺度测试精度为40.5,多尺度测试为42.5。

网络框图:

先看示意图。
示意图

(1) Heatmap 与 角点预测

图中Heatmaps尺度为 H × W × C H\times W\times C H×W×C,C为类别数,每个通道使用sigmoid激活。以上图为例,两个Heatmaps中表示“人”这个类别的通道 分别负责检测 图片中所有“人”的左上点和右下点。
具体的角点(corner)检测方式应该是通过寻找热力图中大小超过一定阈值的位置,比如下图红点的位置(图片来自网络,只是为了方便说明),理想情况下,多少个红点表示图片中该类目标共有多少个。

在这里插入图片描述
训练时,Heatmap的监督信息通过以Ground Truth的每个角点为中心,一定半径( r = 3 ⋅ σ r=3\cdot\sigma r=3σ,3 σ \sigma σ原则)生成高斯分布。然后使用交叉熵损失函数(论文中使用Focal Loss)拟合这两个分布。

关于交叉熵函数的理解,附上我很喜欢的一篇博客:关于交叉熵在loss函数中使用的理解

在这里插入图片描述
图中红色为Ground Truth,绿色虚线表示的预测框的角点只要满足在橙色圈内,就能保证一个较高的IOU。
在这里插入图片描述
i , j i,j i,j表示每个热图中的每个位置, y y y为Ground Truth。

(2)Embedding Map 与 角点匹配

接下来的问题是,同一类目标点的左上点和右下点都找到了,如何配对(group)?

文章中采用人体姿态中的关键点检测中的Associate Embedding策略,即为每个点生成一个Embedding向量,论文中向量长度为1,Embedding map的尺度为 H × W × 1 H\times W\times 1 H×W×1。根据两点Embedding向量的距离判断是否属于同一目标。
训练时,采用两个损失函数:pull 以及 push,根据字面意思,pull减小属于同一目标的两个角点之间的距离,push增大不同目标的角点距离。
在这里插入图片描述
可以通过下图来理解(注:为了方便理解将两个角点绘制到一张图上)。
在这里插入图片描述

(3) offsets 与 角点矫正

角点的位置是在Heatmap中确定的,需要将其映射回原图。但是由于下采样操作以及图片离散性质,会有映射误差:
在这里插入图片描述
x k x_k xk y k y_k yk为原图中的坐标, ⌊ x k n ⌋ \lfloor\frac{x_k}{n}\rfloor nxk ⌊ y k n ⌋ \lfloor\frac{y_k}{n}\rfloor nyk为映射在Heatmap中的位置,n为骨干网络的下采样系数(论文中为4,即输入为 511 × 511 511\times 511 511×511,Heatmap为 128 × 128 128\times 128 128×128)。
使用SmoothL1损失学习误差:
在这里插入图片描述

(4)整体网络框图

在这里插入图片描述

Corner Pooling 与 Backbone

Corner Pooling是一种特殊的Pooling机制,为了引入一些“先验知识”(个人理解):判断一个点是否为左上点,首先从该点开始向右看(画),看是否是上框线,然后向下看(画),看是否是左框线。怎么看 即为感受野,所以Corner Pooling的感受野是一条线,取该条线的最大值作为该点的值。相比传统Max Pooling取 n × n n\times n n×n矩形局域中的最大值,Corner Pooling专为角点检测而设计的Pooling 机制,引入了人为先验。
在这里插入图片描述

骨干网络堆叠了两个HourGlass结构,采用中间监督的训练方式,测试时丢弃中间输出。
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值