欢迎大家来到《知识星球》专栏,这里是网络结构1000变小专题,今天介绍最新的分组卷积模型的进展。

作者&编辑 | 言有三

1 CondenseNet

有三AI知识星球-网络结构1000变

CondenseNet

以前我们给大家讲了许多的分组网络,如果分组本身可以学习,而不是通过预先定义的规则,可能取得更好的效果,其中的一个典型代表就是condensenets,这是一个效率更高的模型,它是对densenet的改进。

作者/编辑 言有三

从图中可以看出,它的基本流程是,首先将输出进行分组,图中共12个输入通道,分为3组,每一组两个输出通道。然后通过一个condensing过程去除那些权重小的连接,这是一个剪枝操作。最后在optimization过程中对这些连接的权重进行微调学习。在训练的时候,最后的连接通过学习1*1卷积实现,而测试的时候则将通道进行重排,得到一个标准的分组卷积,这种方法与分组卷积的不同之处就在于通道的分组组合是通过学习而来,而不是按照顺序进行划分。

作者用他们在DenseNet框架上进行实验,只使用了DenseNet1/10的计算量,就取得了相当的性能,之所以能够降低计算量,就是因为对1*1卷积进行了分组学习,3*3卷积则使用标准分组卷积替代。

下面是它在ImageNet分类任务和一些经典模型的对比:

可以看出,CondenseNet的确以较低的计算代价取得了很好的效果。

参考文献

[1] Huang G, Liu S, Van der Maaten L, et al. Condensenet: An efficient densenet using learned group convolutions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2752-2761.

2 FLGC

有三AI知识星球-网络结构1000变

Fully Learnable Group Convolution

通常的分组卷积网络分组是固定的,CondenseNet曾经学习了均匀的分组策略,本文则是完全的end-to-end学习到了更加自由的分组策略,流程也更加简单。

作者/编辑 言有三

该论文解决的是如何学习每一个分组中的通道及其相关的连接。假如一个conv层的输入输出channels个数分别是C和N ,被分成g个groups。

首先我们可以用一个大小为C×G的二值矩阵来表示分组情况,1表示归入某一组,每一个只有一个非零值。

对于卷积核也类似,可以用一个N×G的二值矩阵来表示分组情况。

所以要优化的就是这两个矩阵,为了让网络可以反向传播,实际优化时用softmax操作来替换掉上述的二值操作。

训练完之后,实际使用时,就需要对通道进行重新排列,这可以通过一个index-reordering层来完成。

下面是它在ImageNet分类任务和CASIA人脸识别任务上的实验结果:

可以看出,该方法的策略是有效的。不过该方法策略过于自由,在实际的硬件平台上并不会如此有效。

参考文献

[1] Wang X, Kan M, Shan S, et al. Fully Learnable Group Convolution for Acceleration of Deep Neural Networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 9049-9058.

3 DGC

有三AI知识星球-网络结构1000变

Dynamic Grouping Convolution

通常的分组卷积网络分组数目是固定的,而本文Dynamic Grouping Convolution(DGC)则可以学习到分组的数目。

作者/编辑 言有三

首先我们需要一个二值的矩阵U来表示一个卷积层中输入输出通道之间的连接,一些结构示意图如下:

(a)是正常卷积,输入输出通道之间完全稠密连接;(d)是分组卷积,输入输出通道被分为若干个组,每个组中的通道密集连接;(b)是depth-wise分组卷积,分组数目等于输入输出 通道个数。(c)(e)是学习到的分组卷积,(f)是自由连接。

不过不是每一个二值矩阵都可以表示一个分组卷积,那么矩阵U究竟要满足什么样的条件才能使得所表示的连接是一个分组卷积呢?

作者认为如果矩阵U可以表示为若干个矩阵的Kronecker乘积,那么就能得到分组卷积的结构,这就是需要满足的约束条件。两个矩阵的Kronecker乘积案例如下:

大家可以推一下前面几个连接对应的矩阵,每一个都需要3个2×2的矩阵。

因此我们只需要优化logC (C是channels个数,2为底数)个2×2的矩阵参数,就可以确定分组结构。

下面是使用ImageNet数据集和ResNet的结果,x轴是从输入到输出的通道数,y是分组数,可以发现越高的层分组越大,越低的层分组越小,这有利于增强特征表达能力。

参考文献

[1] Zhaoyang Zhang, Jingyu Li, Wenqi Shao, Zhanglin Peng, Ruimao Zhang, Xiaogang Wang, Ping Luo. "Differentiable Learning-to-Group Channels via Groupable Convolutional Neural Networks" ICCV2019

4 关于有三AI知识星球

有三AI知识星球是我们继公众号之后重点打造的原创知识学习社区,有需要的同学可以阅读下文了解生态。

大家可以预览一些内容如下,添加有三微信Longlongtogo加入可以优惠,目前正在持续更新GAN相关的内容。

以上所有内容

加入有三AI知识星球即可获取

来日方长

点击加入

不见不散

更多精彩

每日更新

转载文章请后台联系

侵权必究

往期精选

【知识星球】分组卷积最新进展,全自动学习的分组有哪些经典模型?相关推荐

  1. 【知识星球】卷积核和感受野可动态分配的分组卷积

    欢迎大家来到<知识星球>专栏,这里是网络结构1000变小专题,我们要慢慢开始更新AutoML与网络设计相关的内容. 作者&编辑 | 言有三 1 MixNet 有三AI知识星球-网络 ...

  2. Conv2d中的groups参数(分组卷积)怎么理解? 【分组卷积可以减少参数量、且不容易过拟合(类似正则化)】

    关于Conv2d的用法先看以下链接:Conv2d_马鹏森的博客-CSDN博客 注意:首先需要知道的是groups的值必须能整除in_channels和out_channels 前置知识:卷积参数量的计 ...

  3. 分组卷积新进展,全自动学习的分组有哪些经典模型?

    作者&编辑 | 言有三 1 CondenseNet CondenseNet 以前我们给大家讲了许多的分组网络,如果分组本身可以学习,而不是通过预先定义的规则,可能取得更好的效果,其中的一个典型 ...

  4. 知识图谱问答 | (1) 针对复杂问题的知识图谱问答(KBQA)最新进展

    原文地址 1. 背景介绍 知识图谱问答(KBQA)利用图谱丰富的语义关联信息,能够深入理解用户问题并给出答案,近年来吸引了学术界和工业界的广泛关注.KBQA 主要任务是将自然语言问题(NLQ)通过不同 ...

  5. 【知识星球】猫猫狗狗与深度学习那些事儿

    欢迎大家来到<知识星球>专栏,这两天有三AI知识星球会更新一些猫狗相关的数据集和任务,可爱的猫猫狗狗对深度学习可是做出了不少的贡献呢. 作者&编辑 | 言有三 有三AI知识星球-数 ...

  6. 最新进展 | 深度学习在天气预测中的应用

    谷歌研究员提出使用机器学习方法预测未来短时间内的天气.此方法虽然处于早期发展阶段,但效果已经优于传统模型. 前言 天气总是会或轻或重地影响人们的日常生活,而天气预报的准确性会极大影响人们应对天气的方式 ...

  7. 一文回顾深度学习发展史上最重要经典模型

    这篇文章的目的是回顾经过时间考验的,被广泛采用的想法.我将介绍一小部分技术,这些技术涵盖了解现代深度学习研究所必需的许多基本知识.如果你是该领域的新手,那么这是一个很好的起点. 深度学习是一个瞬息万变 ...

  8. 【杂谈】有三AI知识星球一周年了!为什么公众号+星球才是完整的?

    文/编辑 | 言有三 今天,有三AI知识星球开设正好一周年,在有了微信公众号生态后,为什么我们还要做一个知识星球呢?为什么我们说每一个核心的有三AI粉丝一定是在知识星球里呢?今天来总结一下我们知识星球 ...

  9. 【年终总结】2019年有三AI知识星球做了什么,明年又会做什么

    如果说微信公众号是有三AI的第一免费生态,那么有三AI知识星球就是我们的第一付费生态,两者的共同特点是,专注系统性原创.虽然现在星球的整体内容数量还不能和微信公众号相比(主要是因为还在做内容规划以及精 ...

最新文章

  1. 谁干的mysql无密码登录?
  2. 让你的AI绿起来,艾伦研究所提出深度学习效率评估标准Green AI
  3. 如何使scp命令在主机之间复制时不用输入密码
  4. snowflake分布式自增长id的java实现
  5. python元素分类_Python练习 - 元素分类
  6. (八)Locust 设置断言
  7. jquery删除空图片错误图片,$('img[src=]').remove();
  8. Posix线程编程指南(2)
  9. 【转载】一个c程序在执行main函数之前和main之后都做了那些事情
  10. 汉诺塔递归算法python详细解析图_汉诺塔递归算法分析过程
  11. python累乘怎么写_怎么编写Python关于累乘的程序?
  12. 【渝粤教育】电大中专药理学基础作业 题库
  13. leetcode 347
  14. 测试渲染用什么软件,【2人回答】3DMax2014用的是VRay3.0测试和出图渲染参数怎么设置-3D溜溜网...
  15. THREE将左键改为平移右键改为旋转
  16. html网站设计项目心得,网页设计制作心得体会,网页设计实训报告步骤
  17. 关于pd.read_csv() 读数据的注意事项
  18. 营养素的基础知识1(非技术文)
  19. Excel如何统计大于某值小于某值的数量
  20. 职业生涯规划(计算机网络),职业生涯规划(计算机网络)

热门文章

  1. 卧槽,B站联名键盘!
  2. Java内存模型与指令重排
  3. java面试题大合集(开发者必看二)
  4. dubbo+zookeeper与提供者、消费者之间端口通信问题(No provider available for the service)
  5. xml教程之约束schema
  6. 首次使用maven的配置过程
  7. 杭电oj2072,2091字符串java实现
  8. 利用Spring的Aop实现项目的日志监控
  9. python 鱼c工作室作业_鱼C工作室Python作业
  10. php数组只保留键值,php合并数组并保留键值的实现方法