轻量级深度学习网络概览

article/2025/6/29 14:44:26

调研了一下最近的一些轻量级网络,列举并简单介绍各个网络的设计思路

PVANET

2016年1月在arxiv网站第一次提交
文章地址:https://arxiv.org/abs/1608.08021
代码链接:https://github.com/sanghoon/pva-faster-rcnn

文章目的是减少网络计算量加快网络的速度,文章采用C.Relu(类似于一个对称的Relu函数)和inception结构(分别如下两图所示),通过减少通道数增加网络层数来加速网络

C.Relu结构如下图所示
在这里插入图片描述

新的inception结构如下图所示
在这里插入图片描述

pvanet网络结构如下表所示
在这里插入图片描述

SqueezeNet

2016年2月在arxiv上第一次提交
文章地址:https://arxiv.org/abs/1602.07360
代码地址:https://github.com/DeepScale/SqueezeNet

该文章对精简网络遵循三个策略:

  1. 使用1*1大小的卷积代替3*3的卷积,这样可以减少网络参数
  2. 减少3*3卷积层的输入通道数,因为一层3*3网络参数个数计算方式为(输入通道数*输出通道数*3*3),减少通道数能够很大程度的减少网络参数
  3. 下采样的操作尽量靠后,一般的网络层后会接激活层,文章认为激活层越大网络精度越高,所以推迟对feature map下采样,可以增加激活层的大小,从而提高网络精度。

通过上述三点文章提出fire module的结构,根据fire module构造出sqeezenet

fire module结构如下图所示
在这里插入图片描述

sqeezenet及其两种变式如下图所示
在这里插入图片描述

Densenet

2016年8月在arxiv上第一次提交,发表于CVPR 2017
文章地址:https://arxiv.org/abs/1608.06993
代码地址:https://github.com/liuzhuang13/DenseNet

文章通过借鉴resenet提出的新的网络结构,网络由多个dense block组成,在dense block中每层的输入是前面所有层的输出concat形成的,这样做有下列优点:

  1. 减轻了vanishing-gradient(梯度消失)
  2. 加强了feature的传递
  3. 更有效地利用了feature
  4. 一定程度上较少了参数数量

Dense block结构如下图所示
在这里插入图片描述

DenseNet结构如下表所示
在这里插入图片描述

Xception

2016年10月在arxiv上第一次提交,发表于CVPR 2017
文章地址:https://arxiv.org/abs/1610.02357
代码地址:https://keras.io/applications/#xception

之所以叫Xception,文章指出是因为灵感来自于inception,网络结构其实和inception没太大关系,主要是该网络使用了depthwise和pointwise的卷积,构建了一个新的网络,在与inception V3相同参数量的情况下获得了比inception V3更好的结果

Xception网络结构如下图所示
其中的SeparableConv就是由depthwise和pointwise的卷积组成

在这里插入图片描述

CondenseNet

2017年11月在arxiv上第一次提交
文章地址:https://arxiv.org/abs/1711.09224
代码地址: https:// github.com/ShichenLiu/CondenseNet

文章是对Densenet的改进,在Densenet的基础上引入了group conv,但是对于1*1的卷积采用group conv会导致网络效果下降,文章猜测是因为1*1的输入是由前面所有的输出concat得到的,使用group会导致一些不相关的feature map进行计算,从而使得效果降低,所以对于1*1的卷积文章提出了Learned Group Convolution。

Learned Group Convolution不同于Group convolution的是,它可以自己学习分组,而且在得到分组结果后裁去一些组里面不重要的连接

最后对于整体网络结构不同于Densenet的是,不同的block之间的feature map也相互连接,随着网络的加深增大了growth rate(densenet每层的输出通道数)

下图为densenet与CondenseNet单元结构(block)的对比图
左图为DenseNet的结构,中图为CondenseNet训练的结构,右图为CondenseNet推断(inference)的结构
在这里插入图片描述

CondenseNet网络的结构示意图如下图所示
在这里插入图片描述

MobileNets

2017年4月在arxiv上提交
论文地址:https://arxiv.org/abs/1704.04861
代码地址:https://github.com/tensorflow/models/tree/master/research/slim/nets

文章目的:该网络设计的主要目的不是减小网络而是加快网络的计算速度

主要思想是将一个普通的卷积分解为一个depth wise的卷积和一个point wise的卷积

depthwise就是每个通道有一个卷积核,卷积结果不想加是独立的
pointwise就是将通道数转化为最终输出的通道数,这样可以将各个通道的输出结果有个结合的过程

网络还有两个参数控制通道数和feature map的大小可以在程序中进行设置

普通卷积、depthwise卷积、pointwise卷积的区别如下图所示
在这里插入图片描述

MobileNets网络结构如下表所示
在这里插入图片描述

MobileNetV2

2018年1月在arxiv上第一次提交,发表于CVPR 2018
文章地址:https://arxiv.org/abs/1801.04381
代码地址:https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet

文章目的:该网络设计是给手机端使用

网络中继承了mobilenet的depthwise和pointwise的思想,并且采用了resnet中的bottleneck的块结构

该文章残差块称为Inverted residuals,不同于残差网络的残差块,这里残差块里面的通道数是先增后减(先增加通道数可以增加网络容量),而且减少通道数的卷积层是不带relu函数的(文章认为relu会对提取好的特征有一定的损伤)

Inverted residuals结构如下图所示
左图为stride=1,右图为stride=2的Inverted residuals结构
在这里插入图片描述

MobileNetV2结构如下表所示
在这里插入图片描述

ShuffleNet

2017年7月在arxiv上第一次提交
文章地址:https://arxiv.org/abs/1707.01083

文章目的:文章主要考虑的是网络的计算量,提出高效的网络

文章采用了group convolutions和channels shuffle,采用group convolutions是为了减少计算量,采用channels shuffle是为了防止group convolutions带来的负效应

shuffle的结构
左图为正经group convulution这样的操作会导致输入一直到输出提取的特征都是分离的没有任何交集
中图的操作方式会导致GConv2的输入与Gconv1是强相关的
右图加入了shuffle的结构,这样不同组卷积的结果能够一起参与运算
在这里插入图片描述

ShuffleNet Units
左图为正经的resnet结构并将 3 × 3 3\times 3 3×3的卷积改为depthwise convolution
中图和右图为ShuffleNet Units,其中中图stride=1,右图stride=2
在这里插入图片描述

ShuffleNet结构如下图所示
在这里插入图片描述

ShuffleNet V2

2018年7月在arxiv上提交,发表在ECCV 2018
文章地址:https://arxiv.org/abs/1807.11164

文章认为现在很多评价网络效率的论文都是只考虑FLOPS,这个一种间接的评价方法,应该直接测试网络的速度,因为相同FLOPS的网络可能因为硬件内存等原因导致网络速度不同

通过一系列的试验,文章总结出四点:

  1. 对于网络的某一层来说,输入与输出通道数相同这样能更高的加速网络的计算速度
  2. 群卷积对网络计算速度有一定影响(在相同的FLOPS下,群卷积的分的越细,即g越大,速度越慢)
  3. 分支越多,网络计算速度越慢
  4. 减少element-wise的操作

ShuffleNet V2 Units结构如下图所示
a、b图为ShuffleNet Units,c、d图为ShuffleNet V2 Units
a\c图stride=1,b\d图stride=2
在这里插入图片描述

ShuffleNet V2网络结构如下图所示
网络框架和shuffle net基本一样
在这里插入图片描述

IGCV1

2017年7月在arxiv上第一次提交,发表在ICCV 2017

文章地址:https://arxiv.org/abs/1707.02725

文中提出了新的block来消除冗余的卷积核,认为该结构在相同参数量的情况下相对与普通的卷积网络结构更宽,效果更好

新的block就是group convolution+point wise的结合

IGCV1 block结构如下图所示
primary group convolution就是普通的group convolution
secondary group convolution就是point wise convolution
在这里插入图片描述

IGCV2

2018年4月在arxiv上提交,发表在CVPR 2018

文章地址:https://arxiv.org/abs/1804.06202

来自IGCV1的启发。第一,组卷积能够在保证性能的情况下降低复杂度,减少计算量;第二,组卷积中每组分配两个通道能够达到最佳性能。通过上述两点将V1扩展,不只是将输入分为两组卷积,而是采用交错组卷积。

IGCV2 block结构如下图所示
在这里插入图片描述

IGCV3

2018年6月在arxiv上提交
文章地址:https://arxiv.org/abs/1806.00178
代码地址: https://github.com/homles11/IGCV3

在IGCV2和mobilenetV2基础上提出了新的block,block由point wise conv和group wise组成的一个类Inverted residuals的结构,先增加通道数后减少通道数的操作

IGCV3 block结构如下图所示
下图可以很直观的看出block是先增加通道数后减少通道数
在这里插入图片描述


http://chatgpt.dhexx.cn/article/KlXCFbOX.shtml

相关文章

详细且通俗讲解轻量级神经网络——MobileNets【V1、V2、V3】

文章目录 轻量级神经网络——MobileNetsMobileNetV1深度可分离卷积1、**深度卷积**✨✨✨2、**逐点卷积**✨✨✨ 参数量和计算量1、**标准卷积**2、**深度可分离卷积**✨✨✨ MobileNetV1的网络结构及效果 MobileNetV2Linear Bottlenecks✨✨✨Inverted Residuals✨✨✨MobileN…

目标检测--轻量级网络(截至2022-04-21)

目标检测领域,基于深度学习模型的方案 截至目前的轻量级网络,比较有名的有这些 轻量级目标检测算法整理_牧羊女说的博客-CSDN博客_轻量级目标检测随着目标检测算法的快速发展,以及终端应用的日渐广泛,工业界对深度学习网络在终端…

linux的轻量级桌面,适用于Linux的轻量级桌面是最适合您的 | MOS86

当谈到Linux时,似乎大多数人都以最多的眼睛糖果来谈论桌面环境。虽然这些桌面是以自己的方式伟大的,但他们不是每个人都在寻找图形密集和漂亮的东西。 一些Linux用户喜欢在Linux计算体验方面采用更精简和简化的方法。正是因为这个原因 Note:这个列表中的…

轻量级锁与重量级锁

目录 一、轻量级锁 1、使用场景 2.使用过程 2.1每次指向到synchronized代码块时,都会创建锁记录(Lock Record)对象,每个线程都会包括一个锁记录的结构,锁记录内部可以储存对象的Mark Word和对象引用reference 2.2让锁…

轻量级卷积神经网络

目录 SqueezeNet(2016.11) SqueezeNet(2016.11) 作者认为模型的参数量是影响模型大小以及训练速度的主要因素,因此本篇文章的设计思想就在于如何减少模型的参数量。本篇文章共有6节,其中第1、2节为介绍及相关工作部分;第3节描述了SqueezeNet…

轻量级linux桌面环境,Linux发行版最为轻量级的桌面环境之一Xfce 桌面

开源多样性应该是 Linux 最好的特性之一,用户可以不断尝试各种自己喜欢的新鲜玩法与花样,并从中选择最适合自己的应用。无论你是 Linux 新人还是老鸟,层出不穷的应用和桌面环境可能都会让我们应接不暇,特别是尝试不同的 Linux 桌面环境,可以说是一件非常有趣但也耗时的事情…

鸿蒙轻量级数据存储Preferences

1,概述 鸿蒙轻量级偏好数据库-Preferences。 轻量级偏好数据库主要提供轻量级Key-Value键值对形式操作,支持少量数据,数据存在在本地文件中,同时也加载在内存中,所以速度快,效率高,属于非关系型…

轻量级目标检测算法整理

随着目标检测算法的快速发展,以及终端应用的日渐广泛,工业界对深度学习网络在终端应用的关注度越来越高,尤其是对于如何保持速度和精度上的平衡,也形成了不小的研究热度。本篇整理了一些较新的轻量级目标检测网络,结合…

轻量级网络总结

文章目录 1. SqueezeNet2. ShuffleNet2.1 v12.2 v2 3. MobileNet3.1 v13.2 v23.3 v3 4. GhostNet4.1 v14.2 v2 1. SqueezeNet SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size 考虑到卷积层的参数量为 C i n ∗ C o u t ∗ K ∗ K …

轻量级c语言开发环境,几款轻量级的C/C++编写软件

因为有同学问我写C用什么软件好点。。。其实这些软件各有优势&#xff0c;只不过看自己需要罢了。 我下了个VS 2017.....不过太大了点。算下来20G左右&#xff0c;硬盘小点的笔记本直接没法玩......(我的就没问题&#xff0c;嘻嘻嘻)&#xff0c;要是你想用VS2017&#xff0c;我…

Synchronized原理(轻量级锁篇)

Synchronized原理&#xff08;轻量级锁篇&#xff09; 简述 介绍 轻量级锁是JDK1.6之中加入的新型锁机制&#xff0c;它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的&#xff0c;因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是&#xff0…

轻量级 android模拟器,【分享中控】轻量级中控系统

先上图: 这是一个简单的模拟器本地中控,自恋的说非常好用,它帮助了我成功开发无数款脚本,已经在多台电脑上稳定运行数月。 虽然不算强大,但是足以应付大部分的脚本开发需求。 [hide]注意 1. 使用此软件的前提是安装好 .Net Framework 4.5 运行环境,Win10自带此环境无需安…

浅析轻量级锁

从轻量级锁 来看锁机制。 (目前 上的唯一一张图。= =。 因为有些东西没有图的话 是很难理清楚的 - - )对象是否被某个线程的锁定的依据是, 对象头中记录的信息。 mark word 也叫对象标志词。对象头的信息内容是变化的,变化后是根据不同的锁标志位来描述对应的信息。 比如当…

14种轻量级网络综述 — 主干网络篇

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 作者丨VincentLee 来源丨晓飞的算法工程笔记 编辑丨极市平台 导读 早期的卷积神经很少考虑参数量和计算量的问题&#xff0c;由此轻量级网络诞生&#xff0c;其旨在保持模型精度基础上近一步减少模型参数量和…

神经网络学习小记录47——ShuffleNetV2模型的复现详解

神经网络学习小记录47——ShuffleNetV2模型的复现详解 学习前言什么是ShuffleNetV2ShuffleNetV21、所用模块2、网络整体结构 网络实现代码 学习前言 据说ShuffleNetV2比Mobilenet还要厉害&#xff0c;我决定好好学一下。 什么是ShuffleNetV2 这篇是ECCV2018关于轻量级模型的…

一个简单的dos命令实现无限弹窗,卡死电脑

教大家一个简单的dos命令实现无限弹窗&#xff0c;从而实现卡死电脑。 1.新建一个文本文件 2.在该文件里面输入 : start start cmd goto start 3.保存后并把此文件的.txt后缀改为.bat 提示&#xff1a;如果你的计算机不显示后缀拓展名&#xff0c;首先应先让显示拓展名再进行操…

Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹)

Pycharm制作搞怪弹窗(声音强制最大&#xff0c;屏幕亮度强制最亮&#xff0c;按钮躲避&#xff0c;弹窗炸弹&#xff09; 闲来无聊用python制作了一个搞怪的桌面弹窗程序&#xff0c;惊喜连连哦 运行动图 实现代码&#xff1a; import tkinter as tk import tkinter.font as…

Charles抓包出现弹窗问题或者无法抓包https问题汇总

一、重要问题总结 1、https抓包需要在电脑端和移动端都装上相应的证书&#xff01;不同的电脑、手机需要的证书可能不一样&#xff0c;如果不能正常工作&#xff0c;建议重新安装。 2、iOS10及以上系统&#xff0c;需要在安装charles证书后 在设置->通用->关于本机->…

python制作恶搞_Pycharm制作搞怪弹窗的实现代码

闲来无聊用python制作了一个搞怪的桌面弹窗程序,惊喜连连哦 运行动图 实现代码: import tkinter as tk import tkinter.font as tkFont # 引入字体模块 import time import sys import pygame import random import threading import win32api import wmi from tkinter.messa…

用Python写一个假的病毒炸弹(整蛊)

病毒炸弹 现在我们用Python来写一个假的病毒炸弹 弹窗实现 import tkinter as tk import random import threading import timedef boom():window tk.Tk()width window.winfo_screenwidth()height window.winfo_screenheight()a random.randrange(0, width)b random.ra…