【导读】CVPR 2019细粒度图像分类workshop的挑战赛公布了最终结果:中国团队DeepBlueAI获得冠军。本文带来冠军团队解决方案的技术分享。

近日,在Kaggle上举办的CVPR 2019 Cassava Disease Classification挑战赛公布了最终结果,国内团队 DeepBlueAI 获得冠军。

国际计算机视觉与模式识别会议(CVPR)是IEEE一年一度的学术性会议,CVPR是世界顶级的计算机视觉会议之一,会议的主要内容是计算机视觉与模式识别技术。CVPR 2019 在洛杉矶长滩举行,FGVC6 Workshop也将作为 CVPR 2019 的一部分如期召开。FGVC6 Workshop 共有十个挑战赛,每个都代表了细粒度视觉分类在某个细分领域的挑战。

FGVC全称为Fine-Grained Visual Categorization,细粒度图像分类,即区分不同的动物和植物、汽车和摩托车模型、建筑风格等,是机器视觉社区刚刚开始解决的最有趣和最有用的开放问题之一。细粒度图像分类在于基本的分类识别(对象识别)和个体识别(人脸识别,生物识别)之间的连续性。相似的类别之间的视觉区别通常非常小,因此很难用当今的通用识别算法来解决。

今年是FGVC举办的第六届比赛,往届比较著名的比赛诸如iNaturalist和iMaterialist,前者侧重于区分自然界不同的生物,后者则是侧重于区分不同的人造物体。

不同于传统的广义上的分类任务,FGVC的挑战致力于子类别的划分,需要分类的对象之间更加相似,例如区分不同的鸟类、不同的植物、不同的日用品等。

赛题介绍

Cassava Disease Classification挑战赛是一个根据木薯的叶子区分不同种类的木薯疾病的任务。Cassava 译为木薯,是非洲第二大碳水化合物供应者,因为其能够承受恶劣的环境。因此木薯是小农种植的一种关键的粮食安全作物,在撒哈拉以南非洲,至少80%的小农家庭种植木薯,而病毒性疾病是低产量的主要来源。

在这次比赛中,主办方引入一个包含5种类别的木薯叶疾病的数据集,该数据集源于在乌干达定期调查中收集到的9436标记图像,主要从农民在自家田地里拍摄的图片,然后由国家作物资源研究所(NaCRRI)与Makarere大学的人工智能实验室共同对图像进行标注。

数据集包括木薯植株的叶子图像,9,436张带注释的图像和12,595张未标记的图像。参与者可以选择使用未标记的图像作为额外的训练数据。目标是学习一个模型,使用训练数据中的图像将给定的图像分类为这4个疾病类别或健康叶子的类别。

团队成绩

题目特点以及常用方法

细粒度图像分类 (Fine-grained imagecategorization), 又被称作子类别图像分类 (Sub-category recognition)。其目的是对属于同一基础类别的图像进行更加细致的子类划分, 但由于子类别间细微的类间差异以及较大的类内差异, 更传统的图像分类任务相比, 细粒度图像分类难度明显要大很多。从下图中的木薯的叶子可以看出,不同的叶子病变情况长相非常相似,此外同一类别由于姿态,背景以及拍摄角度的不同,存在较大的类内差异。

细粒度图像分类的常用方法可以分为两种,分别是基于强监督信息的方法和仅使用弱监督信息的方法。前者需要使用对象的边界框和局部标注信息,后者仅使用类别标签,Cassava Disease Classification是一种弱监督信息的细粒度识别,一般采用预训练模型finetune,并结合训练技巧对模型精调。

实验模型:SENet、ResNet、DenseNet

ResNet是CNN历史上一个里程碑事件,模型深度达到了152层,这和之前CNN的层数完全不在一个量级上。ResNet中的identity的这条线类似一条电路上的短路(shortcuts,skip connection),使得模型学习更加容易,深层可以直接得到浅层的网络特征。

DenseNet的原理不同于ResNet通过加深网络层数以及Inception通过加宽网络宽度来提高模型识别能力,而是利用特征重用和类似ResNet的Bypass的方式,减少了网络参数和缓解了梯度消失的问题。

SENet提出了Sequeeze and Excitation block,该模块于传统网络的最大区别在于其侧重于构建通道之间的依赖关系,利用global average pooling来Sequeeze特征图,并用Excitation对前者进行非线性变换,最后再叠加到输入特征上。可以自适应的校准通道的相应特征,并且该模块可以嵌入到现有的网络结构中,实现精度的提升。

模型训练与评测

原图   VerticalFlip HorizontalFlip RandomRotate RandomCrop

RandomErasing

CutOut

由于训练集样本过少,对比分析后对输入数据采取 VerticalFlip,HorizontalFilp 、RandomRotate和RandomCrop的增强操作。此外,还使用了RandomErasing和Cutout,方法会在原图随机选择一些矩形区域,改变该区域的像素值,通过这些数据增强的方式,训练集的图片会被不同程度的遮挡,这样可以进一步降低过拟合的风险并提高模型的鲁棒性。

同样的,为了增强模型的鲁棒性减少过拟合,本次比赛我们利用5-fold crossvalidation,交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现。用crossvalidation之后,SE_ResNeXt50测试集准确率提升0.01016,ResNet34测试集准确率提升0.01142。

这次比赛中,我们还使用了Mixup和label smoothing的训练策略。Mixup顾名思义就是将两张图片按一定比例融合起来作为输入,计算loss时,针对两张图片的标签分别计算,然后按比例加权求和。Mixup是一种抑制过拟合的策略,通过增加了一些数据上的扰动,从而提升了模型的泛化能力。

实验证明,该方式能将Top1准确率提高近一个百分点。对于分类问题,常规做法时将类别换成one-hot vector。由于标签是类别的one-hot vector,这样做易导致过拟合使得模型泛化能力下降;同时这种做法会将所属类别和非所属类别之间的差距尽可能大,因此很难调优模型。

为此,可以用label smoothing对标签进行平滑处理,软化one-hot类型标签,使得计算损失函数时能有效抑制过拟合现象。

训练以Adam为optimiser,学习率的设置为阶梯状,共四个取值,[3e-4, 1e-4,1e-5, 1e-6],设置patience为4来衰减学习率,即模型连续4个epoch在验证集上效果没有提升则衰减学习率,训练总的epcoh在20次左右。本实验使用的GPU为4卡2080Ti,并行训练一个模型,batchsize通常设为32,较大的模型根据实际情况适当减小。

模型在预测时采用了数据增强的方式Test time augmentation(TTA),即将样本图像进行多个不同的变换获得多个不同的预测结果,再将预测结果进行平均,提高精度。本次任务利用3*TTA,包括 RandomCrop, RandomCrop+HorizontalFlip 和RandomCrop+VerticalFlip 。

模型集成是算法比赛中常用的提高模型精度方法,本次比赛我们训练了大量在ImageNet上表现优良的模型,其中表现较好的模型如下表所示、在采取多种融合方式之后,最终发现SE_ResNeXt50、SE_ResNeXt101、SENet154以及DenseNet201按照归一化后权重的融合效果最好,在测试集上的准确率达到了0.92516。

模型

测试集准确率

SE_ResNeXt50

0.92251

SE_ResNeXt101

0.92384

SENet154

0.92384

DenseNet201

0.91721

MobileNetV2

0.91601

ResNet152

0.91710

SE_ResNeXt50+SE_ResNeXt101+SENet154+DenseNet201

0.92516

本次比赛主办方提供了12595张未带label的额外数据集,为了充分利用该数据集,利用在测试集表现最好的融合模型给这些数据集贴上伪标签。然后利用训练集和伪标签数据集训练模型,为了防止模型在伪标签上过拟合,我们对伪标签采取了一定的筛选操作。

采取的思路是:用多个不同概率阈值的过滤所得到的伪标签进行线下实验,看哪个阈值下的数据在线下的表现最好,就用通过该阈值筛选过滤出的数据,最终以0.95的阈值筛选出一半的数据作为添加到训练集的伪标签数据。

实验证明这种半监督的学习方法具有更强的泛化能力。

模型

测试集准确率

(public  leaderboard)

Private  leaderboard

SE_ResNeXt50

0.92251

0.93012

SE_ResNeXt50 with pseudo data

0.92195

0.93512

SE_ResNeXt101

0.92384

0.93134

SE_ResNeXt101 with pseudo data

0.92202

0.93409

SENet154

0.92384

0.93054

SE_ResNeXt154 with pseudo data

0.92283

0.93428

SE_ResNeXt50+SE_ResNeXt101+

SENet154+DenseNet201

0.92516

0.93727

SE_ResNeXt50+SE_ResNeXt101+

SENet154+DenseNet201

with pseudo data

0.92516

0.93860

进一步工作

针对细粒度图像分类,MSRA有一个结论:分析该问题时图像的形态、轮廓特征原没细节纹理特征重要,而传统的CNN模型都是在构建轮廓特征,因此在构建神经网络时,应该更加精确地找到图像中最有区分度的子区域,然后再对这些区域采用高分辨率、精细化特征的方法,这样可以进一步提高细粒度图像分类的准确率。

另外对数据本身我们可能需要做更多的工作,在任务初期没有做足够的探索性数据分析,例如数据的分布、类型、输入图像的尺寸等都是影响结果的因素,因此数据分析也是后面的一个尝试点。

参考文献

[1]A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenetclassification with deep convolutional neural networks. In Advances in neuralinformation processing systems,pages1097–1105,2012.

[2]K. He, X. Zhang, S. Ren, and J. Sun. Deep residuallearning for image recognition. arXiv preprint arXiv:1512.03385,2015.

[3]K. Simonyan and A. Zisserman. Very deep convolutionalnetworks for large-scaleimage recognition. arXiv preprint arXiv:1409.1556,2014.

[4]C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D.Anguelov, D. Erhan, V.Vanhoucke, and A. Rabinovich. Going deeper withconvolutions. In Proceedings ofthe IEEE Conference on Computer Vision andPattern Recognition,pages 1–9,2015.

[5]R. Srivastava, K. Greff and J. Schmidhuber. TrainingVery Deep Networks. arXiv preprint arXiv:1507.06228v2,2015.

[6]S. Hochreiter and J. Schmidhuber. Long short-termmemory. Neural Comput.,9(8):1735–1780, Nov. 1997.

[7]K. He, X. Zhang, S. Ren, and J. Sun. Identity Mappingsin Deep Residual Networks. arXiv preprint arXiv:1603.05027v3,2016.

[8]S. Xie, R. Girshick, P. Dollar, Z. Tu and K. He.Aggregated Residual Transformations for Deep Neural Networks. arXiv preprint arXiv:1611.05431v1,2016.

[9]G. Huang, Z. Liu, K. Q. Weinberger and L. Maaten.Densely Connected Convolutional Networks. arXiv:1608.06993v3,2016.

[10]G. Huang, Y. Sun, Z. Liu, D. Sedra and K. Q.Weinberger. Deep Networks with Stochastic Depth. arXiv:1603.09382v3,2016.

[11]N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskeverand R. Salakhutdinov.Dropout: A Simple Way to Prevent Neural Networks fromOverfitting. The Journal of Machine Learning Research 15(1) (2014) 1929–1958.

[12]A. Veit, M. Wilber and S. Belongie. Residual NetworksBehave Like Ensembles of Relatively Shallow Networks. arXiv:1605.06431v2,2016.

[13] Hu, J., Shen, L., Albanie, S., Sun, G., Wu, E. 2017.Squeeze-and-Excitation Networks. arXiv e-prints arXiv:1709.01507.

[14] Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking theInception Architecture for Computer Vision[C]// Computer Vision and PatternRecognition. IEEE, 2016:2818-2826.

欢迎关注磐创博客资源汇总站:

http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:

http://pytorch.panchuang.net/

CVPR 2019细粒度图像分类竞赛中国团队DeepBlueAI获冠军 | 技术干货分享的更多相关文章

  1. CVPR 2019轨迹预测竞赛冠军方法总结

    背景 CVPR 2019 是机器视觉方向最重要的学术会议,本届大会共吸引了来自全世界各地共计 5160 篇论文,共接收 1294 篇论文,投稿数量和接受数量都创下了历史新高,其中与自动驾驶相关的论文. ...

  2. 自动驾驶研究回顾:CVPR 2019摘要

    我们相信开发自动驾驶技术是我们这个时代最大的工程挑战之一,行业和研究团体之间的合作将扮演重要角色.由于这个原因,我们一直在通过参加学术会议,以及最近推出的自动驾驶数据集和基于语义地图的3D对象检测的K ...

  3. Relation-Shape Convolutional Neural Network for Point Cloud Analysis(CVPR 2019)

    代码:https://github.com/Yochengliu/Relation-Shape-CNN 文章:https://arxiv.org/abs/1904.07601 作者直播:https:/ ...

  4. CVPR 2019 行人检测新思路:

    CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破 原创: CV君 我爱计算机视觉 今天 点击我爱计算机视觉置顶或标星,更快获取CVML新技术 今天跟大家分享一篇昨天新出的CVPR 2 ...

  5. 中国.NET:各地微软技术俱乐部汇总(持续更新中...)

    中国.NET:各地微软技术俱乐部汇总(持续更新中...)   本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by ​史记微软. ...

  6. FD.io 社区中国行暨未来网络技术沙龙 南京站 参会小结

    FD.io 社区中国行暨未来网络技术沙龙 南京站,2018 年 3 月 17 日. 开场致辞 Ray 介绍了一些有的没的 ⁃ (Future Event)DPDK summit, FD.io summ ...

  7. 一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队

    一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队

  8. cvpr 2019 workshop&oral session

    1. Verification and Certification of Neural Networks神经网络的验证与认证 2. Automated Analysis of Marine Video ...

  9. ADN中国团队參加微软的Kinect全国大赛获得三等奖

    上周末我们团队參加了微软的Kinect全国大赛,我们的Kinect + Navisworks漫游荣膺三等奖   团队经理Joe写了篇详实的总结,我就直接转载了. http://blog.csdn.ne ...

随机推荐

  1. pip安装psycopg2失败解决

    pip install psycopg2==2.8.4报错ERROR: Command "python setup.py egg_info" failed with error c ...

  2. 初识 jquery.simulate.js 模拟键盘事件

    用jquery 和 jquery.simulate.js 实现模拟键盘事件,点击上下左右div相当于点击键盘的上下左右键 <!DOCTYPE html> <html> < ...

  3. iOS下的 Fixed BUG

    input 光标位置乱窜 固定式浮层内的输入框光标会发生偏移.即 fixed 定位的容器中输入框光标的位置显示不正确,没有正常地显示在输入框中,而是偏移到了输入框外面 可触发条件 页面body出现滚动 ...

  4. Nginx server name配置子域名二级域名

    绑定子域名到不同目录(子站) 网站的目录结构为 /var/www/html: ├── fx └── blog└── photo html为nginx的默认网站目录. sudo vi /etc/ngin ...

  5. xml模块介绍

      # xml 是一门可拓展的语言 # xml 语法 是用<>包裹的起来的<>就是标签, xml可以由多个<>组成 也可以由单个<>组成, # < ...

  6. ffmpeg 编程常用 pcm 转 aac aac 转 pcm mp4 h264解码

    ffmpeg 是现在开源的全能编解码器,基本上全格式都支持,纯 c 语言作成,相对比其它的 VLC ,GStreamer glib2 写的,开发更简单些,文档很棒,就是 examples 比较少. 常 ...

  7. Python魔法方法之 __call__

    前言 Python的魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在特定的操作时会自动被调用.魔法方法可以使Python的自由度变得更高,当不重载魔法方法时它可以在规定的默认 ...

  8. JVM02——JVM运行时内存

    在上一篇文章中,我们介绍了 JVM 的内存区域,本文我们将继续围绕 JVM 展开话题,介绍 JVM 运行时内存.关注我的公众号「Java面典」了解更多 Java 相关知识点. Java 堆从 GC 的 ...

  9. 为.net Core 3.0 WebApi 创建Linux守护进程

    前言 我们一般可以在Linux服务器上执行 dotnet <app_assembly.dll> 命令来运行我们的.net Core WebApi应用.但是这样运行起来的应用很不稳定,关闭终 ...

  10. React初级坑

    1.使用vscode时,JSX语言会受beauty插件的影响,将标签换行了,如下: 解决办法:将编辑器右下角的语言由javascript改为javascript react就行了.