轻量级网络模型ShuffleNet

news/2023/6/9 20:28:37

在学习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.exyb.cn/news/show-4560941.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

4.1.1 OS之初识文件管理概念和功能

文章目录0.思维导图1.文件的属性2.文件内部的数据如何组织起来?3.文件之间应该如何组织起来?4.操作系统应该向上提供哪些功能?5.从上往下看,文件应该如何存放在外存?6.其他需要由操作系统实现的文件管理功能0.思维导图…

VPS融合怪测评脚本(主体已完善,历史遗留问题解决时间未知)(VPS fusion monster evaluation script)

ecs 原仓库链接&#xff1a;https://github.com/spiritLHLS/ecs 支持系统&#xff1a;Ubuntu 18&#xff0c;Debian 8&#xff0c;centos 7&#xff0c;Fedora&#xff0c;Almalinux 8.5, Arch 融合怪测评脚本 bash <(wget -qO- --no-check-certificate https://gitlab.…

web前端之css快速入门

css简介 css概述 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中&#xff0c;是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在 CSS 文件中多个样式定义可层叠为一 c…

python之路-----前端之css

本篇内容 CSS 语法css的四种引入方式 css选择器css属性操作Caution&#xff01;后台管理布局css响应式布局一.CSS语法 CSS 规则由两个主要的部分构成&#xff1a;选择器&#xff0c;以及一条或多条声明。 selector {property: value;property: value;... property: value} 例如…

Java 开发常用的 Linux 命令知识积累

来源 | siye1982.github.io/2016/02/25/linux-list/写在前面基本操作Linux关机,重启查看系统,CPU信息建立软连接rpm相关sshkey命令重命名同步服务器时间后台运行命令强制活动用户退出查看命令路径查看进程所有打开最大fd数配置dnsnslookup,查看域名路由表last, 最近登录信息列表…

一篇让你完全够用TS的指南

关注公众号 前端开发博客&#xff0c;领27本电子书回复加群&#xff0c;自助秒进前端群大家好&#xff0c;我叫小杜杜&#xff0c;是一个喜欢动手敲代码的小菜鸟&#xff0c;我认为代码应该亲自敲一遍&#xff0c;才能更好的熟记于心&#xff0c;作为一个程序员&#xff0c;我们…

Linux常用指令与操作

LINUX操作系统是一种免费使用和自由传播的类UNIX操作系统。其内核由林纳斯托瓦兹于1991年10月5日首次发布&#xff0c;是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议&#xff0c;是一个性能稳定的多用户网络…

Django==2.2学习笔记,ubantu

安装 sudo pip3 install django2.2.12 项目结构 创建项目文件 django-admin startproject config . # 创建一个config配置文件和managelpy 启动端口 python manage.py runserver [可选: 端口号]上面的方法开启了一个开发版的server 关闭服务 直接在服务终端下Ctrlc关闭服务…