目标检测:CornerNet: Detecting Objects as Paired Keypoints论文解读

6 篇文章 0 订阅
3 篇文章 0 订阅

CornerNet: Detecting Objects as Paired Keypoints

 

在深度学习领域的目标检测算法中,现在主要分为One-stage(如:SSD, YOLOYOLO后期还出了更多的精确度和速度极高的版本)Two-stage(如经典的RCNN系列)两种。

 

one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLOSSDRetina-Net

         Region Proposal(候选区域),就是预先找出图中目标可能出现的位置

 

One-stage是直接在输入的图片上经过各种卷积池化类的计算,从其意思也可以理解,就是一个阶段,一般为end-to-end框架,经过复杂的计算后,最终生成detections。但是,Two-stage则与其与众不同,其主要是先去提取候选区域, 再基于提取的候选区域进行第二次修正。 One-stage的网络框架速度快, 但是最终的检测精度会较低点,而Two-stage精度高, 但由于框架复杂度提高,检测速度会随之变慢,最终的选择取决使用的实际应用。

 

 

CornerNet认为Two-stage目标检测最明显的缺点是区域候选阶段需要提取的anchor boxes

  1. 提取的anchor boxes数量较多,比如DSSD使用40kRetinaNet使用100kanchor boxes众多造成anchor boxes征服样本均衡;
  2. Anchor boxes需要调整很多超参数,比如anchor boxes数量、尺寸、比率,影响模型的训练和推断速率。

 

 

 

本次提出的One-stage的检测方法,舍弃传统的 anchor boxes思路,提出CornerNet模型预测目标边界框的左上角和右下角一对顶点,即,使用单一卷积模型生成热点图和连接矢量:所有目标的左上角和所有目标的右下角热点图,每个顶点的连接矢量(embedding vector)

Anchor检测的缺点:

1、需要大量的anchor来覆盖检测物体,其中DSSD需要40Kanchor,RetinaNet需要100Kanchor。这样大量的anchor中只有一小部分会与GT覆盖成为正样本,其余大部分未与GT覆盖的就会成为负样本,使得训练中正负样本失衡。并且产生大量的计算消耗。

2、需要对anchor设置大量的长宽比和尺度。增加了设计的复杂性。设置还需要引入一些先验知识。

 

 

整体框架

 

https://i-blog.csdnimg.cn/blog_migrate/48bd8562164d42ea4b07ca8a5897c11e.jpeg

图1 CornerNet

主要思路其实来源于一篇多人姿态估计的论文。

       输入图像为511*511。输出特征为128*128。

基于CNN的2D多人姿态估计方法,通常有2个思路(Bottom-Up Approaches和Top-Down Approaches):

Top-Down framework:就是先进行行人检测,得到边界框,然后在每一个边界框中检测人体关键点,连接成每个人的姿态,缺点是受人体检测框影响较大,代表算法有RMPE;

Bottom-Up framework:就是先对整个图片进行每个人体关键点部件的检测,再将检测到的人体部位拼接成每个人的姿态,代表方法就是openpose。

 

https://i-blog.csdnimg.cn/blog_migrate/669f1fafcb279f8a6e7e9f00bee953f8.png

CornerNet 的检测模块如上图所示。上图只表示了top-left部分的结构,bottom-right也有类似的结构。经过backbone之后,首先经过corner pooling操作,输出pooling后的特征图,然后再和backbone的特征图做融合。相当于resnet中的shortcut结构在这里使用corner pooling(可以比传统的pooling获得更大的感受野)替换。最终分为3个分支,分别输出heatmap,Embedding,offsets。

 

由于coco有80个类别,分类不带背景类别,所以网络最终输出的heatmap为128*128*80*2,分为top-left和bottom-right两个。

 

网络输出的嵌入向量Embedding为128*128*80*2,同样分为top-left和bottom-right两个。

 

网络偏移offsets为128*128*2,所有类别共用一个偏移量,分为x,y两个偏移值。

 

传统的检测框架的heatmap值作为了边框的分数,边框的位置是通过(x,y,width,height)确定的。而CornerNet 的heatmap既做了边框的分数,还做了边框的位置。由于网络不断下采样会造成最终的坐标和原始图像的有偏移,这里采用了回归的offsets解决。至于左上角的点和右下角的点的配对,使用Embedding来解决。

 

在网络模块输出完毕后,首先在top-left和bottom-right的heatmap中分别取100个分数最高的框。也就是100个左上角顶点,100个右下角顶点。两两组合一共可以产生10000个坐标框。然后两两配对的顶点中,如果类别不是同一类就会被剔除。如果bottom-right点的坐标高于top-left点的坐标,也就是说右下角的顶点在左上角的顶点的左上方时也会被剔除。再在剩下的配对坐标中计算两两相似度。相似度高于0.5的,也就是说不是一组组合,也会被剔除。最终将留下的配对点做NMS操作。输出最终的结果框。

 

本次的第一个创新是讲目标检测上升到方法论,基于多人姿态估计的Bottom-Up思想,首先同时预测定位框的顶点对(左上角和右下角)热点图和embedding vector,根据embedding vector对顶点进行分组。

第二个创新是提出了corner pooling用于定位顶点。自然界的大部分目标是没有边界框也不会有矩形的顶点,依top-left corner pooling 为例,对每个channel,分别提取特征图的水平和垂直方向的最大值,然后求和。

https://i-blog.csdnimg.cn/blog_migrate/c340e3d9dc649a156341a52a1ea48c2c.jpeg

图2 corner poling 计算方式

论文提出的corner pooling :

目标定位框的中心难以确定,和边界框的4条边相关,但是每个顶点只与边界框的两条边相关,所以corner 更容易提取;

顶点更有效提供离散的边界空间,实用O(wh)顶点可以表示O(w2h2) anchor boxes。

 

Paper的第三个创新是模型基于hourglass架构,使用focal loss的变体训练神经网络。

 

https://i-blog.csdnimg.cn/blog_migrate/9b02077b2aececf676b8b09bd7c2148d.jpeg

图3 CornerNet 模型架构 1

 

如图 3所示,CornerNet模型架构包含三部分,Hourglass Network,Bottom-right corners&Top-left Corners Heatmaps和Prediction Module。首先使用hourglass作为backbone,之后分成两个分支,一个预测左上角点(C个类别有C个channel),一个预测右下角点。每个分支里面先做corner pooling,之后再分三个分支分别预测heatmap,embedding map和一个offset。

 

 

为了方便计算bbox角点,文章提出corner pooling计算。以左上角点分支计算为例,corner pooling分为2个channel,第一个channel每个像素取该行右侧像素的最大值,第二个channel每个像素取该列下方像素的最大值。右下角点分支的corner pooling也类似,只是改成了左侧和上方。之后将两个channel逐像素求和,要求得到的最大值位置为角点位置。(个人想法,corner pooling的前置条件是能够学得instance上下左右四个极点,之后才能够利用corner pooling求得角点)

 

 在计算heatmap的时候,文章希望当预测坐标在gt坐标的一个与instance尺寸相关的半径范围内时能够减少penalty,这个半径选取的条件是在这个范围内与gt的IoU大于0.7,然后gt的高斯分布的方差取半径1/3,利用改进的focal loss计算检测误差LdetLdet。

 

由于在计算heatmap的过程中会存在下采样过程,因此当坐标重新映射回原图尺寸时需要一个微量offset(记作oo)来保障回归的精确:

 

CornerNet 的基础网络结构采用hourglass类型的网络模块,连续堆叠了2个这样的模块。hourglass结构可以很好的结合局部特征和全局特征。在hourglass模块中没有使用pooling操作,而是使用stride=2的卷积实现下采样,这也可以获得更快的速度。最终feature map被缩小5倍。其中卷积层的通道数分别为(256; 384; 384; 384; 512)。hourglass结构的网络深度为104层。

 

Hourglass Network是人体姿态估计的典型架构,论文堆叠两个Hourglass Network生成Top-left和Bottom-right corners,每一个corners都包括corners Pooling,以及对应的Heatmaps, Embeddings vector和offsets。embedding vector使相同目标的两个顶点(左上角和右下角)距离最短, offsets用于调整生成更加紧密的边界定位框。

 

 

Detecting Corners   

Paper模型生成的heatmaps包含C channels(C是目标的类别,没有background channel),每个channel是二进制掩膜,表示相应类别的顶点位置。

 

对于每个顶点,只有一个ground-truth,其他位置都是负样本。在训练过程,模型减少负样本,在每个ground-truth顶点设定半径r区域内都是正样本,这是因为落在半径r区域内的顶点依然可以生成有效的边界定位框,论文中设置IoU=0.7。

 

pcij表示类别为c,坐标是(i,j)的预测热点图,ycij表示相应位置的ground-truth,论文提出变体Focal loss表示检测目标的损失函数:

https://i-blog.csdnimg.cn/blog_migrate/ee22871dc420e4b6127482cec0b6d948.jpeg

该损失为基于focal loss修改的分段损失函数。

 

C:通道数

H:高度

W:宽度

N:物体的个数

α,β :超参数,α=2,β=4

Pcij:通道c在(i,j)位置的预测的分数

Ycij:通道c在(i,j)位置的真实label,该label经过非归一化的高斯函数处理过

 

由于下采样,模型生成的热点图相比输入图像分辨率低。论文提出偏移的损失函数,用于微调corner和ground-truth偏移。

https://i-blog.csdnimg.cn/blog_migrate/8f70f63e0c0696d14458fd703938d346.jpeg

Grouping Corners

输入图像会有多个目标,相应生成多个目标的左上角和右下角顶点。对顶点进行分组,论文引入Associative Embedding的思想,模型在训练阶段为每个corner预测相应的embedding vector,通过embedding vector使同一目标的顶点对距离最短,既模型可以通过embedding vector为每个顶点分组。

 

模型训练Lpull损失函数使同一目标的顶点进行分组, Lpush损失函数用于分离不同目标的顶点。

https://i-blog.csdnimg.cn/blog_migrate/4928dbb5cdeff8b19ca4d63eac23fef0.jpeg

N:物体的个数

etk:top-left的物体k的分数

ebk:bottom-right的物体k的分数

ek:etk和ebk的平均

∆ :margin,这里取1

Hourglass Network

Hourglass Network同时包含了bottom-upfrom high resolutions to low resolutions)top-down (from low resolutions to high resolutions)。而且,整个网络有多个bottom-uptop-down过程。这样设计的目的是在各个尺度下抓取信息。针对目标检测任务,论文调整了Hourglass一些策略。

 

 

实验

论文的训练损失函数包含了第三部分介绍的4个损失函数,α, β γ用于调整相应损失函数的权重:

https://i-blog.csdnimg.cn/blog_migrate/5cef064b43ab5f69000bae6310d24e82.jpeg

模型训练过程中使用10Titan X (PASCAL) GPUs,详细的训练参数可参考原论文。模型的推断时间是244ms/ image (Titan XPASCAL GPU)

CornerNet相比其它one-stage目标检测算法,MS COCO数据集测试AP有明显提高,虽然性能接近于Two-stage检测算法,但是推断时间无明显优势。

https://i-blog.csdnimg.cn/blog_migrate/493afba85e0502a39f410927f79e34f7.jpeg

Table 4MS COCO test-dev数据集性能对比

结论

CornerNet创新来自于多人姿态估计的Bottom-Up思路,预测cornerheatmps,根据Embeddings vectorcorner进行分组,其主干网络也来自于姿态估计的Hourglass Network

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值