图像处理之深度学习

前言

图像方面的处理是人工智能发展的一个主要分支,同时具备极高的应用价值,在此总结一些工业上学术上使用较为广泛的模型,或是较为经典,或是个人熟悉。

图像分类

  • LeNet

    诞生于1994年,是最早的卷积神经网络之一,卷积网络架构的起点

  • AlexNet

    2012年LSLVRC2012竞赛中的冠军网络,从这一年起,深度学习开始飞速发展

    - 首次利用GPU进行网络加速训练
    - 使用了ReLU激活函数
    - 使用了局部响应归一化LRN
    - 全连接层Dropout的使用
  • VggNet

    诞生于2014年,作者尝试了很多结构,最大的亮点是采用3*3的小卷积核

  • GoogLeNet

    Goog LeNet很明显是在向LeNet致敬,最早版本出自2014年

      - Inception 结构(不同特征尺度融合)
      - 1*1卷积核进行降维和映射处理
      - 辅助分类器帮助训练(防止梯度消失)
      - 丢弃全连接层(池化代替)
  • ResNet

    2015年微软实验室提出,residual模块实现超深的网络结构(相当于短接),解决深层结构的梯度消失问题

    后续的ResNeXt修改了block,把过滤器拆开来计算(Group Convolution)

  • DenseNet

    CVPR2017的oral,主要和ResNet及Inception网络做对比,简单讲,就是每一层的输入来自前面所有层的输出

  • MobileNet

    Google2017年提出的轻量级网络,大幅度减少了参数与运算量

      - Depthwise separable convolution(深度可分离卷积)
      - 添加超参数控制模型规模

    v2主要是一个倒残差结构,然后修改了激活函数

    v3更新了Block(加入SE模块‘注意力机制’,添加通道权重),使用NAS搜索结构,并重新设计耗时层

  • ShuffleNet

    旷视科技在2017年底提出的轻量级网络

      - channel shuffle(实现组之间的信息交流)
      - pointwise group convolutions(1*1卷积做group操作)

    v2提出FLOPs不能作为衡量模型的唯一标准,作者在其他反面优化了模型

  • EfficientNet

    2019谷歌发表于ICML,作者同时探索输入分辨率、网络深度和宽度的影响

    v2发表在2021 CVPR,设计了更好的模型结构,在我看来最大的提升是渐进式学习策略,随着训练不同阶段选择不同的正则化强度(作者用了Dropout、RandAugment和Mixup这三种正则方法)

  • Vision Transformer (ViT)

    2017年谷歌提出的Transformer已经在各种场景中被应用,终于在2020年谷歌在视觉领域采用Transformer取得了优异的性能

    核心思想就是把图片划分成区块序列传入ViT

      - 把图像分为几个区块 (patch)
      - 添加分类标志位
      - 线性变换转为 D 维特征向量
      - 加上位置编码向量
      - 通过Transformer Encoder层,对第一个类别输出设计分类器
  • Swin Transformer

    2021年微软研究院发表,对ViT的一个改进

    ViT从头至尾都是对全局做self-attention,而swin-transformer是一个窗口在放大的过程,然后self-attention的计算是以窗口为单位去计算的

    这样相当于引入了局部聚合的信息,和CNN的卷积过程很相似

目标检测

  • Faster-RCNN/FPN

    Faster R-CNN 是目标检测中的一个很经典的two stage算法,许多其他的目标检测算法都会运用到Faster R-CNN的部分结构或思想

    Faster R-CNN 由R-CNN,Fast R-NN改进演变而来

      - R-CNN是深度学习目标检测的开山之作(生成候选区域,分类,修正候选框)
      - Fast R-NN 先做卷积提取特征之后再提取对应的候选区
      - Faster R-CNN 等于 RPN + Fast R-NN,RPN选出区域,Fast R-NN检测
      - RPN 在每个位置上取三个不同面积的特征(经验所得)

    FPN 是2017年提出的一种网络,简单说就是把各层的特征图组合起来

  • SSD/RetinaNet

    SSD 发表于ECCV 2016,模型是vgg改,得到6个特征图,设定不同的Prior Box

    RetinaNet 发表于CVPR 2017,SSD + FPN

  • YOLO

    YOLO v1 2016 CVPR,网格化处理

    YOLO v2 2017 CVPR,添加BN层,更高分辨率,使用anchor,深浅特征图融合,动态图片大小

    YOLO v3 2018 CVPR,融合各种优势,残差结构,多特征图等

    YOLO v3spp,Mosaic图像增强(多个图片拼接),SPP模块(不同尺度特征融合),损失的修改(正负样本匹配)

图像分割

参考:语义分割综述

很酷,人工假智能,科技并带着趣味。

  • FCN

    深度学习之语义分割开天辟地之作,于2014年提出,称为全卷积网络

    - 不含全连接层的全卷积网络,可适应任意尺寸输入
    - 反卷积层增大图像尺寸,输出精细结果
    - 结合不同深度层结果的跳级结构,确保鲁棒性和精确性
  • UNet

    UNet是完全对称的,并有编码器解码器的概念

    - 切片的策略
    - 弹性变形数据增强
    - 使用加权loss
  • SegNet

    轻量化上采用,记录池化位置索引,分割效果和速度双提升

  • Multi-Scale

    提出和使用了空洞卷积

  • Deeplab

    空洞卷积,图像金字塔,全连接条件随机场(结构化预测)

【后续版本pass】(图像领域太卷了,模型层出不穷,鼠鼠在此等一个革新)

云点分割(偷懒,也放在这里吧)

参考:PointNet 家族简介

  • PointNet

    开山之祖

    - 排列不变性(maxpooling聚合信息)
    - 交互性(全局与局部特征concat)
    - 变换不变性(输入数据标准化)
  • PointNet++

    点云版 UNet,分割区域,捕捉局部信息

    - set abstraction结构逐层提取特征(sampling:FPS最远距离采样,grouping:找领域点,PointNet提取特征)
    - 分类任务: PointNet(MLP)+max pooling + 2层full connection layers + softmax 提取全局特征
    - 分割任务:插值+concat+Pointnet来上采样点云数量并提取点云特征
  • VoxelNet

    苹果公司在2016年提出,思路很直观,就是切成小块做处理。

    - 特征学习网络(Voxel划分,Grouping和Sampling,特征堆叠,4D Tensor稀疏表示)
    - 中间卷积层(用三维卷积聚合Voxel局部关系)
    - 区域提议网络(Region proposal network,3d目标检测)
  • SECOND

    使用了稀疏 3D 卷积的优化VoxelNet(稀疏卷积实现将写在底层实现Blog中)

  • PointPillars

    把垂直方向的点云压到网格上,使用 2D CNN 方法进行物体检测

  • 中间省略一堆优异模型,下面概况最近研究的几个模型

  • Point-Voxel

    NIPS19 spotlight,韩松实验室的工作,主要是两种方法的融合。

    - Point分支提取全局特征
    - Voxel分支提取局部特征
  • SPVNAS

    ECCV2020,韩松实验室为了更高效的部署,提出了一种新的三维点云计算模块稀疏点云-栅格卷积 (SPVConv) 和3D神经网络结构自动搜索 (3D-NAS)

    主要在于稀疏的卷积实现和搜索,我打算利用剪枝的思路来尝试下稀疏搜索,不知是否有效。先仔细学习下代码,感觉写的还蛮好的,一些细节将记录在下面。

    呃,从底层到各种高级用法,看呆了,分割领域就到这里吧,之后的时间先务下正业。

To be continued ...