YoloV2

时间线                                  

YoloV2_第1张图片

 Motivation

        Yolo-v1是在检测精度尚可的前提下达到了实时检测,同年的SSD检测速度略慢但检测精度远高于Yolo-v1,因此,Yolo-v2则是着眼于检测得更快更准,同时它利用WordTree创造性地将ImageNet和coco结合起来构建了beyond coco的Yolo9000,为后续的研究、工程应用打开了一扇门。

Better

 -- Batch normalization

    通过采用BN而不是dropout来达到预防overfitting的目的,mAP提升2%.

 -- High Resolution Classifier

    首先在224x224的尺度上训练分类网络,然后使用448x448适应训练几个epoch,然后再进行detection任务的训练,mAP提升4%.

-- Convolutional With Anchor Boxes

    对于特征图上的每个网格对应的bbox,Yolo-v1采用随机猜的策略,导致训练困难、检测精度受损;因此,为了避免随机猜的情况,受Faster RCNN和SSD的启发,Yolo-v2也引入了anchor机制。具体地,对于每个网格我们生成K(K=5)个priors boxes:

YoloV2_第2张图片

    然后预测priors boxes的offset,同时将Yolo-v1中Pr(Class_i|Obj)从cell-level下放至bbox-level,这样每个prior box就对应一个含有(4+1+C)个分量的预测结果,其中C表示数据集中包含object的类别数。下图给出了采用priors boxes后的预测流程:  

YoloV2_第3张图片

--  Image input size : 448  x 448 --> 416 x 416 

    获得的feature_map从原来的7 x 7变为resolution更高的13 x 13.

--  Dimension Clusters

    与Faster RCNN、SSD等采用anchor机制的detection方法不同的是,Yolo-v2在设定prior boxes时采用了Data Driven的思想。我们来看,日常生活中常见object的宽高比并非任意的,它们具有某种规律,因此Yolo-v2采用k-means聚类方法对训练集中的truth_bboxes进行聚类,并得到如下图所示的观测数据:

YoloV2_第4张图片

需要补充的一点是,在聚类时距离度量没有采用bbox的空间距离,而是采用如下的方式:

 d(box, centroid) = 1 − IOU(box, centroid) 

为了便于展示聚类效果,这里距离度量采用L2-dist[聚类对象即为目标框的宽、高],以COCO2017-val样本为例,如图所示:

YoloV2_第5张图片

--  Direct location prediction

YoloV2_第6张图片

     左侧为Faster RCNN中bbox的预测参数关系,右侧为Yolo-v2的参数预测关系,它们主要的区别在于bx和by的预测关系。具体体现在:Faster RCNN中的bx和by不受限制,而Yolo-v2则将bx和by限制在参考网格内部

--  Fine-Grained Features

  • Backbone

YoloV2_第7张图片

  • Pass through

YoloV2_第8张图片

 这里,YoloV2借鉴SSD使用多尺度特征图来提升检测效果的方法,提出pass through层将高分辨率特征图与低分辨率特征图拼接在一起,从而更好地利用多尺度特征来检测目标。

  • Architecture

YoloV2_第9张图片

--  Multi-Scale Training

     因为Yolo-v2的网络框架中去掉了fully connected layers,因此网络可以接受不同size的image,eg:Yolo-v2采用的采样因子为32,当input-size为320时,输出为[batchsize, 100, len(priors)+1+C];当输入是608时,输出为[batchsize, 361, len(priors)+1+C].论文指出,在训练Yolo-v2时,每隔10个epoch从[320, 352, ..., 608]中选择一个新的size最为input_size对网络进行训练。这样做的好处是:模型可以更好地适应不同image-resolution的detection任务。

--  Accuracy

YoloV2_第10张图片

Faster

  • FLOPS
  backbone       operations(billion)      accuracy(ImageNet)
VGG16                30.69                  90.0%
GoogLeNet                 8.52                  88.0%
DarkNet-19                 5.58                   91.2%
  • Speed

YoloV2_第11张图片

   Yolo-v2的backbone网络采用了操作量更少、但分类效果更佳的DarkNet-19, 具体计算量、检测指标如下图所示:

YoloV2_第12张图片

     受GoogLeNet、NIN的启发,DarkNet的卷积核采用了3x3,1x1的尺寸,前者用于feature提取,后者用于feature降维。在detection的工程实现时,最后一层的1x1的Conv层、Avgpool层被替换为3x3[特征融合]和1x1[降维输出]的Conv-layer。下图给出了Yolo-v2的完整流程图:

Stronger

     Yolo-v2在解决了better、faster这两个核心问题之后,顺便提出了联合COCO和ImageNet来训练更为强大的Yolo9000.它需要解决如下两个问题:

  1. 不同数据集的标签怎么合并?[直接合并不能保证标签之间的互斥性,从而使得不能直接用softmax来计算各类的概率]
  2. 分类数据无bbox信息,如何在detection网络中应用分类数据?

--  WordTree

     下图是COCO和ImageNet的标签体系:

YoloV2_第13张图片

YoloV2_第14张图片

      Yolo-v2中作者基于自下而上的层次结构构造的WordTree标签体系:

YoloV2_第15张图片

       这样做的好处是,同一层级内的各个标签是互斥的,因此可以使用softmax来计算概率。以ImageNet-1000为例,作者构建了一棵含有369个内部节点的WordTree,在训练模型时采用向上传递标签的方式,例如:如果一张image被标记为Norfolk terrier,那么它也会被同时标记为它的一系列父节点:dog、mammal ... 为了计算条件概率,网络会输出1369个score,然后计算对相应分支的节点计算softmax概率:

YoloV2_第16张图片

        采用WordTree的标签体系的好处是它可以充分利用层次结构,例如,当模型遇到一张狗的照片但不确定是哪种狗的时候,模型会输出高置信度的标签“狗”,而不是强行把它分为某个低置信度的狗的子类目。

--  Train/Test

在训练时,当输入的是detection(来自coco)的图片时,bbox的loss照旧;classification的loss只计算当前预测label在WordTree对应level及上游层中依赖节点的损失;当输入的图片来自ImageNet时,仅仅反传classification-loss.

你可能感兴趣的:(#,目标检测,深度学习,目标检测,深度学习,计算机视觉)