目标检测论文笔记

DPM模型:魔改版HOG+SVM

论文地址:A Discriminatively Trained, Multiscale, Deformable Part Model

Dalal的论文结尾的未来展望部分曾提到,虽然采用固定的模板可以很好的解决的行人检测问题,但是采用可变的部件模型会具有更加普遍的应用场景。也就是本文的主要内容-DPM模型,其全称为可变部件模型。 该模型在首先由图像金字塔生成HOG特征金字塔,并在HOG特征金字塔上的上层采用一个固定的粗略的全局模板,在金字塔的底层采用精细的部件模板。通过这种方法来提高检测的精度。
DPM

本文主要贡献

  • 作者提出了一种多尺度的可变部件模型,用于解决通用类别的目标检测问题。
  • 其检测精度比2006 PASCAL的冠军高了两倍,在2007 PASCAL挑战赛的20个类别中,在其中十个类别取得最佳结果。模型处理一张图片速度仅需两秒,现有模型中是最佳的
  • 解决了在困难数据集上,deformable models通常表现不如conceptually weaker models的问题
  • 提出了一种简单有效的策略,可以从弱标记数据中学习部件,其性能可以在单个CPU上三个小时内学习一个模型。
  • 提出了一种新的判别培训的方法
  • 引入了一种新的数据挖掘方法,用于在训练过程中挖掘“hard negative”的实例

系统概述

  • an object model = 一个全局的 root filter + 几个 part models
  • Part model = a spatial model + a part filter
  • 空间模型(spatial model)定义了一个部件(part)的一组相对于检测窗口的可允许放置位置
  • 检测窗口的score = score of root filter + 部件上的总和

模型概述

R-CNN (Region with CNN features)

Overfeat = sliding window + CNN architecture
RCNN = selective search + CNN architecture

本文主要贡献

  • 一种简单可扩展的检测算法,比VOC 2012最佳结果(DPM HSC)的mAP值高30%(53.3%) 并且RCNN(mAP: 31.4%)在ILSVRC2013数据集的200个类别上性能优于OverFeat(mAP 24.3%),
  • 原理上的贡献:针对有标签的训练数据稀少的问题,作者发现,在大型辅助数据集上进行有监督的预训练,然后在小型数据集上进行domain-specific的微调是一种很有效的解决办法。

关键点

  • 将高容量的卷积神经网络(CNN)应用于自下而上的region proposal,用来对目标进行定位和分割
  • 当带标签的训练数据不足,则采用有监督的pre-training.

模型概述

R-CNN的目标检测系统由三个模块组成:

  1. 生成与类别无关的region proposal
  2. 一个很大的卷积神经网络,用于从每个区域中提取固定长度的特征向量
  3. 一组基于特定类别的线性SVM分类器

Region proposal

R-CNN采用selective search为每个图像生成约2k个region proposal。 该方法采用bottom-up grouping和saliency cues的方法来提供准确的任意大小的候选框。

feature extraction

在进行特征提取之前,需要对图像进行预处理操作,即将输入图像进行归一化操作,使其大小统一为227*227

classification and localization

在分类上,RCNN对每个类别采用训练后的线性SVM分类器进行分类任务。SVM的训练过程分为两步,首先针对特定的类别对线性SVM进行预训练,训练集采用ILSVRC2012。然后采用特定于区域的微调。然后采用该分类器在正区域(目标)和负区域(背景)上进行打分,然后在被打分的区域上进行bounding box regression并使用NMS(greedy non-maximum suppression)进行过滤,以生成保留对象位置的最终边界框。对于标签不足的数据,R-CNN方法中并没有使用无监督的预训练,而是对非常大的辅助数据集ILSVRC进行有监督的预训练,然后进行特定于区域的微调。

SPPnet

RCNN虽然在目标检测领域取得了非常优秀结果,但是仍然存在两个问题,首先图像在训练之前必须经过预处理,这会导致图像失真,严重影响检测的精度。其次图像需要对2k个预选框进行卷积运算,这带来了很大的计算负担,对检测的速度也造成很大影响。针对上述的两个问题,何凯明等人提出了SPPnet, 将图像金字塔应用于深度网络,提高了检测的速度和精度。

尽管RCNN在目标检测上取得的成绩是显著的,它仍然存在两个明显的缺点:

  1. 在图像被输入到CNN结构中之前,需要对图像进行扭曲变换使图像统一为固定的大小。这两种操作将会导致内容的丢失和失真从而使检测的精度受到影响。
  2. R-CNN采用Selective Search方法从一张图片中生成了约2k个候选区域,在特征提取阶段,CNN网络分别对2k个候选区域做卷积运算,这意味着也就是一张图片需要经过2000次CNN的前向传播,这个过程会产生大量的计算冗余,降低了检测的速度。

**Spatial pyramid pooling: ** 在深度卷积神经网络结构中,卷积层可以处理任意大小的图像,因此对输入图像固定大小的约束仅来自于全连接层。其原因是全连接层的输入必须为固定长度的向量。为了解决这个问题,何等人在CNN的最后一个卷积层和全连接层之的池化层替换为空间金字塔池(如图6)。 空间金字塔池基于bag-of-word【引用】方法,他通过不同的size和stride但数量固定的local spatial bins来提取空间信息。因此无论输入图像的大小,空间金字塔池的输出仅和local spatial bins的数量有关。通过这种方法,不仅可以提高检测的鲁棒性,还可以保证输入图像的尺寸的灵活性,进而也可以改善网络的过拟合问题。

**Feature map computation: ** 针对RCNN网络的第二个缺陷,SPPnet仅从整个输入图像上计算一次特征图,然后在特征图的候选窗口上应用空间金字塔池化。在这里涉及到了一个问题:如何将窗口映射到特征图上?在这篇论文中,作者将窗口的角点映射到特征图上的一个像素上,是图像域中的的这个角点最接近该像素的感受域的中心。这种改进使得SPPnet在Pascal 2007上的检测速度比R-CNN方法快了24-102倍。

Fast RCNN

2015年,Girshick et al. 在RCNN和SPPnet的基础上提出了Fast RCNN模型。在这篇论文中,Girshick et al. 系统性的总结了这两种网络的缺点并做出了相应的改进,使得模型的检测速度显著提升,同时也改善了检测的精度。在结果上,Fast RCNN在训练阶段比RCNN快九倍,比SPPnet快3倍。在测试时,检测网络比RCNN快了213倍,比SPPnet快10倍。在实际运行中,检测网络可以可以在0.3秒内处理图像(不包括区域建议时间),同时在PASCAL VOC 2012上实现了66% mAP。

**ROI Pooling layer: ** 在SPPnet中,何恺明等人采用空间金字塔池化来解决全连接层对图像大小约束的问题。Fast RCNN模型将该SPP层简化为单尺度的ROI(region of interest)层。 RoI层将候选区域划分为大小为H×W的网格,然后在每个网格上采用max-pooling,使得候选区的局部特征映射转变为大小统一的数据。Fast RCNN网络的具有两个数据输入:list of images and list of RoIs in those images 每个ROI具有两个输出: softmax概率和每个边界框的回归偏移。

**Single Stage Training: ** 在R-CNN和SPPnet中,训练的过程遵循多阶段的pipeline, 这主要包括:特征提取的训练, 并采用Log loss对网络进行微调,SVM分类器的训练和Bounding box regression的训练。这中多阶段的训练过程增加目标检测网络的复杂度并影响了检测速度。为了解决这个问题,Fast R-CNN网络采用了单阶段的训练方法。 首先网络采用装备了ROI层的VGG16网络初始化数据,然后采用反向传播对所有的网络权重进行训练。针对SPPnet的SPP层以下无法更新权重的问题,这篇论文采用了分层的采样方法,即针对每个SGD mini-batch 先对图像进行采样,然后对RoIs进行采样,并在同一图像的ROI中共享计算。除此之外,Fast R-CNN还在一次微调中联合优化softmax classifier和bounding box regression。这里Girshick et al.采用了多任务的损失 L:

这里L_cls是一个分支softmax层输出概率分布,L_loc是bounding box的损失函数。最终,Fast RCNN将模型整合成为一个整体的单阶段训练模型(除了region proposal), 通过这种方法提高了检测的速度和精度。

Faster RCNN

Fast R-CNN通过共享卷积和单阶段的训练过程降低了目标检测的运算负担,同时也提高了检测效率和精确度。但是region proposal generation仍然是制约着Region based目标检测模型的一大瓶颈。2015年 Ren et al.在Fast R-CNN基础上提出了Faster R-CNN模型,Instead of Selective, Faster R-CNN通过训练一个全卷积网络来生成目标候选。 该网络被称为Region proposal Network(RPN)。Faster R-CNN将RPN与Fast R-CNN的检测网络整合起来应用于目标检测,最终该模型在Pascal VOC 2007的精确度达到 73.2% mAP(best result for state of the art)。 并且检测的帧率在GPU上达到了5fps。

*Region proposal Network: **
为了得到目标提案的矩形框,RPN引入了全卷积网络。网络的输入是任意大小的图像,首先网络先计算出图像的卷积特征图。然后在最后一个卷积层上采用3
3的滑动窗口同时预测k个区域提案,在这里作者引入了具有平移不变性的锚点概念来描述区域提案,锚点位于滑动窗口的中心,在每个位置采用了3 scales and 3 aspect ratio,yielding k=9的锚点。滑动窗口的输出被映射到一个低维的向量中,该向量将被馈送到回归层和分类层(见图6)。 reg layer得到区域提案的坐标,分类层通过对区域提案进行打分来评估区域中包含物体的概率。
为了对RPN网络进行训练,Ren et al.为anchor假设了一个二元的类标签:object/not object。当锚点与ground truth的IoU(Intersection over region)高于0.7或者重叠,则该锚点将会得到一个positiv label(object)。训练所采用的损失函数与Fast R-CNN的相同。

模型训练: RPN网络可以采用back-propagation和stochastic gradient descent进行端对端的训练。在faster R-CNN中,作者通过RPN和检测网络共享卷积层来加快模型的训练和检测速度,但这同时也产生了一个问题,整个faster R-CNN模型在共享卷积层的情况下由于RPN和检测网络的独立训练无法收敛。 在这里作者描述了一种交替优化的四步算法来解决该问题。

  1. 首先,算法采用预训练的ImageNet模型对RPN进行初始化,并针对区域建议任务进行端对端的训练。
  2. 然后该算法采用RPN生成object proposals, 然后采用fast R-CNN的方法对检测网络进行训练,检测网络也采用ImageNet-pre-trained model进行初始化。
  3. 采用第二步训练的检测网络初始化RPN并对RPN进行训练,在此阶段两个网络开始共享卷积层,训练过程仅微调RPN特有的层。
  4. 保持共享卷积层不变,再次训练检测网络,训练过程仅微调Fast R-CNN特有的层。

YOLO v1

2016年,Redmon等人提出的YOLO模型也是目标检测领域的里程碑之一。不同于R-CNN,fast R-CNN,faster R-CNN等两阶段模型,YOLO提出了一种unified architecture用于目标检测。该方法将目标检测的框架视为bounding boxes 和 class probabilities的回归问题,采用单个网络来解决。在检测速度上YOLO展现出了卓越的性能。基础YOLO模型以45帧/秒的速度实时处理图像,作者还采用了一种更加小型的YOLO版本实现了150帧每秒的检测。
detection pipeline: YOLO在整副图像上预测所有类别的边界框,首先,输入图像被调整大小为448*448的图像,然后卷积检测网络接收归一化的图像作为输入并输出通过模型的置信度进行打分的边界框。在具体细节上,输入图像首先被划分为 S x S的网格。如果目标的中心点位于某个网格中,则该网格负责目标的边界框的检测。每个网格负责预测B个预测边界框(x, y, w, h)和相应的置信度分数 ####. 除此之外,每个网格还要预测C个条件类别的概率: #### 最终每个图像的预测输出可以参数化为一个S x S x (B x 5 + C)的tensor (见下图).
Model pipeline

**Network training: ** YOLO所采用的检测网络由24个卷积层和两个全连接层组成,为了提高检测的精度,网络的卷积层采用ImageNet 1000-class competition dataset进行预训练。模型的最后一层输出目标的bounding box和class probabilities。在模型激活函数上模型的最后一层采用了线性的激活函数,其它层采用了leaky rectified linear activation。在优化问题上,YOLO采用了sum-squared error优化模型的输出,正如下面的激活函数所展示的:

在这里l_{i}^{obj}代表网络i中存在对象,l_{ij}^{obj}代表网络i的第j个bounding box中存在对象.

模型详细解释:yolo v1详解

YOLO v2

尽管Redmon等人提出的YOLO在目标检测的速度上取得很大的突破,但该网络仍然存在诸多限制。

  1. 由于边界框预测的空间约束,每个网格单元只预测两个含有有单个类别的bounding box,这在提高了检测速度的同时也降低了对多个成组出现的小物体的检测能力。
  2. 模型的检测精度不够高,略低于Faster R-CNN(见表格)
  3. 检测网络中的多个下采样层导致了图像信息的丢失,所提取的模型特征不够精细。
    针对以上问题,YOLOv2相对v1版本,采用了多种方法在预测精度,检测速度和识别对象种类三个方面进行了改进。除此之外,作者还提出了一种多尺度的训练方法,使模型可以在速度和准确性之间做出权衡。结果上,YOLO V2以67FPS的速度运行时,在VOC 2007上的mAP值为76.8%,而以40FPS的速度运行时的mAP值为78.6%。由于YOLO v2模型能够检测9000种不同对象,因此该模型被称为YOLO9000。

Better: 针对模型的第一个缺点,Redmon et al.采用不同的方法来改进YOLO模型。首先作者在所有的卷积层上采用了batch normalization来解决反向传播过程中的梯度消失和梯度爆炸问题,并且可以对模型进行规范化,从而能够获得更好的收敛速度和收敛效果。其次,YOLO v2在分类器预训练后,再采用的高分辨率样本对分类器进行微调,这样可以避免缓解了分辨率突然切换造成的影响。然后,YOLO模型移除了全连接层并引入了anchor来预测边界框。通过该方法来提高模型的召回率。然后,在锚点框的使用上,YOLO v2在训练集的真实框上使用k-means clustering来得到先验框的尺度。但使用锚定框会遇到位置的预测不稳定的问题,这里Redmon et al. 通过添加约束的方法,将预测的中心限制在特定网格单元中。对于YOLO v1模型所提取的特征过于粗糙的问题,YOLO v2引入了一个新的passthrough层检测细粒度特征。具体来说,passthrough层通过将相邻要素堆叠到不同的通道中过来将高分辨率的特征和低分辨率的特征连接起来。使图像的细节信息尽可能的被保留下来。在模型的训练上,由于YOLO网络上去掉了全连接层,因此网络可以处理任意大小的图像。为了保证图像对不同尺度的图像的检测精度,YOLO v2在训练过程中采用不同尺度的图像进行训练,网络的每10个批次将会随机选择新的图像尺寸。最终使网络能够适应各种大小的目标的检测。

**Faster: **为了进一步提升速度,YOLO2提出了Darknet-19(有19个卷积层和5个MaxPooling层)网络结构。DarkNet-19比VGG-16小一些,精度不弱于VGG-16,但浮点运算量减少到约1/5,以保证更快的运算速度。

**Stronger: **

one stage model vs. two stage model

如下图所示,当我们对检测的管线进行横向比较时,可以很清楚的看到技术的发展趋势。在传统目标检测阶段,检测的pipeline分为三步:区域选择,特征提取和分类。在此阶段检测算法的特征是基于规则手工设计的。在基于深度学习的目标检测阶段,两阶段模型仍遵循传统的目标检测方法的思路,将深度学习技术整合入目标检测的pipeline中。正如图三所示,在R-CNN,SPPnet和Fast R-CNN中,检测模型引入卷积神经网络来提取图像特征,在Faster R-CNN中,卷积神经网络被同时应用于候选区域生成和检测阶段,通过共享卷积使整个检测模型被统一整合为完整的深度学习模型。而基于回归的单阶段检测模型则采用新的思路,直接采用深度学习技术从pixel直接预测物体,取消了区域生成的阶段,大大简化了模型的复杂程度。

作者

John Doe

发布于

2020-01-15

更新于

2020-03-19

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论