【论文阅读】YOLO-v2: YOLO9000: Better, faster, stronger

1. 动机

​ 当前大部分的目标检测模型都只能检测很少的类别,这主要是受到数据集的影响。相较于分类和tagging任务的数据集,目标检测数据集规模小,比如样本数量,类别等。所以在YOLOv2的论文里面,作者不仅提出了一个升级版本的YOLO,最主要的贡献是还提出了一个联合多个图片分类的数据集和目标检测数据集训练目标检测网络。

2. 方法

2.1 改进

​ YOLO-v1中存在的两个问题:

  • 位置检测不准确
  • 相较于region proposal的模型,yolo的recall低

为了解决这个问题,作者在YOLO-v1的基础上加入很多能提升网络性能的操作,同时也对网络结构进行了微调,其主要的操作如下:

  1. 添加Batch Normalization

    给所有的卷积层添加了BN层,移除Dropout,这个操作使mAP指标提升了2%;

  2. 高分辨率分类器

    在yolo-v1中,作者先采用224x224的分类数据集去预训练一个分类网络,然后再将网络结构修改成目标检测网络,并调整输入的图片大小为448x448。这样会导致网络一边需要学习检测任务,一边还要适应分辨率的变化。因此在yolo-v2版本中,预训练阶段直接采用448x448的图片进行训练。这个操作使mAP指标提升了4%。

  3. 引入Anchor Boxes

    移除了原网络中的全连接层,引入anchor boxes去预测bounding boxes。其具体操作是首先移除一个池化层,使最后输出的分辨率大一些;然后修改网络输入448->416,这一步的目的是保证最后输出的特征图size是奇数13x13(32倍关系)。这个操作使mAP指标下降了0.3,但是recall指标从81%上升到88%。

  4. Dimension Clusters

    Anchor boxes作为手动引入的一种先验,直接影响模型的性能。为了避免手动选择的Anchor box对模型性能带来的影响,作者使用K-means对训练集中的bounding boxes的尺寸进行聚类,自动选择更好的先验。聚类的时候如果采用欧氏距离,会导致大的boxes会比小boxes产生更多的误差,最后聚类的结果一定是受到大size的box的影响。所以作者自己定义一个距离度量:
    d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t r o i d ) d(box, centroid) = 1 - IOU(box,centroid) d(box,centroid)=1IOUbox,centroid
    利用box的聚类中的IOU来作为聚类的距离度量。根据大量实验验证,聚类中心个数为5个时候能在模型复杂度和recall之间有一个很好的平衡。因此每个cell会产生5个bounding boxes。

  5. 直接进行位置预测

    不预测偏移量,直接预测目标相对于grid cell的相对位置,而这个相对位置被约束在0-1之间。每个网格预测5个bounding boxes,对每一个bounding boxes预测tx,ty, tw, th和to 5个量:其中

    tx:基于cell左上角,x的平移量

    ty:基于cell左上角,y的平移量

    tw:宽度缩放

    th:高度缩放
    b x = σ ( t x ) + c x b y = σ ( t y ) + c y b w = p w e t w b h = p h e t h Pr ⁡ (  object  ) ∗ I O U ( b ,  object  ) = σ ( t o ) \begin{aligned} b_{x} &=\sigma\left(t_{x}\right)+c_{x} \\ b_{y} &=\sigma\left(t_{y}\right)+c_{y} \\ b_{w} &=p_{w} e^{t_{w}} \\ b_{h} &=p_{h} e^{t_{h}} \\ \operatorname{Pr}(\text { object }) * I O U(b, \text { object }) &=\sigma\left(t_{o}\right) \end{aligned} bxbybwbhPr( object )IOU(b, object )=σ(tx)+cx=σ(ty)+cy=pwetw=pheth=σ(to)
    其中(cx,cy)是cell相对于图片左上角的偏移量(0-1),pw和ph是bounding boxes的先验长度和宽度,其实就是之前的anchor boxes的size。采用这种直接预测bounding box的中心位置和Dimension Clusters后,mAP提升了5%。

  1. Fine-Grained Feature(细粒度特征)

    这一步类似于ResNet中的恒等连接,把前一层高分辨率的特征图,与本层输出的特征图进行concat,作为下一层的输入。其实就是在卷积层的最后两层执行这个操作,最后的检测器是在这个concat特征图上做进一步的工作的。这个操作使网络性能提升了1%。

  2. 多尺度训练

    为了让模型能适应不同的size的输入,每10batches,网络从{320,352,…,608}(strides=32)中随机选择一个输入size,修改输入的大小继续训练。

2.2 联合多个数据集的训练机制

​ 由于目标检测数据集的规模相较于分类任务数据集小很多,但是在目标检测任务中也有分类的任务,如何利用这些分类数据集来提升目标检测网络的性能?作者提出了一个可以联合多个数据集的训练机制。作者将分类和目标检测数据集混合在一起,当网络看到一个图片来自于目标检测数据集的,则网络反向传播完整的loss;如果该图片来自于分类任务的数据集,则网络只反向传播分类误差。

​ 但是直接混合两个数据集有个问题是,目标检测任务中label很少,而分类任务的label很多,比如在检测任务中dog表示所有的狗,而在分类任务中则有很多不同种类的狗的标签。因为分类网络最后的输出是一个向量,计算该图片在所有类别上的概率分布,这就要求每个类别之间要互斥(mutually exclusive),显然直接混合两个数据集是不能保证各个类别之间是互斥的。

​ 所以作者引入WordNet,把图片的label输入到WordNet中,会生成一个有向图,再将这个有向图按照如下所述的规则修改成一棵树:

  1. 把所有到根节点路径为1的节点加入到tree中;
  2. 然后迭代的检查剩余的concepts,按照尽可能让树生长少的方式添加path;(选择路径短的)

最后生成的WordTree如下:

在预测的时候,为每一个节点计算条件概率,要计算某一个类别的概率,可以累乘从根节点到该类别节点上所有的条件概率:

P r ( N o r f o l k t e r r i e r ) = P r (  Norfolk terrier  ∣  terrier  ) ∗ P r (  terrier  ∣  hunting  dog ⁡ ) ∗ . . . ∗ ∗ P r (  mammal  ∣  animal  ) ∗ P r (  animal  ∣  physical object  ) Pr(Norfolk terrier)=P r(\text { Norfolk terrier } | \text { terrier }) \\ *P r(\text { terrier } | \text { hunting } \operatorname{dog}) \\*...* \\ * P r(\text { mammal } | \text { animal }) \\* P r(\text { animal } | \text { physical object }) Pr(Norfolkterrier)=Pr( Norfolk terrier  terrier )Pr( terrier  hunting dog)...Pr( mammal  animal )Pr( animal  physical object )

​ 在检测任务中,不假设每个图片都有一个目标,而是让网络输出一个Pr(physical object)表示该图片中有目标的概率,同时输出的还有bounding box和WordTree上的概率分布,然后自上而下的找一个最大的置信度的类别作为预测的类别。

​ 进一步的,作者将ImageNet完整数据集和COCO数据集进行联合,生成的WordTree包含9418个类别,并在YOLO-v2上构造了YOLO9000。YOLO9000是将YOLO-v2的anchor box数量由5个调整到3个,为了避免两个数据集的数据不均衡,对COCO数据集进行过采样,使两个数据集规模大致为4:1。

​ 当发现图片来自目标检测数据集,反向传播目标,bbox和分类误差:

​ 当发现图片来自分类数据集,选择一个最好的bounding box,反向传播目标,分类误差:

3. 总结

  1. 使用WordNet综合多个数据集的方法值得借鉴,其实原理很像是把labels统一到一个空间中;
  2. 针对不同的数据集数据,反向传播不同的loss;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值