论文阅读 | CornerNet:Detecting Objects as Paired Keypoints
论文地址: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的更多相关文章
- [论文理解] CornerNet: Detecting Objects as Paired Keypoints
[论文理解] CornerNet: Detecting Objects as Paired Keypoints 简介 首先这是一篇anchor free的文章,看了之后觉得方法挺好的,预测左上角和右下 ...
- 【论文阅读】CornerNet: Detecting Objects as Paired Keypoints
以下内容将介绍ECCV2018的一篇目标检测的文章<CornerNet: Detecting Objects as Paired Keypoints>.该文章讲述了一个老子就是不用anch ...
- CornerNet: Detecting Objects as Paired Keypoints
CornerNet是一种anchor free的目标检测方法,不需要设置anchor,而是通过检测关键点(Keypoints),即目标的左上角(Top-Left Corners)和右下角(Bottom ...
- 论文阅读笔记五十:CornerNet: Detecting Objects as Paired Keypoints(ECCV2018)
论文原址:https://arxiv.org/pdf/1808.01244.pdf github:https://github.com/princeton-vl/CornerNet 摘要 本文提出了目 ...
- 【CV论文阅读】Detecting events and key actors in multi-person videos
论文主要介绍一种多人协作的视频事件识别的方法,使用attention模型+RNN网络,最近粗浅地学习了RNN网络,它比较适合用于处理序列的存在上下文作用的数据. NCAA Basketball数据集 ...
- 论文阅读笔记五十一:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)
论文链接:https://arxiv.org/abs/1904.08189 github:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键点的 ...
- 论文阅读笔记五十三: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 摘要 相比模型的结构 ...
- 论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)
论文原址:https://arxiv.org/abs/1810.08425 github:https://github.com/KimSoybean/ScratchDet 摘要 当前较为流行的检测算法 ...
- 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)
论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...
随机推荐
- RTC实时时钟-备份区域BKP--原理讲解
RTC(Real Time Clock):实时时钟 BCD码:用4位2进制来表示10以内的十进制的形式. RTC的时钟源:LSE(32.768KHZ).HSE_RTC.LSI.经过一个精密校准(RTC ...
- Webstorm 10.0.4 配置
1. 更换为sublime text的keymaps: https://github.com/ekaragodin/idea-sublime-keymap (idea-sublime-keymap- ...
- Ajax之XMLHttpRequest
XMLHttpRequest对象 XMLHttpRequest 提供客户端同http服务器通讯的协议 一:创建 IE : http_request = new ActiveXObject(" ...
- [可行]setoolkit生成木马软件远程控制实例
查看原文 选1,social-ensineering attacks 选4,create a payload and listener 选2,Windows Reverse_TCP Meterpret ...
- C++学习--入口函数
在学习第一个C++程序的时候发现控制台程序的入口函数是int _tmain而不是main,查了资料才发现_tmain()是为了支持unicode所使用的main一个别名,宏定义在<stdafx. ...
- 关于利用word发布文章到博客
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- 说说jmap命令
jmap命令 ps -ef| grep java root 1426 1359 0 10:30 pts/0 00:00:00 grep java root 7807 1 0 Apr28 ? 00:22 ...
- MySQL的下载和安装
MySQL的下载 MySQL官网:https://www.mysql.com/ MySQL的安装 https://jingyan.baidu.com/article/6181c3e0d27a57152 ...
- [LeetCode 题解]: palindromes
Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negativ ...
- SoapUI设置Cookie
因為.NET寫的Web Service的方法是需要驗證session的. 需要先call方法Login之後才能使用其它的方法.最近剛在學用SoapUI測試soap的API,剛好可以通過Groovy S ...