点击上方“
小白学视觉
”,选择加”
星标
“或“
置顶
”
重磅干货,第一时间送达
来源:AI科技评论
作者 | BBuf
编辑 | 唐里
下面要介绍的论文发于NeurlPS2019,题为「Convolution with even-sized kernels and symmetric padding」,axriv地址为:https://arxiv.org/abs/1903.08385。
当前紧凑的卷积神经网络主要通道深度可分离卷积,扩张通道和复杂的拓扑结构来提高效率,但这也反过来加重了训练过程。此外,在这些模型中3*3卷积核占主要地位,而偶数大小的卷积核(2*2,4*4)很少被采用。
这篇论文通过信息侵蚀假设来量化偶数大小的卷积核在训练和测试时发生的特征漂移问题,并通过在特征图的四个侧面上应用对称填充来消除它(C2sp,C4sp)。
对称填充以很少的计算成本释放了偶数大小卷积核的泛化能力,使得其在图像分类和生成任务方面优于3*3内核。此外,C2sp获得了和最新紧凑型CNN相当的精度,而训练期间的内存和时间消耗却少得多。对称填充和偶数大小的卷积可以很好的实现到现有框架中,为卷积体系结构提供有效的设计元素,尤其是在强调训练在线和持续学习的场景。
1. 研究背景
深度卷积神经网络(CNN)在许多计算机视觉任务中都取得了重大成功,例如图像分类,语义分割,图像生成等。除了特定领域的应用外,还设计了各种CNN体系结构来提高性能,其中特征提取和表示功能主要通过增加网络的宽度和深度来增强。
因此,内存开销和计算复杂性极大的阻碍了它们在嵌入式AI系统中的部署。这激发了深度学习社区设计减少计算资源的紧凑型CNN,同时保持令人满意的精度。
残差连接和密集连接解决了网络过深梯度消失的问题。分支拓扑,组卷积,通道混洗以网络碎片为代价保证了准确性。还有深度可分离卷积也在设计紧凑的CNN时发挥了重要作用。同时最新的神经网络结构搜索NAS还通过强化学习,演化学习算法等来优化结构。
当代的卷积神经网络都以3*3卷积为主,并且偶数卷积核被普遍认为不如奇数卷积核,因此很少被用作CNN的基本构建模块。
并且当前对模型的优化工作主要集中在前向推理阶段,而模型训练因为复杂的拓扑,扩展通道,额外的变换变得更加困难。因此这引发了人们开始对卷积核背后的数学原理重新思考。
在这篇论文中,探索了偶数大小的卷积核的泛化能力(2*2, 4*4),如果将这些卷积核直接用在分类和生成任务中性能都会下降。
论文提出通过信息侵蚀假设对这种线性进行量化:偶数卷积核具有不对称的感受野导致在生成的特征图中产生像素偏移。当堆叠多个卷积时,位置偏移会累积,从而严重的侵蚀空间信息。
为了解决这一问题,论文提出使用偶数大小的卷积核的同时在特征图的每一层使用对称填充(C2sp,C4sp)。对称填充不仅很好的消除了移位问题,而且扩展了偶数偶数卷积核的感受野。
各种实验表明 C2sp 是对 C3 的有效分解,并可节省 30%-50% 的参数和 FLOPs。另外,和紧凑的 CNN 模块 (如 DWConv, ShiftNet, 倒瓶颈结构 (MobileNetv2 引入)) 相比,C2sp 在训练过程中具有 20% 的加速比和 35% 的内存节省,并且达到和他们类似的精度。在生成对抗网络中,C2sp 和 C4sp 都获得了改进图像质量和收敛更加稳定的效果。
2. 相关工作
当代大多数网络模型压缩方法都尝试从预先训练的参数网络块中删减权重,或者量化权重。最近还有一些工作可以在初始化阶段修剪网络和在训练期间量化模型。模型压缩方法和设计紧凑型结构的CNN可以共同作用进一步减少内存消耗和计算复杂度。
偶数大小卷积核
偶数大小卷积核一般和步幅为2一起应用以调整图像大小。例如,一些GAN模型在生成器和判别器中应用4*4的偶数卷积核,并设置步长为2完成下采样和上采样,这样可以避免棋盘效应。但是,当涉及到深层和大规模GAN网络时,3*3卷积核仍是首选。在关系强化学习中,采用两个C2层来实现4个像素表示的对象的推理和计划。
扩张卷积
扩张卷积支持感受野的指数级扩展且不会降低特征图分辨率,这特别适合用于密集预测任务,例如语义分割。可变形卷积通过附加2D偏移量和直接从目标数据集中学习偏移量来增加卷积核的空间采样位置。ShiftNet使用不包含参数或FLOP的移位核来回避空间卷积,但它需要大的通道扩展才能取得令人满意的性能。
3. 方法
3.1 移位问题
本文从标准卷积核的空间相关性开始。自觉来看,用两个C2替换C3不仅可以使性能提高,而且还可以减少11%的开销,这是受到C5可以分解为两个C3的启发。但Figure3(见后文) 中的实验证明C2的分类准确率低于C3,并且随着网络的加深饱和速度更快。
此外,即使将3*3卷积核视为4*4卷积核的子集(包含更多的参数和FLOPs),将每个C3替换为C4也会降低准确性。为了解决这个问题,Figure1 中展示了训练好的使用C2核的ResNet-56的激活图。
Figure 1
图中共有32*32,16*16,8*8三种空间尺度的特征激活图被展示出来。其中第一行是使用2*2卷积核(C2),第二行是使用2*2卷积同时使用论文提出的对称填充(C2sp)方法。可以看到C2中的激活特征逐渐偏移到空间位置的左上角。这些压缩和扭曲的特征已经不适合用于分类,更不用说其它基于像素的任务了,例如目标检测和语义分割。
论文将这一问题表述为偶数卷积核的移位问题。对于一个有
个输入通道,
个输出通道的特征图
和一个大小为
的正方形卷积核
,卷积操作表示为:
其中,
和
枚举了
大小的特征图上的感受野
。特别地,当k是奇数例如3时,感受野
被定义为:
其中,k表示从四个边界到原点的最大像素个数。
表示向下取整函数。因为
是对称的,所以有
。当k是一个偶数例如2或4时,因为没有中心点,所以
和
的卷积操作变成了非对称的。在大多数深度学习框架中,它很少引起注意,并被预定义的偏移量所掩盖。例如,Tensorflow选取左上角方向最近的像素点作为原点,这给出了不对称的感受野
:
发生在所有空间位置上的偏移等于卷积之前在特征图的底部和右侧再填充一圈0。对于Caffe是在左侧和顶部填充一圈0。Pytorch默认仅支持对称填充,如果需要,用户需要自己定义填充方式。
3.2 信息侵蚀假设
如上所述,偶数大小的卷积核使零填充不对称于1个像素,并且平均(两个相反方向之间)导致生成的特征图偏移0.5个像素。当堆叠多层偶数大小的卷积核时,偏移位置会累积,最终会将将像素挤压或扭曲到特征图空间位置上的某个角。
理想情况下,如果这种非对称填充卷积以Tensorflow样式执行了n次,那么现在的特征图相比于原图对应方式变成:
由于特征图的大小为h*w,并且通常会下采样以进行高级特征表示,因此边缘影响不可忽略,因为边缘的0填充会扭曲特征图的有效值,特别是在深层网络和尺寸小的特征图中。
我们假设信息量等于特征图的平均L1范数,然后用0填充进行连续卷积以保持特征图大小将逐渐侵蚀信息:
信息侵蚀是递归发生的,并且难以被公式化,我们直接从包含各种内核大小的深层网络中获取特征图。在Figure2中,将尺寸为32*32的10k张图像馈送到未训练的ResNet-56模型中,其中瓶颈结构和BN层被删除了。
Figure 2
在较大的卷积核和尺寸较小的特征图中逐渐减少且速度更快。此外,偶数大小的卷积核(C2,C4)中的不对称填充显著加快了信息侵蚀速度,这和Figure1中的网络结果一致。可以将特征图看作是在水中融化的矩形冰块,只是它只能在其4个边缘进行热交换。冰越小,融化过程越快。
对称填充均匀地分布了热梯度,从而减慢了交换速度。而不对称的填充会在某些角上产生较大的热梯度,从而使其加速。这个假设也为相关文献中的一些实验提供了解释。
(1)退化问题发生在非常深的网络中:尽管梯度消失/爆炸的正向激活和反向梯度已经通过初始化和中间归一化解决,但多次卷积后的空间信息却被边缘侵蚀了。
(2)根据报道,在GAN中将网络深度加倍会阻碍训练,并将内核大小增加到7或5会导致性能下降或改进。这些表明GAN需要信息增强并且对信息侵蚀更加敏感。
3.3 解决方案
对于等式(3)中的偶数卷积核,
不可避免的是不对称的,因为很难在单个特征图中引入对称性。因此,论文从输入
和卷积核进行卷积操作后的输出
入手。简单来说,让
表示选择左上角的最近像素作为原点移位后的感受野
。同理选择其它3个方向就可以得到一个移位后的集合
:
包括4个方向:左上,右上,左下,右下。让
表示输入通道索引
到移位后的感受野的映射。调整四个移位后的感受野的比例,我们可以得到:
在单个卷积中混合四个移位的
后,偶数大小的卷积核会部分扩展。例如
。如果
是4的倍数(大多数都是),通过按顺序分配
,在单个卷积层内是严格满足对称性的。
如上所述,偏移的
等效于在特征图的某个角填充0。因此,可以通过分组填充策略很好的实现对称性,Figure2为C2sp的示例,总之,具有偶数大小卷积核和对称填充策略的2D卷积包含3个步骤。
(1)将输入特征图分成4组。
(2)根据该组中定义的方向填充特征图。
(3)执行标准卷积操作。
4. 实验
在这一节,对称填充的有效性在CIFAR10/100和ImageNet分类任务以及CIFAR10,LSUN,和CelebA-HQ生成任务中得到了验证。首先,论文证明了移位问题已经通道对称填充消除。
在Figure1的对称情况下,特征图没有出现特征漂移现象,显示出了合理的幅值和形状。在Figure2中,就信息量Q而言,C2sp个C4sp的衰减率和C4sp的衰减率比C2和C4低很多。此外,C2sp具有比C3更大的Q。
4.1 探索各种卷积核大小
为了探索各种卷积核的泛化能力,这里选择没有瓶颈层的ResNet作为主干网络。并且将所有其它组件和训练超参数保持相同,仅仅将每个C3替换为C4,C2,C2sp。在CIFAR10上训练深度为6n + 2,n∈{3,6,…,24}的网络。参数精度曲线如Figure3左图所示:
Figure 3
原始的偶数大小的4×4、2×2核的性能较差,并且随着网络的加深,饱和度会更快。与C3相比,C2sp仅使用60%-70%的参数以及线性相关的FLOPs即可达到相似的精度。实验还发现,对称填充只会稍微提高C4sp的准确性。
在这样的网络深度中,边缘效应可能会主导4×4内核的信息侵蚀,而不是特征移位问题,这与Figure2中的衰减曲线一致。基于ResNets在CIFAR10上的结果,进一步评估了CIFAR100的C2sp和C3。此时,具有多个深度6n+ 4,n∈{3,6,…,18}的DenseNet是主干网络,结果如Figure3中图所示。
随着网络深度的加深,相同深度下C2sp的精度和C3相当。训练损失表明C2sp比C3具有更好的泛化性能和过拟合。在相似精度的标准下,C2sp模型在CIFAR评估中节省30%-50%的参数和FLOPs。因此,本文推荐在分类任务中使用C2sp作为C3的更好替代品。
4.2 和紧凑的CNN模块对比
这一节和当前在模型结构方面设计的一些高效CNN模块如Shift Net, 深度可以分离卷积,反瓶颈结构(Mobilenetv2引入)进行对比。主要对比了错误率,参数量,FLOPs,通道扩展速率,内存,速度等指标。具体的测试结果如Table1所示。
同时论文对比了C2sp和当前的一些NAS网络模型:NASNet,PNASNet和AmoebaNet等。论文应用Wide-DenseNet并调整深度和宽度(K=48,L=50)以具有大约3.3M参数。和SOAT的自动生成模型相比,C2sp的准确率损失了不到0.2%,并且使用cutout和数据增强策略后模型的准确率相比SOAT精度还可以提升0.21%。
虽然NAS模型使用分离的运算符如池化,组卷积,深度可分离卷积来提高相同参数量模型的准确率,但标准的Wide-DenseNet具有更好的内存和运行时的计算效率。作者在TitanXP上针对NASNet-A和Wide-DenseNet的训练速度分别是200和400sps。具体测试结果如Table2所示。
4.3 ImageNet图像分类任务
这一节没什么的好解释的了,论文对比了Resnet-50,DenseNet-121,MobileNet v1, MobileNet V2在ImageNet图像分类数据集上的表现。注意在Table3中网络后面接的0.5x表示通道数是原始网络的0.5倍,其他数字类推。具体测试结果如Tabel3所示。
4.4 图像生成任务
对称填充的有效性进一步在GAN中得到了验证。Table4展示了使用不同类型的卷积核在CIFAR10,LSUN和CelebA上的测试结果。
然后论文还给出了由不同卷积核构成的GAN的可视化生成结果,如Figure4所示。
论文还出了分类实验和GAN生成实验的一些超参数设置,具体细节见原论文。
5. 结论
这篇论文探索了偶数大小卷积核的(2×2、4×4)的泛化能力,并通过信息腐蚀假设量化了特征漂移问题。然后,论文引入了对称填充以在单个卷积层内优雅的实现对称性。
在分类任务中,和CIFAR10/100的C3相比,C2sp节省了30%-50%的参数和FLOPs,并且在ImageNet上将C2的准确率提升了2.5%。和现有的紧凑的CNN结构相比,C2sp以更少的通道和更简单的架构实现了具有竞争力的精度结果,减少了>35%的内存消耗并加快了>20%的训练速度。
在图像生成任务中,C2sp和C4sp都可以提高图像质量并稳定收敛。具有对称填充的偶数大小的卷积核为强调在线和持续学习的CNN体系结构设计提供了更有效的结构单元。
参考文献:
[28] TakeruMiyato, Toshiki Kataoka, Masanori Koyama, and Yuichi Yoshida. Spectralnormalizationfor generative adversarial networks. InInternational Conference onLearning Representations,2018.
好消息!
小白学视觉知识星球
开始面向外开放啦👇👇👇
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~