部分对比算法的算法原理
ResNet算法综述
ResNet(Residual Network)是2015年ImageNet图像分类、图像物体定位和图像物体检测比赛的冠军。针对随着网络训练加深导致准确度下降的问题,ResNet提出了残差学习方法来减轻训练深层网络的困难。在已有设计思路(BN, 小卷积核,全卷积网络)的基础上,引入了残差模块。每个残差模块包含两条路径,其中一条路径是输入特征的直连通路,另一条路径对该特征做两到三次卷积操作得到该特征的残差,最后再将两条路径上的特征相加。
上图展示了50、101、152层网络连接示意图,使用的是瓶颈模块。这三个模型的区别在于每组中残差模块的重复次数不同(见图右上角)。ResNet训练收敛较快,成功的训练了上百乃至近千层的卷积神经网络。
传统的卷积网络和所有连接的网络在传输和丢失问题中 或多或少都有信息丢失。此外,如果梯度消失,梯度爆炸, 深度网络就无法训练。RESNET 在一定程度上解决了这个问题。 通过循环将输入信息直接传递到输出,保护信息的完整性。 整个网络只研究输入和输出之间的差异,简化了学习的目标 和难度。VGGNet 和 ResNet 的对比如下图所示。ResNet 最大 的区别在于有很多的旁路将输入直接连接到后面的层,这种 结构也被称为shortcut或者skip connections。我们通过 VGG-19 的直连 34 层神经网络和 ResNet 的 34 层网络对比更 能直观的发现优势所在。
ResNet解读博客:https://blog.csdn.net/lanran2/article/details/79057994
ECA-NET算法综述
ECA-NET是2020年CVPR上的一篇论文ECA-Net: Efficient Channel Attention中提出的基于注意力机制的卷积网络模型。在计算机视觉领域,通过给深度卷积网络设计复杂的注意力机制模块虽然可以提高模型的性能,但是往往会带来很大的复杂度。ECA-NET通过设计通道注意力模块EfficientChannel Attention(ECA)来在保证模型低复杂度的情况下有效的提高了模型的性能。
ECA-NET网络的核心思想是提出了ECA模块。该模块对分组卷积的每个组采取通道分割。对于通道注意力,采用全局平均池化产生通道相关的统计信息,然后使用1维的卷积来生成通道特征表达。
相比于SE模块的通道减少又增加的过程,ECA模块保持了通道数量的不变,也就减少了通道数量减少带来的信息丢失。为了在通道数量不变的情况下获取注意力,ECA采取了对每个通道的相邻K个通道使用1x1卷积的方法来实现注意力的提取。使用ECA模块的层的k值和通道的数量相关,论文中分析由于不同的k值对结果的影响不大,代码中统一使用的k值是3。使用1x1卷积代替两个全连接层也减少了需要训练的参数量。
SRM算法综述
SRM是2019年arxiv上的一篇论文SRM : A Style-based Recalibration Module for Convolutional Neural Networks中提出的基于风格迁移机制的通用卷积网络模型。本项目即对其进行复现。风格迁移需要用到卷积神经网络。可否充分利用卷积神经网络中产生风格迁移的机制,并将其用于一般的计算机视觉任务呢?SRM网络的核心思想是提出了SRM模块。该模块首先通过风格池化从每个通道的特征图中提取风格信息,然后通过风格集成来评估每个通道的校正权重。其中,风格池化是在空间维度上操作,风格集成是在通道维度上操作。这种将特征图和风格权重相结合的方式本质上是一种注意力机制,只不过这种注意力关注的是特征图中的风格信息。
SRM实现细节如下:
PyramidNet算法综述
PyramidNet是2017年CVPR上的一篇论文Deep Pyramidal Residual Networks中提出的网络模型.
PyramidNet网络的核心思想是随着网络深度的加深,通道的数量逐渐增加。
卷积网络在计算机视觉领域可以说是一个‘must have’的网络模块,通常,卷积网络是多层叠加的,卷积网络的通道数量只是在feature map的大小发生减小的时候出现增加的变化。而PyramidNet是在每个卷积模块后都会有通道数量的增加,从而形成通道数量逐模块逐渐增加的金字塔结构。论文作者通过实验发现,这种网络结构设计有助于网络的鲁棒性。
- PyramidNet网络和ResNet网络的比较:
既然PyramidNet网络的结构是随着网络深度的加深,通道数量逐层增加,那么增加的方式就有加法和乘法两种方式。图2给出了这两种方式及它们比较的图示。其中a是加法方式,b是乘法方式,c是两种方式的比较。可以看出,b这种方式更接近传统的ResNet网络。论文中通过实验得出加法方式比乘法方式效果要好,故本项目采用加法的通道数量增加方法。
- PyramidNet以加法和乘法方式增加通道数量的比较图示:
由于PyramidNet网络的通道数量是逐模块增加的,它的残差模块在做残差相加的时候就要对通道数量做适配。PyramidNet采取Padding的方式对通道数量做适配,实现细节如下图所示。其中a是通过padding做通道数量适配的示意图,b是通过padding做通道数量适配的等效分解示意图。 - PyramidNet残差模块通道数量适配示意图:
PyramidNet网络的另一个实现细节是对残差模块的卷积层、BatchNorm层和ReLU的排列组合进行了有别于ResNet的设计。
DeiT算法综述
Vit之前的算法大都是保持CNN整体结构不变,在CNN中增加attention模块或者使用attention模块替换CNN中的某些部分。ViT算法中,作者提出没有必要总是依赖于CNN,仅仅使用Transformer结构也能够在图像分类任务中表现很好。
受到NLP领域中Transformer成功应用的启发,ViT算法中尝试将标准的Transformer结构直接应用于图像,并对整个图像分类流程进行最少的修改。具体来讲,ViT算法中,会将整幅图像拆分成小图像块,然后把这些小图像块的线性嵌入序列作为Transformer的输入送入网络,然后使用监督学习的方式进行图像分类的训练。
该算法在中等规模(例如ImageNet)以及大规模(例如ImageNet-21K、JFT-300M)数据集上进行了实验验证,发现:
- Tranformer相较于CNN结构,缺少一定的平移不变性和局部感知性,因此在数据量不充分时,很难达到同等的效果。具体表现为使用中等规模的ImageNet训练的Tranformer会比ResNet在精度上低几个百分点。
- 当有大量的训练样本时,结果则会发生改变。使用大规模数据集进行预训练后,再使用迁移学习的方式应用到其他数据集上,可以达到或超越当前的SOTA水平。
使用大规模数据集预训练后的 ViT 算法,迁移到其他小规模数据集进行训练,与使用 CNN 结构的SOTA算法精度对比:
图中前3列为不同尺度的ViT模型,使用不同的大规模数据集进行预训练,并迁移到各个子任务上的结果。第4列为BiT算法基于JFT-300M数据集预训练后,迁移到各个子任务的结果。第5列为2020年提出的半监督算法 Noisy Student 在 ImageNet 和 ImageNet ReaL 数据集上的结果。
- BiT 与 Noisy Student 均为2020年提出的 SOTA 算法。
-
- BiT算法:使用大规模数据集 JFT-300M 对 ResNet 结构进行预训练,其中,作者发现模型越大,预训练效果越好,最终指标最高的为4倍宽、152层深的 ResNet152×4ResNet152×4。论文地址:Big Transfer (BiT): General Visual Representation Learning
-
- Noisy Student 算法:使用知识蒸馏的技术,基于 EfficientNet 结构,利用未标签数据,提高训练精度。论文地址:Self-training with Noisy Student improves ImageNet classification
评论区