滑动窗口检测器

一种用于目标检测的暴力方法,是从左到右、从上到下滑动窗口,利用分类识别目标。使用不同大小和宽高比的窗口。

目标检测如何计算FPS 目标检测roi_目标检测


选择性搜索为了提升性能,尽量减少窗口数量,于是使用候选区域方法,创建目标检测的感兴趣区域(ROI),使用选择性搜索(SS)。

目标检测如何计算FPS 目标检测roi_滑动窗口_02


R-CNN利用候选区域方法创建了约2000个ROI。区域被处理成固定大小的图像送入卷积神经网络。最后几层全连接层实现提炼分类和边框修正。

目标检测如何计算FPS 目标检测roi_目标检测_03


通过使用更少且高质量的ROI,R-CNN要比滑动窗口法更快速、准 确。

Fast R-CNN

R-CNN的很多ROI是彼此重叠的,需要网络重复提取特征,因此训练和判断速度很慢。Fast R-CNN使用CNN先提取整张图片的特征,再直接利用特征图计算ROI,使用ROI池化将特征图转换为固定大小然后送到全连接层进行分类和定位,这样可以减少处理时间。Fast R-CNN的训练速度是 R-CNN的10倍,推断速度是后者的150 倍。

目标检测如何计算FPS 目标检测roi_搜索_04


Fast R-CNN 最重要的一点就是包含特征提取器、分类器和边界框回归器在内的整个网络能通过多任务损失函数进行端到端的训练,这种多任务损失即结合了分类损失和定位损失的方法,又提升了模型准确度。

ROI池化

使用ROI池化将不同大小的ROI转换成相同尺寸。

目标检测如何计算FPS 目标检测roi_搜索_05


输入特征图(左上),ROI区域(右上),ROI池化输出特征图(右下)

Faster R-CNN

Fast R-CNN依赖于外部候选区域法,如选择性搜索。但这些算法是在CPU上运行的且速度很慢。

Faster R-CNN采用内部深层网络——候选区域网络(RPN),在生成ROI时更为快速。

目标检测如何计算FPS 目标检测roi_目标检测如何计算FPS_06

候选区域网络

RPN使用卷积网路在特征上滑动卷积,构建与类别无关的候选区域。为简洁起见,Faster R-CNN 使用只有两个类别的分类器:即带有目标的类别和不带有目标的类别。对于特征图中的每个位置,RPN会做k次ROI预测。因此,RPN对于每个像素位置上将输出4×k个ROI坐标和2×k个目标得分。

目标检测如何计算FPS 目标检测roi_目标检测_07


Faster R-CNN的锚点框选择,每个锚点框具有不同的宽高比和大小。

R-CNN方法性能

目标检测如何计算FPS 目标检测roi_目标检测如何计算FPS_08

基于区域的全卷积神经网络(R-FCN)

R-FCN 通过减少每个ROI所需的工作量实现加速。基于区域的特征图是与ROI独立的,单独计算。

目标检测如何计算FPS 目标检测roi_池化_09


红色虚线是ROI,将其分成9份。

询问每个区域包含目标对应部分的概率是多少,并将结果存储为3x3的数组。这个操作叫做敏感位置ROI池化。

目标检测如何计算FPS 目标检测roi_目标检测_10


位置敏感ROI池化示意图

在计算出位置敏感ROI池化的所有值后,类别得分是其所有元素得分的平均值。