标准卷积和深度可分离卷积

ops/2025/1/16 7:10:53/

一、标准卷积

1.1、定义

        标准卷积是一种在输入特征图上应用卷积核,以生成输出特征图的操作。卷积核在输入特征图上滑动,计算每个位置的点积,生成新的特征图。

1.2、计算过程

  • 输入特征图:假设输入特征图的尺寸为 H×W×C,其中 H 是高度,W 是宽度,C 是通道数。

  • 卷积核:假设使用 K个卷积核,每个卷积核的尺寸为 F×F×C,其中 F是卷积核的大小。

  • 输出特征图:输出特征图的尺寸为 H′×W′×K,其中 H′ 和 W′ 是输出特征图的高度和宽度,K 是输出通道数。

1.3、参数量

        标准卷积的计算量为:

K \times F^2 \times C \times H' \times W'

1.4、优点 

  • 特征提取:标准卷积能够有效地提取输入数据的局部特征,通过多层卷积可以提取更高级的特征。

  • 参数共享:卷积核在输入特征图上滑动,共享参数,减少了模型的参数数量,提高了计算效率。

  • 平移不变性:卷积操作具有平移不变性,即对输入数据的平移变化具有一定的鲁棒性。

1.5、缺点

  • 计算量大:标准卷积的计算量较大,特别是在输入特征图和卷积核的尺寸较大时,计算成本较高。

  • 参数数量多:标准卷积的参数数量较多,特别是在输出通道数较多时,模型的复杂度较高。

 1.6、个人理解

二、深度可分离卷积

2.1、定义

        深度可分离卷积将标准卷积分解为两个独立的步骤:

  1. 深度卷积(Depthwise Convolution):对每个输入通道单独进行卷积操作,不跨通道进行卷积。

  2. 逐点卷积(Pointwise Convolution):使用 1×1卷积核对深度卷积的输出进行通道混合,生成新的特征图。

2.2、计算过程

深度卷积:

  • 输入特征图:假设输入特征图的尺寸为 H×W×C,其中 H 是高度,W 是宽度,C 是通道数。

  • 卷积核:使用 C 个卷积核,每个卷积核的尺寸为 F×F×1。

  • 输出特征图:输出特征图的尺寸为 H′×W′×C

逐点卷积:

  • 输入特征图:深度卷积的输出特征图,尺寸为 H′×W′×C。

  • 卷积核:使用 K个 1×1卷积核,每个卷积核的尺寸为 1×1×C。

  • 输出特征图:输出特征图的尺寸为 H′×W′×K。

2.3、参数量

  • 深度卷积的计算量

    F^2 \times C \times H' \times W'

  • 逐点卷积的计算量

    K \times C \times H' \times W'

  • 总计算量

    (F^2 + K) \times C \times H' \times W'

2.4、优点

  • 计算量小:深度可分离卷积的计算量显著小于标准卷积,特别是在 F 和 C 较大时。

  • 参数数量少:深度可分离卷积的参数数量也显著少于标准卷积,这使得模型更轻量,更适合在移动设备和资源受限的环境中运行。

  • 效率高:由于计算量和参数数量的减少,深度可分离卷积在训练和推理时更加高效。

2.5、个人理解

三、参考资料

【1】哔哩哔哩---面试常见问题1:DWConv深度可分离卷积

【2】知乎---CNN基础知识——卷积(Convolution)、填充(Padding)、步长(Stride)


http://www.ppmy.cn/ops/150497.html

相关文章

CSRF(跨站请求伪造)深度解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【 PID 算法 】PID 算法基础

一、简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义,…

ssm框架-springboot学习笔记

1.快速入门 在pom文件中将父工程文件配置成一个springboot文件,就可以将整个项目转换为springboot文件了 然后导入一个启动器依赖就可以直接启动一个springboot项目了 springboot启动器的类和固定写法 添加一个这样的注解就表示这是一个启动类, 代码…

YOLOv10-1.1部分代码阅读笔记-dataset.py

dataset.py ultralytics\data\dataset.py 目录 dataset.py 1.所需的库和模块 2.class YOLODataset(BaseDataset): 3.class ClassificationDataset(torchvision.datasets.ImageFolder): 4.def load_dataset_cache_file(path): 5.def save_dataset_cache_file(prefix,…

springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)

线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用,凭借uniapp 可以在h5 小程序 app…

配置Allure环境变量【macOS版】

1. 进入github官网,搜索allure 点击进入,下滑找到Download栏目,点击release 2. 下载安装包并解压 我下载的是zip,解压至存放目录,复制该目录。(一会配置环境变量用) 3. 编辑.zsrch文件&…

【C语言】【C++】Curl库的安装

1、访问github上的curl源代码库&#xff1a; 源码链接 2、下载curl的全部源码&#xff1a; 3、解压缩&#xff0c;找到include/目录下的curl/文件夹&#xff0c;将它复制到编译器的include目录下。 之后就可以引用相关头文件了。举例&#xff1a; #include <curl/curl.h&g…

(三)c#中const、static、readonly的区别

在 C# 中&#xff0c;const、static 和 readonly 都是用来定义不可变的值&#xff0c;但它们有一些关键的区别。让我们详细比较一下这三者的用途和特点&#xff1a; 1. const&#xff08;常量&#xff09; 编译时常量&#xff1a;const 用于声明常量&#xff0c;其值必须在编…