依然要感激如此美丽的封面图片。 在“
基于深度学习的图像目标检测(上)
”里面, 我们详细介绍了
R-CNN走到端到端模型的Faster R-CNN的进化流程
。 这里, 我们介绍, 后续如何变得更快、更强!
前言
天下武功唯快不破!
所以在如何让检测更快? 主要
有两种思路
:
1. 把好的方法改进的更快!
前面我们提到了从R-CNN到Faster R-CNN主要的技术思想就是避免特征计算浪费。 所以要把ConvNet特征计算前移,只做一次计算。 而把区域操作后移。 我们也提到
Faster R-CNN在RoI之后还有部分ConvNet的计算
。 有没有可能把ROI之上的计算进一步前移?
R-FCN(Region-based Fully Convolutional Networks) 基于这个思路
,做到了,所以更快, 某种意义上,是Fatest R-CNN。
R-FCN
2. 把快的方法,改进的更好!
前面我们谈到overfeat的效果一般, 但是overfeat基于滑动窗口和回归思想的速度很快。 从效果上来说, overfeat 的效果一般, 对于重叠情况很多不能识别的情况。 如何将基于回归的思想,做到逼近区域推荐的效果?YOLO把
分而治之和IoU的思想集成
进来了。 而
SSD把多尺度Anchor Box的思想
集成进来了。
除了快还有什么?当然是做优
做强
Faster R-NN有三大主要部件,
RPN 做区域推荐, RoI Pooling类似特征Pyramid,改善极大极小重叠, 分类和Box回归的Log 加 Smoothed L1 损失
, 针对定位修正。 如何要做优做强?
能否比RPN做的更优?
前面我们提到RPN能够达到Selective Search的效果, 那么假如还要更好, 怎么能够做到?AttractioNet利用了
NMS(non-maxima suppression)效果
。 AttentionNet利用了
弱
注意力集中的机制
。
能否比RoI Pooling做的更优?
前面我们提到RoI Pooling能够做到和HoG Pyramid和DPM空间限制类似的SPM的效果, 那么加入还要更好, 怎么能够做到? ION(Inside-Outside Net)提出了
四方向上下文的思想
, FPN提出了
特征Pyramid网络
。
能否比RoI Pooling做的更强?
前面我们提到RoI Pooling是建立在RoI基础上的, 对应的区域推荐, 如何进一步对齐到像素点? Mask R-CNN提出了
RoI Align的思想
。 在误差计算中,除了分类, Box回归基础上再加入
像素点Mask Branch距离
的思想。
那么, 什么是FCN(Fully Convolutional Networks), IoU, NMS, Weak Attention Narrowing, ION, FPN, RoI Align 和 Mask Branch思想?理解了这些, 你对厦门这个图,就不再陌生!
下面, 开启下半场的路程!
R-FCN
前面我们提到, Faster R-CNN打通前后端成为端到端的模型的同时, ConvNet模型也换成了VGG-16的模型。 但是在GoogLeNet和ResNet网络结构上, 全连接FC层就只有一层了, 最后一层,为Softmax分类服务了。
那么, 如果要把GoogLeNet和ResNet应用到Faster R-CNN中去,就面临一个现象,去掉最后一层FC层, 因为那是用来做分类的。 需要换到新的尾部网络, 能够兼容分类和Box回归。