【CV】EfficientNet相比resnet有哪些优点,什么是深度可分离卷积

目录

  • 前言
  • 使用深度可分离卷积
    • 普通卷积的计算参数量
    • 深度可分离卷积分为两个步骤:深度卷积和逐点卷积
  • 使用多个缩放因子
  • 使用 Swish 激活函数

前言

高效的神经网络主要通过:1. 减少参数数量;2. 量化参数,减少每个参数占用内存
目前的研究总结来看分为两个方向:
一是对训练好的复杂模型进行压缩得到小模型;
二是直接设计小模型并进行训练。(EfficientNet属于这类)
深度可分离卷积中的深度卷积不改变输入通道数,再由逐点卷积的方式,将多通道信息相融合。
ResNet和EfficientNet都是非常经典和高效的卷积神经网络,它们各有特点,适用于不同的场景和任务。ResNet通过残差连接解决梯度消失问题,可以构建非常深的神经网络,适用于图像分类、目标检测和语义分割等任务;
EfficientNet通过复合缩放方法优化网络结构,可以在保持高准确性的同时减少计算量和内存占用,适用于移动设备和嵌入式设备等资源受限的场景。

使用深度可分离卷积

传统的卷积操作在处理通道和空间信息时是耦合的,而深度可分离卷积可以分别对通道和空间信息进行处理,从而减少了计算量和参数量。具体来说,深度可分离卷积分为两个步骤:深度卷积和逐点卷积。深度卷积使用一个卷积核对每个通道进行卷积,而逐点卷积则使用 1x1 的卷积核对每个通道的输出进行组合。由于逐点卷积的计算量比传统的卷积操作小得多,因此深度可分离卷积可以大大减少计算量和参数量。
在这里插入图片描述

普通卷积的计算参数量

传统卷积的参数计算可以简单地理解为卷积核中所有参数的数量。具体地,假设输入张量的大小为 H × W × C H \times W \times C H×W×C,输出张量的大小为 H ′ × W ′ × C ′ H' \times W' \times C' H×W×C,卷积核的大小为 K × K K \times K K×K,传统卷积的参数计算如下:

对于每个输出通道 c ′ c' c,都要使用一个独立的卷积核来卷积输入张量的所有通道。因此,对于每个输出通道 c ′ c' c,卷积核中的参数数量为 K × K × C K \times K \times C K×K×C

由于每个输出通道都有一个独立的卷积核,因此对于所有输出通道的卷积核,参数数量为 K × K × C × C ′ K \times K \times C \times C' K×K×C×C

需要加上偏置的参数数量,假设每个输出通道都有一个独立的偏置,那么偏置的参数数量为 C ′ C' C

因此,传统卷积的总参数数量为 K × K × C × C ′ + C ′ K \times K \times C \times C' + C' K×K×C×C+C
例如,假设输入张量大小为 224 × 224 × 3 224 \times 224 \times 3 224×224×3,输出张量大小为 112 × 112 × 32 112 \times 112 \times 32 112×112×32,卷积核大小为 3 × 3 3 \times 3 3×3。那么传统卷积的总参数数量为 3 × 3 × 3 × 32 + 32 = 896 3 \times 3 \times 3 \times 32 + 32 = 896 3×3×3×32+32=896
需要注意的是,传统卷积的参数数量随着输入和输出张量的大小、卷积核的大小和输出通道数的增加而增加,这可能导致在深层网络中出现参数量过大的问题。因此,深度可分离卷积是一种有效的替代方法,可以减少参数数量和计算量。

深度可分离卷积分为两个步骤:深度卷积和逐点卷积

深度也就是指:channel这一维度。
深度卷积操作是将每个通道单独处理,以减少计算量和参数量。具体来说,对于一个输入张量,深度卷积操作首先对每个通道应用一个单独的卷积核,然后将每个通道的结果相加得到输出张量。由于每个通道使用单独的卷积核,因此每个卷积核的参数量大大减少。
逐点卷积操作是用一个 1x1 的卷积核对每个通道的输出进行组合。逐点卷积可以将不同通道的信息进行组合,从而增强特征表示能力。

深度可分离卷积的参数数目比传统卷积要少得多,这是深度可分离卷积被广泛应用于移动设备和嵌入式设备等资源受限的环境中的主要原因之一。下面以一个简单的例子说明深度可分离卷积的参数数目:
假设输入张量的大小为 H × W × C H \times W \times C H×W×C,输出张量的大小为 H ′ × W ′ × C ′ H' \times W' \times C' H×W×C,卷积核的大小为 K × K K \times K K×K,深度可分离卷积的参数数目可以分为两个部分:深度卷积的参数数目和逐点卷积的参数数目。

深度卷积的参数数目。深度卷积使用一个 K × K × 1 K \times K \times 1 K×K×1 的卷积核对每个通道进行卷积,因此每个卷积核的参数数目为 K × K × 1 = K 2 K \times K \times 1=K^2 K×K×1=K2,所有卷积核的参数数目为 K 2 × C ′ K^2 \times C' K2×C,即深度卷积的参数数目为 K 2 × C ′ K^2 \times C' K2×C

逐点卷积的参数数目。逐点卷积使用一个 1 × 1 1 \times 1 1×1 的卷积核对每个通道的输出进行组合,因此每个卷积核的参数数目为 1 × 1 × C = C 1 \times 1 \times C= C 1×1×C=C,所有卷积核的参数数目为 C × C ′ C \times C' C×C,即逐点卷积的参数数目为 C × C ′ C \times C' C×C
因此,深度可分离卷积的总参数数目为 K 2 × C ′ + C × C ′ K^2 \times C' + C \times C' K2×C+C×C,相比传统卷积,深度可分离卷积的参数数目大大减少,这使得深度可分离卷积能够在相同的计算资源下获得更好的性能。

使用多个缩放因子

EfficientNet 使用了一种称为 Compound Scaling 的方法,对网络的深度、宽度和分辨率进行缩放,以适应不同的计算资源和应用场景。具体来说,Compound Scaling 包括三个因子:深度因子、宽度因子和分辨率因子。深度因子控制网络的深度,宽度因子控制每层的通道数,分辨率因子控制输入图像的分辨率。通过调整这些因子,可以在不同的计算资源下获得更好的性能。
通过增加输入图像的分辨率来提升网络的表达能力和视觉感知能力。
这三个方面的缩放是相互关联的,因此需要进行联合优化。具体来说,对于每个缩放因子 ϕ \phi ϕ,可以使用以下公式来计算网络的深度 d d d、宽度 w w w 和分辨率 r r r
d = α ϕ w = β ϕ r = γ ϕ \begin{aligned} d &= \alpha^\phi \ w &= \beta^\phi \ r &= \gamma^\phi \ \end{aligned} d=αϕ w=βϕ r=γϕ 
其中, α \alpha α β \beta β γ \gamma γ 是网络的基础深度、宽度和分辨率, ϕ \phi ϕ 是缩放因子,可以根据计算资源的限制来确定。通过联合优化这三个方面的缩放因子,可以获得更加高效的网络结构。
需要注意的是,EfficientNet 使用了一种复合扩张系数(Compound Coefficient)的方法,将每个卷积层的扩张系数设置为一个复合系数,可以在不增加计算量的情况下增加网络的表达能力。具体来说,复合扩张系数由两个部分组成:一个固定的基础扩张系数 θ \theta θ 和一个可调整的复合因子 ϕ \phi ϕ。每个卷积层的扩张系数可以表示为 α β ϕ \alpha\beta^\phi αβϕ,其中 α \alpha α 是网络基础通道数, β \beta β 是复合系数中的基础系数, ϕ \phi ϕ 是可调整的复合因子。通过联合优化复合扩张系数和缩放因子,可以获得更加高效的网络结构。
总之,Compound Scaling 方法能够同时对网络深度、宽度和分辨率进行优化,通过联合优化复合扩张系数和缩放因子,可以获得更加高效的网络结构,从而获得更好的性能和计算效率。

使用 Swish 激活函数

EfficientNet 使用了 Swish 激活函数代替了传统的 ReLU 激活函数。Swish 激活函数的公式为 f(x) = x * sigmoid(x),它可以更好地平衡计算速度和准确率。Swish 激活函数在计算量方面与 ReLU 相当,但在准确率方面更好。
总之,EfficientNet 的优化方法主要包括使用深度可分离卷积、使用多个缩放因子和使用 Swish 激活函数。这些优化方法的目的是减少计算量和参数量,提高计算效率和准确率,并使网络更加适用于现代计算机视觉应用。

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

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

相关文章

【2023年江西省研究生数学建模竞赛】题目三 植物的多样性 建模方案及参考文献

代码与结果如下:完整文档见文末 相关思路请点击这里到原文章查看 2023年江西省研究生数模竞赛题目三:植物的多样性 植物作为食物链中的生产者,通过光合作用吸收二氧化碳,制造氧气,同时为其他生物提供食物和栖息地&a…

MySQL数据库 – node使用

1 MySQL查询对象 2 MySQL查询数组 3 mysql2库介绍使用 4 mysql2预处理语句 5 mysql2连接池使用 6 mysql2的Promi 这里仅说明如何使用服务器连接数据库并进行操作。 预处理语句就是可以输入变量的语句(表现形式是有符号:?)。需…

spring源码编译笔记

下载源码 地址https://github.com/spring-projects/spring-framework/tree/v5.2.9.RELEASE 查看gradle对应版本 spring-framework-5.2.9.RELEASE/gradle/wrapper/gradle-wrapper.properties # 其他配置暂未了解具体用处,一切默认值 distributionBaseGRADLE_USE…

算法工程师提升工作效率的5个小工具

算法工程师在日常工作中大部分时间还是在和数据打交道。 诸如数据准备,数据清洗,特征分析(EDA) 等等。 这里给大家介绍我非常喜爱的5个处理数据的小工具, 也是我个人使用比较高频的几个工具,相信可以解决大家的一些痛点。 1&#…

企业邮箱如何将一个用户设置到多个部门/群组

1、使用管理员账号postmaster登录企业邮局,点击“邮局管理”。 2、点击“组织与成员”。 3、勾选需要设置的用户,点击“设置所属部门/群”。(例如:我们需要将所属销售分公司的高阳,加入到以下四个分销部中,…

实录分享 | Alluxio Operator一体化部署方案

今天给大家分享的内容是 Alluxio Operator的一体化部署方案。我会将内容分成 4 个部分来给大家讲解。 首先,介绍 Kubernetes 容器化部署和当前所面临的挑战。 然后,引入operator的概念,介绍当前业界关于Kubernetes 容器化部署问题的主流解决…

HTTP超详细教程

1,HTTP协议 1.1,HTTP简述 HTTP全称为超文本传输协议,是一种应用比较广泛的应用层协议。 那何为超文本? 超文本指的是传输的内容不仅仅是文本,比如 html,css,javaScript 等数据,还…

聚观早报|菜鸟推出自营快递菜鸟速递;字节迈出大模型赛道第一步

今日要闻:菜鸟推出自营快递「菜鸟速递」;字节迈出大模型赛道第一步;多所高校宣布将停用微信支付;沃尔沃宣布将接入特斯拉超级充电网络;TikTok将在美推出在线零售商店 菜鸟推出自营快递「菜鸟速递」 6 月 28 日消息&am…

信号链噪声分析3

目录 概要 整体架构流程 技术名词解释 技术细节 3.计算每个信号链模块的等效噪声带宽(ENB) 4.计算各个模块在信 号链输出端的噪声贡献 增益模块 信号滤波器 ADC 驱动放大器电阻 驱动放大器 RC 滤波器 小结 概要 提示:这里可以添加技术概要 本文介绍对高速宽带宽信号…

计算机组成原理(期末或考研备考)-计算机性能指标(字长,主存容量,吞吐量,主频和时钟周期)

字长:字长是指计算机进行一次整数运算所能处理的二进制数据的位数,通常与CPU寄存器大小相同,因为数据进入到CPU之前会放入寄存器中。 主存大小:通常使用字数字长,例如512K*16位就表示共有512K个存储单元,每…

VSCode编译器环境下,调试3d-tiles-validator

VSCode编译器环境下,调试3d-tiles-validator 1. 源代码环境准备2. VsCode环境装备3. 调试 1. 源代码环境准备 参照3d-tiles-validator仓库的README.md文件 Clone the repository into the current directory:git clone https://github.com/CesiumGS/3d-tiles-vali…

手势识别系统Python,基于卷积神经网络算法

一、介绍 手势识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,…