在计算机视觉领域,图像分类是非常重要的基本问题,是图像目标检测、图像分割、图像检索、视频理解、物体跟踪、行为分析等其他高层视觉任务的基础,在实际场景中,有着广泛应用。飞桨(PaddlePaddle)视觉模型库图像分类持续提供业内领先的分类网络结构训练方法以及在imagenet 1000分类任务上的预训练模型。目前,已开源10种不同网络结构,25个预训练模型,包括当前效果最优的ResNet50(top-1:79.84%),助力用户提高构建模型的效率,大大减轻“炼丹”的烦恼。
一、当前效果最优的ResNet50预训练模型
ResNet是近几年非常流行的卷积神经网络结构,其创造性提出的残差结构,一举在ILSVRC2015比赛中取得冠军,并且获得计算机视觉顶级会议CVPR 2016的最佳论文。其中50层的网络结构(ResNet50)的效果优化,备受学术界和工业界关注。
一方面,广泛使用的ResNet50在imagenet 1000分类任务上,top1识别准确率可以达到较高的识别准确率76.5%;另一方面对一张224*224的图像进行分类,预测效率高,适合研究探索新方法和实际场景应用,在TeslaP4卡测试,如果使用飞桨核心框架Paddle Fluid预测,平均预测时间是8.787ms,进一步结合TensorRT预测,平均预测时间可以加速到5.434ms。「Bag of Tricks for ImageClassification with Convolutional Neural Networks」[1]汇总了近些年ResNet50改进工作,通过采用网络结构微调、余弦学习率衰减、标签平滑、mixup以及知识蒸馏技巧,在预测效率基本不变的前提下,将ResNet50的top1识别准确率从76.5%提升到79.29%。
百度视觉技术团队,基于百度深度学习平台飞桨,不仅复现了这些技巧,而且对知识蒸馏进行改进,将ResNet50的top1识别准确率从79.29%提升到79.84%,同时将这些技巧用于训练其他分类网络结构,提升这些网络预训练模型的能力。以下将会对网络结构微调和知识蒸馏两部分进行介绍。
对于ResNet网络结构微调,「Bag of Tricks for ImageClassification with Convolutional Neural Networks」[1]中提到了三种:ResNet-B、ResNet-C和ResNet-D。ResNet-B与标准的ResNet主要区别是每个残差模块特征图下采样的位置不同。ResNet-C主要改动如下,将输入图像后面第一个7x7的卷积核换成3个3x3的卷积核,在不改变初始感受野的情况下能带来更好的性能。ResNet-D的改动也是在每个残差模块,在stride为2的1x1的卷积核做下采样前接一个2x2的avg-pool,这样可以在几乎不增加计算量的同时,有效避免信息丢失。ResNet(B,C,D)改动如下图所示。
在设计知识蒸馏技巧时,我们的基本思想是在student model有预训练的情况下,让student model直接学习teacher model的softmax输出而不考虑真实label的情况会有更低的泛化误差,采用这种非常简单的方式,可以有效将teacher model的能力迁移到student model,如下图所示,将ResNet152_vd(top1:80.59%)作为teacher model,将已训练好的ResNet50_vd(top1:79.12)作为student model, 学习率采用带warmup的余弦下降的方式训练100epoch。最终ResNet50_vd网络结构 top1的识别准确率可以达到79.84%。这个预训练模型已经开源,其训练代码不久将会发布。
下表显示了每一次网络结构改动及增加训练策略后在imagenet 1000分类任务上top1的识别准确率,其中LSR为Label Smoothing Regularization的缩写。
二、飞桨已开源的图像分类预训练模型简介
AlexNet[2]
2012年,Alex等人提出的AlexNet网络在ImageNet大赛上以远超第二名的成绩夺冠,卷积神经网络乃至深度学习引起了广泛的关注。AlexNet使用relu作为CNN的激活函数,解决了sigmoid在网络较深时的梯度弥散问题。训练时使用Dropout随机丢掉一部分神经元,避免了模型过拟合。在CNN中使用重叠的最大池化(步长小于卷积核)。此前CNN中普遍使用平均池化,使用最大池化可以避免平均池化的模糊效果,同时重叠效果提升了特征的丰富性。从某种意义上说,AlexNet引爆了神经网络的研究与应用热潮。
VGG 系列模型[3]
VGGNet是牛津大学计算机视觉组和DeepMind公司共同研发一种深度卷积网络,2014年在ILSVRC比赛上获得了分类项目的第二名和定位项目的第一名,其网络设计思想直接影响了往后这些年的CNN网络设计,进一步推动了基于深度学习的计算机视觉的发展。当前飞桨分类模型库提供了VGG11,VGG13,VGG16以及VGG19四个网络结构预训练模型。
GoogLeNet[4]与InceptionV4[5]
GoogLeNet又名InceptionV1,是Inception网络的开山鼻祖,GoogLeNet创造性地使用了1x1的卷积来进行升降维并且在多个尺寸上同时进行卷积再聚合,在相同的计算量下能提取到更多的特征,从而提升训练结果。此后Inception系列网络在不断升级,InceptionV4更是达到了当时的state of the art的效果,在各类AI竞赛中,也总能看到InceptionV4的影子。当前飞桨分类模型库提供的InceptionV4由于采用了label_smoothing与mixup混合训练的方式,将论文的指标提高了近0.8个点,成为目前开源最好的InceptonV4的预训练模型。
MobileNet系列模型[6] [7]
MobileNet是谷歌大脑为移动端设计的网络,它的出现一定程度上满足了移动端应用深度学习技术的需求,截止到现在,MobileNet网络一共有三代,每一代都在上一代的基础上进行了改进与优化,使得其称为名副其实的速度快,精度高,存储空间小的网络。
当前飞桨分类模型库提供了MobileNetV1和MobileNetV2的预训练模型(1x),其精度指标都高于论文指标,其他大小的预训练模型将在不久后开源。
ShuffleNet系列模型[8] [9]
随着移动端网络的需求的发展,移动端网络也成为很多科研机构的研究对象。旷视科技在2017,2018年相继提出的轻量级可用于移动设备的卷积神经网络ShuffleNetV1与ShuffleNetV2。其与MobileNet系列网络一块促进了移动端网络的发展。当前飞桨分类模型库提供了ShuffleNetV2(1x)的预训练模型,其精度指标都高于论文指标。其他大小的预训练模型将在不久后开源。
ResNet 系列模型[10]
ResNet创新性的提出了残差结构,一举在ILSVRC2015比赛中取得冠军,top5错误率为3.57%。斯坦福大学的Joyce Xu将ResNet称为「真正重新定义了我们看待神经网络的方式」的三大架构之一。在最新发布的飞桨分类预训练模型包括ResNet18,ResNet34,ResNet50,ResNet101和ResNet152。
ResNet系列模型的改进版[1]
由于ResNet系列网络的泛化性能强,‘性价比’高,从其诞生以来,就成为学术界和工业界青睐的网络,因此其改进版的网络也越来越多。在最新发布的飞桨分类预训练模型包括ResNet50_vc,ResNet50_vd,ResNet101_vd,ResNet152_vd和ResNet200_vd。
ResNeXt系列模型及改进版[11]
ResNeXt是ResNet和InceptionV4的结合体,然而ResNext不需要人工设计复杂的Inception结构细节,而是每一个分支都采用相同的拓扑结构。ResNeXt的本质是分组卷积,通过变量基数(Cardinality)来控制组的数量。与ResNet 参数量相同的条件下,ResNeXt表现出更低的泛化误差。在最新发布的飞桨分类预训练模型包括有ResNeXt101_64x4d,ResNeXt101_vd_64x4d,其他ResNeXt预训练模型将在不久后开源。
SE_ResNeXt 系列模型及改进版[12]
SE 全称 Sequeeze-and-Excitation,在ILSVRC 2017 的分类项目中取得了第一名的成绩。在 ImageNet 数据集上将 top-5 错误率从原先的最好成绩 2.991% 降低到 2.251%。
最新发布的飞桨预训练模型包括SE_ResNeXt50_32x4d,SE_ResNeXt101_32x4d,SE154_vd.
更多细节详情见:
https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification?fr=gzh
三、总结
无论是学术研究,还是工业应用,图像分类以及在imagenet上预训练模型,都起着非常重要的作用。本文介绍的图像分类技术以及预训练模型已经应用到百度视觉能力方方面面,包括以图搜索、图像分类、OCR、人脸识别、视频理解等方向。这些视觉能力不仅用于内部产品,也通过百度AI开放平台持续对外输出,目前已对外开放了包括人脸识别、文字识别(OCR)、图像审核、图像识别、图像搜索等在内的70多项基础能力,为开发者和合作伙伴提供全栈式计算机视觉能力。
百度视觉技术团队会持续跟进业界前沿,基于百度深度学习平台飞桨,为用户提供更多新的图像分类预训练模型(包括NasNet系列,MobileNetV3,EfficientNet系列等),敬请期待。
参考文献
[1]Tong He, Zhi Zhang, Hang Zhang, Zhongyue Zhang, Junyuan Xie, Mu Li, Bag of Tricks for Image Classificationwith Convolutional Neural Networks, In CVPR 2019
[2] A. Krizhevsky, I.Sutskever, and G. E. Hinton. Imagenet classification with deep convolutionalneural networks. In NIPS, 2012.
[3] O. Russakovsky, J. Deng, H.Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M.Bernstein, et al. Imagenet large scale visual recognition challenge. IJCV.
[4] C. Szegedy, W. Liu, Y. Jia,P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich.Going deeper with convolutions. In CVPR, 2015
[5] C. Szegedy, S.Ioffe, and V. Vanhoucke. Inception- v4, inception-resnet and the impact ofresidual con- nections on learning. In ICLR Workshop, 2016.
[6] Howard, A.G., Zhu,M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., An- dreetto, M., Adam, H.: Mobilenets: Efficient convolutional neuralnetworks for mobile visionapplications. arXiv preprint arXiv:1704.04861 (2017)
[7] Sandler, M.,Howard, A., Zhu, M., Zhmoginov, A., Chen, L.C.: Inverted residuals and linearbottlenecks: Mobile networks for classification, detection and segmenta- tion. arXiv preprint arXiv:1801.04381 (2018)
[8] Zhang, X., Zhou, X., Lin,M., and Sun, J. Shufflenet: An ex- tremely efficient convolutional neuralnetwork for mobile devices. CVPR, 2018.
[9] Ma, N., Zhang, X., Zheng,H.-T., and Sun, J. Shufflenet v2: Practical guidelines for efficient cnnarchitecture design. ECCV, 2018.
[10] He, K., Zhang,X., Ren, S., and Sun, J. Deep residual learning for image recognition.CVPR,pp. 770–778, 2016.
[11] Xie, S.,Girshick, R., Dolla ́r, P., Tu, Z., and He, K. Aggregated residualtransformations for deep neural networks. CVPR
[12] Hu, J., Shen, L., and Sun, G. Squeeze-and-excitation net- works. CVPR,2018.