Faster RCNN算法缺陷
1、暂时无法做到实时,后续的YOLO、SSD等one stage方法确实是更快 + 实时;
2、没有采用类似SSD、FPN中的结合高低层feature map特征的方式,对小尺度目标的检测性能一般,bbox loc精度也一般(高IoU阈值下,mAP就下来了);
HyperNet算法
图1 HyperNet整体结构图
HyperNet主要解决的问题
1、深层次卷积:召回率较高,但是定位精度比较差;
2、低层次卷积:更好的定位精度,但是召回率低;
3、HyperNet:结合两者优点,提出了跳层特征提取(Hyper Feature Production)。
1、算法具体步骤
- 1、预训练一个深度CNN模型用于特征提取;
- 2、训练HyperNet提取候选区域;
- 3、用2得到的候选区域为目标检测框训练HyperNet;
- 4、微调HyperNet,共享3得到的Hyper特征层,用于产生候选区域;
- 5、用4得到的候选区域微调HyperNet,同时固定共享的Hyper特征层,用于目标检测;
- 6、输出4和5联合训练的HyperNet作为最终的模型;
2、Hyper Feature Production
图2 跳层特征提取结构图
首先使用基础卷积神经网络(Alexnet,VGG)提取特征;
- 在最底层卷积层(conv1)后面加上 max pooling 层,实现降采样;
- 在最高层卷积层(conv5)后面加上 反卷积 deconv 层,实现上采样;
- 中间层(conv3)不做处理;
在上一步操作之后每一个level后面都再加一系列卷积层(绿框中的黄色矩形):进一步提取语义特征、将不同分辨率的feature map压缩到相同的分辨率。
卷积后每个feature map加局部响应归一化LRN,之后输出Hyper Feture maps。这里的Hyper Feture maps的大小不是13×13×126的,图上写的那个13×13是经过ROI的大小(红色框框)。
假设使用VGG做特征提取,输入图片为1000×600。那么Conv1、Conv2、Conv3、Conv4、Conv5层的feature map 输出(不含池化层)分别为 1000×600,500×300,250×150,125×75,62.5×37.5。
最后的feature map会是62×37, 这样会造成信息损失。因此做出了如下的设计:
- 把最后的Conv5层的feature map通过反卷积上采样到250×150,然后再经过一系列卷积;
- 把第一层Conv1的feature map做一个max pooling 降采样,然后再经过一系列卷积;
- 中间层,不做变化,直接经过一系列卷积;
- 然后把1,3,5层的feature map进行 LRN之后连在一起。LRN是必要的,因为不同层的feature resolution不同,如果不做正则,norm大的feature会压制住norm小的feature。
3、Region Proposal Generation
图3 候选区域框生成结构图
如上图,对于Hyper Feture maps使用ROI pooling。ROI pooling的大小是13×13的,因此最后输出的特征是ROI feature是13×13×126的。
ROI pooling之后使用了3×3的4个卷积核。输出的是13×13×4的feature map,图上那个空白的矩形就是。之后再经过一个256维的全连接层;再之后并行经过两个全连接层,输出结果分别用于分类和回归(定位)。
这个阶段每张图片生成30k个不同尺寸的候选框。然后通过NMS,减少到1k个,然后再取top-100或top-200个。
与Faster RCNN的不同之处:
Faster R-CNN的ROI Pooling是在RPN生成region proposals之后作用在生成的region上的。
图4 Faster RCNN中RoI Pooling位置图
而HyperNet中在生成region proposals时就使用了ROI Pooling;
图5 HyperNet中RoI Pooling位置图
4、检测
与Faster R-CNN不同之处在于:
- 在两个全连接层之前使用了一个3×3卷积层,降低了输入通道(从126到63)。后面是三个全连接层。
- 全连接层之间的dropout层的概率使用的是0.25,不是0.5。
5、加速
图6 HyperNet中Speed Up模块结构图
如上图,上边的图中两个空白矩形框,第1个是ROI Pooling的输出,第2个是3×3卷积的输出。下边的图中,3×3卷积的输出用了一个立方体,后面那个白色矩形框是ROI Pooling的输出。
在生成region proposals时,将卷积层放在ROI Pooling层之后,可以实现加速:
- 先卷积降低了通道数量(由126降到4);
- 大量 proposal 的conv操作移至前方,实现计算共享;
- ROI Pooling 后面分类器的结构变成了全连接层,简化结构,之前是 卷积层+全连接层。
使用这些策略后获得了40倍的加速。
优点:
1、提出层次化特征融合的目标检测网络HyperNet,能同时处理好proposals的生成,及目标的检测;**
2、Hyper Features融合了高层、高语义信息特征 + 中层、足够互补性特征 + 浅层、高分辨率细节性特征,使得HyperNet在proposals生成 + 目标检测上不仅性能好,更能做到end2end training;