【 深度可分离卷积】

深度可分离卷积

深度可分离卷积(Depthwise Separable Convolution)是一种在卷积神经网络中减少计算量和参数数量的技术。这种技术将标准的卷积操作分解为两个更简单的操作:逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。逐通道卷积对输入特征图的每个通道独立应用一个卷积核,而逐点卷积则使用1×1的卷积核将逐通道卷积的输出合并成最终的特征图。

MobileNet是一个著名的轻量级深度学习模型,它专为移动和嵌入式视觉应用设计。MobileNet架构大量使用了深度可分离卷积,从而在保持准确度的同时显著减少了模型的大小和计算需求。MobileNet系列模型,包括MobileNetV1、MobileNetV2和MobileNetV3,都采用了这种技术,使得它们非常适合在资源受限的设备上运行。

MobileNetV1是2017年由谷歌公司提出的,它通过使用深度可分离卷积,大幅度降低了模型的计算量和参数量,使得深度学习的智能化技术可以在端侧设备、边缘设备上开始应用。MobileNetV2进一步改进了V1的设计,引入了倒置残差结构(Inverted Residuals)和线性瓶颈(Linear Bottlenecks),以提高模型的效率和准确性。MobileNetV3则通过神经网络搜索(Neural Architecture Search, NAS)技术,自动寻找最优的网络结构,进一步提升了模型性能。

在MobileNet系列中,深度可分离卷积的计算量主要集中在1×1的卷积上,这使得模型能够以较低的计算成本实现高效的特征提取。此外,MobileNetV3还引入了新的激活函数h-swish和SiLU,以及对网络的不同部分使用不同的训练策略,以进一步提升性能。

深度可分离卷积和普通卷积的参数量和计算量比较

深度可分离卷积(Depthwise Separable Convolution)是一种卷积神经网络中的特殊卷积操作,它将标准的卷积操作分解为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。这种分解可以显著减少参数数量和计算量,而且通常可以在保持模型性能的同时提高效率。

考虑一个标准的卷积操作,输入通道数为(C_{\text{in}}),输出通道数为(C_{\text{out}}),卷积核大小为(k \times k),则其参数量和计算量如下:

  1. 参数量(Standard Convolution):
    参数数量 = (C_{\text{in}} \times C_{\text{out}} \times k \times k)

  2. 计算量(Standard Convolution):
    计算次数 = (C_{\text{in}} \times C_{\text{out}} \times k \times k \times H_{\text{out}} \times W_{\text{out}})
    其中(H_{\text{out}})和(W_{\text{out}})是输出特征图的高度和宽度。

现在来比较深度可分离卷积和普通卷积的参数量和计算量:

  1. 深度可分离卷积参数量:
    深度卷积参数数量 = (C_{\text{in}} \times k \times k)
    逐点卷积参数数量 = (C_{\text{in}} \times C_{\text{out}})
    总参数数量 = 深度卷积参数数量 + 逐点卷积参数数量

  2. 深度可分离卷积计算量:
    深度卷积计算次数 = (C_{\text{in}} \times k \times k \times H_{\text{out}} \times W_{\text{out}})
    逐点卷积计算次数 = (C_{\text{in}} \times C_{\text{out}} \times H_{\text{out}} \times W_{\text{out}})
    总计算次数 = 深度卷积计算次数 + 逐点卷积计算次数

pytorch实现

深度可分离卷积(Depthwise Separable Convolution)在PyTorch中的实现通常涉及两个主要步骤:逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution):

import torch
import torch.nn as nn
import torch.nn.functional as F

class DEPTHWISECONV(nn.Module):
    def __init__(self, in_ch, out_ch):
        super(DEPTHWISECONV, self).__init__()
        # Depthwise Convolution
        self.depth_conv = nn.Conv2d(in_channels=in_ch,
                                     out_channels=in_ch,
                                     kernel_size=3,
                                     stride=1,
                                     padding=1,
                                     groups=in_ch)
        # Pointwise Convolution
        self.point_conv = nn.Conv2d(in_channels=in_ch,
                                     out_channels=out_ch,
                                     kernel_size=1,
                                     stride=1,
                                     padding=0,
                                     groups=1)

    def forward(self, input):
        out = self.depth_conv(input)
        out = self.point_conv(out)
        return out

# Example usage:
# Initialize the depthwise separable convolution module
dsc_module = DEPTHWISECONV(in_ch=3, out_ch=4)

# Create a random tensor to represent an input with 3 channels, 32x32 spatial dimensions
input_tensor = torch.randn(1, 3, 32, 32)

# Pass the input through the module to get the output
output_tensor = dsc_module(input_tensor)

# Print the size of the output tensor
print(output_tensor.size())  # Should output the shape of the tensor after depthwise separable convolution

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Python爬取淘宝商品并做数据分析

使用Python爬取淘宝商品并做数据分析,可以按照以下步骤进行操作: 确定需求:确定要爬取的淘宝商品的种类、数量、关键词等信息。 编写爬虫程序:使用Python编写爬虫程序,通过模拟浏览器请求,获取淘宝商品的页…

ffmpeg音视频裁剪

音视频裁剪,通常会依据时间轴为基准,从某个起始点到终止点的音视频截取出来,当然音视频文件中存在多路流,所对每一组流进行裁剪 基础概念: 编码帧的分类: I帧(Intra coded frames): 关键帧,…

SpringCloud学习笔记(一)微服务介绍、服务拆分和RestTemplate远程调用、Eureka注册中心

文章目录 1 认识微服务1.1 单体架构1.2 分布式架构1.3 微服务1.4 SpringCloud1.5 总结 2 服务拆分与远程调用2.1 服务拆分原则2.2 服务拆分示例2.2.1 搭建项目2.2.2 创建数据库和表2.2.3 实现远程调用2.2.3.1 需求描述2.2.3.2 注册RestTemplate2.2.3.3 实现远程调用 2.2.4 提供…

【网络】HTTP协议

文章目录 一. 认识 URL1. URL 初识2. URL 的组成① 协议名称② 域名③ 端口号④ 文件路径⑤ 查询参数 3. URL中的字符3.1 合法字符3.2 保留字符3.3 其他字符3.4 URL中的字符总结 二. HTTP 协议1. HTTP 介绍2. 请求报文2.1 请求报文的格式2.2 请求方法介绍2.3 请求报文中常见的 …

【LeetCode:1103. 分糖果 II + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

CUDA架构介绍与设计模式解析

文章目录 **CUDA**架构介绍与设计模式解析**1** CUDA 介绍CUDA发展历程CUDA主要特性CUDA系统架构CUDA应用场景编程语言支持CUDA计算过程线程层次存储层次 **2** CUDA 系统架构分层架构并行计算模式生产-消费者模式工作池模式异步编程模式 **3** CUDA 中的设计模式工厂模式策略模…

电脑技巧:推荐一款非常好用的媒体播放器PotPlayer

目录 一、 软件简介 二、功能介绍 2.1 格式兼容性强 2.2 高清播放与硬件加速 2.3 自定义皮肤与界面布局 2.4 多音轨切换与音效增强 2.5 字幕支持与编辑 2.6 视频截图与录像 2.7 网络流媒体播放 三、软件特色 四、使用技巧 五、总结 一、 软件简介 PotPlayer播放器 …

【MATLAB源码-第201期】基于matlab的黏菌群优化算法(SMA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境: MATLAB 2022a 1、算法描述 黏菌优化算法(Slime Mould Algorithm, SMA)是一种新颖的启发式优化方法,其灵感来源于自然界中的真菌——黏菌。这种算法模拟了黏菌在寻找食物时的行为和网络形成策略。在本文中&#xff0c…

【Linux】yum、vim

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12625432.html 目录 Linux 软件包管理器 yum 什么是软件包 查看软件包 如何安装软件 如何卸载软…

网络安全的重要性及人才需求

安全现在是大趋势,说是铁饭碗也不为过,就业前景好,方向多比传统计算机行业就业舒服点。但是大厂依然是985,211的天下,是双非能进大厂的,只是凤毛麟角。前提是你的能力可以让公司忽略你的学历。 以2023年为…

【华为】VRRP的实验配置

【华为】VRRP的实验配置 实验需求拓扑LSW 3LSW 1基础配置VRRPDHCPOSPF默认路由 LSW 2基本配置VRRPDHCPOSPF默认路由 R1ISPPC1PC2 测试上网VRRP实验需求监视端口 配置文档 实验需求 ① 该公司有市场部和技术部,分别划在VLAN 10 和 VLAN 20里面 ② 此时为了网络的稳…

万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信

文章目录 一、设置IP以及MAC二、上板效果2.1、板卡与主机数据回环测试2.2、板卡满带宽发送数据 一、设置IP以及MAC 顶层模块设置源MAC地址 module XC7Z100_Top#(parameter P_SRC_MAC 48h01_02_03_04_05_06,parameter P_DST_MAC 48hff_ff_ff_ff_ff_ff )(input …

双目深度估计原理立体视觉

双目深度估计原理&立体视觉 0. 写在前面1. 双目估计的大致步骤2. 理想双目系统的深度估计公式推导3. 双目标定公式推导4. 极线校正理论推导 0. 写在前面 双目深度估计是通过两个相机的对同一个点的视差来得到给该点的深度。 标准系统的双目深度估计的公式推导需要满足:1)两…

ASR语音转录Prompt优化

ASR语音转录Prompt优化 一、前言 在ASR转录的时候,我们能很明显的感受到有时候语音识别不是很准确,这过程中常见的文本错误主要可以归纳为以下几类: 同音错误(Homophone Errors) 同音错误发生在不同词语发音相似或相…

Modelsim自动仿真平台的搭建

Modelsim自动仿真平台的搭建 如果要搭建自动仿真平台脚本那就需要更改下面3个文件。run_simulation.bat、complie.do和wave.do文件。注:前提是安装了modulsim并且配置好了环境变量,这里不过多介绍。 一、下面是run_simulation.bat文件的内容 : 注释的…

MySQL-查询数据-练习

练习 1.创建一个查询,显示收入超过 12,000 的雇员的名字和薪水。 select LAST_NAME,SALARY from employees where SALARY > 12000;2.创建一个查询,显示雇员号为 176 的雇员的名字和部门号。 select LAST_NAME,DEPARTMENT_ID from employees where …

前端vue如何生成二维码

有时候有需要链接直接生成二维码在手机上看的需求,比如下载,比如信息,比如excel 下面先引入包 import QRCode from qrcode; 然后上代码 // 将res转换成二维码const qrCodeData JSON.stringify(res); // 将res转换为字符串作为二维码数据// …

WebSocket 全面解析

🌟 引言 WebSocket,一个让实时通信变得轻而易举的神器,它打破了传统HTTP协议的限制,实现了浏览器与服务器间的全双工通信。想象一下,即时消息、在线游戏、实时股票报价…这一切都离不开WebSocket的魔力💫。…

xLua热更新解决方案

图中灰色的无法实现热更新,而Lua代码可以打包成AB包,并上传到资源服务器, 当进入游戏检测是否有资源需要更新,需要则会从资源服务器下载。 学习目标 1.导入xLua框架 2.C#调用Lua 3.Lua调用C# 4.xLua热补丁 xLua框架导入和AB…

什么是网络安全等级保护测评(等保测评)?

什么是网络安全等级保护测评(等保测评)呢?今天永恒无限就为大家介绍下网络安全等级保护测评(等保测评) 网络安全等级保护测评(等保测评)是指对信息和信息系统按照重要性等级进行的保护测评。它…
最新文章