最新分类网络和模型压缩网络简记
分类的深度网络最新的两个注意点:
1、SENet(Squeeze-and-Excitation Networks)
- 论文的动机是从特征通道之间的关系入手,希望显式地建模特征通道之间的相互依赖关系。另外,没有引入一个新的空间维度来进行特征通道间的融合,而是采用了一种全新的“特征重标定”策略。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去增强有用的特征并抑制对当前任务用处不大的特征,通俗来讲,就是让网络利用全局信息有选择的增强有益feature通道并抑制无用feature通道,从而能实现feature通道自适应校准。
- 核心:挤压和激励
2、Residual Attention Network
- 可堆叠的网络结构,堆叠Residual Attention Module结构
- 基于Attention的残差学习方式。Attetion机制:下采样和上采样而已
图像分类网络发展:
AlexNet
ZFnet
VGG Net
GoogleNet
ResNet
DenseNet
SENet(new)
Residual Attention Network(new)
网络参数优化和模型压缩:
SqueezeNet
1、常用的模型压缩技术有:
(1)奇异值分解(singular value decomposition (SVD))1
(2)网络剪枝(Network Pruning)2:使用网络剪枝和稀疏矩阵
(3)深度压缩(Deep compression)3:使用网络剪枝,数字化和huffman编码
(4)硬件加速器(hardware accelerator)4
2、由于超参数繁多,深度神经网络具有很大的设计空间(design space)。通常进行设计空间探索的方法有:
(1)贝叶斯优化
(2)模拟退火
(3)随机搜索
(4)遗传算法
3、使用以下三个策略来减少SqueezeNet设计参数
(1)使用1∗1卷积代替3∗3 卷积:参数减少为原来的1/9
(2)减少输入通道数量:这一部分使用squeeze layers来实现
(3)将欠采样操作延后,可以给卷积层提供更大的激活图:更大的激活图保留了更多的信息,可以提供更高的分类准确率
4、the fire module结构
MobileNetV1:
1、将标准卷积分解成深度卷积和逐点卷积,大幅降低参数量和计算量。
标准卷积:输入的第m个通道对应第n个卷积核的m通道,将各通道计算结果相加,得到输出结果的第n个通道。(每三相加)
深度卷积:输入中第m个通道作用第m个深度卷积核,产生输出特征内的第m个通道。(每跳三相加)
2、网络结构:
3×3 Depthwise Conv(Conv dw) -> BN -> ReLU -> 1*1 Conv -> BN -> ReLU
比标准卷积层多了1×1 Conv,
3、宽度因子,用于控制输入和输出的通道数;分辨率因子,用于控制输入的分辨率。
MobileNetV2:
加入了线性bottlenecks和反转残差模块构成了高效的基本模块
MobileNetV2:
mobilenetv1: dw -> pw -RelU>
mobilenetv2: pw -ReLU> dw -> pw -Linear>
v2前面多个pw是为了提升通道数,获取更多特征。最后采用linear目的使防止relu破换特征。
MobileNetV3:
1、综合了以下三种模型的思想:MobileNetV1的深度可分离卷积(depthwise separable convolutions)、MobileNetV2的具有线性瓶颈的逆残差结构(the inverted residual with linear bottleneck)和MnasNet的基于squeeze and excitation结构的轻量级注意力模型。
2、互补搜索技术组合:由资源受限的NAS执行模块级搜索,NetAdapt执行局部搜索。
3、网络结构改进:将最后一步的平均池化层前移并移除最后一个卷积层,引入h-swish激活函数。
ShuffleNet:
1、群卷积(通道混洗shuffle unit)和深度可分卷积
CondenseNet:
1、引入卷积group操作,而且在1*1卷积中引入group操作时做了改进。
2、训练一开始就对权重做剪枝,而不是对训练好的模型做剪枝。
3、在DenseNet基础上引入跨block的dense连接。
总结:
从SqueezeNet开始模型的参数量就不断下降,为了进一步减少模型的实际操作数(MAdds),MobileNetV1利用了深度可分离卷积提高了计算效率,而MobileNetV2则加入了线性bottlenecks和反转残差模块构成了高效的基本模块。随后的ShuffleNet充分利用了组卷积和通道shuffle进一步提高模型效率。CondenseNet则学习保留有效的dense连接在保持精度的同时降低,ShiftNet则利用shift操作和逐点卷积代替了昂贵的空间卷积。
网络简化的发展历程:
多个不同尺寸的卷积核,提高对不同尺度特征的适应能力。
PW 卷积,降维或升维的同时,提高网络的表达能力。
多个小尺寸卷积核替代大卷积核,加深网络的同时减少参数量。
精巧的 Bottleneck 结构,大大减少网络参数量。
精巧的 Depthwise Separable Conv 设计,再度减少参数量。
注意点:
Pointwise Convolution,俗称叫做 1x1 卷积,简写为 PW,主要用于数据降维,减少参数量。
也有使用 PW 做升维的,在 MobileNet v2 中就使用 PW 将 3 个特征图变成 6 个特征图,丰富输入数据的特征。
使用多个小卷积核替代大卷积核 的方法,这就是 Inception v3。
Xception(极致的 Inception):先进行普通卷积操作,再对 1×11×1 卷积后的每个channel分别进行 3×33×3 卷积操作,最后将结果 concat。
原文地址:https://www.cnblogs.com/hotsnow/p/11015085.html
- ASP.NET MVC的Model元数据提供机制的实现
- 清官难断家务事,人工智能却来介入家庭伦理大戏
- 使用Symfony的Console组件构建命令行程序
- 微软编程教育都在搞什么?从code.org到makecode,从Minecraft到Micro:bit
- 谷歌:通往完全自动驾驶之路
- 随时随地部署Kubernetes
- 使用CoreOs,Docker和Nirmata来部署微服务风格的应用程序
- 使用ACS和Kubernetes部署Red Hat JBoss Fuse
- 教你快速安装OpenShift容器平台3.6
- 面向开发者的Cloud Foundry
- 云数据库安全与农场和餐馆:知道来源的重要性
- 云数据库安全,农场和餐馆:知道你的来源的重要性
- NO.32 不堪重负:线程池拒绝策略
- 工厂模式进阶之Android中工厂模式源码分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python3爬虫实战【点触验证码】 — 模拟登陆bilibili
- BOM 是个什么玩意!
- Educational Codeforces Round 81 (Rated for Div. 2) B - Infinite Prefixes
- python-利用python写一个购物小程序
- Java技巧收录一 那些你相见恨晚的快捷键和代码注释模板
- Educational Codeforces Round 81 (Rated for Div. 2) C.Obtain The String
- 深入了解 webpack 模块加载原理
- Java中的数字类解析(包括格式化数字、大数运算等等)
- 数据挖掘领域十大经典算法之—K-邻近算法/kNN(超详细附代码)
- 洛谷 P1019 单词接龙
- SpringBoot 将自制的Starter 发布到远程公服
- 【分享】优化rootfs的大小
- PAT (Advanced Level) Practice 1099 Build A Binary Search Tree (30 分)
- 前端国际化辅助工具——自动替换中文并翻译
- Codeforces Round #613 (Div. 2)A. Mezo Playing Zoma