神经网络的认识(十一)R-FCN

顾名思议:全卷积网络,就是全部是卷积层,而没有全连接层(fc)。
https://blog.csdn.net/shenxiaolu1984/article/details/51348149
R-FCN(基于区域的检测器)的方法是:在整个图像上共享计算,通过移除最后的 fc 层实现(即删除了所有的子网络)。使用“位置敏感的得分图”来解决了图像分类平移不变性与对象检测平移变化之间的矛盾。
矛盾在于:物体分类要求平移不变性越大越好 (图像中物体的移动不用区分),而物体检测要求有平移变化。所以,ImageNet 分类领先的结果证明尽可能有平移不变性的全卷积结构更受亲睐。另一方面,物体检测任务需要一些平移变化的定位表示。比如,物体的平移应该使网络产生响应,这些响应对描述候选框覆盖真实物体的好坏是有意义的。我们假设图像分类网络的卷积层越深,则该网络对平移越不敏感。
CNN 随着网络深度的增加, 网络对于位置(Position) 的敏感度越来越低, 也就是所谓的translation-invariance,但是在 Detection 的时候, 需要对位置信息有很强的的敏感度。那么 ResNet-101 的 detection 是怎么做的?
在 R-FCN 之前,很简单,把 ROI-pooling 层放到了前面的卷积层,然后后面的卷积层不共享计算,这样一可以避免过多的信息损失,二可以用后来的卷积层学习位置信息。
R-FCN: 采用全卷积网络结构作为 FCN, 为给 FCN 引入平移变化, 用专门的卷积层构建位置敏感分数地图 (position-sensitive score maps)。每个空间敏感地图编码感兴趣区域的相对空间位置信息。 在 FCN 上面增加 1 个位置敏感 RoI 池化层来监管这些分数地图。
R-FCN 思路就是利用最后一层网络通过 FCN 构成一个 position-sensitive 的feature map。具体而言, 每一个 proposal 的位置信息都需要编码, 那么先把 proposal 分成 k*k 个 grid, 然后对每一个 grid 进行编码。在最后一层 map 之后,再使用卷积计算产生一个 k*k*(C+1)的 map(k*k 代表总共的 grid 数目, C 代表 class num, +1 代表加入一个背景类)。
在这里插入图片描述
在这里插入图片描述
RPN 给出感兴趣区域, R-FCN 对该感兴趣区域分类。 R-FCN 在与 RPN 共享的卷积层后多加 1个卷积层。所以, R-FCN 与 RPN 一样,输入为整幅图像。但 R-FCN 最后 1 个卷积层的输出从整幅图像的卷积响应图像中分割出感兴趣区域的卷积响应图像。
R-FCN 最后 1 个卷积层在整幅图像上为每类生成 k*k 个位置敏感分数图,有 C 类物体外加 1个背景,因此有 k*k*(C+1)个通道的输出层。 k*k 个分数图对应描述位置的空间网格。比如,k×k=3×3,则 9 个分数图编码单个物体类的 {top-left,top-center,topright,…,bottom-right}。
R-FCN 最后用位置敏感 RoI 池化层,给每个 RoI1 个分数。选择性池化图解: 看上图的橙色响应图像 (top-left),抠出橙色方块 RoI,池化橙色方块 RoI 得到橙色小方块(分数);其它颜色的响应图像同理。对所有颜色的小方块投票 (或池化) 得到 1 类的响应结果。产生完了这张 map 之后, 再根据 proposal 产生一个长宽各为 k, channel 数目为 C+1 的score map。具体产生 score map 的方法是,假如 k=3, C=20,那么 score map 的 21 个类每个类都有 3*3 的 feature,一共 9 个格子,每一个格子都记录了空间信息。而这每一个类的每一个格子都对应前面 3*3*21 的大 map 的其中一个 channel 的 map。现在把 score map中的格子对应的区域的 map 中的信息取平均,然后这个平均值就是 score map 格子中的值。最后把 score map 的值进行 vote(avg pooling)来形成一个 21 维的向量来做分类即可。
在这里插入图片描述
在这里插入图片描述
当分类正确时,该类通道的位置敏感分数图的大多数橙色实线网格内的响应在整个 RoI 位置范围内最强。
对应的 bbox regression 只需要把 C+1 设成 4 就可以了。
R-FCN 采用的一些方法比 Faster R-CNN 的 baseline 提高了 3 个点, 并且比原来 Faster RCNN 更快(因为全部计算都共享了) 。但是和改进过的 Faster R-CNN 相比(ROI Pooling提前那种)提高了 0.2 个点,速度快了 2.5 倍。所以目前为止这个方法的结果应该是所有方法中速度和 Performance 结合的最好的。

发布了163 篇原创文章 · 获赞 117 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/u010095372/article/details/91345854