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

论文代码:https://github.com/umich-vl/CornerNet

概述

CornerNet是一篇发表在ECCV 2018的目标检测论文。有别于主流目标检测算法基于anchor box的思想,CornerNet将关键点检测用于目标检测,通过检测目标区域的左上角和右下角这两个关键点来获取预测框。CornerNet创新性强,而且检测效果很好,在MS COCO数据集上的AP达到42.1%。

CornerNet介绍

Anchor box的使用使得单阶段算法具有与两阶段算法相当的检测效果,但是anchor box(1)数目巨大,而且容易造成正负样本不平衡,训练速度慢(2)引入了许多超参数设置和结构设计。受Newell等人在多人姿态估计上下文关联embedding的启发,作者提出了CornerNet,将一个目标检测为一个关键点对(边界框的左上角和右下角),使用单个卷积神经网络来预测heatmap(左上角、右下角),以及每个角点的embedding vector,该向量用于组合同一目标的角点对。CornerNet的大体流程如下图所示:

如图2所示,不同目标的角点没有相似特征。那么,怎样确定边界框的角点呢?

文中提出了一种新的池化层来解决这个问题。注意到目标的左上角的角点向右可以得到目标的顶部特征信息,向下可以得到目标的左侧特征信息,右下角的角点类似。作者提出Corner pooling的池化方式来获得这些信息。以左上角的角点为例,Corner pooling的示意图如下:

具体计算示例如图6所示,简单来讲,左上角的Corner pooling就是自右向左扫描的水平max-pooling、自底向上扫描的垂直max-pooling,将两个结果做元素和。右下角的池化类似。

网络结构

CornerNet的网络结构如下:

CornerNet使用Hourglass网络作为backbone提取特征,之后的两个预测模块分别用于预测左上角和右下角的角点,每个预测模块首先是一个Corner pooling层,其后有三个分支:heatmaps、embeddings和offsets。

Heatmaps就是角点位置的预测,一共两组分别表示左上角和右下角,每组有C个通道(C为类别数目,不含背景类),大小为H*W,每个通道都是二进制mask用于表示该类的角点的位置。注意到对于每个角点,只有ground-truth处是正,其余所有位置都是负的。但是实际上如果一对false角点距离ground-truth很近,那么它仍然可以生成与ground-truth重叠程度很大的框,如图5所示。所以用同样的权值惩罚负位置是不合理的。

因此,文中提出了focal loss的变体来处理heatmap损失:

其中,pcij是类别c在位置(i, j)的score,ycij是非标准化高斯增强的ground-truth,N是图像中目标数,α和β是超参数(实验中α设为2,β 设为4)。

Offsets则是位置偏移。下采样的使用使得输出尺寸小于原始图像尺寸,假设下采样因子为n,则图像中(x, y)映射到Heatmaps的([x/n], [y/n])。取整计算会导致精度丢失,使用offsets来更准确地进行Heatmaps到输入图像的映射。

训练过程中使用smooth L1损失,即:

Embedding用于确定左上角和右下角的一对角点是否来自同一个目标边界框。Embedding产生每个角点的embedding vector,如果左上角和右下角的一对角点属于同一个目标,那么它们embedding vector之间的距离应该很小。该部分的训练通过如下两个损失函数实现,其中(4)用于缩小属于同一目标的两个角点的embedding向量的距离,(5)用来放大不属于同一目标的两个角点的embedding向量的距离:

预测模块的详细结构如下图所示:

第一部分采用residual block结构,首先使用两个128通道的3*3卷积模块处理特征,然后使用corner pooling层。将池化特征输入256通道的3*3的conv-BN层,加上shortcut,然后通过卷积模块和conv-ReLU-conv层产生输出结果。

实验

网络随机初始化,没有在任何数据集上进行预训练。训练过程中,输入图像尺度为511*511,输出为128*128,。采用随机水平翻转、随机缩放、随机裁剪、随机色彩抖动等数据扩增技术。

Full loss如下:

其中,α和β都设为0.1,γ设为1。

测试细节:在角点Heatmaps上使用3*3 max-pooling,使用NMS后处理产生100个左上和100个右下角点。去掉Embedding vector的距离大于0.5或者包含不同类别的角点对。检测分数为左上角和右下角的平均得分。不对图像resize,使用0填充的方式产生指定大小的图像作为输入。同时应用原始图像和翻转图像进行测试,并结合二者的检测结果,使用softmax抑制冗余,仅保留前100个预测框。

实验结果

可见,使用corner pooling使得AP提升了两个点。

采用基于目标的半径衰减损失效果明显优于固定半径和不使用衰减惩罚损失的方法。

Heatmaps和offsets的引入大大提升了AP值。

CornerNet511的多尺度模型在COCO数据集上的AP达到42.1。

论文阅读 | CornerNet:Detecting Objects as Paired Keypoints的更多相关文章

  1. [论文理解] CornerNet: Detecting Objects as Paired Keypoints

    [论文理解] CornerNet: Detecting Objects as Paired Keypoints 简介 首先这是一篇anchor free的文章,看了之后觉得方法挺好的,预测左上角和右下 ...

  2. 【论文阅读】CornerNet: Detecting Objects as Paired Keypoints

    以下内容将介绍ECCV2018的一篇目标检测的文章<CornerNet: Detecting Objects as Paired Keypoints>.该文章讲述了一个老子就是不用anch ...

  3. CornerNet: Detecting Objects as Paired Keypoints

    CornerNet是一种anchor free的目标检测方法,不需要设置anchor,而是通过检测关键点(Keypoints),即目标的左上角(Top-Left Corners)和右下角(Bottom ...

  4. 论文阅读笔记五十:CornerNet: Detecting Objects as Paired Keypoints(ECCV2018)

    论文原址:https://arxiv.org/pdf/1808.01244.pdf github:https://github.com/princeton-vl/CornerNet 摘要 本文提出了目 ...

  5. 【CV论文阅读】Detecting events and key actors in multi-person videos

    论文主要介绍一种多人协作的视频事件识别的方法,使用attention模型+RNN网络,最近粗浅地学习了RNN网络,它比较适合用于处理序列的存在上下文作用的数据. NCAA Basketball数据集 ...

  6. 论文阅读笔记五十一:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)

    论文链接:https://arxiv.org/abs/1904.08189 github:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键点的 ...

  7. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

  8. 论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)

    论文原址:https://arxiv.org/abs/1810.08425 github:https://github.com/KimSoybean/ScratchDet 摘要 当前较为流行的检测算法 ...

  9. 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)

    论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...

随机推荐

  1. SDN网络工具

    TcpDump 根据使用者的定义对网络上的数据包进行截获的包分析工具. http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html ...

  2. 4.4.6 数组也能无锁:AtomicIntegerArray

    数组也可以实现cas操作,有以下几个类以及用法如下: public class AtomicTntegerArrayTest { public static void main(String[] ar ...

  3. YII2 自动 created_at created_by updated_by updated_at

    use yii\behaviors\TimestampBehavior; use yii\behaviors\BlameableBehavior; use yii\db\Expression; /** ...

  4. Fiddldr 教程之:HTTP协议详解(转)

    原文地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html HTTP协议详解 当今web程序的开发技术真是百家争鸣,ASP ...

  5. 完全卸载memcached的方法(CentOS)

    前阵子给服务器装了个memcached,4G的内存,想给网站提提速,实际上不但没有明显效果,反倒耗费内存,看着碍眼,于是想卸载,网上各种搜索+自己实践,搞出一个傻瓜方案来: 1.首先查找你的memca ...

  6. Unity热更新技术整理

    一.热更新学习介绍 1.什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新 ...

  7. Postgresql导出指定的数据表

    两对双引号"\"\""是用于解决:pg_dump: no matching tables were found 问题. pg_dump -h localhost ...

  8. 设计模式12: Proxy 代理模式(结构型模式)

    Proxy 代理模式(结构型模式) 直接与间接 人们对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活.满足特定需求的解决方案.如下图,开始时,A需要和B进行3次通信, ...

  9. model.find(options)

    options {Object} 操作选项,会通过 parseOptions 方法解析 return {Promise} 返回单条数据 查询单条数据,返回的数据类型为对象.如果未查询到相关数据,返回值 ...

  10. redis整理の安装

    安装 步骤一: 下载 Redis 下载安装包:#wget http://redis.googlecode.com/files/redis-2.8.19.tar.gz: 步骤二:解压:#tar zxvf ...