当前位置: 首页 > news >正文

[神经网络]基干网络之VGG、ShuffleNet

一、VGG

        VGG是传统神经网络堆叠能达到的极限深度

        VGG分为VGG16和VGG19,其均有以下特点:

                ①按2x2的Pooling层,网络可以分成若干段

                ②每段之内由若干same卷积操作构成,段内Feature Map数量固定不变;

                ③Feature Map按2的倍数递增(64-128-256-512),第四段后均为512

        由于这种特性,可以根据任务灵活调整段数,段每增加一段,Feature Map尺寸减小一半

        ①网络结构

                 两个模型均分为5个Block,每个Blcok以下采样连接;每个Block均使用3x3卷积核;随着模块边深,Channel数会翻倍。

                其均具备以下性质:

                        ①输入尺寸均为224x224;

                        ②均有5层Max Pooling,最终都会产生7x7的Feature Map;

                        ③特征层会经过两个4096的全连接,最后再连接一个1000类的softmax分类器;

                        ④其模型均可表述为mx(nx(conv33)+max_pooling)

                一般会将VGG的卷积核更换为3x3或1x1的小尺寸卷积核来提升性能。(同感受野的情况下,小尺寸卷积核有更深的深度;感受野公式—rf size=(out-1)x stride+ksize)

                VGG网络的卷积核个数:

                        VGG-16:2,2,3,3,3

                        VGG-19:2,2,4,4,4

                随着网络层数的增加,像素维度的长宽降低,语义层面的通道上升。

        ②VGG16

                特征图尺寸变化如下

                 资源消耗:     内存占用大部分由前两个卷积层贡献

                                        参数量大部分由第一个全连接层贡献

                VGG精度一般,且参数量较大

                相较于AlexNet,VGG使用3x3卷积核(1步长),丢失信息量较少,且不使用归一化。

        ③3x3卷积核

                2层叠加的3x3卷积核等价于一个5x5卷积核;3层叠加的3x3卷积核等价于一个7x7卷积核

                虽然其感受野尺寸相同,但是更深的网络可以带来:更强的非线性、更好的表示能力;更少的参数个数

二、ShuffleNet V1

        ①Group Pointwise Convolution(分组1x1卷积)

                 每个卷积核仅处理一部分通道(传统卷积一个卷积核处理全部通道),可以有效减少参数数量。

        ②Channel Shuffle(通道重排)

                目的是引入跨组的信息交融

                 Channel Shuffle操作:

                        ①将通道重组为一个n列矩阵

                        ②将矩阵转置

                        ③重新将其展平(Flatten)

                 Channel shuffle可以直接使用pytorch的api实现,且可微分、可导(能实现端到端的训练);同时不会引入额外的计算量

        ③网络结构

                Shuffle Block改进自ResNet的Bottleneck Block:

                        1.将1x1的降维和升维均改为组卷积

                        2.降维后引入channel Shuffle

                        3.将3x3的标准卷积替换为Depthwise卷积。

                下图所示为标准Shuffle Block(左侧为标准模块,右侧为下采样模块<Stride=2>)

                                

                 分组卷积组数不同,可用的卷积核个数不同(组数与可用卷积核数成正比

                Concat操作:将计算得到的特征图进行堆叠而不是诸元素相加

                网络构造:通常来说g=3是常用的ShuffleNet V1

                 超参数g可以用来控制分组组数;分组组数越高,正确率越高

三、ShuffleNet V2

        ①网络轻量化的准则

                1.输入输出通道相同时,内存占用量(MAC)最小(对1x1卷积而言)

                2.分组数过大的分组卷积会增大MAC

                3.碎片化操作对并行加速不友好

                4.逐元素操作带来的内存和耗时不可忽略

        ②ShuffleNet V2模块

                下图所示为基本模块(左图);下采样模块(右图)

                ​​​​​​​                       ​​​​​​​        

                改进如下:

                        ①Channel Split操作:将输入通道一分为二分别分给残差连接和卷积网络

                        ②Concat操作:将计算得到的特征图进行堆叠而不是诸元素相加

                        ③1x1卷积不带分组卷积

                                 Channel Shuffle和Channel Split在代码中是一个操作

http://www.lryc.cn/news/18431.html

相关文章:

  • Java 日期时间与正则表达式,超详细整理,适合新手入门
  • 用Netty实现物联网04:自定义通信协议
  • 「smardaten」上架钉钉应用中心!让进步再一次发生
  • 3、Maven安装
  • tkinter
  • Servlet笔记(6):HTTP状态码
  • RocketMQ 延迟队列
  • 【精准计时】北斗GPS卫星时钟同步改变精准计时年代
  • 【C#基础】C# 面向对象编程
  • 数据结构与算法入门
  • 【OpenAI】基于 Gym-CarRacing 的自动驾驶练习项目 | 路径训练功能的实现 | GYM-Box2D CarRacing
  • 亚马逊、沃尔玛测评自养号测评、退款、撸卡撸货怎么做?
  • Apollo 2.1.0最新版docker 部署多环境 与java spring boot 接入demo (附带一键部署脚本)
  • 分布式算法 - 一致性Hash算法
  • OAuth2.0入门
  • 【HTTP——了解HTTP协议及状态码】
  • 骨传导耳机靠谱吗,骨传导耳机的原理是什么
  • 对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)
  • [ 2204听力 ] 五
  • 嵌入式常问问题和知识
  • 【数据结构】空间复杂度
  • 湖南中创教育提醒校外培训留意这几点,避免维权
  • docker 配置私有/本地镜像仓库
  • 每日学术速递2.23
  • LeetCode 232. 用栈实现队列
  • AI算法创新赛-人车目标检测竞赛总结04
  • 【C语言进阶】动态内存管理详解与常见动态内存错误以及柔性数组使用与介绍
  • 【C++】string的模拟实现
  • 前端借助Canvas实现压缩base64图片两种方法
  • 用ChatGPT生成Excel公式,太方便了