作者:朱睿

京东AI研究院提出 ScratchDet:随机初始化训练SSD目标检测器

不久之前,CVPR 2019 接收论文公布:在超过 5100 篇投稿中,共有 1300 篇被接收,接收率达 25.2%。本文介绍了京东AI研究院被接受的一篇 Oral 论文,作者从优化的角度出发,通过实验解释了梯度稳定手段之一的 BatchNorm 是如何帮助随机初始化训练一阶段检测器 SSD,进而结合了 ResNet 与 VGGNet 来加强对小物体的检测。值得一提的是,本文第一作者朱睿还是一位大四学生,就读于中山大学数据科学与计算机学院,现于京东 AI 研究院视觉与多媒体实验室实习。

使用 ImageNet 预训练的网络模型能够帮助目标任务(物体检测、语义分割、细粒度识别等)快速收敛,然而使用预训练模型会带来诸多限制,其中一个问题就是改动特征提取网络的结构成本相对较高,需要耗时巨大的重新预训练来适应不同需求的任务。那么,如果不使用预训练模型,进行随机初始化训练,达到较高准确率的某些必要条件是什么?

本文介绍了我们今年的 CVPR Oral 工作《ScratchDet: Exploring to Train Single-Shot Object Detectors from Scratch》,作者从优化的角度出发,通过实验解释了梯度稳定手段之一的 BatchNorm 是如何帮助随机初始化训练一阶段检测器 SSD,进而结合了 ResNet 与 VGGNet 来加强对小物体的检测。

文章的代码后续会公布到 https://github.com/KimSoybean/ScratchDet,并且 contribute 到 mmdetection 中。

论文地址:https://arxiv.org/abs/1810.08425v3

动机

现有的检测训练任务存在三个限制:

  • 分类任务与检测任务的 Learning bias: 一方面是两者损失函数的不同,一方面是两者对平移不变性的敏感度不同,还有另外一方面是数据集的差异:ImageNet 数据集是单图单物体,COCO & PASCAL VOC 数据集是单图多物体。

  • 如果想要改动检测模型中的特征提取网络的结构,需要对网络重新预训练再进行检测任务的 finetune,而 ImageNet 预训练实验的代价比较大。这个问题在移动端、CPU 实时检测器等设计中尤为突出,比如:Pelee,Tiny-SSDYOLO-LITE,Fire-SSD,Tiny-YOLO,Tiny-DSOD,MobileNetV2 等等。常用的 VGG-16、ResNet 的计算量以及参数量对于移动端的负载较大,而设计小网络的每次修改都需要重新在 ImageNet 上重新预训练,时间代价与计算资源消耗都比较大。再比如像 DetNet,想要设计一种专用于检测的网络,用在 ImageNet 预训练的实验就要花很多的时间。

  • Domain Transfer 问题,比如从 ImageNet 自然与生活场景图像迁移到医疗图像中(X 光图,核磁共振图)的癌症检测(S4ND)、卫星图像检测(You Only Look Twice)是否有用,不同域之间的迁移是否仍然能发挥作用?

分析

早期讨论随机初始化训练的工作 DSOD 将必要条件归结到一阶段检测器和 DenseNet 的 dense layer wise connection 上,但是这样做很大程度限制了网络结构的设计。我们想找到随机初始化训练检测器的某些本质的原因。受到 NeurIPS2018《How Does Batch Normalization Help Optimization?》这篇文章的启发,通过理论和实验说明 BN 在优化过程中发挥的作用:

  • 梯度更加稳定,更加可预测。

  • 计算梯度时可采用更大的步长,即更大的学习率来加速训练。

  • 防止 loss 函数解空间突变,既不会掉入梯度消失的平坦区域,也不会掉入梯度爆炸的局部最小。

沿着这个思路我们在 SSD300 检测框架上给 VGG 网络与检测子网络分别加上了 BN 来进行随机初始化训练(PASCAL VOC 07+12 训练,07 测试),调整学习率之后,得到的最好结果 78.7mAP,比直接随机初始化训练 SSD 的结果(67.6)高 11.6,比原 SSD300(77.2)高 1.5,比使用预训练模型 VGG-16-BN(78.2)高 0.6。实验细节在论文的实验部分有描述。

从左到右的 3 幅图分别是训练 loss,梯度的 L2 Norm,梯度的波动程度。通过这三幅图能够从优化角度分析,为什么 BN 能够帮助随机初始化训练检测器,蓝色曲线代表直接对 SSD 使用 0.001 的学习率做随机初始化训练,红色曲线在蓝色曲线的基础上在 VGG 网络上加了 BN,绿色曲线在红色曲线的基础上使用了 10 倍的学习率。可以看到:从蓝色到红色,给特征提取网络添加了 BN 之后,梯度的波动程度大幅下降,梯度趋于稳定,优化空间更加平滑,训练 loss 下降,mAP 从 67.6 升高到 72.8。而从红色到绿色,平滑的优化空间允许使用更大的学习率,loss 进一步下降,mAP 也从 72.8 升高到 77.8。我们在检测子网络(detection head)也做了一样设置的实验,得出了相似的结论与梯度分析图,具体请参考论文。

我们在 SSD300 上做了尽可能详细的对比实验,包括在 3 个不同学习率(0.001, 0.01, 0.05)下给特征提取子网络(VGG)添加 BN,给检测子网络(detection head)添加 BN,给全部网络添加 BN,给全部网络不添加 BN,以上四者的随机初始化训练以及对比预训练 fine-tune 实验。可以看到,在为整个检测网络的不同部分添加 BN 之后会有不同程度的提升,而提升最高的是为整个网络添加 BN,在 VOC2007 测试集上(使用 VOC07+12 trainval 训练)可以达到 78.7mAP。

借着随机初始化训练带来的优势,可以对特征提取网络进行任意改动。之后我们借鉴了 VGGNet 和 ResNet 的优点,最大程度保留原图信息,来提升对小物体检测的性能(论文中输入图像大小是 300X300,小物体较多)。

分析 ResNet 和 VGGNet 的优缺点

SSD 的升级版论文 DSSD 中,我们将 SSD 的特征提取网络从 VGG-16 替换成了 ResNet-101,所得实验结果汇总如下表:

ResNet-101 在 ImageNet 的 top-5 error 上比 VGG-16 低了 2.69%,但是在 SSD300-VOC 的结果却低于 VGG-16,为什么?跟 VGG-16 相比,ResNet-101 的优点是分类能力强,缺点是对小物体识别能力较差,因为第一个卷积层的 stride=2,在初始输入的图片上就进行下采样,会损失某些原图信息,尤其是小物体的信息。

1) 在 VOC_300 时,ResNet-101 的缺点>优点,输入图片较小,图片中小物体数目变多,缺点被放大;且类别只有 20 类,不能发挥 ResNet 强大的分类能力,在 SSD 上结果低于 VGG-16。

2) 在 VOC_512 时,ResNet-101 的缺点<优点,输入图片变大,图片中小物体数目变少,缺点被缩小,在 SSD 上结果高于 VGG-16。

3) 在 COCO 上时,ResNet-101 的缺点<优点,任务类别有 80 类,是 VOC 的 4 倍,ResNet-101 能充分发挥分类能力,所以无论输入 300x300 或者 512x512,在 SSD 上结果均高于 VGG-16。

当然这里的结论需要进一步结合数据集本身的特性来验证,比如数据集规模 vs 模型参数量,数据集每张图片平均的 instance 数目,数据集小物体数量等等因素。

因此我们借鉴了 ResNet 与 VGGNet 的优点,首先把 ResNet 的第一个卷积层的 stride 从 2 改成 1,也就是取消第一个下采样操作,并且参照了 DSOD 的方法,替换第一个卷积层为 3 个 3x3 卷积层:这样做的目的是,尽可能保持原图信息不损失,并且充分利用。注意:在将新网络替换到 SSD 框架上时,仍然最大程度保证实验的公平性。首先,用于检测的特征图在论文中保持 38×38, 19×19, 10×10, 5×5, 3×3, 1×1 的大小,并没有使用大的特征图;其次,保证每个用于检测的特征图的 channel 数目相同。

  • (a) 原 ResNet-18: 结果为 73.1 mAP。

  • (b) ResNet-18-A: 去掉了 ResNet-18 的 max-pooling 层,即取消第二个下采样操作,结果为 75.3 mAP。

  • (c) ResNet-18-B: 将 ResNet-18 的第一个卷积层的 stride=2 改为 1,即取消第一个下采样操作,结果为 77.6 mAP。

  • (d) Root-ResNet-18: 将 ResNet-18-B 的第一个 7x7 卷积核替换成 3 个 3x3 卷积,结果为 78.5mAP。

分析:在 300x300 大小的输入图像上(小物体较多):

  • 对比 (a) 与 (c): 取消第一个下采样操作,提升了 4.5mAP。

  • 对比 (a) 与 (b): 取消第二个,保留第一个下采样操作 , 提升 2.2mAP。

  • 对比 (b) 与 (c): 是否对原图进行下采样,会有 2.3mAP 的影响。

  • 对比 (c) 与 (d): 替换 7x7 为 3 个 3x3 卷积核,使用更加冗余的特征会提升性能。

之后,我们将 SSD 在特征提取网络后面添加的多个卷积层替换为残差模块,减少了参数量,并且提升了 FPS(SSD300-Root-Res34: 20FPS->25FPS,Tesla P40 测试), 而且检测准确率没有下降(在 VOC07 上测试,80.4mAP):

最后,我们使用了 Root-ResNet-34 来做随机初始化训练,得到较好的检测结果:

  • (07+12 训练,07 测试):80.4 mAP ;

  • (07++12 训练,12 测试):78.5 mAP;

  • (COCOtrainval35k,COCO 测试):32.7 AP;

值得注意的是,在 COCO 测试集上 AP@S 13.0,对比其他相似输入大小的检测器,在小物体检测结果相对较好。

我们还对比了训练时间,使用 mmdetection 检测框架(使用了 repeat dataset 加速训练 trick),在输入为 300x300 的时候,随机初始化训练大约需要 84.6 小时,而使用预训练模型 fine-tune 需要 29.7 小时。但是相比起 ImageNet 数以百万计的图片数目与几周的训练时间来说,随机初始化训练检测器使用的时间相对更少的,可以被人们所接受。

小结

目前,在我们 JD AI Research 已经有几个小伙伴成功把随机初始化训练用在其他任务上,比如:

  1. 目前 JD AI Reserach 在 WIDER FACE 人脸检测竞赛排名第一的 ISRN,使用 GN 与两倍 epoch 随机初始化训练来重新设计用于检测小人脸并且相对节省显存的网络。

  2. 对文字检测中的算法 EAST 成功随机初始化训练。

ImageNet 数据集深深地影响了计算机视觉的发展,相信未来会有许多好的工作解释清楚深度学习迁移学习中的奥秘,提出更加高效的训练策略,打开深度学习的黑箱。

注:除了本文内容,作者还写了一篇番外,对比了Kaiming He 以及其他一些有做随机初始化训练的论文,并且总结分享了一些相关经验,感兴趣的读者可参阅《番外篇:关于随机初始化训练检测器的一些想法》。

参考论文:

  • ISRN: https://arxiv.org/abs/1901.06651

  • DSOD:https://arxiv.org/abs/1708.01241

  • ScratchDet:https://arxiv.org/abs/1810.08425v3

  • EAST:https://arxiv.org/abs/1704.03155v2

  • Pelee: https://arxiv.org/abs/1804.06882

  • Tiny-SSD: https://arxiv.org/abs/1802.06488

  • YOLO-LITE: https://arxiv.org/abs/1811.05588

  • Fire-SSD: https://arxiv.org/abs/1806.05363 

  • Tiny-YOLO: https://arxiv.org/abs/1506.02640

  • Tiny-DSOD: https://arxiv.org/abs/1807.11013

  • MobileNetV2: https://arxiv.org/abs/1801.04381

  • S4ND: https://arxiv.org/abs/1805.02279

  • DSSD: https://arxiv.org/abs/1701.06659

  • You Only Look Twice: https://arxiv.org/abs/1805.09512

  • Understanding Batch Normalization: 

  • https://arxiv.org/abs/1806.02375

  • How Does Batch Normalization Help Optimization: 

  • https://arxiv.org/abs/1805.11604

  • mmdetection: https://github.com/open-mmlab/mmdetection

作者简介:

  • 朱睿,中山大学数据科学与计算机学院大四学生,现于京东 AI 研究院视觉与多媒体实验室实习。https://kimsoybean.github.io/

  • 张士峰,中科院自动化所 2015 级直博生,导师李子青研究员,研究方向为基于深度学习的物体检测,主要包括通用物体检测、人脸检测、行人检测。目前已发表论文 16 篇,其中第一作者论文 11 篇,包括 3 篇 CVPR、IJCV、ICCV、ECCV、IJCAI、AAAI 等,获 CCF-CV 学术新锐奖、百度奖学金等荣誉。http://www.cbsr.ia.ac.cn/users/sfzhang/

  • 王晓波,京东第 2 届博士技术管培生(DMT),现任京东 AI 研究院 CV 算法工程师。博士毕业于中科院自动化研究所,发表论文 20 余篇,包括 CVPR,ICCV,AAAI,IJCAI 等国际会议。目前主要研究方向为 人脸识别目标检测和模型压缩。http://www.cbsr.ia.ac.cn/users/xiaobowang/

  • 石海林,现任京东 AI 研究院资深研究员,博士毕业于中科院自动化所,专注于人脸计算、物体检测、元学习等方向研究。http://hailin-ai.xyz/

理论目标检测CVPR 2019计算机视觉
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

元学习技术

元学习是机器学习的一个子领域,是将自动学习算法应用于机器学习实验的元数据上。现在的 AI 系统可以通过大量时间和经验从头学习一项复杂技能。但是,我们如果想使智能体掌握多种技能、适应多种环境,则不应该从头开始在每一个环境中训练每一项技能,而是需要智能体通过对以往经验的再利用来学习如何学习多项新任务,因此我们不应该独立地训练每一个新任务。这种学习如何学习的方法,又叫元学习(meta-learning),是通往可持续学习多项新任务的多面智能体的必经之路。

YOLO技术

YOLO 模型最早是由 Joseph Redmon 等人在 2015 年发布的,并在随后的两篇论文中进行了修订。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

MobileNets技术

MobileNet是专用于移动和嵌入式视觉应用的卷积神经网络,是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网络。通过引入两个简单的全局超参数,MobileNet在延迟度和准确度之间有效地进行平衡。MobileNets在广泛的应用场景中有效,包括物体检测、细粒度分类、人脸属性和大规模地理定位。

物体识别技术

计算机视觉领域的一个分支,研究物体的识别任务

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

百度机构

百度(纳斯达克:BIDU),全球最大的中文搜索引擎、最大的中文网站。1999年底,身在美国硅谷的李彦宏看到了中国互联网及中文搜索引擎服务的巨大发展潜力,抱着技术改变世界的梦想,他毅然辞掉硅谷的高薪工作,携搜索引擎专利技术,于 2000年1月1日在中关村创建了百度公司。 “百度”二字,来自于八百年前南宋词人辛弃疾的一句词:众里寻他千百度。这句话描述了词人对理想的执着追求。 百度拥有数万名研发工程师,这是中国乃至全球最为优秀的技术团队。这支队伍掌握着世界上最为先进的搜索引擎技术,使百度成为中国掌握世界尖端科学核心技术的中国高科技企业,也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一。

http://home.baidu.com/
京东机构

京东(股票代码:JD),中国自营式电商企业,创始人刘强东担任京东集团董事局主席兼首席执行官。旗下设有京东商城、京东金融、拍拍网、京东智能、O2O及海外事业部等。2013年正式获得虚拟运营商牌照。2014年5月在美国纳斯达克证券交易所正式挂牌上市。 2016年6月与沃尔玛达成深度战略合作,1号店并入京东。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

暂无评论
暂无评论~