论文阅读 | CenterNet:Object Detection with Keypoint Triplets
相关链接
论文地址:https://arxiv.org/abs/1904.08189
代码链接:https://github.com/Duankaiwen/CenterNet
概述
CenterNet由中科院、牛津大学和华为诺亚方舟实验室联合提出,发展了以CornerNet为代表的基于关键点的目标检测方法。其主要思想在于,利用关键点的三元组(中心点、左上角点和右下角点)来确定一个目标,有效利用了目标内部信息。为了更好地提取中心点和角点特征,作者提出了center pooling和cascade corner pooling。CenterNet在MS COCO数据集上的AP高达47%,大幅领先于其他SOTA算法。
介绍
CornerNet利用一对角点(左上角和右下角)来确定目标,算法对目标的边缘信息很敏感,同时不知道哪组角点构成目标,所以经常产生一些错误的bbox,很多错误可以通过简单的补充信息过滤掉(比如宽高比)。考虑到如果bbox与gt有很高的IoU,那么中心区域的关键点的类别与之类别相同的概率会很大,反之亦然。在推理过程中,在将候选区生成为一对角关键点之后,通过检查同一类的中心关键点是否位于其中心区域来确定是否为目标。

为了提取中心关键点和角点的特征,作者提出了center pooling和cascade corner pooling。测试时间:Hourglass-52为270ms per image,Hourglass-104为340ms per image。
CenterNet
CenterNet使用CornerNet作为baseline。
CornerNet生成两个热图:左上角的热图和右下角的热图。热图表示不同类别的关键点的位置,并为每个关键点分配一个信任评分。此外,它还预测每个角点的embedding和offsets。embedding用于识别两个角点是否来自同一个对象。offsets学习将角点从heatmap重新映射到输入图像。为了生成目标的bbox,根据置信得分选取top-k的左上角点和右下角点,利用它们的embedding向量的距离来确定角点对是否来自同一目标(如果距离小于阈值则生成bbox),产生的bbox的置信分是角点对的平均分。
对CornerNet的分析:
FD(false discovery)的定义—— FD=1-AP

解决方案:引入center information。
CenterNet的网络结构:

产生top-k的bbox方式与CornerNet相同。过滤错误bbox的步骤:(1)根据置信分选取top-k的中心关键点(2)使用对应的offsets将中心关键点重新映射到输入图像(3)定义中心区域判断中心关键点是否落在该区域内。bbox的置信分取三点的平均值。
显然,中心区域的大小对检测结果影响很大。文中提出了一种scale-aware中心区域,倾向于小的bbox产生相对较大的中心区域,而大的bbox产生相对较小的中心区域。假设bbox的左上角点坐标为(tlx,tly),右下角点坐标为(brx,bry),中心区域的定义为:

其中n为奇数(文中n的设置:bbox的尺度小于150时,n取3;否则取5)。

Center pooling:累加水平方向和垂直方向的最大值

Corner pooling:累加边缘的最大值

Cascade pooling:累加边缘方向和内部方向的最大值

corner pooling使得角点对边缘信息很敏感,所以作者提出了cascade corner pooling:首先沿边缘方向找到边缘最大值,然后沿边缘最大值的方向寻找内部最大值,最后累加最大值。
训练和测试:
Pytorch
输入图像大小:511*511
heatmap大小:128*128
优化:Adam
损失函数:

其中,pcij是类别c在位置(i, j)的score,ycij是非标准化高斯增强的ground-truth,N是图像中目标数,α和β是超参数(实验中α设为2,β 设为4)。
Offsets则是位置偏移。下采样的使用使得输出尺寸小于原始图像尺寸,假设下采样因子为n,则图像中(x, y)映射到Heatmaps的([x/n], [y/n])。取整计算会导致精度丢失,使用offsets来更准确地进行Heatmaps到输入图像的映射。

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

整体损失函数:

GPU:8个Tesla V100
batch size:48
迭代:0-450k(lr=2.5e-4),450k-480k(lr=2.5e-5)
测试:单尺度测试输入原始图像和水平翻转的图像;多尺度测试时输入原始图像和水平翻转的图像(分辨率0.6,1,1.2,1.5,1.8)。选取top 70的关键点。采用Soft-NMS。选择top-100 bbox作为最终检测结果。
实验
在COCO上的检测结果:



误检率对比:

推理速度:
同样使用NVIDIA Tesla P100 GPU,CornerNet511-104为300ms/img,而CenterNet511-104是340ms/img。CenterNet511-52为270ms/img。
Ablation study:
中心区域、center pooling和cascade corner pooling

中心关键点有多重要?作者把预测的中心关键点替换为gt的中心,AP明显提升:

记得ExtremeNet也利用了中心关键点的信息,为什么效果没这篇的好?(可能是没有加入类别信息?)
论文阅读 | CenterNet:Object Detection with Keypoint Triplets的更多相关文章
- 读论文系列:Object Detection CVPR2016 YOLO
CVPR2016: You Only Look Once:Unified, Real-Time Object Detection 转载请注明作者:梦里茶 YOLO,You Only Look Once ...
- [论文阅读] Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)
相关论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 概论 用于人脸检测和对 ...
- 读论文系列:Object Detection NIPS2015 Faster RCNN
转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...
- 读论文系列:Object Detection ICCV2015 Fast RCNN
Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍:训练速度是SPP-net的3倍,测试速度是SPP-net的3倍 ...
- 读论文系列:Object Detection SPP-net
本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivat ...
- 读论文系列:Object Detection ECCV2016 SSD
转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...
- 论文阅读笔记五十一:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)
论文链接:https://arxiv.org/abs/1904.08189 github:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键点的 ...
- 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection
论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...
- 目标检测(一)RCNN--Rich feature hierarchies for accurate object detection and semantic segmentation(v5)
作者:Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik 该论文提出了一种简单且可扩展的检测算法,在VOC2012数据集上取得的mAP比当 ...
随机推荐
- JSON Web Token(JWT)学习笔记
1.JWT 的Token 标准的Token由三个部分并以.(点号)连接方式组成,即 header.payload.signature,如下 eyJhbGciOiJIUzI1NiIsInR5cCI6Ik ...
- java重载方法的二义性
http://blog.csdn.net/lavor_zl/article/details/40746813
- 4619 Warm up 2
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ][]; ...
- 哈代平衡 &连锁不平衡
哈代-温伯格平衡定律(Hardy-Weinberg equilibrium),即HW平衡,是指对于一个大且随机交配的种群,基因频率和基因型频率在没有迁移.突变和选择的条件下会保持不变. 它是建立在一个 ...
- pagespeed模块安装——Nginx、Tengine
1.安装好nginx或者tengine 2.下载pagespeed模块并且解压 sudo mkdir -p /usr/local/tengine/modules wget https://github ...
- python report中文显示乱码
环境:python2.7 测试框架: nose (1.3.7) nose-html-reporting (0.2.3) 问题:生成测试报告失败的时候,报告会抓取代码中的print,打开后看到的中文是乱 ...
- ceph中查看一个rbd的image的真实存储位置
1.新建一个image存储 rbd create hzb-mysql --size 2048 2.查看hzb-mysql的所有对象 一个rbd image实际上包含了多个对象(默认情况下是image_ ...
- Linux内核版本
在Linux中找到/usr/src/kernels/目录,该目录下面有一个系统内核文件 例如:2.6.32-431.11.2.el6.x86_64 Linux内核版本规则 Linux内核版本有三组数字 ...
- 系统蓝屏stop:ox000007B错误解决方案
解决方法:开机进入bios:BIOS->Advanced->SATA Mode:[AHCI改为ATA或Compatibility],然后F10保存退出. ATA是指硬盘使用IDE兼容模式, ...
- Centos操作系统配置VIP以及网络
打开虚拟机的网络配置文件 vi /etc/sysconfig/network-script/ifc*** (具体文件根据情况自行填写) 编辑这个文件添加入如下配置 IPADDR=ip地址 (添加VIP ...