2016 cvpr HyperNet论文原理理解

本文是2016年cvpr的一篇spotlight,。文章:
chromeextension://ibllepbpahcoppkjjllbabhnigcbffpi/https://arxiv.org/pdf/1604.00600.pdf

贡献:
1)在仅仅 50 proposal情况下,可达到 recall 95%,在100 proposal情况下,达到 recall 97%,远远高于其他算法
(2)在PASCAL VOC 2007和2012中, mAP分别达到76.3%和71.4%,比 Fast R-CNN提高 0.6 和 0.3
(3)速度可以达到实时,用深的CNN模型时可以达到 5 fps

引言:
HyperNet是2016年清华提出的优秀的Faster-RCNN变种。HyperNet主要改进在于集合了多层的特征图,得到多尺度的超特征(Hyper Feature),相比与Faster-RCNN,HyperNet更擅长处理小物体,在高IOU时更有优势,mAP提高3.1%。但多尺度也必然降低速度。其快速模型HyperNet-SP速度与Faster-RCNN相同,VOC上mAP仅提高1.6%。但注意到其应用的跳层特征(skip layer feature)在处理小物体检测中已经在ION等多次被用到,成为了一种常用的有效手段。
检测框架:
faster
在这里插入图片描述
HyperNet
在这里插入图片描述
分为 三个主要特征 来介绍(对应上面网络拓扑图的 三个红色框):
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
RCNN之后的framework在做小物体检测时有一个通病,就是物体的的信息会损失的非常厉害,比如原来3232的物体,到最后一层feature map 只剩下了22,所以本文为了处理这个问题提出了两种方法,第一种,放大feature map,第二种,skip layer。按照标配输入1000600的图最后的map size 会是6237, 这样的话信息损失非常严重,所以作者想办法把最后的map放大到250*150,把第一层的map做一个max pooling, 把最后一层的map做一个deconv,然后把1,3,5层的map LRN之后连在一起。LRN是必要的,因为不同层的feature resolution 不同,如果不做正则norm大的feature会压制住norm小的feature。

在产生hyper feature map之前,这些resize过的map会各自通过一层卷积,一方面缩小维度,另一方面增强语义。我比较疑惑地是为什么不直接用第二层的map,因为第一层pooling再加个卷积产生的map除开维度其实和第二层很像,有网友知道可以指点一下。此外,那个第五层的deconv我认为有很重要的意义。

另提一笔,skip layer feature在处理小物体检测中可以说已经多次被用到,从ION,deepproposal再到这篇文章,估计以后会是一种常规手段。

在这里插入图片描述
这一部分我感觉作者讲的不怎么清楚,其中提到了另外一篇论文:《Object detection networks on convolutional feature maps》。此文我没有仔细读过,但是感觉和proposal产生关系不大,具体等读完了来更新。作者讲了RPN的另外一个坏处,就是RPN在产生proposal的时候,一个sliding window产生9个尺度大小不同的anchor作为proposal的基准,作者argue,尺度大小不同的proposal用同样的input去产生会有问题,所以用了这个方法。

具体给我的感觉。。。作者在产生的hyper feature map上随机产生了不同大小和尺度的proposal,然后每一个都feed到ROI pooling里面去,然后对这每一个proposal做一个判断是不是proposal,其中使用了一个卷积作为降维和防止overfit。

这一步给我的感觉是整篇文章最大的瓶颈,因为70%的时间就在这一步。加速的方法是把卷积层放到了ROI Pooling前面,但是performance会下降,这一点我想不大通为什么会下降。

目标检测
实现目标检测最简单的方法就是用FC-Dropout-FC-Dropout这样的层次设计。在此基础上,我们做了两个改动。

在FC前添加了一个3x3x63的卷积层增强分类。这样做也可以降低特征的维度,有利于下面的计算。

dropout ratio由0.5改为0.25。发现这样更高效。

对于提取候选区域模型,检测网络也有两个输出。不同之处是对每个候选框产生了N+1个分数和4xN个框的调整值。(这里的N是物体类别的个数,+1是背景)之后又用NMS来减少重叠。这个操作只会过滤少量框,因为大部分框都在提取候选区域步骤中被过滤掉了。
在这里插入图片描述
70%时间主要在RPG,加速方法提前334卷积。降低维数(126->4),再进行ROIPooling。同时对每个建议框运算更加简洁,从CONV->FC到直接FC
代价就是降低了2%MAP,提高了40%的速度

实验结果:
在这里插入图片描述

小结

整个framework的训练和faster rcnn的第一个not end to end training的version非常像,都是先训练proposal generation这一块,然后再训练后面的detection,然后conv sharing 再train一遍。

本文的优点非常明显,proposal的质量非常高,top 100 proposal就达到了97%的recall(IOU 0.5),在IOU 0.7的情况下同样非常强,这应该得益于hyper feature map的原因。但是缺点是速度大于了1秒,当用加速版本,速度可以和faster rcnn基本持平。我认为在proposal generation这一步可以有一些思考的地方。

详细的翻译实验部分见:
https://zhuanlan.zhihu.com/p/53033236

书籍参考:
在这里插入图片描述

在这里插入图片描述
补充:

猜你喜欢

转载自blog.csdn.net/zqx951102/article/details/121374106