目标检测模型总结

传统目标检测(基于滑动窗口的检测)主要包括三步:


  • 利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域

  • 提取候选区域相关的视觉特征。

  • 利用分类器进行识别。

深度学习相关的目标检测方法分两类:


  • 基于候选区域的,如R-CNN,SPP-net,Fast R-CNN,Faster R-CNN,R-FCN;

  • 端到端(End-to-End),如YOLO,SSD。

  • Faster R-CNN、R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与这三者类似。

Google 为 Tensorflow 发布了一个新的目标检测 API,与其同时发布的还有针对一些特定模型预构建的框架和权重。


  • 基于 MobileNets 框架的 Single Shot Multibox Detector(SSD)模型。

  • 基于 Inception V2 框架的 SSD 模型。

  • 使用 ResNet-101 框架的基于 Region 的全卷积网络(R-FCN)模型。

  • 基于 ResNet-101 框架的 Faster RCNN 模型。

  • 基于 Inception ResNet v2 的 Faster RCNN 模型。


OverFeat模型


核心思想


为三点:


  • 候选区域:集合滑动窗口和规则块的多尺度滑动窗口;

  • 分类和定位:统一用CNN来做分类和预测边框位置,模型与AlexNet类似,其中1~5层为特征抽取,即将图片转换为固定维度的特征向量,6~9层为分类层(分类任务专用),不同的任务(分类、定位、检测)公用特征抽取层(1~5层),值替换6~9层;

  • 累积:因为用了滑动窗口,同一个目标对象会有多个位置,即多个视角,因用了多尺度,同一个目标对象又会有大小不一的块。这些不同位置和不同大小块上的分类置信度会进行累加,从而使得判定更为准确。


关键步骤


  • 利用滑动窗口进行不同尺度的候选区域,然后使用CNN模型对每个区域进行分类,得到类别和置信度; 

  • 利用多尺度滑动窗口来增加检测数量,提升分类效果;

  • 用回归模型预测每个对象位置;

  • 边框合并。


R-CNN模型



主要步骤



  • 候选区域:通过Selective Search从原始图片中提取2000个左右区域候选框; 

  • 区域大小归一化:把所有候选框缩放成固定大小; 

  • 特征提取:通过CNN网络(如ResNet、Inception等),提取特征; 

  • 分类与回归:在特征层的基础上添加两个全连接层,再用SVM分类来做识别,用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框回归器。


缺点



  • 重复计算:R-CNN虽然不再是穷举,但依然有两千个左右的候选框,这些候选框都需要进行CNN操作,计算量依然很大,其中有不少其实是重复计算;

  • SVM模型:线性模型,在标注数据不缺的时候显然不是最好的选择;

  • 训练测试分为多步:候选区域、特征提取、分类、回归都是断开的训练的过程,中间数据还需单独保存;

  • 训练的空间和时间代价很高:卷积出来的特征需要先存在硬盘上,这些特征需要几百G的存储空间;

  • 慢:前面的缺点最终导致R-CNN出奇的慢。


SPP-Net模型



主要步骤



  • 候选区域:用Selective Search从原图中生成2000个左右的候选窗口;

  • 区域大小缩放SPP-net不再做区域大小归一化,而是缩放到min(w,h)=s,即统一长宽的最短边长度,s选自{480,576,688,864,1200}中的一个,选择的标准是使得缩放后的候选窗口大小与224*224最接近;

  • 特征提取:利用SPP-net网络结构提取特征;

  • 分类与回归:类似R-CNN,利用SVM基于上面的特征训练分类器模型,用边框回归来微调候选框的位置。


Fast R-CNN模型



主要思想



  • 使用一个简化的SPP层-RoI Pooling层,操作与SPP类似;

  • 训练和测试是不再分多步:不再需要额外的硬盘来存储中间层的特征,梯度能够通过RoI Pooling层直接传播;此外,分类和回归用Multi-task的方式一起进行;

  • SVD:使用SVD分解全连接层的参数矩阵,压缩为两个规模小很多的全连接层。


主要步骤



  • 特征提取:以整张图片为输入利用CNN得到图片的特征层;

  • 候选区域利用Selective Search等方法从原始图片中提取候选框,并把这些候选框一一投影到最后的特征层;

  • 区域归一化:针对特征层上的每个候选区域候选框进行RoI Pooling操作,得到固定大小的特征表示;

  • 分类与回归:然后在通过两个全连接层,分别用Softmax多分类做目标识别,用回归模型进行边框位置与大小微调。


Faster R-CNN模型



主要步骤



  • 特征提取:通Fast R-CNN,以整张图片为输入,利用CNN得到图片的特征层;

  • 候选区域:在最终的卷积特征层上利用k个不同的矩形框进行提名,k一般取9;

  • 分类与回归:对每个Anchor Box对应的区域进行Object/Non-object二分类,并用k个回归模型(各自对应不同的Anchor Box)微调候选框位置与大小,最后进行目标分类。


R-FCN模型



主要步骤



  • 候选区域:使用RPN(Region Proposal Network,候选区域网络),RPN本身是全卷积网络结构;

  • 分类与回归:利用和RPN共享的特征进行分类。当做bbox回归时,则将C设置为4。


YOLO(You Only Look Once)模型



主要步骤



  • 把输入图片缩放到448*448大小;

  • 进行卷积网络

  • 对模型置信度卡阈值,得到目标位置与类别


SSD(The Single Shot Detector)模型



主要成果



  • 在速度上,比之前最快的YOLO还要快,在检测精度上,可以和Faster RCNN相媲美;

  • SSD的核心是在特征图上采用卷积核来预测一系列default bounding boxes的类别分数、偏移量;

  • 为了提高检测准确率,在不同尺度的特征图上进行预测,此外,还得到具有不同aspect ratio的结果;

  • 这些改进设计,实现了end-to-end训练,并且,即使图像的分辨率比较低,也能保证检测的精度;

  • 在不同的数据集,如:PASCAL VOC、MS COCO、ILSVRC,对该方法的检测速度、检测精度进行了测试,并且与其他的方法进行了对比。






你可能感兴趣的:(深度学习,目标检测)