轻量级网络:IGCV系列V1、V2、V3

  • 前言
  • IGCV1
  • IGCV2
  • IGCV3

前言

前面在写ShuffleNet的时候提到了解决Group Conv各个组之间的信息交互的问题就提到了IGCV,今天就整理一下IGCV系列。
附上微软的视频分享:https://www.bilibili.com/video/av23295590?from=search&seid=7224169471719308503

IGCV1

论文:https://arxiv.org/pdf/1707.02725v2.pdf
代码:https://github.com/zlmzju/fusenet

创新点

它的重点在于一个新颖的构建块:是由一对连续且相互交错的组卷积组成。这两个组卷积是互补的:

  • 在第一个组卷积中的卷积都是空间域卷积;第二个组卷积中的卷积是逐点卷积;
  • 第二个组卷积中同一个分组内的所有通道来自于第一个组卷积中不同分组;

比起普通卷积,在网络参数量和计算复杂度不变的同时,使得网络变得更宽了。

交错组卷积

轻量级网络:IGCV系列V1、V2、V3_第1张图片
网络的结构如上图所示,它是一种交错组卷积块的堆叠结构。每个块包含两个组卷积: 第一次组卷积核第二次组卷积,所谓组卷积就是在卷积时有两个分组。

  • 第一次组卷积是把输入通道划分为L个组,每个组包含M个通道,然后将L个分组卷积的结果拼接在一起得到新的输入其仍然有LxM个通道之后打乱顺序
  • 第二次组卷积划分了M个组,每个组包含L个通道,且这L个通道来自第一次分组卷积时的不同组。
  • 同时第一次卷积做的是空间域卷积,第二次做的是逐点卷积。

IGCV与Xception

IGCV是第一个空间域的3x3Group Conv,之后接第二个1x1逐点卷积来融合通道信息,乍一看和Xception很像,可以说Xception就是IGCV的一种极端情况,Group数和Channel数相等的情况。
作者列举了L=1以及M=1的极端情况,也就对应着普通卷积以及Xception的极端组卷积轻量级网络:IGCV系列V1、V2、V3_第2张图片,结果当然是IGCV最好(摊手),从图上可以看到当每组只有2个通道的时候,效果是最好的,也就是文中最后IGCV的结构了。

  • 最后还补充了两次组卷积次序可以交换,并不影响结果;
  • 可以将3x3卷积分解成3x1和1x3,可以更加提高效率。

IGCV2

论文:https://arxiv.org/pdf/1804.06202.pdf
代码:https://github.com/hellozting/interleavedGroupConvolutons

创新点

IGCV2的主要创新点也就是在IGCV1的基础上,对于block里第二次组卷积再进行一次IGC,让我们看一下图,轻量级网络:IGCV系列V1、V2、V3_第3张图片
这是IGCV1的结构,可以看出第二次组卷积的时候,每一组的通道数仍然很多,文中的话就是比较dense,
因此想到对于每一组再进行IGC,这样就能进一步提升计算的效率了,也就是IGCV2,
轻量级网络:IGCV系列V1、V2、V3_第4张图片
将每个组的普通卷积替换成交错组卷积,具体可见下图,轻量级网络:IGCV系列V1、V2、V3_第5张图片

网络结构

轻量级网络:IGCV系列V1、V2、V3_第6张图片
与MobileNetV1对比,可以看出主要就是1x1的普通卷积替换成了1x1的交错组卷积,
上一下与MobileNetV1的结果对比,轻量级网络:IGCV系列V1、V2、V3_第7张图片
不过令我意外的是竟然参数并没有怎么减少,虽然准确率在通道数为1.0的时候只有略微提升,不过通道数少的时候提升还是比较明显的。

IGCV3

论文:https://arxiv.org/abs/1806.00178
代码:https://github.com/homles11/IGCV3

创新点

IGCV3的主要创新点就是先用1x1Group Pointwise Covolution升维,再3x3的组卷积,再通过1x1Group Pointwise Covolution的,主要结构如下,轻量级网络:IGCV系列V1、V2、V3_第8张图片
乍一看,这不就是MobileNetV2吗(捂脸)。

网络结构

轻量级网络:IGCV系列V1、V2、V3_第9张图片
与MobileNetV2的对比,基本上就是1x1卷积改成了1x1的组卷积,再放一下结果对比,轻量级网络:IGCV系列V1、V2、V3_第10张图片
效果还是稍微略好一点的。

你可能感兴趣的:(笔记)