论文:MegDec

提出了一个 Large Mini-Batch Object Detector

一 Introduction

在图片分类任务中,会使用 large mini-batch 明显提高训练速度,而且还不会影响准确率,例如 ResNet-50 以 8192 或者16000 的batch 训练,可以在 半小时内训练完,且精度没有很多损失
然而在目标检测任务中,mini-batch都很小(2-16)。
在R-CNN系列框架中,2 images被广泛应用,即使 state-of-art 的 RetinaNet 和 Mask R-CNN也只是提高到了16。

使用小的mini_batch有一些缺点:

  1. 训练慢
  2. 没有对batch normalization提供准确的统计,通常分类模型使用 256 batch 来获得更好的 batch normalization statistics,size 如果很小,我们就不能准确获得 BN 的统计
  3. positive 和 negative examples 更可能会失衡,small mini-batch 更容易失衡
    这里写图片描述

为什么不可以直接增加 mini-batch size:
根据学习率等效原则,大的 mini-batch size 需要更大的学习率来获得准确率,但是大的学习率会阻碍收敛,如果使用小的学习率促进收敛又会得到不好的结果。
我们提出了 warmup 学习率策略,在 very early stage 增加学习率。其次提出 Cross-GPU Batch Normalization(CGBN)方法,它不仅可以提高准确率还可以使训练 stable。最重要的是,可以在提高batch-size的同时保持准确率。

MegDet可以在更少的时间上获得更高的准确率,我们的主要贡献在于:

  • 在目标检测下,对线性缩放规则有了新的解释
  • 首次将BN应用到目标检测框架中,不仅有益于准确率,也更容易收敛,尤其是在 large mini-batch 的情况下
  • 首次在四小时内训练完COCO(128GPUs)
  • 获得了COCO 2017 检测冠军

二 Related Work

CNN-based detectors:在现存的CNN-based detectors可以分为两类,one-stage (SSD , YOLO , RetinaNet)和 two-stage (Faster R-CNN , R-FCN , Mask-RCNN)。
one-stage detectors 一般会运行的更快

RetinaNet 基于 focal loss ,可以有效减少 false positives

因为 FPN 在 accuracy 和 implementation 有一个更好的 trade-off,我们使用 FPN 网络当做 default detection framework.
Large mini-batch training在图片分类中有很多的研究,但是在目标检测中很少有讨论。

三 Approach
mini-batch 在收敛速度和精度有一个trade-off ,为解决这一个问题我们先讨论mini-batch 的学习率策略。
这里写图片描述
N 为 mini-batch size,第一项为 task specific loss 第二项是正则化项,对于 Faster R-CNN 来说第一项包括:RPN的 prediction loss,bounding-box regression loss 和最后的 prediction loss,bounding-box regression loss
在 mini-batch SGD 方法中,如果 batch size 从 N 变为 kN,则学习率需要调整以获得有效的训练,以前的方法使用 Linear Scaling Rule 方法,将学习率从 r 变为 kr,这个方法基于 gradient equivalence assumption.这个方法在分类和检测中很适用,但是我们会提出一个不同的方法。
我们希望获得一个 方差的平衡,即小 batch 上的梯度方差和大 batch 上的梯度方差相同。
最后得到的和 gradient equivalence 的到的结果相同,
Warmup strategy
linear scaling rule 可能在训练的初始阶段并不适用,因为初期 weight 变化的很 dramatic,为解决这个使用 Linear Gradual Warmup 的方法,先设置 learning rate 很小,然后以 constant speed 在每一个迭代后增加,直到等于 kr,这个策略可以帮助收敛,但是并不能帮助我们使用大 batch ,接下来 Cross-GPU Batch Normalization 用来训练大 batch.
Cross-GPU Batch Normalization
Batch Normalization 对于深度卷积网路十分重要,没有它网络会花费大量的时间,甚至不能收敛,然而,之前的 detection 任务中,使用 ImageNet pre-trained model 初始化,之后 batch normailzation 层就固定不变了。我们试图在目标检测中完成 batch normalization.
不同于分类,目标检测需要处理不同尺寸的目标,有的目标很小,所以他的 input 需要一个高的 resolution,这样,在一台机器上就限制了 batch 的大小,所以我们需要在多 GPU 上进行 batch normalization 来获得一个充分的统计。
如下为 CGBN 的伪代码:
这里写图片描述
如下为流程图:
这里写图片描述

四 Experiments:
没有batch normalization:
batch size:32 , 训练有时会失败
batch size:64,训练不能收敛,将学习率降低一半可以收敛
batch size:128,即使降低学习率也不可以收敛
我们可以发现和 batch size 为 16 相比,batch size 32 在精度不降的情况下获得了增长;低的学习率;较低的学习率(in mini-batch 64)会获得一个明显的精度损失;batch 和学习率大的时候训练困难

with CGBN:
使用 CGBN 和 warmup 可以获得收敛,不管 batch size 是多少,这样我们就可以不用担心因为使用小的 learning rate 而导致精度损失了
这里写图片描述
主要的结果如上图所示,我们可以发现,
首先,随着 batch size 的增加,accuracy 基本保持在一个 level,但是都比 baseline(16-base) 的结果要好;同时,带来时间上的减少。
其次,最好的 BN size 是 32,如果太少则 BN 统计不够准确,导致一个不好的表现,如果增加 size 到 64,准确率开始下降。这个和图像分类不同。图像是 BN size 和准确率的关系???
然后,长的训练时间可以让 accuracy 获得轻微的提高
最后,大批次的在训练初期比小批次的差,但是后来就追上了,这个和分类也不同,分类任务中,不同批次的 accuracy 曲线和 scores 都很接近

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值