论文通过实验证明,ImageNet上的模型并不总能泛化到其他数据集中,甚至可能是相反的,而模型的深度和宽度也会影响迁移的效果。

 如果需要参考,可选择类别数与当前任务相似的数据集上的模型性能。论文通过大量的实验来验证猜想,虽然没有研究出如通过数据集间的某些特性来直接判断模型迁移效果这样的成果,但读下来还是挺有意思的

来源:晓飞的算法工程笔记 公众号

论文: Is it Enough to Optimize CNN Architectures on ImageNet?

Introduction


 深度卷积网络是现代视觉任务的核心模块,近年来诞生了许多优秀的卷积网络结构,如何评价网络的优劣是研究中很重要的事情。但目前的网络性能还不能直接通过理论判别,需要进行相关的实验验证。目前许多模型都建立在ImageNet的基础上,虽然ImageNet数据集很大,但相对于开发世界而言,只是微不足道的一部分。因此,论文的立意就是,探索ImageNet下的优秀模型能否都迁移到其它数据集中。

 为了回答这一问题,论文提出了APR(architecture and performance relationship)指标。由于模型的性能与数据集相关,数据集间的APR指标能够对比相同结构在不同数据集下的表现。为了让实验更准确,论文随机采样了500个网络,并在多个数据集间进行对比。

Experiment


Experimental datasets

 论文共在9个数据集上测试,数据集的样例如上图所示,这里简述下图片数和类别数:

  • Conrete:4万张图片,2个类别,平衡。
  • MLC2008:4万3000张图片,9个类别,不平衡。
  • ImageNet:130万张图片,1000个类别,平衡。
  • HAM10000:1万张图片,7个类别,不平衡。
  • Powerline:8000张图片,2个类别,平衡。
  • Insects:6300张图片,291类别,不平衡。
  • Intel Image Classification(natural):2500张图片,6个类别,平衡。
  • Cifar10:6万张图片,10个类别,平衡。
  • Cifar100:6万张图片,100个类别,平衡。

Experimental setup

 论文从AnyNetX网络空间采样实验结构,AnyNetX主要包含三部分:

  • steam:固定结构,stride=2的\(3\times 3\)卷积,用于降低分辨率,提高输出维度。
  • body:包含4个stage,每个stage \(i\)由步长为\(s_i\)的\(1\times 1\)卷积开头,后续是\(d_i\)个相同的标准residual bottleneck block,width为\(w_i\),bottleneck ratio为\(b_i\),group width为\(g_i\)(残差分支的并行子分支),这个参数对相同stage内的block是共享的。
  • head:固定结构,全连接层,用于返回特定大小的输出。

 AnyNetX的设计空间共包含16个可变参数,共4个stage,每个stage都有4个独自的参数。两个参数\(d_i\le 16\)和\(w_i\le 1024\)均需能被8整除,\(b_i\in 1,2,4\),\(g_i\in 1,2,\cdots,32\),剩下的\(stride_1\)固定为1,其余的均为2。反复执行模型随机采样,取500个计算量在360MF和400MF之间的模型。

 按表2的实验设置,将500个模型在不同的数据集上训练直到收敛得差不多了,获取其对应的性能指标。附录还有一些对比实验,使用了另外的配置,具体可见原文。

Experimental metrics

 在进行实验之前,论文先对模型和数据集进行分析。定义eCDF(empirical cumulative error distribution)指标,用来标记错误率低于x的模型比例,n个模型的eCDF计算为:

 从图3可以看到不同数据集上的eCDF表现,ImageNet数据集的模型比例随模型性能增加稳定下降,模型之间的差异较大。Natural、Insects、Powerline和Cifar100数据集的高性能模型较多,只包含少量低性能模型,Concrete、HAM10000、MLC2008和Cifar10数据集的模型性能则比较集中。

 论文从两个方面来分析模型与性能的关系(APRs, architecture-performance relationship):

  • 以ImageNet上的测试误差为x轴,目标数据集上的测试误差为y轴,标记所有的模型。
  • 计算spearman相关系数\(\rho\in[-1, 1]\),用以反馈两个数据集上模型误差的相关性,0代表无关,-1和1代表关系可用单调函数表达。

 分析的结果如图4所示:

  • 第一行的数据集与ImageNet有较强或中等的相关性,表明大多数的分类任务跟ImageNet有相似的APR表现,可根据ImageNet来进行模型的选取。
  • Concrete跟ImageNet无相关性,其准确率占满了\([0,0.5]\)的区间,在这种数据集上,模型的选择更应该注重性能而不是ImageNet上的表现。
  • 部分数据集跟ImageNet有轻度或明显的负相关性,在ImageNet上表现优秀的模型在这些数据集上反而表现一般。

 通过上面的三个分析,我们可以初步回答论文提出的问题,即ImageNet下的优秀模型不一定迁移到其它数据集中。

Identifying Drivers of Difference between Datasets

 论文对不同数据集上的top15模型的结构进行分析,发现ImageNet数据集的top15模型的block width和depth参数十分相似,第一个stage的block width和depth都十分小,随后逐级增加。Insects数据集也有类似的现象,而MLC2008和HAM10000数据集也有相似的趋势,但噪声更多一些。Powerline和Natural数据集则完全相反,参数呈逐级减少的趋势,最后一个stage均是很小的block。Cifar10和Cifar100数据集则更有趣,在block width上是呈逐级增加的趋势,而block depth上则是呈逐级减少的趋势。为此,论文打算研究下这两个参数在不同数据集上与模型性能的关系。

 图5为所有stage累积的block depth与模型性能的关系。ImageNet的优秀模型的累积depth至少为10,此外没有其他的特殊关系。Insects数据集则完全无关。HAM10000有轻度向右倾斜现象,似乎有相关性,但肉眼看起来也没有强相关。Powerline、Natural和Cifar100数据集则有强烈的相关性,错误率随着累积depth增加而增加,优秀的模型累积depth均小于10。

 图6为所有stage累积的width depth与模型性能的关系。ImageNet的模型性能与累积width呈反相关,优秀模型的累积width至少为250。Insects和HAM10000数据集也有类似的反相关性,但程度弱一些。Powerline和Natural数据集与累积width没有明显的相关性,而Cifar100数据集则有强烈的反相关性。

 除了上述的两个参数的对比,论文还对比了bottleneck ratios和group width参数,具体可以看附录。总结而言,在不同的数据集上,最优模型的网络深度和网络宽度有可能差异较大,这是模型迁移能力的重要影响因子。

Impact of the Number of Classes

 ImageNet相对其他数据集有超大的类别数,Insect数据集是类别数第二的数据集,其ARP与ImageNet高度相似。从这看来,类别数似乎也可能是数据集的最优模型结构的影响因素之一。

 为了探究这一问题,论文从ImageNet中构造了4个新数据集ImageNet-100、ImageNet-10、ImageNet-5和ImageNet-2,分别随机选取100,10,5,2个类别,统称为ImageNet-X。ImageNet-100的训练方法跟原数据集一样,而其他3个数据集考虑到数据集小了,则采用top-1 error以及训练40个周期。

 图7展示了子数据集与原数据集的ARP对比,从图中可以明显的看到,子数据集与原数据集的相关性随着类别数的减少而逐渐减少。这验证了论文猜测,数据集类别数也是影响模型结构与性能的相关性的重要因素。

 论文也测试了block的累积depth和累积width在ImageNet-X数据集上的表现,结构如表3所示。从表中可以看到,随着类别数增加,累积depth和累积width的相关因子都在逐级增加(不代表相关性增加)。所以,可以认为类别数也是影响block的累积depth和累积width与模型性能相关性的重要因素。

 论文已经通过ImageNet-X数据集证明了类别数对APR有着重要影响,虽然不能说简单地改变数据集的类别数就能复制APR表现,但我们可以将类别数相近的数据集的APR表现作为参考,而不是总参考ImageNet数据集。为了进一步验证这个想法,论文将ImageNet-X与各数据集的相关性进行的统计,结果如图8所示。

 从图8可以看出,MLC2008和Cifar10数据集与对应的ImageNet-X数据集高度相关性。而原本与ImageNet有负相关性的Powerline和Natural数据集,则变为与ImageNet-X数据集有轻度正相关性,重要的是最好的模型的表现更一致了。为此,论文得出的结论是,相对于ImageNet数据集而言,ImageNet-X数据集比代表了更大的APR多样性。

Conclusion


 论文通过实验证明,ImageNet上的模型并不总能泛化到其他数据集中,甚至可能是相反的,而模型的深度和宽度也会影响迁移的效果。

 如果需要参考,可选择类别数与当前任务相似的数据集上的模型性能。论文通过大量的实验来验证猜想,虽然没有研究出如通过数据集间的某些特性来直接判断模型迁移效果这样的成果,但读下来还是挺有意思的。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

为什么SOTA网络在你的数据集上不行?来看看Imagnet结果的迁移能力研究的更多相关文章

  1. NASNet学习笔记——   核心一:延续NAS论文的核心机制使得能够自动产生网络结构;    核心二:采用resnet和Inception重复使用block结构思想;    核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。

    from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transfer ...

  2. Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?

    前言:今天他给大家带来一篇发表在CVPR 2017上的文章. 原文:LBCNN 原文代码:https://github.com/juefeix/lbcnn.torch 本文主要内容:把局部二值与卷积神 ...

  3. pytorch实现MLP并在MNIST数据集上验证

    写在前面 由于MLP的实现框架已经非常完善,网上搜到的代码大都大同小异,而且MLP的实现是deeplearning学习过程中较为基础的一个实验.因此完全可以找一份源码以参考,重点在于照着源码手敲一遍, ...

  4. PyTorch迁移学习-私人数据集上的蚂蚁蜜蜂分类

    迁移学习的两个主要场景 微调CNN:使用预训练的网络来初始化自己的网络,而不是随机初始化,然后训练即可 将CNN看成固定的特征提取器:固定前面的层,重写最后的全连接层,只有这个新的层会被训练 下面修改 ...

  5. 网游中的网络编程3:在UDP上建立虚拟连接

    目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...

  6. ios开发之网络数据的下载与上传

    要实现网络数据的下载与上传,主要有三种方式 > NSURLConnection  针对少量数据,使用“GET”或“POST”方法从服务器获取数据,使用“POST”方法向服务器传输数据; > ...

  7. (2) 用DPM(Deformable Part Model,voc-release4.01)算法在INRIA数据集上训练自己的人体检測模型

    步骤一,首先要使voc-release4.01目标检測部分的代码在windows系统下跑起来: 參考在window下执行DPM(deformable part models) -(检測demo部分) ...

  8. Microsoft Dynamics CRM 2011 当您在 大型数据集上执行 RetrieveMultiple 查询很慢的解决方法

    症状 当您在 Microsoft Dynamics CRM 2011 年大型数据集上执行 RetrieveMultiple 查询时,您会比较慢. 原因 发生此问题是因为大型数据集缓存 Retrieve ...

  9. 在Titanic数据集上应用AdaBoost元算法

    一.AdaBoost 元算法的基本原理 AdaBoost是adaptive boosting的缩写,就是自适应boosting.元算法是对于其他算法进行组合的一种方式. 而boosting是在从原始数 ...

  10. TersorflowTutorial_MNIST数据集上简单CNN实现

    MNIST数据集上简单CNN实现 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Tensorflow机器学习实战指南 源代码请点击下方链接欢迎加星 Tesorflow实现基于MNI ...

随机推荐

  1. golang 打隧道和端口转发

    `package main import ( "golang.org/x/crypto/ssh" "io" "log" "net& ...

  2. SuspendThread and ResumeThread

    记录下,用于复现 #include <windows.h> #include <iostream> LRESULT CALLBACK WndProc(HWND hWnd, UI ...

  3. 探秘C语言数组:解锁高效数据管理与多维空间编程技巧"

    欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 引言 前面贝蒂给大家介绍了选择结构与循环结构,今天,贝蒂准备给大家介绍C语言中一个非常重要 ...

  4. Taro兼容h5的一些小问题

    背景:先做了小程序,现在需要兼容h5 问题一:Image组件mode属性设置为aspectFill在h5上没效果 解决方法:给img加样式 object-fit: cover (例子如下) // js ...

  5. Flask AttributeError 'Request' object has no attribute 'is_xhr'解决办法

    flask版本0.12.5 运行时会报以上错误,原因是因为werkzeug的版本大于等于1.x版本. 解决办法,降低werkzeug的版本即可 pip uninstall Werkzeug pip i ...

  6. Android Studio 导入自己编译的 framework jar

    网上的文章大多是 Android Studio 2.x 环境,实行起来,坑比较多. 本文适用于 Android Studio 3.x 及以上,亲测可行. 一.编译生成 framework.jar 包 ...

  7. 第一百一十六篇: JavaScript理解对象

    好家伙,本篇为<JS高级程序设计>第八章"对象.类与面向对象编程"学习笔记   1.关于对象 ECMA-262将对象定义为一组属性的无序集合.严格来说,这意味着对象就是 ...

  8. Finder Error code -36 “访达” 错误代码-36

    导致这个问题的原因是你的iCloud (iCloud和iCloud Drive是不一样的) 快满了. 如果你想解决这个问题,有以下三个方法: 1.多买苹果iCloud.(是的,苹果现在太恶心了.但这是 ...

  9. 【Azure API 管理】APIM服务资源删除后,为什么不能马上创建相同名称的APIM服务呢?

    问题描述 使用Azure APIM服务,在删除旧资源准备新建相同名称的新APIM服务时,尝试多次都是出现"指定的服务名称已正在使用"错误.但实际上同名称的服务已经被删除.为什么多次 ...

  10. 【Azure 环境】Azure 的PaaS服务如果涉及到安全漏洞问题后,我们如何确认所用服务的实例(VM:虚拟机)的操作系统已修复该补丁呢?

    问题描述 如上图中PaaS所不可见区域, 操作系统级别的内容我们并不知道具体的内容.如果当出现新的操作系统级别的安全漏洞时候,我们如何来确认当前所使用的Azure PaaS服务所在主机的OS已经修复了 ...