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

简介: 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技术、开发资源及社区动态定期推送。

相关文章
|
缓存 安全 搜索推荐
如何使用 Shodan 搜索引擎保姆级教程(附链接)
如何使用 Shodan 搜索引擎保姆级教程(附链接)
|
NoSQL MongoDB 关系型数据库
13个Mongodb GUI可视化管理工具,总有一款适合你
本文介绍了13个好用的MongoDB可视化工具。Robomongo,MongoDB Compass,phpMoAdmin等
114610 0
13个Mongodb GUI可视化管理工具,总有一款适合你
|
5月前
|
数据采集 API 调度
Python爬虫框架对比:Scrapy vs Requests在API调用中的应用
本文对比了 Python 中 Scrapy 与 Requests 两大爬虫框架在 API 调用中的差异,涵盖架构设计、调用模式、性能优化及适用场景,并提供实战建议,助力开发者根据项目需求选择合适工具。
|
存储 自然语言处理 关系型数据库
全文索引MySQL的match用法是什么?
【9月更文挑战第2天】全文索引MySQL的match用法是什么?
422 0
|
Kubernetes 监控 云计算
Docker与Kubernetes的协同工作
Docker与Kubernetes的协同工作
|
算法 大数据 数据处理
【软件设计师备考 专题 】IO控制方式(中断系统、DMA、IO处理机方式)
【软件设计师备考 专题 】IO控制方式(中断系统、DMA、IO处理机方式)
585 1
|
存储 关系型数据库 MySQL
四种数据库对比MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
四种数据库对比 MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
|
前端开发 UED 开发者
React.lazy()与Suspense:实现按需加载的动态组件——深入理解代码分割、提升首屏速度和优化用户体验的关键技术
【8月更文挑战第31天】在现代Web应用中,性能优化至关重要,特别是减少首屏加载时间和提升用户交互体验。React.lazy()和Suspense组件提供了一种优雅的解决方案,允许按需加载组件,仅在需要渲染时加载相应代码块,从而加快页面展示速度。Suspense组件在组件加载期间显示备选内容,确保了平滑的加载过渡。
466 0
|
消息中间件 NoSQL Java
Java必备面试题(100题)-八股篇
主要包括一些高频的Java面试的八股文面试题和答案
|
存储 边缘计算 自动驾驶
什么是边缘计算?
本文介绍了边缘计算的定义、应用场景和重要性。边缘计算是一种分布式计算模型,将计算能力和数据存储靠近数据源和消费者之间的边缘,以减少延迟和网络拥塞。其核心特点包括低延迟、高可用性和隐私安全。边缘计算已经在智能城市、工业自动化、医疗保健、零售业和自动驾驶汽车等领域找到了应用。边缘计算解决了传统云计算模型存在的实时性、带宽和网络压力以及数据隐私问题。随着物联网设备的普及和5G网络的推广,边缘计算将变得更加普遍和强大,未来将看到更多创新的应用。