在 unit 中 , 组个数g代表着逐点卷积的连接稀疏程度 。在上图中展示了不同的组数量的方案 , 同时通过调整输出通道数(网络的宽窄) , 来使得整体的计算量大致相同 。那么对于一个给定的计算量约束 , g越大 , 则可以设置越多的卷积核 , 产生越多的输出通道 , 从而帮助编码更多的信息 , 其中较多论文使用的是g=3的版本 。
创新点
①使用分组逐点卷积(Group )来降低1×1卷积的计算复杂度
②使用通道重排( )操作来帮助信息在特征通道间流动
二、 V2
v2是一种深度神经网络架构 , 与 v1和 v2相比 , 在计算复杂度为40M FLOPs的情况下 , 精度分别比 v1和 v2高3.5%和3.7% 。v2的框架与 v1基本相同 , 都包括Conv1、、Stage 2~5、 pool和FC等部分 。唯一的不同是 v2比 v1多了一个1x1 Conv5 。v2还提供了四个不同版本 , 即 v2 0.5x、 v2 1x、 v2 1.5x和 v2 2x 。
中提出了一个关键点 , 之前的轻量级网络都是通过计算网络复杂度的一个间接度量 , 即FLOPs , 通过计算浮点运算量来描述轻量级网络的快慢 。
但是从来不直接考虑运行的速度 。在移动设备中的运行速度不仅仅需要考虑FLOPs , 还需要考虑其他的因素 , 比如内存访问成本(cost)和平台特点( ) 。
所以 , v2通过控制不同的环境来测试网络在设备上运行速度的快慢 , 而不是通过FLOPs来判断性能指标 。
因此 , 提出了设计应该考虑两个原则:
①应该使用直接度量(如速度)而不是间接度量(如FLOPs) 。
②这些指标应该在目标平台上进行评估 。
然后 , 根据这两个原则 , 提出了四种有效的网络设计原则:
G1: Equalwidthcost (MAC)
G2:groupMAC
G3:of
G4: -wiseare non-
1.高效网络设计的实用准则 (1) Equalwidthcost (MAC)
当保持FLOPs不变时 , 卷积层的输入特征矩阵与输出特征矩阵相等时 , MAC最小 , 这里针对1x1的卷积层 。
相同的可最大限度地降低内存访问成本(MAC):轻量化网络通常采用深度可分离卷积 , 其中逐点卷积(即1×1卷积)占了绝大部分的计算量 。我们研究了1×1卷积的核心形状 , 其由两个参数指定:输入通道的数量c1和输出通道的数量c2 。设h和w为 map的空间大小 , 1×1卷积的FLOPs为B = h * w * c1 * c2 。内存访问成本(MAC) , 即内存访问操作数 , 为
这个公式分别对应于输入/输出特性映射的内存访问和卷积核权重 。其实这条公式可以看成由三个部分组成:第一部分是
, 对应的是输入特征矩阵的内存消耗;第二部分是
, 对应的是输出特征矩阵的内存消耗 。第三部分是
。
然后根据均值不等式
得出:?????????????????????
因此理论上MAC的下界由FLOPs决定 , 当且仅当c1 = c2 时取得最小值 。
在实验中 , 由于内存的限制 , 加上卷积库对于卷积使用的模块优化 , 真实情况会略有差异 , 因此作者在现实情况中做了实验结果如图:
通过改变比率c1: c2显示了在固定总FLOPs时的运行速度 。可见 , 当c1: c2接近1:1时 , MAC变小 , 网络评估速度加快 。
(2)groupMAC
当GConv的增大时(保持FLOPs不变时) , MAC也会增大 。
组卷积的组数越大 , MAC越大 , 组卷积是轻量化网络的核心 , 它通过将所有之间的密集卷积改变为稀疏(仅在同一组内)来降低计算复杂度(FLOP) 。
- 【IMX6ULL驱动开发学习】09.Linux之I2C驱动框架简介和驱动程序模板
- Pytorch之CIFAR10分类卷积神经网络
- OpenCV之YOLOv2-tiny目标检测
- Pytorch之ResNet图像分类
- 乌合之众:大众心理研究
- 移动端vr技术探索之VrPanoramaView
- 二 Pytorch —— 激活函数、损失函数及其梯度
- Web自动化之页面元素定位---Xpath
- 现代简约四口之家,设计上兼顾不同年龄段的需求
- WordPress站点迁移及阿里云空间备案