8.1 R-FCN
R-FCN属于two-stage的目标检测算法。
- backbone部分RPN,这里使用ResNet。
- head部分R-FCN,使用全连接网络。
其中ResNet-101 + R-FCN的方法在PASCAL VOC 2007测试数据集的mmAP达到83.6%。
图1 人脸检测R-FCN的核心思想
- 得到目标多个特征。
假设我们只有一个特征图用来检测右眼。那么我们可以使用它定位人脸吗?应该可以。因为右眼应该在人脸图像的左上角,所以我们可以利用这一点定位整个人脸。如果我们还有其他用来检测左眼、鼻子或嘴巴的特征图,那么我们可以将检测结果结合起来,更好地定位人脸。 - 使用全卷积网络提高推理速度
在Faster R-CNN中,检测器使用了多个全连接层进行预测。如果有2000个ROI,那么成本非常高。R-FCN通过减少每个ROI所需的工作量实现加速。上面基于区域的特征图与ROI是独立的,可以在每个ROI之外单独计算。剩下的工作就比较简单了,因此R-FCN的速度比Faster R-CNN快。
现在我们来看一下的特征图M,内部包含一个灰色方块。我们将方块平均分成3×3个区域。在M中创建了一个新的特征图,来检测方块的左上角(TL)。这个新的特征图如图2(右)所示。只有绿色的网格单元[2,2]处于激活状态。
图3 生成9个得分图我们将方块分成9个部分,由此创建了9个特征图,每个用来检测对应的目标区域。这些特征图叫做位置敏感得分图(position-sensitive score map),因为每个图检测目标的子区域(计算其得分)。
图4 vote_array图4中红色虚线矩形是建议的ROI。我们将其分割成3×3个区域,并询问每个区域包含目标对应部分的概率是多少。例如,左上角ROI区域包含左眼的概率。我们将结果存储成3×3 vote数组,如图4(右)所示。例如,vote_array[0][0]包含左上角区域是否包含目标对应部分的得分。
图5 position-sensitive ROI-pool将ROI应用到特征图上,输出一个3x3数组。将得分图和ROI映射到vote数组的过程叫做位置敏感ROI池化(position-sensitive ROI-pool)。
图6 ROI池化将ROI的一部分叠加到对应的得分图上,计算V[i][j]。在计算出位置敏感ROI池化的所有值后,类别得分是其所有元素得分的平均值。
图7 R-FCN数据流图假如我们有C个类别要检测。我们将其扩展为C+1个类别,这样就为背景(非目标)增加了一个新的类别。每个类别有3×3个得分图,因此一共有(C+1)×3×3个得分图。使用每个类别的得分图可以预测出该类别的类别得分。然后我们对这些得分应用 softmax 函数,计算出每个类别的概率。以下是数据流图,在本案例中,k=3。
网友评论