ECCV2018|【论文笔记】CornerNet: detecting objects as paired keypoints

佐手、 提交于 2020-02-28 10:55:28

论文地址:https://arxiv.org/abs/1808.01244v1

代码地址:https://github.com/princeton-vl/CornerNet

摘要:

本文提出了一个新的目标检测方法CornerNet,用一对关键点来检测目标。即object box的左上和右下点,并使用单一卷积神经网络。同时本文还提出了一种新的池化层,Corner polling,可以更好的定位corner。

引言:

之前的目标检测anchor机制,需要产生大量的anchor,比如DSSD需要40000个,RetinaNet产生100000个,但是实际只有少量的正确的anchor与真实值重叠率高,这造成正负样本极度不平衡(lin etal 2017)

Anchor boxes需要复杂的设计,数量,尺寸,比例。

文章使用boxes左上和右下的关键点来预测。使用单一神经网络预测左上角和右下角关键点的heatmap。

uploading.4e448015.gif正在上传…重新上传取消

文章回忆了相关的目标检测检测器,包括two-stage 和one-stage。同时对比了anchor改进的相关检测器。DeNet(2017)是一个没有用anchor产生ROI的二阶段检测器。它首先判定每一个位置是属于bounding box四角的哪一个,然后通过列举所有可能的cornor 组合产生ROI。不同的是,本文提出的cornerNet是一个一阶段方法,使用了单一卷积网络产生corner,而且不需要相对一个区域的人工确定的位置上进行特征选择。

PLN(2017)是一个没有anchor boxes的一阶段检测器。首先预测中心和包围框四角位置,然后,在每一个角位置,预测每一个图片中的像素位置是中心位置的可能性。相似的,在每个宗信位置,预测每个像素位置是四角位置的可能性。结合每个角和中心的预测来产生一个bbox,最终合并四个bboxes产生一个bbox。cornerNet不同在于,通过预测嵌入向量对角进行分组,其次,使用corner pooling更好的定位corners。

本文提出的方法受启发与2017年论文(Associative Embedding in the contect of multi-person pose estimation)。

1 使用hourglass network 作为基本网络框架

Hourglass module首先通过一系列卷积核最大池化层对input features进行下采样,然后通过一系列上采样和卷积层对feature 上采样至原始维度。

Hourglass network由两部分组成,为左上和右下corner。每个module有自己的Corner pooling。文中使用步长为2的pooling,没有使用最大池化。将特征分辨率降低5倍,同时增加了特征通道的数量(256,384,384,384,512)。上采样特征时,用了两个残差模型和一个邻近上采样。在hourglass 模型之前,用128通道的7*7,stride为2的卷积网络接一个256通道的stride为2残差网络将图像分辨率减少4倍。

我们在训练中也加入了中级监督。文中用一个1*1的卷积-BN 结构在第一个hourglass 模型的输入和输出。用RELU和256通道的残差合并他们,然后作为第二个hourglass 模型的输入。Hourglass网络深度为104。

 

 

uploading.4e448015.gif正在上传…重新上传取消

每个heatmap 有C个通道,代表C个类别,没有背景通道。每个Corner,有一个真实值正位置,其他的位置都是负位置。训练时,没有同样地惩罚负样本位置,而是通过正确位置半径来减少负样本位置的处罚。一堆错误的Corner检测,当他们分别接近真实位置值时,仍然可以产生与真实值重叠高的box。我们通过确保半径内一对点生成一个包围框,至少在真实值t IOU范围(文章中设置0.3)考虑到半径,减少惩罚总量通过非标准二维高斯产生。

uploading.4e448015.gif正在上传…重新上传取消

2 grouping corners

为了确定一堆左上角和右下角的点是否来自于同一个bbox,论文中提出联想嵌入向量,网络对每个检测corner预测一个嵌入向量,嵌入距离需要很小。然后,我们可以根据左上角和右下角嵌入之间的距离进行分组。

3 Corner pooling

为了确定一个像素是否是左上角,需要水平向右查看对象的顶部边界,垂直向底部查看最左侧边界。

uploading.4e448015.gif正在上传…重新上传取消

4 experiments

论文在pytorch运行cornernet,在Pytorch默认设置下随机初始化,没有预训练任何其他的数据集。使用了focal loss,设置卷积网络的偏差来预测corner heatmap。设置网络输入尺度为511*511,输出尺度是128*128.为了减少过拟合,使用随机垂直翻转和随机放缩、裁剪和颜色抖动。最后对输入图像进行PCA变换。

用adam优化全局损失(自己设置的损失,设计权重)。Batchsize为49,在10个titanx上。模型携带次数为250000,学习率为0.00025

5 ablation study

文章对比了是否使用corner pooling,hourglass network来分析模块性能。

6 error analysis

  Cornernet 的输出 heatmaps,offsets,embeddings都会影响检测效果。如果一个corner被忽略,那一个object就会被忽略。正确的Offset可以产生紧密的bbox,不正确的embedding会产生很多错误的bboxes。为了了解每一个部分对最终error的影响,文章用真实值和按征集上的评估结果替换

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!