DeepLab_V3
1、简介论文原文: 论文原文)
DeepLab V3是2017年发表在CVPR上的文章, 与DeepLab V2相比, 个人感觉有如下的三种变化:1)引入Multi-grid, 2)改进ASPP结构, 3)把CRFs后处理给移除掉了。
DeepLabV3两种模型结构文章中, 穿插讲解两种模型的实验, 这两种模型分别是cascded model和ASPP model。在cascded model中没有使用ASPP模块, 在ASPP model中没有使用cascaded blocks模块。注意, 虽然文中提出了两种结构, 但作者说ASPP model比cascaded model略好点, 包括在Github上开源的一些代码, 大部分也是用的ASPP model。
Both our best cascaded model (in Tab. 4) and ASPP model in(Tab. 6) (in both cases without Dense CRF post-processing or MS-COCO pre-training) already outperform D ...
DeepLab_V2
1、简介论文原文:论文原文](https://arxiv.org/pdf/1606.00915.pdf))
这是一篇2016年发表在CVPR上的文章, 其实对比模型结构图, 发现DeepLab v1与Deep Lab v2相比,其实就是换了一个backbone(VGG->ResNet, 换个backbone大概能涨3个点), 然后引入了一个新的模块ASPP(Atros Spatial Pyramid Pooling), 其他的没有太大区别。
DCNNs应用在语义分割任务中的问题和上一篇文章一样, 在文章的引言部分作者提出了DCNNs应用在语义分割任务中遇到的问题。
分辨率被降低(主要由于下采样stride>1的层导致)
目标的多尺度问题
DCNNs的不变性(invariance)会降低定位精度
文中对应的解决方法针对分辨率被降低的问题, 一般就是将最后的几个Maxpooling层的stride设置成1(如果是通过卷积下采样的, 比如resnet, 同样将stride设置成1即可), 然后再配合使用膨胀卷积。
In order to overcome this ...
DeepLab_V1
1、简介论文原文: 论文原文](https://arxiv.org/pdf/1412.7062.pdf))
这篇文章最早发表于2014年, 是Google和UCLA等共同的杰作, 也是一篇很经典的论文。 DeepLab系列的第一篇论文, 因为已经过了很久,所以只是做简单的记录。
2、语义分割中存在的问题在论文的引言中首先抛出了两个问题(针对语义分割任务):信号下采样导致分辨率降低和空间不敏感问题。
对于第一个问题信号下采样, 作者说主要是采用Maxpooling导致的, 为了解决这个问题, 作者引入了’atrous’ (with holes) algorithm(空洞卷积/膨胀卷积/扩张卷积)
对于第二个问题空间不敏感, 作者说分类器自身的问题(分类器本身具备一定空间不变性)。为解决这个问题作者采用了fully-connected CRF(Conditional Random Field)方法, 这个方法只在DeepLabv1-v2中使用到了, 从V3之后即不去使用了, 而且这个方法很耗时。
DeepLabV1的优势相比于之前的一些网络, 本文提出的网络具有以下优势:
...
SwinTransformer
1、简介Swin Transformer是2012年微软研究院在ICCV上发表的一篇文章, 并荣获2021 ICCV最佳论文称号。 Swin Transformer网络是Transformer模型在视觉领域的又一次碰撞。
论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
论文地址: Swin Transformer
2、论文整体框架在正文开始之前, 先对比一下Swin transformer与Vision Transformers, 下图是swin Transformers文章中给出的图, 左边是Swin Transformers,右边是之前的Vision Transformers,通过对比可以发现有两点不同。
Swin Transformers使用了之前类似卷积神经网络的层次化构建方法(Hierachical feature maps), 比如特征图尺寸有对图像下采样4倍的, 8倍的以及16倍的, 这样的backbone有助于在此基础上构建目标检测, 实例分割等任务。 而 ...
TransposeConv
1、简介首先回顾一下普通卷积, 下图是以stride=1, padding=0, kernel_size=3为例, 假设输入特征图大小为4×4(假设输入输出都是单通道), 通过卷积后的特征图大小为2×2, 一般使用卷积的情况中, 要是特征图变小(stride>1), 要么保持不变(stride=1), 当然也可以通过四周padding让特征图变大但是没有意义。
2、转置卷积转置卷积主要起到上采样的作用, 但转置卷积不是卷积的逆运算(一般卷积操作是不可逆的), 它只能恢复到原来的大小, 数值与原来的不一样。转置卷积的运算步骤可以归纳为以下几点:
在输入特征图元素间填充s-1行, 列0(其中s是转置卷积的步距)
在输入特征图四周填充p-1行, 列0(其中k表示转置卷积的kernel_size大小, p为转置卷积的padding, 注意这里的padding和卷积操作有些不同)
将卷积核参数上下、左右翻转
做正常卷积运算(填充0, 步距1)
下面假设输入的特征图为2×2(假设输入输出为单通道), 通过转置卷积后的的得到4×4大小的特征图。 这里使用的转置卷积核大小k=3, str ...
VisionTransformer
1、简介论文原文:Vit](https://arxiv.org/abs/2010.11929))
Transformer最初是针对NLP领域提出的, 并且在NLP领域大获成功。Vision-Transformer尝试将Transformer应用到CV领域。通过原论文中的实验发现,论文给出的模型在ImageNet1k上能够达到88.55%的准确率, 说明Transformer在CV领域确实能取得不错的效果。
2、模型详解原论文中,作者主要拿ResNet, Vit(纯Transformer模型)以及Hybrid(卷积和Transformer混合模型)三个模型进行比较。
下图是原论文中Vit的模型架构, 简单而言, 模型由三部分组成:
1、Linear Project of Flattened Patches(Embedding层)
2、Transformers Encoder(图右侧给出更加详细的结构)
3、MLP Head(用于分类的层结构)
Embedding层结构对于标准的Transformers模块, 要求输入的是token(向量)序列, 即二维矩阵[num_token, ...
Transofrmer
1、简介论文原文:attention原文)
Transformer是2017年Google提出的, 当时主要是针对自然语言处理领域提出的。之前的RNN模型记忆长度有限且无法并行化,只有计算完t_i时刻后的数据才能计算t_{i+1}时刻的数据, 但Transformer都可以做到。在原论文中作者首先提出了self-attention的概念, 然后在此基础上提出Multi-Head Attention。本文针对self-attention以及multi-head attention的理论进行深入分析。
1、Self-Attention论文中的Transformer模型如下图所示:
下面针对Self-Attention展开说明。为了方便理解, 假设输入的序列长度为22, 输入就是两个节点x1, x2, 然后通过input Embedding也就是图中的f(x), 将输入映射到a1, a2, 紧接着分别将a1, a2分别通过三个变换矩阵W_q, W_k, W_v(这三个参数是可训练的, 是共享的), 得到对应的q^i, k^i, v^i, (在源码中,这部分直接使用全连接层实现的, 这 ...
MobileNet
1、简介在之前的文章中讲的AlexNet, VGG, GoogleNet以及ResNet网络, 它们都是传统卷积神经网络(都是使用传统卷积层),缺点是内存需求大、运算量大而导致无法在移动设备以及嵌入式设备上运行, 这里要讲的MobileNet网络就是专门为移动端,嵌入式端而设计的。
1、MobileNetv1MobileNet模型是Google在2017年针对手机或嵌入式提出的轻量级模型, 专注于移动端或嵌入式设备中的轻量级CNN网络。相比于传统卷积神经网络, 在准确率小幅度降低的前提下大大减少模型参数与运算量。(相比VGG16准确率减少了0.9%,但模型参数只有VGG的1/32)
要说MobileNet网络的优点, 无疑是其中的Depthwise Convolution结构(大大减少了运算量和参数数量)。下图展示了传统卷积与DW卷积的差异。在传统卷积中, 每个卷积核的channel与输入特征矩阵的channel相等(每个卷积核都会与输入特征矩阵的每一个维度进行卷积运算)。
而在DW卷积中, 每个卷积核的channel都是等于1的(每个卷积核只负责输入特征矩阵的一个channe ...
ResNet
1、简介Resnet由微软实验室于2015年提出, 获得当年ImageNet竞赛分类任务第一名, 目标检测第一名。获得COCO数据集目标检测第一名, 图像分割第一名。
下图是ResNet34的简图。
网络的亮点
超深的网络结构(突破1000层)
提出residual模块(残差结构)
使用batch normalization加速训练(放弃使用dropout)
在ResNet网络提出之前, 传统的卷积神经网络都是通过一系列卷积层与下采样层进行堆叠得到的, 但是当网络堆叠到一定网络深度时, 就会出现如下两个问题:
梯度消失或梯度爆炸
退化问题(degradation problem)
在ResNet论文中说通过数据的预处理以及在网络中使用BN(batch normalization)层能够解决梯度消失或者梯度爆炸问题。但是对于退化问题(随着网络层数的加深, 效果还会变差)并无很好的解决方法。
所以ResNet论文提出了residual结构(残差结构)来减轻退化问题。下图是使用residual结构的卷积网络, 可以看到随着网络的不断加深, 效果并没有变差,反而变得更好了 ...
BatchNormalization
1、简介BatchNormalization原文: BN原论文)
Batch Normalization是google团队在2015年提出的, 该方法能够加速网络的收敛并提高准确率。
本文分为以下几个部分:
BN的原理
使用pytorch验证本文观点
BN使用注意事项
2、Batch Normalization原理在图像预处理中通常会对图像进行标准化处理, 这样能够加速网络的收敛, 对于Conv1来说, 输入就是满足某一分布的特征矩阵, 但是对Conv2而言的feature map就不一定满足某一分布规律了(注意这里所说的满足某一分布规律并不是指某一个feature map的数据要满足分布规律, 理论上指整个训练样本集所对应的feature map的数据要满足分布规律)。而我们的Batch Normalization的目的就是使我们的feature map满足均值为0,方差为1的分布规律。
下面是从原论文中截取的原话
对于一个拥有d维的输入x, 我们将对它的每一个维度进行标准化处理, 假设我们输入的x是RGB三通道的彩色图像,这里的d就是输入图像的channels即d=3 ...