2018年的目标检测论文继续阅读(主要是这篇CornerNet)

一、IOU-Net
1,极大值抑制移除重复的候选框,候选框移除的依据是分类的得分,对于一些得分低的候选框有可能会距离groundtruth更近一点,这样就会导致最终指标的下降。作者提出了根据回归的分来判断最后的指标
2,提出optimization-based bbox refinement替换传统的regression-based方法,提高了回归部分的可解释性。
3.提出了Precise ROI Pooling(PrROI Pooling),通过积分方式计算ROI特征使得前向计算的误差进一步降低,同时反向传播时基于连续输入值计算梯度使得反向传播连续可导,相比之前的方法会带来一些噪声。
二,DetNet
目标检测算法,主要就是对目标检测特征提取网络做优化,目标检测网络就是采用一般的分类模型来提取特征,预训练的模型就是在ImageNet数据集上进行预训练的,因为分类任务和检测任务还会有一些差距的,分类数据得到的分类模型可以提取特征用来检测任务并不一定适合,检测任务比较关注目标的尺度特征,但是分类任务就会不一样了
检测任务不仅仅做目标的分类,还要做目标的定位,比如分类任务中的降采样可能对于分类有效,因为增大了感受野,但是对于定位目标的检测任务就不一定有利,因为这样会丢失目标的位置信息
detnet涉及一种用于目标检测的特征提取网络
主要的做法就是
1增加高层的特征的分辨率,换句话说就是对于高层不做特征图的尺寸缩减
2,引入了dilate卷积层来增加网络高层的感受野,因为前面那一步使得感受减小
3减小网络高层的宽度,减少因为分辨率带来的计算量。
网络设计:
在目标检测中,保持高分辨率就会导致时间可空间的消耗,另外一个方面就是较少下采样就会减少接受域,因为感受野可以通过下采样来增大。
在这里插入图片描述
三、RFB Net
借鉴了inception的的思想,在inception的基础上加了dilated卷积层 ,有效的增大了感受野,整体上是基于SSD的改进,所以检测速度还是比较快的。

四、CornerNet: Detecting Objects as Paired Keypoints

这篇文章提出了一种新的目标价测的方法,利用关键点进行目标检测,消除了使用锚盒机制在但阶段检测器中的需求。另外作者引入了corner pooling,这种新的池化层可以更好的仅从定位corner。

但阶段的检测器比栓阶段的跟高,但是anchor box 很稠密,产生检测框的得分,然后根据这个得分回归修正检测结果。但是但阶段的检测器又两个不好的缺点。需要一套anchor box.这个还得覆盖著groud truth,但是结果往往是只有一小部分的box覆盖了groundtruth。
第二个缺点就是:这种机制需要很多的超参
数,和设计。这些包括有多少的box,size。aspect tatios。这些都是启发式进行选择的。就会使得很复杂。通过一个单一的网络组合多种结构。在一个多维的分辨率上进行分别预测,每个scale都有不同的feature和一套anchor boxes。
本篇文章使用了一种新的目标检测算法,消除了anchor box机制,使用卷及网络去预测相同类别的所有实例的右上角,左下角的热力图和每个检测角的嵌入向量。embedding用来组合属于同一目标的一对角,网络用来预测相似的embeding,,这种方法大大简化了网络的输出,并且消除了使用anchor box的需要。

第二个创新的地方就是使用了Corner pooling 一种卷积网络新的池化层,可以更好帮助目标进行定位一般bounding box 的角都是在目标的外面,这样就导致不能使用局部的信息进行目标的定位,相反,为了决定在一个像素上是否有一个角,我们需要水平的看物体的上面的最右边,和底面最左边的。于是这个就启发我们进行角池化,使用了两个feature map(at each pixel location it max-pools all feature vectors to the right
from the first feature map, max-pools all feature vectors directly below from the
second feature map, and then adds the two pooled results together. ) 在每一个像素点都进行将第一张featuremap的所有的右边的向量max-pooling ,将第二章特征图的下面的进行max-pooling,然后将所有的结果进行合并、
在这里插入图片描述
作者假设分析了为甚么这么边角检测的比 anchor box要好,因为这种就直接的,之前是四个角,现在这个就是两个。编码的关于一些角的定义是一些显示的的先验知识,第二就是,使用了一种有效的方式密集离散盒子的空间。我们验证了此网络在coco上的有效性,AP得到了42.1,另外,通过消融研究我们提出了这个Corner对于网络的最后性能发挥了至关重要的作用。
和cenet进行对比

首先,denet是two-stage的检测器,没有使用anchor box的,判定这个角不属于box的任何一个角的可能性,通过列举每个角组合的可能性,产生ROI。。是一种三阶段的检测器,然后去组合这些角,另外,denet是手动的选择特征,这个网络不需要任何的特征选择的步骤。第三,使用了一种Corner pooling,我们的方法是收人体姿态估计的启发,将目标检测的任务变成了检测和组合角点同时进行的任务。我们的Corner可以更好的定位Corner,我们可以更好的修改结构,并且改进损失函数。

下面就正式的介绍我们的网络

使用了hourglass network。这个网络有两个module,一个是左上角,一个是右下角,在预测热力图前,每个module都是有自己的Corner pooling层去垂花来自己hourglass的特征,我们不再需要从不同size的检测物体中提取不同尺度了,而是直接利用从hourglass网络的输出。

  • Corner detect

每个检测角,只有一个是正例,其余都是反例,在训练的过程中,不是平等的处罚每一个反例,而是在正例的半径里面减少惩罚。因为一对错误的角检测,如果和自己的各自的真实值相差不是很多的话,他们依旧可以产生一个可以覆盖真实值的box。之前的图像进行降采样的时候,往往就会导致图像比原来的图像变小了,可能会丢失一些精度,对于一些小的图像的边界和ground-truth之间的IOU,为了解决这个问题,就采用了slight adjust the Corner locations。预测位置偏移,稍微调整角位置,然后在将他们重新映射到输入分辨率。在groudtruth的角点利用平滑的了L1 损失,
在这里插入图片描述

  • grouping Corner

引入了一个嵌入向量同属于一个目标的检测框的嵌入距离应该是很小的,我们根据这个嵌入距离进行分组,引入了pull损失来训练网络对角点进行分组,引入push来分离角点。

  • Corner Pooling

选择沙漏网络,这种网络的优势就是首先使用一系列的下采样层和最大池化层对于输入特征进行上采样,然后使用上采样回到原来的分辨率,这个过成可能会丢失一些细节的特征,添加了跳层将细节信息带回上采样的特种。这样捕获了全局和局部特征,当多个沙漏模块堆积在网络中的时候,沙漏可以重新处理特征以获取更高级的特种。
本文的沙漏网络由两个沙漏组成,不使用最大池化层,使用步长2 来降低特征分辨率,减少5倍的特征分辨率,并增加特征通道的数量。
在训练的时候还增加了中间监督,
就是在在这里插入图片描述
计算两个通道:
行channel 1 :每一行每个点都取该点右侧的像素的最大值,
列channel2:每一列的每个点都取该点的下方的像素的最大值
将两个通道得到的像素值进行相加。
另外对于bottom-right的Corner pooling的计算方式也是这样的。
这个Corner pooling是用来在预测模块对于heatmap,embedings和offset进行预测。
网络结构是这样的
在这里插入图片描述
其中relu那一层是用来产生heatmap,embeding和offset的

  • hourglass network

用自己的话说一下这个网络的特点
首先下采样图像得到一组特征,然后再上采样回到原来的图像的大小,这样不可避免的导致了一些信息的而丢失,所以加一个跳层去弥补,这样就兼顾了全局和局部信息,并且多个hourglass网络组合在一起,就会捕捉到高层次的信息。
本文作者使用了两个hourglass。并且作者对于hourglass做了一些修改。不在使用最大池化,使用步长2来降低特征分辨率,减少了5倍的分辨率。增加了特征通道的数量,上采样的时候,用来两个残差模块,然后是一个最近的相邻上采样,每个跳层连接还包括两个残差模块,沙漏模块中间有4个512的通道的残差模块,在沙漏模块之前,使用了128个7*7 的卷积模块,步长2 ,4倍减少图像的分辨率,后跟一个256个通道,步长位2 的残差。
我们还在训练时增加了中间监督。但是,我们没有向网络中添加反向中间预测,因为我们发现这会损害网络的性能。我们在第一个沙漏模块的输入和输出,应用了一个3×3的Conv-BN模块。然后,我们通过元素级的加法合并它们,后跟一个ReLU和一个具有256个通道的残差块,然后将其用作第二个沙漏模块的输入。沙漏网络的深度为104。与许多其他最先进的检测器不同,我们只使用整个网络最后一层的特征来进行预测。

  • 实验

pytorch
不带有其他数据集的预训练模块,使用了focal loss,输入是511511,输出是128128,为了减少过拟合,不在采用标准的数据增强的技巧,采用了PCA
损失函数如下:
在这里插入图片描述
测试细节:
使用非极大值抑制在Corner heatmap上,在 heatmap上挑选出前top-left和bottom-right100的Corner。根据offset调整这些Corner location,计算embeding就是左上角和右下角的嵌入距离,将低于0.5的进行匹配,然后将属于不同类的两个点去掉,,采用了原始图像的分辨率没有记性降维,Origami和flipped image都用来testing,组合这两种检测,使用soft-nms减少冗余,只用前100的才会被reported。
数据集
采用了MS-COCO,次数据集包括80k的图片,和40k的验证集和20k的测试集,所有的图像都用来训练,35k用来验证。
做了对比实验,证明加上了Corner pooling 可以提高AP 2.0%,对于那些中等或者大目标提高更多,那是因为大物体的topmost,leftmost,rightmost,的边界可能比Corner location距离远。
作者对于negative locations减少了惩罚,使用了一个半径2.5。这样可以提高准确率。
使用ground-truth Corner heatmap可以提高AP43.1,如果使用ground-truth offset,AP可以在提高13.1,尽管有很大的空间可以提高检测的精度,,grouping Corner,main bottleneck。
在这里插入图片描述
参考文献
1 ECCV2018 | 论文阅读CornerNet: Detecting Objects as Paired Keypoints - 小仙女的大大大天地~ - CSDN博客 https://blog.csdn.net/weixin_40414267/article/details/82379793
2 极简笔记 CornerNet: Detecting Objects as Paired Keypoints - Hibercraft的博客 - CSDN博客 https://blog.csdn.net/Hibercraft/article/details/81637451

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值