图像分类

整理一些图像分类(image classification)相关的文章、论文和实现

概念

  • 图像分类(image classification):给定图像,判断图像所属类别。

文章

论文

  • 2022
    • A ConvNet for the 2020s
    • 基于Vision Transformer的设计逐步将标准ResNet改造成为ConvNeXt,证明了标准卷积网络的简单性和高效性
  • 2021
    • EfficientNetV2: Smaller Models and Faster Training
    • EfficientNet的进阶版本
      1. 重新设计搜索空间,增加额外算子,比如Fused-MBConv
      2. 应用训练感知NAS和放大策略共同优化模型精度、训练速度和参数量;
    • 另外提出渐进式学习算法:在训练早期阶段使用小图像和弱正则化强度(应用在随机失活方法或者数据增强策略上);后期逐步增加图像大小和正则化强度。
    • RepVGG: Making VGG-style ConvNets Great Again
    • 在训练阶段插入构建块RepVGGBlock,用于增强训练阶段的模型泛化能力;在推理阶段通过结构重参数化技术来融合多分支,仅包含Conv3x3ReLU,类似于VGG结构,得到一个快速推理模型
  • 2020
    • EfficientNet-lite
    • 基于EfficientNet优化的适用于移动/物联网的图像分类模型
      1. 移除squeeze-and-excitation注意力层
      2. 使用ReLU6替代Swish激活函数,能够显著提高训练后量化阶段的性能
      3. 固定stem层和head层的大小,能够避免额外的模型缩放产生的权重和计算量
    • Model Rubik's Cube: Twisting Resolution, Depth and Width for TinyNets
    • 通过大量实验证明了EfficientNet提出的复合缩放公式(同步缩放深度/宽度/分辨率)不适用于反向模型缩减,根据实验数据观察到分辨率和深度(层数)比宽度(通道数)更重要,并设计了一个缩小公式(这个公式描述不清晰,无法直接迁移到其他领域。感觉就是做了这么多的实验,必须得发篇论文出来证明一下),得到一个小模型簇 - TinyNet
    • ResNeSt: Split-Attention Networks
    • 提出ResNeSt,参数化SKNet实现:先对上一层特征数据进行分组,然后对每组数据单独执行多分支特征提取+注意力机制,最后通过串联的方式输出特征数据
    • 改进ResNet架构,提出ResNet-D
      1. 使用3个\(3\times 3\)卷积替代stem层的\(7\times 7\)卷积;
      2. 对于一致性连接,如果需要执行下采样,那么在卷积之前执行\(2\times 2\)平均池化
  • 2019
    • GhostNet: More Features from Cheap Operations
    • 设计Ghost模块,通过线性映射扩充卷积生成特征图,以保持卷积特征冗余性,堆叠Ghost模块生成GhostNet
    • ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks
    • 设计了非对称卷积块(Asymmetric Convolution Block (ACB)),能够替换标准平方核卷积实现非对称卷积网络(Asymmetric Convolutional Network (ACNet))。在训练过程中能够增强网络的泛化性能,完成训练后可以等效的将网络转换成为原始架构
    • EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
    • 使用神经架构搜索技术创建一个基准网络(EfficientNet-B0),然后设计复合放大公式来同步缩放深度/宽度/分辨率,扩展成一个模型簇 - EfficientNets
    • Searching for MobileNetV3
    • 设计了新的网络架构搜索算法,最终获取MobileNetV3-LargeMobileNetV3-Small
    • Selective Kernel Networks
    • 设计了SKUnit(Selective Kernel Unit),可分为3步操作:分离(split)、融合(fuse)和选择(select
      • 分离操作指的是通过多分支卷积提取多尺度空间信息,当前默认为两个分支
      • 融合操作为了使得神经元能够自适应调整感受野大小(多分支加法融合特征 + 全局平均池化嵌入全局信息 + 全连接层缩放特征维度)
      • 最后使用soft注意力机制执行跨通道自适应调整空间尺度信息
    • 堆叠多个SKUnit得到深度网络选择性核心网络(SKNet),其核心思想为多分支连接+残差连接+注意力机制
  • 2018
    • MnasNet: Platform-Aware Neural Architecture Search for Mobile
    • MobileNetV2的进阶版本,在移动神经架构搜索(MNAS)中同时考虑模型准确性和延迟,搜索得到MnasNet
    • ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
    • 论文推导了4条设计原则,并设计了一个新的模型 - ShuffleNetV2
      1. 相同输入输出通道数能够保证最小MAC使用
      2. 过多的分组卷积操作会增加MAC使用
      3. 网络碎片化降低了并行度
      4. 不能忽略逐元素操作的时间
    • MobileNetV2: Inverted Residuals and Linear Bottlenecks
    • MobileNet基础上设计了MobileNetV2
      1. 结合线性瓶颈层(linear bottleneck)和反向残差块(inverted residuals)组合成瓶颈残差块(bottleneck residual block
      2. 设计了ReLU6(\(ReLU6(x)=min(max(0, x), 6)\)),其最大输出值为6,适用于移动端低精度设备
    • 同时对SSD进行了修改,使用MobileNetV2作为特征提取层,同时将预测层的标准卷积替换为深度可分离卷积,称该变体为SSDLite
  • 2017
    • Squeeze-and-Excitation Networks
    • 提出一个新的架构 - Squeeze-and-Excitation (SE) block(挤压和激励模块),
      1. 在挤压(squeeze)阶段对输出特征图执行逐通道的全局平均池化,以融合通道信息
      2. 在激励(excitation)阶段利用全局通道信息对每个通道的特征响应进行自适应重校准
    • SE模块嵌入到现有的网络模型中,在增加少量计算复杂度的同时能够有效的提升网络性能
    • ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile
    • 使用逐点分组卷积(group conv)替代\(1\times 1\)卷积加速计算,使用通道重排(channel shuffle)实现跨通道信息交互
    • 改造残差块(bottleneck, \(1\times 1\)Conv + \(3\times 3\)Conv + \(1\times 1\)Conv),提出shuffle unit(\(1\times 1\)GConv + channel shuffle + \(3\times 3\)DWConv + \(1\times 1\)GConv),堆叠shuffle unit得到ShuffleNet
    • MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
    • 基于深度可分离卷积构建MobileNet,同时介绍了宽度乘法器(控制每层通道数)和分辨率乘法器(控制输入分辨率)
  • 2016
  • 2015
    • Rethinking the Inception Architecture for Computer Vision
    • 针对GoogLeNet架构进行优化,提出Inception-v2Inception-v3架构
      1. 堆叠两个\(3\times 3\)卷积替代一个\(5\times 5\)卷积,同时减少了计算量和参数量;
      2. 使用非对称卷积替换正常卷积操作,比如\(1\times n\),然后\(n\times 1\)卷积来替代\(n\times n\)卷积;
      3. 增加辅助分类器,加快极深网络训练的收敛;
      4. 通过并行卷积层和池化层设计,减少计算量的同时缩减空间尺寸;
    • 另外提出标签平滑正则化(label-smoothing regularization, or LSR)损失函数。
    • Deep Residual Learning for Image Recognition
    • 提出ResNet,证明了残差学习和网络深度的重要性
    • Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
    • 文章提出批量归一化方法,对每层输入数据进行标准化预处理,保证输入数据符合标准化分布,以避免输出数据进入过饱和区域,从而避免梯度消失,加快模型收敛速度
    • 论文在GoogLeNet架构中加入批量归一化层得到GoogLeNet_BN
  • 2014
  • 2013
    • Network In Network
    • 提出新的网络模型NIN(Network In Network)
      1. 设计了一种新的深度网络结构MLPConv,使用微神经网络(micro neural network)代替传统卷积层的线性滤波器
      2. 利用全局平均池化(global average pooling)代替全连接层作为分类器
    • Visualizing and Understanding Convolutional Networks
    • 提出一种可视化方法来观察中间层特征,以此发现不同模型层的性能分布,调整AlexNet参数得到ZFNet
      1. 第一层的滤波器大小修改为7x7
      2. 第一和第二个卷积层的步长修改为2
  • 2012
    • AlexNet
    • 深度学习的开端,由5个卷积层 + 3个全连接层组成
    • LeNet-5
    • 卷积神经网络的开端,由3个卷积层 + 2个全连接层组成

实现