CNN成长路:从AlexNet到EfficientNet(02)

一、说明

        在~10年的深度学习中,进步是多么迅速!早在 2012 年,Alexnet 在 ImageNet 上的准确率就达到了 63.3% 的 Top-1。现在,我们超过90%的EfficientNet架构和师生训练(teacher-student)。

二、第一阶段

        见文:CNN成长路:从AlexNet到EfficientNet(01)

三、第二阶段:近代CNN

3.1 DenseNet: Densely Connected Convolutional Networks (2017)

        跳过连接是一个非常酷的主意。我们为什么不跳过连接所有内容?

        Densenet是将这种想法推向极端的一个例子。当然,与 ResNets 的主要区别在于我们将连接而不是添加特征图。

        因此,其背后的核心思想是功能重用,这导致了非常紧凑的模型。因此,它比其他CNN需要更少的参数,因为没有重复的特征图。

        好吧,为什么不呢?嗯......这里有两个问题:

  1. 特征映射的大小必须相同。

  2. 与所有先前特征映射的串联可能会导致内存爆炸。

        为了解决第一个问题,我们有两个解决方案:

        a) 使用具有适当填充的 conv 图层来保持空间暗淡或

        b) 仅在称为密集块的块内使用密集跳过连接。

        示例图像如下所示:

密集块

过渡层可以使用平均池化对图像尺寸进行下采样。

为了解决第二个问题,即内存爆炸,特征图通过 1x1 convs 减少(一种压缩)。请注意,我在图中使用了 K,但 densenet 使用�=��一个��一个��/2K=Fe a tmaps/2

此外,当不使用数据增强时,它们在每个卷积层后添加一个 p=0.2 的 dropout 层。

3.2 增长率

更重要的是,还有一个参数控制整个架构的特征图数量。这是增长率。它指定每个超密集卷积层的输出特征。鉴于k0​初始特征图和k增长率,可以计算出每层输入特征图的数量lk_0+k*(l-1)

.在框架中,数字 k 是 4 的倍数,称为瓶颈大小 (bn_size)。

最后,我在这里引用DenseNet在火炬视觉中最重要的论点作为总结:

import torchvisionmodel = torchvision.models.DenseNet(growth_rate = 16, # how many filters to add each layer (`k` in paper)block_config = (6, 12, 24, 16), # how many layers in each pooling blocknum_init_features = 16, # the number of filters to learn in the first convolution layer (k0)bn_size= 4, # multiplicative factor for number of bottleneck (1x1 cons) layersdrop_rate = 0, # dropout rate after each dense conv layernum_classes = 30 # number of classification classes
)print(model) # see snapshot below

        在“密集”层(快照中的密集层5和6)内部,有一个瓶颈(1x1)层,将通道减少到bn_size∗growth_rate=64bn_size∗growth_rate=64在我们的例子中。否则,输入通道的数量将激增。如下图所示,每层加起来16=growth_rate16=growth_rate渠道。

增长率-皮托尔

在实践中,我发现基于 DenseNet 的模型训练速度很慢,但由于功能重用,与具有竞争力的模型相比,参数很少。

        尽管DenseNet被提议用于图像分类,但它已被用于特征可重用性更为关键的领域的各种应用(即分割和医学成像应用)。从 Papers with Code 借来的饼图说明了这一点:

密集应用-应用程序

图片来自带有代码的论文

        在 2017 年的 DenseNet 之后,我只发现 HRNet 架构很有趣,直到 2019 年 EfficientNet 问世!

3.3  大迁移(Big Transfer-BiT):一般视觉表示学习(2020)

        尽管已经提出了许多ResNet的变体,但最新和最著名的是BiT。大转移(BiT)是一种可扩展的基于ResNet的模型,用于有效的图像预训练[5]。

        他们基于 ResNet3 开发了 152 个 BiT 模型(小型、中型和大型)。对于BiT的大变化,他们使用ResNet152x4,这意味着每层都有4倍的通道。他们在比imagenet更大的数据集中对模型进行了一次预训练。最大的模型是在疯狂庞大的JFT数据集上训练的,该数据集由300M标记的图像组成。

        该架构的主要贡献是规范化层的选择。为此,作者用组归一化(GN)和权重标准化(WS)取代了批次归一化(BN)。

组规范化

图片来源:Lucas Beyer和Alexander Kolesnikov。源

        为什么?因为第一个BN的参数(均值和方差)需要在预训练和转移之间进行调整。另一方面,GN 不依赖于任何参数状态。另一个原因是 BN 使用批处理级统计信息,这对于像 TPU 这样的小型设备的分布式训练变得不可靠。分布在 4 个 TPU 上的 500K 批次意味着每个工人有 8 个批次,这并不能很好地估计统计数据。通过将规范化技术更改为 GN+WS,它们避免了工作线程之间的同步。

        显然,扩展到更大的数据集与模型大小密切相关。

根据模型大小的位性能
性能与更多和多种模型。

资料来源:亚历山大·科列斯尼科夫等人,2020

        在此图中,说明了与数据并行扩展体系结构的重要性。ILSVER是具有1M图像的Imagenet数据集,ImageNet-21K具有大约14M图像,JFT 300M!

        最后,这种大型预训练模型可以微调到非常小的数据集,并获得非常好的性能。

低下游数据结果与预训练位
性能与更多和多种模型。

资料来源:亚历山大·科列斯尼科夫等人,2020

在 ImageNet 上每个类有 5 个示例,将 3 倍扩大,在 JFT 上预训练的 ResNet-50 (x3) 实现了与 AlexNet 相似的性能!

3.4  EfficientNet:重新思考卷积神经网络的模型缩放(2019)

        EfficientNet是关于工程和规模的。它证明,如果您仔细设计架构,则可以使用合理的参数获得最佳结果。

高效网络-结果-图像网络
图片来源:Mingxing Tan和Quoc V. Le 2020。

来源:EfficientNet:重新思考卷积神经网络的模型缩放

该图演示了 ImageNet 精度与模型参数。

令人难以置信的是,EfficientNet-B1比ResNet-7小6.5倍,快7.152倍

3.5 个性化升级

        让我们了解这是如何实现的。

  • 有了更多的层(深度),人们可以捕获更丰富和更复杂的特征,但这样的模型很难训练(由于梯度消失)

  • 更广泛的网络更容易训练。它们往往能够捕获更细粒度的特征,但很快就会饱和。

  • 通过训练更高分辨率的图像,卷积神经网络理论上能够捕获更细粒度的细节。同样,对于相当高的分辨率,精度增益会降低

        作者没有找到最好的架构,而是建议从一个相对较小的基线模型开始。F并逐渐扩展它。

        这缩小了设计空间。为了进一步限制设计空间,作者将所有层限制为具有恒定比率的均匀缩放。这样,我们就有了一个更易于处理的优化问题。最后,必须尊重我们基础设施的最大内存和 FLOP 数量。

        下图很好地演示了这一点:

个性化扩展高效网络

图片来源:Mingxing Tan和Quoc V. Le 2020。来源:EfficientNet:重新思考卷积神经网络的模型缩放

        w是宽度,d深度,以及r分辨率缩放因子。通过缩放一个,它们中只有一个会在一个点上饱和。我们能做得更好吗?

3.5 复合缩放

        因此,让我们同时放大网络深度(更多层)、宽度(每层更多通道)、分辨率(输入图像)。这称为复合缩放

为此,我们必须在缩放过程中平衡上述所有维度。在这里,它变得令人兴奋。

d=αφ
w=βφ
r=γφ

这样:αβ2⋅γ2≈2,给定所有αβγ>1

现在φ控制所有所需的尺寸并将它们缩放在一起,但不能相等。αβγ告诉我们如何将额外的资源分配到网络。

注意到什么奇怪的东西了吗?βγ在约束中平方。

        原因很简单:网络深度加倍将使 FLOPS 翻倍,但宽度或输入分辨率加倍将使 FLOPS 增加四倍。通过这种方式,我们类似于卷积,这是基本的构建块。

        基线架构是使用神经架构搜索找到的,因此它可以优化准确性和FLOPS,称为EfficientNet-B0。

        还行,很酷。剩下的就是定义αβγφ.

  1. 修复φ=1,假设还有两次可用的资源,并执行网格搜索αβγ.EfficientNet-B0的最佳获取值是α=1.2,β=1.2,γ=1.15

  2. 修复αβγ并扩大规模φ关于硬件(FLOP + 内存)

        在我看来,理解复合缩放有效性的最直观方法与 ImageNet 上相同基线模型 (EfficientNet-B0) 的单个缩放相当:

复合与个体扩展高效网络

图片来源:Mingxing Tan和Quoc V. Le 2020。来源:EfficientNet:重新思考卷积神经网络的模型缩放

3.6 与吵闹的学生进行自我训练改进了图像网络分类(2020 年)

        不久之后,使用了迭代半监督方法。它通过300亿张未标记的图像显着提高了Efficient-Net的性能。作者称培训计划为“嘈杂的学生培训” [8]。它由两个神经网络组成,称为教师和学生。迭代训练方案可以用 4 个步骤来描述:

  1. 在标记的图像上训练教师模型,

  2. 使用老师在300M未标记的图像上生成标签(伪标签))

  3. 在标记图像和伪标记图像的组合上训练学生模型。

  4. 从步骤 1 开始迭代,将学生视为教师。重新推断未标记的数据并从头开始培训新学生。

        新学生模型通常大于教师模型,因此可以从更大的数据集中受益。此外,在训练学生模型时添加了明显的噪声,因此它被迫从伪标签中学习。

伪标签通常是软标签(连续分布)而不是硬标签(独热编码)。

        此外,辍学和随机深度等不同的技术被用来训练新生[8]。

自我训练-影像网

图片来源:Xizhe Xie et al. 来源:Noisy Student 的自我训练改进了 ImageNet 分类

        在步骤 3 中,我们使用标记和未标记的数据联合训练模型。未标记的批大小在第一次迭代中设置为标记批大小的 14 倍,在第二次迭代中设置为 28 倍。

3.7 元伪标签 (2021)

        动机:如果伪标签不准确,学生不会超过老师。这在伪标记方法中称为确认偏差。

        高层次的思想:设计一个反馈机制来纠正教师的偏见。

观察结果来自伪标签如何影响学生在标记数据集上的表现。反馈信号是训练教师的奖励,类似于强化学习技术。

元伪标签

Hieu Pham等人,2020年。来源:元伪标签

        这样,教师和学生就得到了共同的训练。教师从奖励信号中了解学生在来自标记数据集的一批图像上的表现。

3 总结和概括

        那里有很多凸网!我们可以通过查看下表来总结它们:

型号名称参数数量 [百万]图像网前 1 名精度
亚历克斯网60 米63.3 %2012
盗梦空间 V15 米69.8 %2014
VGG 16138 米74.4 %2014
VGG 19144 米74.5 %2014
盗梦空间 V211,2 米74.8 %2015
瑞思网-5026 米77.15 %2015
瑞思网-15260 米78.57 %2015
盗梦空间 V327 米78.8 %2015
密集网-1218 米74.98 %2016
密集网-26422.77.85 %2016
BiT-L (ResNet)928 米87.54 %2019
嘈杂学生高效网-L2480 米88.4 %2020
元伪标签480 米90.2 %2021

        您可以注意到DenseNet模型的紧凑性。或者最先进的EfficientNet有多大。更多的参数并不总是能保证更高的精度,正如您在BiT和VGG中看到的那样。

        在本文中,我们提供了最著名的深度学习架构背后的一些直觉。话虽如此,继续前进的唯一方法就是练习!从火炬视导入模型并根据您的数据对其进行微调。它是否比从头开始训练提供更好的准确性?

下一步是什么?使用深度学习为计算机视觉系统提供可靠而全面的方法。试一试!使用折扣代码 aisummer35 从您最喜欢的 AI 博客中获得独家 35% 的折扣。使用折扣代码 aisummer35 从您最喜欢的 AI 博客中获得独家 35% 的折扣。如果您更喜欢视觉课程,Andrew Ng的卷积神经网络是迄今为止最好的课程。

4 引用

[1] Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2017).使用深度卷积神经网络进行图像网络分类。ACM的通讯60(6),84-90。

[2] Simonyan, K., & Zisserman, A. (2014).用于大规模图像识别的非常深的卷积网络。arXiv预印本arXiv:1409.1556

[3] 塞格迪, C., 刘, W., 贾, Y., Sermanet, P., Reed, S., Anguelov, D., ...&Rabinovich, A. (2015).更深入地进行卷积。在IEEE计算机视觉和模式识别会议记录中(第1-9页)。

[4] He, K., Zhang, X., Ren, S., & Sun, J. (2016).用于图像识别的深度残差学习。IEEE计算机视觉和模式识别会议论文集(第770-778页)。

[5] Kolesnikov, A., Beyer, L., Zhai, X., Puigcerver, J., Yung, J., Gelly, S., & Houlsby, N. (2019).大迁移(位):一般视觉表示学习。arXiv预印本arXiv:1912.113706(2)

[6] Huang, G., Liu, Z., Van Der Maaten, L., & Weinberger, K. Q. (2017).密集连接的卷积网络。IEEE计算机视觉和模式识别会议论文集(第4700-4708页)。

[7] Tan, M., & Le, Q. V. (2019).高效网络:重新思考卷积神经网络的模型缩放。arXiv预印本arXiv:1905.11946

[8] Xie, Q., Luong, M. T., Hovy, E., & Le, Q. V. (2020).与嘈杂的学生进行自我训练可改进图像网分类。在IEEE/CVF计算机视觉和模式识别会议记录中(第10687-10698页)。

[9] Pham, H., Xie, Q., Dai, Z., & Le, Q. V. (2020).元伪标签。arXiv预印本arXiv:2003.10580

[10] Szegedy, C., Vanhoucke, V., Ioffe, S., Shlens, J., & Wojna, Z. (2016).重新思考计算机视觉的初始架构。IEEE计算机视觉和模式识别会议论文集(第2818-2826页)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78640.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记本WIFI连接无网络【实测有效解决方案,不用重启电脑】

笔记本Wifi连接无网络实测有效解决方案 问题描述: 笔记本买来一段时间后,WIFI网络连接开机一段时间还正常连接,但是过一段时间显示网络连接不上解决方案: 1.编写网络重启bat脚本,将以下内容写到文本文件,把…

最优化:建模、算法与理论

最优化:建模、算法与理论 目前在学习 最优化:建模、算法与理论这本书,来此记录一下,顺便做一些笔记,在其中我也会加一些自己的理解,尽量写的不会那么的条条框框(当然最基础的还是要有&#xff…

C#利用自定义特性以及反射,来提大型项目的开发的效率

在大型项目的开发过程中,需要多人协同工作,来加速项目完成进度。 比如一个软件有100个form,分给100个人来写,每个人完成自己的Form.cs的编写之后,要在Mainform调用自己写的Form。 如果按照正常的Form form1 new For…

怎样将项目jar包放到服务器上

目录 1、在配置文件中配置账号密码 2.在父级的pom里面,加上这个标签 3. deploy部署 4. 注:这两个id得匹配上(原因:有的人会只有上传到测试包的权限,id对应,拥有账号密码的才能有权限) 5.子项…

uniapp-疫情应急管理系统学生端

1 疫情资讯展示 <template><view class"container"><uni-section title"自定义卡片内容" type"line"><uni-card title"基础卡片" class"card-box" v-for"(item,index) in epidemicNewsList"…

探秘企业DevOps一体化平台建设终极形态丨IDCF

笔者从事为企业提供研发效能改进解决方案相关工作十几年&#xff0c;为国内上百家企业提供过DevOps咨询及解决方案落地解决方案&#xff0c;涉及行业包括&#xff1a;金融、通信、制造、互联网、快销等多种行业。 DevOps的核心是研发效能改进&#xff0c;效能的提升离不开强大…

HTTPS-RSA握手

RSA握手过程 HTTPS采用了公钥加密和对称加密结合的方式进行数据加密和解密 RSA握手是HTTPS连接建立过程中的一个关键步骤&#xff0c;用于确保通信双方的身份验证和生成对称加密所需的密钥 通过RSA握手过程&#xff0c;客户端和服务器可以协商出一个共享的对称密钥&#xff0c;…

ruoyi若依 组织架构设计--[ 角色管理 ]

ruoyi若依 组织架构设计--[ 角色管理 ] 角色新增后端代码 角色修改后端代码 角色查询角色删除角色分配数据权限后端代码 角色分配用户 角色新增 后端代码 有一点&#xff0c;我认为新增的时候&#xff0c;也需要修改redis中的权限。 角色修改 后端代码 因为修改了role_menu表了…

Chrome 75不支持保存成mhtml的解决方法

在Chrome 75之前&#xff0c;可以设置chrome://flags -> save as mhtml来保存网页为mhtml。 升级新版&#xff0c;发现无法另存为/保存网页为MHTML了。 参考https://jingyan.baidu.com/article/a3761b2b7e39ec5576f9aad9.html 在网上搜索无果后&#xff0c;只得从chromium项…

【分布式应用】ELK企业级日志分析系统

目录 一、ELK 简介 1.1 ELK各组件介绍 ElasticSearch&#xff1a; Kiabana&#xff1a; Logstash&#xff1a; 1.2 可以添加的其它组件&#xff1a; Filebeat&#xff1a; 缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09;&#xff1a; Fluentd&#xf…

vue中vue-lazyload报错

1.问题&#xff1a; 说明&#xff1a;也就是版本不兼容&#xff0c;我安装的是vue2,因此需要 "vue-lazyload": "^1.2.6"或者更低 2.解决 npm i vue-lazyload1.2.6

补充JDK源码-IDEA集成工具

在阅读JDK8源码的时候发现&#xff0c;只有一小部分常用包是存在源码及其注释的&#xff0c;而很多内部包是没有源码&#xff0c;class文件在阅读的时候对阅读者十分不友好。在网上搜集了很多资料都没有解决问题。 解决问题办法&#xff1a;参考文档。本文主要是根据这篇文章记…

安全杂记 - 复现nodejs沙箱绕过

目录 一. 配置环境1.下载nodejs2.nodejs配置3.报错解决方法 二. nodej沙箱绕过1. vm模块2.使用this或引用类型来进行沙箱绕过 一. 配置环境 1.下载nodejs 官网&#xff1a;https://nodejs.org/en2.nodejs配置 安装nodejs的msi文件&#xff0c;默认配置一直下一步即可&#x…

Wordpress升级版本后插件和主题常见出错及处理方法整理【持续更新】

Wordpress报错怎么解决&#xff1f; 一般常用的排查方法&#xff1a; 暂时禁用所有插件&#xff1b;将主题更改为默认主题&#xff1b; 修改wp-config.php文件&#xff1b;更新固定链接设置&#xff0c;确保设置正确&#xff1b;检查.htaccess文件是否存在且是否可写&#xf…

ant.design 组件库中的 Tree 组件实现可搜索的树: React+and+ts

ant.design 组件库中的 Tree 组件实现可搜索的树&#xff0c;在这里我会详细介绍每个方法&#xff0c;以及容易踩坑的点。 效果图&#xff1a; 首先是要导入的文件 // React 自带的属性 import React, { useMemo, useState } from react; // antd 组件库中的&#xff0c;输入…

了解Linux 的 mmap --- 笔记

学习这篇博客&#xff0c;进行了一些归纳Linux下mmap_linux mmap_一个山里的少年的博客-CSDN博客https://blog.csdn.net/qq_56999918/article/details/127070280 >>读取文件 读取文件方法&#xff1a;由操作系统提供的两个方法&#xff0c;read和write来读写文件。 由…

【SpringBoot】知识

.第一个程序HelloWorld 项目创建方式&#xff1a;使用 IDEA 直接创建项目 1、创建一个新项目 2、选择spring initalizr &#xff0c; 可以看到默认就是去官网的快速构建工具那里实现 3、填写项目信息 4、选择初始化的组件&#xff08;初学勾选 Web 即可&#xff09; 5、填…

flask中的应用上下文

flask中的应用上下文 Flask应用上下文主要包含两个对象&#xff1a;current_app和g。这两个对象在处理请求期间都是全局可访问的&#xff0c;但在每个请求结束时都会被重置。 current_app&#xff1a;这是当前激活的Flask应用的实例。在大多数情况下&#xff0c;你可以将其视为…

Git工具安装

Git 工具安装 1. 下载Git安装包2. 安装Git工具3. 简单的使用配置用户名 1. 下载Git安装包 打开官网 https://git-scm.com/downloads点击下载 2. 安装Git工具 右击以管理员身份运行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a99a73d54824800bc87db64f71f7602.png…

Vue3状态管理库Pinia——自定义持久化插件

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…