DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(四)

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型

DPN


Dual Path Networks(DPN)通过High Order RNN(HORNN)将ResNet和DenseNet 进行了融合,所谓的 dual path,即一条 path 是 ResNet,另一条 path 是 DenseNet。通过对 ResNet 和 DenseNet 的分解,证明了 ResNet 更侧重于特征的复用,而 DenseNet 则更侧重于特征的生成,通过分析两个模型的优劣,将两个模型有针对性的组合起来,提出了 DPN,获得了 2017 年 ILSVRC 物体检测的冠军。


图10 不同网络的结构比较

(a)  Residual Network。(b) Densly Connected Network,其中每一层都可以访问之前所有微块的输出。这里,为了与(a)中的微块设计保持一致,增加了一个 1×1 卷积层(下划线)。(c) 通过在 (b) 中的微块之间共享相同输出的第一个 1×1 连接,密集连接的网络退化为一个残差网络。(c) 中的点状矩形突出了残差单元。(d) 本文提出的的Dual Path 结构 DPN。(e) 从实现的角度看 (d) 的等效形式,其中符号 "∫ "表示分割操作,"+"表示元素相加。


由图 10 给出的不同网络结构比较我们可以看出,ResNet 复用了前面网络提取的特征,而每一层的特征都会原封不动的传到下一层,这样每一层提取到的特征都有其不同点,特征的冗余度较低。而 DenseNet 的每个 1 x 1 卷积的参数都不同,前面提到的层不再被后面的层直接使用,而是被重新加工后生成了新的特征,这种结构可能会造成后面的层提取到的特征是前面的网络已经提取过的特征,所以说 DenseNet 是一个冗余度比较高的网络。通过分析可以看出,ResNet 的缺点是特征复用率高,但是冗余度低,而DenseNet 则可以创造新的特征,但是其冗余度高,基于这个动机,作者结合了两个网络的优点,创造了 DPN。

DPN 以 ResNet 为主要框架,保证了特征的低冗余度,并在其基础上添加了一个非常小的 DenseNet 分支,用于生成新的特征。DPN 的结构可以使用下面的公式来表示:



其中 x^k 和 y^k 表示在第 k 步从单个路径中提取的信息,v_t() 是一个特征学习函数。第一个式子表征 densely connected 的路径,能够探索新的特征。第二个式子表征残差路径,使共同的特征得以重新使用。第三个式子表征 dual path,用于聚合第四个式子的变换函数。最后的转换函数 g^k( ) 生成当前状态,用于生成下一个映射或预测。

图 10(e)是真正的 DPN 结构,和图 10(d)的最大不同在于 ResNet 和 DenseNet共享了第一个 1 x 1 卷积。在实际计算  3 x 3 卷积时,使用了分组卷积来提升网络的性能。在设计网络的超参时,ResNet 的通道数也比 DenseNet 的通道数多,防止DenseNet 随着层数的增加引发的显存消耗速度过快的问题。



表2 DPN 和其他最先进的网络的结构和复杂性比较(DenseNet和ResNeXt)。符号(+k)表示 densely connected 路径上的宽度增量


当前 SOTA!平台收录 DPN 共 8 个模型实现资源,支持的主流框架包含 CANN、PyTorch、TensorFlow、MindSpore、PaddlePaddle 等。


模型 SOTA!平台模型详情页
DPN 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/4431847d-c2b1-4cba-a31a-fa5585495abb

IGC


IGC(Interleaved Group Convolutions),是指交错分组卷积。IGC v1 发表在 2017年的 ICCV 上。IGC 提出了一种新的网络单元交错分组卷积(interleaved group convolution),有助于提高参数优化和计算性能。在保持相同的网络大小和计算复杂度的情况下,提出的网络单元相比传统的组卷积具有更宽的宽度,也就具有更先进的表现。

IGC 的构建模块基于分组卷积,这是一种将输入通道划分为若干分区并对每个分区分别进行常规卷积的方法。分组卷积可以被看作是具有稀疏块对角线卷积核的常规卷积,其中每个块对应于通道的一个分区,并且分区之间没有连接。交错组卷积由两个分组卷积组成,primary 组卷积和 secondary 组卷积。图 11 中给出一个例子。使用 primary 组卷积来处理空间相关性,并采用空间卷积核,如 3×3。卷积是在每个分区的通道上分别进行的。作者使用 secondary 组卷积来混合由 primary 组卷积输出的各分区的通道,使用 1×1 卷积核。IGCNet v1 就是使用的结构化稀疏的思想,将一个传统的卷积矩阵转化成一个稀疏的对角矩阵,以减少计算量与参数量。


图11 交错分组卷积,L=2 个 primary 分区,M=3 个 secondary 分区。primary 组卷积中每个 primary 分区的卷积是空间的。secondary 组卷积中的每个 secondary 分区的卷积是点状的(1×1)


primary组卷积。令 L 表示 primary 组卷积中的分区数量,称为 primary 分区。我们选择每个分区包含相同数量(M)的通道。作者提出在单一空间位置上的分组卷积,对所有空间位置的表述都很容易得到。primary 组卷积的情况如下:



其中 z_l 为(MS)维度向量,S 为核大小,例如 3x3 核为 9。(W_ll)^p 对应于第 l 个分区的卷积核,是一个大小为 M×(MS) 的矩阵。x 表征 primary 组卷积的输入。


secondary组卷积。将 primary 组卷积输出的通道{y1, y2, .... , yL},分成 M 个 secondary 分区,每个分区由 L 个通道组成,这样,同一 secondary 分区的通道来自不同的 primary 分区。作者采用一个简单的方案来形成 secondary 分区:第 m 个 secondary 分区是由每个 primary 分区的第 m 个输出通道组成。



-y_m 表征第 m 个 secondary 分区,P 为扰动矩阵。secondary 组卷积是在 M 个 secondary 分区上进行的:




其中,(W_mm)^d 对应第 m 个 secondary 分区的 1x1 卷积核,为 LxL 大小的矩阵。secondary 组卷积输出的通道通过扰动后退回 primary 形式,作为下一个交错组卷积块的输入。L 扰动回退操作为:



综上所述,交错组卷积块被表述为



令  W=PW^dP^TW^p 为 复合卷积核,则可得到:



这意味着 IGC 块等同于一个常规卷积,卷积核是两个稀疏核的乘积。参数量固定意味着主分组卷积和次卷积的有效参数固定,当输入的特征维度更多时,卷积核也越大,卷积矩阵将变得更加稀疏,这可能导致性能的下降。

由表 3,IGC 采用 IGC+BN+ReLU 的设置。


表3 IGC结构


上面介绍的 IGC 为经典 IGC,也被称为 IGC v1。IGCNet v1 通过两个分组卷积来对原卷积进行分解,减少参数且保持完整的信息提取。不过作者发现,因为 primary 组卷积和 secondary 组卷积在分组数上是互补的,导致 secondary 卷积的分组数一般较小,每个分组的维度较大,secondary 卷积核较为稠密。为此,作者提出了 IGCV2,引入Interleaved Structured Sparse Convolution,使用多个连续的稀疏分组卷积来替换原来的secondary分组卷积,每个分组卷积的分组数都足够多,以保证卷积核的稀疏性。(《 IGCV2: Interleaved Structured Sparse Convolutional Neural Networks 》1804.06202.pdf (arxiv.org))。

IGCNet v2 的主要创新点就是在 IGCNet v1 的基础上,对于 block 里的 secondary 组卷积再进行一次 IGC,以及使用多个稀疏卷积来替换原本比较稠密的 secondary 卷积。


图12 IGC v2的结构


当前 SOTA!平台收录 IGC V1 共 1 个模型实现资源,支持的主流框架包含 MXNet。


模型 SOTA!平台模型详情页
IGC V1 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/8a1636be-753d-4b72-a4c7-ec7a9f6ffc6f


前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。

网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。

移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。

相关文章
|
4月前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度神经网络(DNN)
深入理解深度神经网络(DNN)
|
机器学习/深度学习 数据挖掘 PyTorch
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
5595 1
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
|
机器学习/深度学习 人工智能 并行计算
深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍
深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍
深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍
|
机器学习/深度学习 并行计算 PyTorch
Swin Transformer实战:使用 Swin Transformer实现图像分类
目标检测刷到58.7 AP! 实例分割刷到51.1 Mask AP! 语义分割在ADE20K上刷到53.5 mIoU! 今年,微软亚洲研究院的Swin Transformer又开启了吊打CNN的模式,在速度和精度上都有很大的提高。这篇文章带你实现Swin Transformer图像分类。
9766 0
Swin Transformer实战:使用 Swin Transformer实现图像分类
|
机器学习/深度学习 编解码 自然语言处理
EfficientNet、ShuffleNet、NFNet…你都掌握了吗?一文总结图像分类必备经典模型(三)
EfficientNet、ShuffleNet、NFNet…你都掌握了吗?一文总结图像分类必备经典模型(三)
198 0
EfficientNet、ShuffleNet、NFNet…你都掌握了吗?一文总结图像分类必备经典模型(三)
|
PyTorch 算法框架/工具 异构计算
Pytorch实现经典模型AlexNet模型
Pytorch实现经典模型AlexNet模型
114 0
|
数据挖掘 计算机视觉
Transformer | 详细解读Transformer怎样从零训练并超越ResNet?(二)
Transformer | 详细解读Transformer怎样从零训练并超越ResNet?(二)
171 0
|
机器学习/深度学习 数据可视化 计算机视觉
Transformer | 详细解读Transformer怎样从零训练并超越ResNet?(一)
Transformer | 详细解读Transformer怎样从零训练并超越ResNet?(一)
297 0
|
机器学习/深度学习 PyTorch TensorFlow
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(三)
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型
217 0
|
机器学习/深度学习 编解码 PyTorch
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(二)
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(二)
196 0