轻量级网络模型ShuffleNet

news2024/11/11 5:45:19

在学习ShuffleNet内容前需要简单了解卷积神经网络和MobileNet的相关内容,大家可以去看我之前的一篇博客MobileNet发展脉络(V1-V2-V3),🆗,接下来步入正题~

卷积神经网络被广泛应用在图像分类、目标检测等视觉任务中,并取得了巨大的成功。然而,卷积神经网络通常需要较大的运算量和内存占用,在移动端以及嵌入式设备等资源受限的环境中受到限制,因此需要进行网络压缩。

模型介绍

ShuffleNet是旷视推出的轻量级网络模型,旨在不过多牺牲模型性能的同时大幅度减小模型的尺寸和加快模型的运算速度。ShuffleNet和MobileNet是同年提出的工作,专门为计算资源有限的设备设计的神经网络结构。两者从两个不同的角度来分析卷积。MobileNet通过深度可分离卷积来实现模型的压缩,而ShuffleNet利用了分组点卷积pointwise group convolution来降低参数量,利用通道重排channel shuffle操作来增强不同通道之间的交互和融合。在保留了模型精度的同时极大减少了计算开销。

分组点卷积

常规卷积

常规卷积操作输入有几个通道,卷积核就有几个通道,同时有多少个卷积核就生成多少个feature map,因此,对于一个7x7x3的输入,使用3x3x3的卷积核进行卷积,卷积核的个数共有128个,所以输出就是5x5x128的feature map.

分组卷积

如上图,分组卷积将12个通道的输入分成3组,每组4个通道,每一组的通道使用两个卷积核进行卷积,得到2个feature map,三组就得到6个feature map。可以看出最终的输出是和标准卷积相同的,但是在计算过程中的参数量降低为原来的1/3.

同理,分组卷积就是使用一半维数的卷积核去处理一半维数的输入,最终将处理的结果拼接到一起就形成了最终的输出。

点卷积

ShuffleNet中的点卷积和MobileNet中的深度可分离卷积中的点卷积一样,即执行1x1卷积来融合所有通道上的信息。深度卷积每个卷积核只处理1个输入特征通道,在这个过程中通道与通道之间的联系被切断,所以后面需要再用 1x1 大小的逐点卷积层来处理M个特征通道之间的信息。

分组点卷积

分组点卷积也就是说又点卷积又分组,即将分组卷积中的卷积核的大小变为1*1的点卷积。但是这里的点卷积就不是贯通输入全通道了,而是贯通分组后的每一组的全通道。

通道重排

通道重排的过程如上图所示,先将通道排成一行,然后reshape成g行n列的矩阵,再对这个矩阵进行转置,最终将转置后的矩阵进行展平,按照组数去取其中的元素就是重排后的组的元素。

网络结构

(a)表示Resnet的结构示意图,其中右边将3x3的常规卷积替换成了3x3的深度可分离卷积,左边是利用shortcut connection恒等映射,逐元素相加最后再接Relu激活。

(b)表示正常ShuffleNet的模块,右边先进行分组点卷积,然后通道重排,其次接3x3深度可分离卷积,最后接分组点卷积输出。左边利用shortcut connection恒等映射,逐元素相加最后再接Relu激活。

(c)表示降采样的ShuffleNet的模块,右边先进行分组点卷积,然后通道重排,其次接步长为2的3x3深度可分离卷积进行降采样,最后接分组点卷积输出。左边利用接步长为2的3x3平均池化进行下采样,然后将两边连接起来再接Relu激活。

实验结果

对不同scale和分组数的性能

不同channel shuffle对不同网络大小作用

ShuffleNet与MobileNet在ImageNet分类的结果比较

作为目标检测主干网络在COCO数据集上的结果对比

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

易盾sdk引起项目的整体耗时问题?

大家好: 我是烤鸭。今年年初的时候,项目接入易盾sdk之后,随着接口调用次数增多(用到易盾sdk的接口),项目整体性能变差。写篇文章做个复盘记录,其实同事已经写过了,我借鉴部分再拓展一些。 问题描述 突然收…

【JavaEE初阶】第五节.多线程 ( 基础篇 ) 线程安全问题(上篇)

目录 文章目录 前言 一、线程安全的概述 1.1 什么是线程安全问题 1.2 存在线程安全问题的实例 二、线程安全问题及其解决办法 2.1 案例分析 2.2 造成线程不安全的原因 2.3 线程加锁操作解决原子性 问题 ; 2.3.1 什么是加锁 2.3.2 使用 synchronized关键字…

爆品跟卖商家必读:2023年快速入局TikTok选品5大关键

TikTok商业进程一直有在发展,开启东南亚小店,美国小店内邀……有吸引了不少外贸工厂和传统跨境电商卖家等玩家入局。2022年这一年,不管是直播带货,短视频带货,还是广告投流,数据都有新的变化。据报道&#…

Word 允许西文在单词中间换行,没用/无效 终极办法

有时在写论文中,英文的调整相当麻烦,为了节约版面,会设置允许西文在单词中间换行。但有时不希望这样,特别是在复制网上英文时,会出现单词分断换行情况,如何解决: 1.一般办法。 在Word选择要调整…

C规范编辑笔记(十)

往期文章: C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) 正文: 又是新的一年,2023年的第一篇没想到隔了这么久…

MyBatis-Plus加密字段查询(密文检索)

MyBatis-Plus数据安全保护(加密解密)解释说明 1.字段加密后,数据库存储的字段内容为十六进制格式的密文2.条件查询时,若不对密文进行处理将无法匹配出想要的结果3.处理方式是借助SQL的AES_DECRYPT函数将密文解密后匹配4.SQL的解密函数只有AES_DECRYPT&am…

Java-流和IO

文章目录流InputStreamFileInputStream常用方法详情代码示例BufferInputStream常用方法详情代码示例OutputStreamFileOutputStream常用方法详情代码示例BufferedOutputStream常用方法详情代码示例ReadWriteJava的java.io库提供了IO接口,IO是以流为基础进行输入输出的…

云原生技能树-docker image 操作-练习篇

从Docker Hub 拉取已有镜像 一个Docker 镜像(image)包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务(Image Registry)里,默认的镜像仓库服务是Docker Hub。 用户可以制作、构建镜像、将镜像上传到镜像仓库服务,从而可以…

100w人在线的 弹幕 系统,是怎么架构的?

Shopee是东南亚及中国台湾地区的电商平台 。2015年于新加坡成立并设立总部,随后拓展至马来西亚、泰国、中国台湾地区、印度尼西亚、越南及菲律宾共七大市场。 Shopee拥有商品种类,包括电子消费品、家居、美容保健、母婴、服饰及健身器材等。 2022年第二…

【STM32学习】GPIO口的八种工作模式

GPIO口的八种工作模式一、参考资料二、施密特触发器1、电路2、电路计算一、参考资料 GPIO原理图详解 强烈建议观看:GPIO为什么这样设计? 施密特触发器—原理 施密特触发器—计算 什么是运放的虚短和虚断? 二、施密特触发器 关于GPIO的原理与…

JavaWeb-JSP

JavaWeb-JSP 1,JSP 概述 JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内容,还可以定义 Java代码的动态内容,也就是 J…

设计模式 (二) 工厂模式 Java

目录 一、案例引出 二、简单工厂模式 二、抽象工厂 工厂设计模式,顾名思义类似一家工厂来制造各种产品,目的在于提高代码的可扩展性。 一、案例引出 通过接口来实现一类产品的功能,如目前有飞机、轮船、汽车这类产品的实体类&#xff0c…

Windows 安装 Android Studio

1、下载Android Studio https://r1—sn-2x3edn7s.gvt1.com/edgedl/android/studio/install/2022.1.1.19/android-studio-2022.1.1.19-windows.exe?cms_redirectyes&mhBy&mip175.146.144.124&mm28&mnsn-2x3edn7s&msnvh&mt1673878346&mvm&mvi1…

Pycharm社区版侧边栏没有database按钮

Pycharm有专业版和社区版这两个版本,普通人在大多数情况下我们都会选择社区版进行下载安装。为啥呢?因为社区版免费,专业版收费一般人用不起呀,而且社区版能够基本满足我们的日常需求(但是这也就意味着社区版会比专业版…

LINUX学习之查看文件常用命令(四)

cat 命令描述 cat命令是一种用于查看文件内容的命令,它可以将文件的内容直接输出到标准输出 以下是cat命令常用参数: -A :显示所有字符,包括特殊字符-b :显示行号,仅针对非空白行-E :在每行…

【Java集合进阶】Collection 体系集合详解(ArrayList,LinkedList,HashSet,TreeSet...)

文章目录1. 概念2. 集合和数组的区别3. 集合的体系结构4. Collection父接口5. List 子接口6. List 实现类6.1 ArrayList 类6.2 Vector 类6.3 LinkedList 类6.4 ArrayList和LinkedList的区别7. Set 子接口8. Set 实现类8.1 HashSet 类8.2 TreeSet 类9. Collections 工具类Java编…

Vue9-数据代理

数据代理:通过一个对象代理对另一个对象中属性的操作(读写) 结论:Vue中通过vm(实例对象)来代理data中的所有数据 1.首先创建了一个vm对象 2.然后 vue就给vm准备了一些数据,当然也将data存放到…

Ubuntu下源码编译VirtualBox二 —— 源码编译(1)

先打个预防针:在Ubuntu下编译VirtualBox可以说相当复杂。 1. 编译指导 (1)进入技术文档页面 在VirtualBox主页(Oracle VM VirtualBox)中,鼠标左键点击“Documentation”下的“Technical docs”&#xff0…

【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

安装mitmproxy Https抓包证书 macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 前提 手机需要root,macbook上需要安装好mitmproxy macbook安装mitmproxy 需要完成下文1-3: https://github.com/doug-leith/cydia &…

【内排序 -- 八大排序】

目录:前言算法实现(一)插入排序1.直接插入排序2.希尔排序(缩小增量排序)(二)选择排序1.选择排序2.堆排序(三)交换排序冒泡排序快速排序1(hoare版)…