深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别

本文主要是介绍深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在轻量化网络中,经常使用组卷积、深度卷积或是深度可分离卷积来降低FLOPs,那么三者的区别在哪里呢?下面总结一下。

一、标准卷积
下面是用一个卷积核对输入特征做一次卷积,得到的输出特征的通道为1。

在这里插入图片描述
二、组卷积
组卷积是将输入特征按通道分为g组,每组特征中的通道数为 C i n g \frac{C_{in}}{g} gCin,所以相应的卷积核的大小也变了,通道数变少了。每次卷积后的特征按通道concat输出特征。当分组数量和输出特征的通道相同时,即只有 C o u t C_{out} Cout个卷积核时,卷积分别对输入特征的每一组卷积1次;当输出特征的通道大于分组数量时,需要 C o u t C_{out} Cout个卷积核对输入特征的每一组卷积 C o u t / g C_{out}/g Cout/g次。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、深度卷积
深度卷积是组卷积的极端情况,将输入特征的每一通道分为一组,即分组数为 g = C i n g=C_{in} g=Cin。后续步骤和组卷积一致。
四、深度可分离卷积
深度可分离卷积是将深度卷积和点卷积( 1 × 1 1 \times 1 1×1卷积核)相结合。可以从深度卷积中可以得知,卷积核只是对通道的每一层进行了提取了特征,和标准卷积缺少了通道之间的信息交互。加入点卷积后可以增强特征通道之间的信息交互,进一步提升性能。具体可参考MobileNets v1。

最后本文只是对三种卷积感性上的认识,具体的不同卷积的FLOPs计算请参考这篇文章。

这篇关于深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441918

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程