文章16
标签10
分类1

R-FCN模型总结

论文名称:R-FCN: Object Detection via Region-based Fully Convolutional Networks
论文地址:传送门

Introduction

传统的影像分类模型需要依赖特征的平移不变性(translation-invariance),而对于检测网络,影像的平移显然会影像到目标的定位与识别,因此其需要依赖位置敏感性(translation-variance)。通过 RoI pooling 的插入,打破了原卷积网络的平移不变性,但这种做法牺牲了训练和测试效率。而R-FCN在提升精度的同时利用“位置敏感得分图(position-sensitive score maps)”提升了检测速度。本文的核心即替换Faster R-CNN中单纯的ROI Pooling,引入psROIpooling(Position Sensitive ROI Pooling),从而引入了位置信息,提升了检测速度。
基于ResNet-101的R-FCN在PASCAL VOC 2007的测试集上的mAP=83.6%,速度为170ms per image。

Network Design

R-FCN

如上图所示为R-FCN的示意图,其大部分结构借鉴于Faster R-CNN,如RPN,ROI Pooling,但不同的是将其中的ROI Pooling替换为了psROIPooling,从而解决了位置敏感性的问题。其流程如下:

  1. 影像送入Backbone网络,输出特征图
  2. 使用RPN网络提取Region
  3. 加入一个具有特定数量卷积核的卷积层,得到一定量的特征图
  4. 对于每一个ROI,使用psROIpooling得到新的特征图
  5. Vote确定特征图所属ROI的类别

接下来会详细介绍其实现细节。

Position-sensitive score maps & Position-sensitive RoI pooling

R-FCN采用Resnet作为backbone,将其average pooling和fully connected层的最后一个卷积层作为输出,其是一个2048维的向量($2048 \times 7 \times 7$),接着再加入一个随机初始化的1000维的卷积层($1024 \times 1 \times 1$),最后加入一个包含$k^2(C+1)$个卷积核的卷积层,从而得到$k^2(C+1)$个特征图。

为了将位置信息编码进网络,本文首先将每个ROI分割成$k \times k$的网格,如对于大小为$w \times h$的ROI,则其每一个网格的大小约为$\frac{w}{k} \times \frac{h}{k}$。

接着,我们让第$i+k(j-1)$个score map负责位置$(i,j)$的预测,如对于黄色的score map,我们仅取其左上角的一个网格(即第$(1,1)$个网格)作为新的score map的一部分,那么例如蓝色的score map则负责$(3,1)$位置的预测,即仅取其$(3,1)$位置的网格作为新score map的一部分。

经过这样的映射,新组成的score map就如上图右侧经过ROI pooling之后所示,此时向量的大小为$k \times k \times (C+1)$,即新的score map是由$k^2(C+1)$个特征图经过映射得到的,包含了位置信息,而不是直接的进行ROIpooling。

接着对于大小为$k^2(C+1)$的score map,对$C+1$维上每一层都进行average pooling,得到大小为$C+1$的一维向量,接着使用softmax公式计算其最终的类别。其公式如下:
$$r_c(i,j|\theta)=\sum_{(x,y) \in bin(i,j)}z_{i,j,c}(x+x_0,y+y_0|\theta)/n$$
其中$r_c(i,j|\theta)$表示对于第$c$类经过pool之后的第$(i,j)$个网格,$z_{i,j,c}$表示$k^2(C+1)$个score map中的一个,$(x_0,y_0)$表示ROI的左上角

Bounding Box Regression

为了准确预测bounding box,本文在$k^2(C+1)$的卷积层后添加了一个$4k^2$个卷积核的卷积层,产生了一个$4k^2$维的向量,然后使用average pooling转成4维的向量,让这个4维向量编码$t=(t_x,t_y,t_w,t_h)$。

Refenrence

  1. https://www.jianshu.com/p/df49ff18c8cc
  2. https://zhuanlan.zhihu.com/p/30867916
  3. https://blog.csdn.net/wfei101/article/details/79284512

YOLO系列模型总结

YOLO v1

论文名称:You Only Look Once: Unified, Real-Time Object Detection
论文地址:传送门

Introduction

以往的目标检测算法(尤其是R-CNN系列)将目标检测问题归结为分类问题,即先寻找目标可能存在的区域(Bounding box),然后对这些Box分类,从而确定目标。Yolo则将目标检测问题转换为一个回归问题(Regreesion problem),直接预测出boudning box和相关的类别信息。Yolo是一个可以端到端训练的single network,它不需要单独的搜索Region Proposals,也不需要单独的Classifier,因此其检测速度特别快,Yolo可以达到45FPS,而Fast Yolo可以达到155FPS。Yolo对背景的识别效果较好,且有一定的迁移性,可以识别一般问题(如Artwork),但是Yolo最大的问题是对小目标的检测不准确。

SSD&& MS R-CNN模型总结

论文名称:SSD: Single Shot MultiBox Detector
论文地址:传送门

Introduction

相比于多阶段(Multi-Stage)的方法,SSD是一个Single Shot的目标检测算法,它可以直接输出不同比例、不同尺寸的Bounding box,其结合了不同层的特征图,从而可以处理多种尺寸的 物体。

R-CNN 系列模型总结

Introduction

相比于分类,目标检测不仅仅要确定物体是什么,还要确定其在哪里;分类通常是一张影像获得一个类别,而检测则要找出影像中存在的多个物体,并确定其类别。因此,目标检测的两大任务:1.Object localization 2.Object classification。

基于深度学习的方法在最近5年来取得了显著的效果。本文将介绍深度学习在目标检测领域的开篇之作:RCNN(Region-based Convolutional Neural Network)及其后续版本Fast R-CNN、Faster R-CNN。