论文阅读 | 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比当 ...
随机推荐
- mybatis :xml文件中传入参数和if标签结合使用时要点
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflecti ...
- LoadRunner出现error问题及解决方法总结
一.Step download timeout (120 seconds) 这是一个经常会遇到的问题,解决得办法走以下步骤:1. 修改run time setting中的请求超时时间,增加到600 ...
- 我的ubuntu14.04配置
完全卸载java(移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ)) 转载修改, 原文见:http://blog.csdn.net/s ...
- ORB_SLAM2_Android
链接:https://github.com/FangGet/ORB_SLAM2_Android README.md 说明文件 This Project is out of date 该工程过时了 Th ...
- 使用ffmpeg+crtmpserver搭建文件的伪直播
Tutorial: How to "live stream" a media file 如何"直播"一个媒体文件 I have tried a while to ...
- ModelMap
首先介绍ModelMap[Model]和ModelAndView的作用 Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类. ModelMapModelMa ...
- laravel中的验证及利用uploadify上传图片
$rules = [ 'password'=>'required|between:6,20|confirmed', ]; $message = [ 'password.required'=> ...
- .net 程序集的加载与反射
一. 程序集的加载: 在CLR内部使用System.Reflection.Assembly类的静态LoadFrom方法尝试加载程序集. LoadFrom方法在内部调用Assembly的Load方法,将 ...
- 第一个.NET Core应用,创建.NET Core命令
打开cmd,依次输入mkdir .project(创建目录),cd .\.project(进入目录),dotnet new(新建初始项目),dotnet restore(还原依赖),dotnet ru ...
- C#设置图片透明度
逐个像素进行Alpha值的设置,网上其他的代码不能处理有透明背景的图片,因此要对Alpha.R.G.B均为0的透明色进行特殊处理,不做转换. private Bitmap SetImageOpacit ...