自学内容网 自学内容网

CV方法再学习

轻量化模型

Mobile系列

MobileNetV1

MobileNetV1之所以轻量,与深度可分离卷积的关系密不可分

深度可分离卷积 主要是两种卷积变体组合使用,分别为逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)

逐通道卷积的一个卷积核只有一个通道,输入信息的一个通道只被一个卷积核卷积,这个过程产生的feature map通道数和输入的通道数完全一样

逐通道卷积虽然减少了计算量,但是这种每个通道独立的卷积运算失去了通道维度上的信息交互。因此需要Pointwise Convolution来将这些Feature maps进行组合生成新的Feature maps

逐点卷积的运算与常规卷积运算非常相似,其实就是1X1的卷积,将上一步的feature maps在通道方向上进行加权组合,生成新的feature map

深度可分离卷积的参数个数是常规卷积的约1/3,计算量也是常规卷积的约1/3

MBConv:深度可分离卷积的基本结构

MobileNetV2

V2 中主要用到了 Inverted Residuals 和 Linear Bottlnecks

ResNet 在模型中引入旁路并取得了很好的效果,因此到了 V2 的时候,作者也想引入进来

要把 ResNet BottleNeck Block 运用到 MobileNet 中来的话,如果我们还是采用相同的策略显然是有问题的,因为 MobileNet 中由于逐通道卷积,本来 feature 的维度就不多,如果还要先压缩的话,会使模型太小了,所以作者提出了 Inverted Residuals,即先扩展(6倍)后压缩,这样就不会使模型被压缩的太厉害

Linear Bottlnecks就是把 Inverted Residuals block 中的 bottleneck 处的 ReLU 去掉

那为什么要去掉呢?而且为什么是去掉最后一个1X1卷积后面的 ReLU 呢?因为在训练 MobileNet V1 的时候发现最后 Depthwise 部分的 kernel 训练容易失去作用,最终再经过ReLU出现输出为0的情况

1X1卷积降维操作本来就会丢失一部分信息,而加上 ReLU 之后那是雪上加霜,所以去掉 ReLU 缓一缓

MobileNetV3

在V2上的调整是基于NAS技术的:设计一个网络模型结构的集合,通过不同网络层的排列组合可以组合出许多许多的模型,再通过NAS搜索技术搜索出最佳的网络结构

原始的结构用 1x1 的卷积来调整 feature 的维度,从而提高预测的精度,但是这一部分也会造成一定的延时,为了减少延时,作者把 average pooling 提前,这样的话,这样就提前把 feature 的 size 减下来了(pooling 之后 feature size 从 7x7 降到了 1x1)。这样一来延时减小了,但是试验证明精度却几乎没有降低

换了个激活函数 h-swish:

ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),如果对ReLU的激活范围不加限制,当激活值非常大,分布在一个很大的范围内时,低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失

增加了 SE 结构,并且将含有 SE 结构部分的 expand layer 的 channel 数减少为原来的 1/4 以减少延迟

RepViT

轻量级 ViTs 优于轻量级 CNNs 的原因通常归结于多头注意力模块,该模块使模型能够学习全局表征。然而,轻量级 ViTs 和轻量级 CNNs 在块结构、宏观和微观架构设计方面存在值得注意的差异,但这些差异尚未得到充分研究。这自然引出了一个问题:轻量级 ViTs 的架构选择能否提高轻量级 CNN 的性能?

首先将训练条件与轻量级 ViTs 对齐,接着我们对 MobileNetV3-L 的块结构进行优化。进一步,我们在宏观尺度上进行设计,包括主干、降采样层、分类器和各阶段块数目比例。最后,我们在微观尺度上调整网络,包括卷积核大小选择和 SE [8] 层位置,下图展示了我们在每个步骤的中获得的延迟和精度结果

轻量级 ViTs 的块结构具有一个重要的设计特征,即 MetaFormer [12] 结构:分离的 token mixer 和 channel mixer。因此我们对  MobileNetV3-L 的块结构进行改造,使其 token mixer 和 channel mixer 进行分离。如下图中(a)所示,原始的 MobileNetV3 块由 1*1 扩展卷积组成、然后是深度卷积和 1*1 投影层。1*1 扩展卷积层和1*1 投影层可实现通道之间的互动,深度卷积则有助于融合空间信息。前者和后者分别对应于 channel mixer 和 token mixer。如图(b)所示,我们将深度卷积上移以分离两者。同时,我们采用结构重参数化 [5] ,在训练时为深度卷积引入多分支拓扑结构,以提高性能。在推理过程中,如图(c)所示,在推理过程中,深度卷积多分枝结构可合并为单分支结构,消除多分支带来的额外计算和内存成本。我们将这样的块结构命名为 RepViT 块

此外,轻量级 ViTs 在 channel mixer 中把扩展比例统一设置为2(MobileV3-Ls为6),并增加整体宽度,对四个阶段分别采用48,96,192,384的通道数

轻量级 ViTs 通常采用 early convolutions :连续堆叠的3*3卷积,作为输入stem,相比 ViT 原始的 Patch 操作可以达到更好的精度和延迟。而MobileNetV3-L设置初始卷积通道数为16,这限制了主干的表达能力。因此,将原始 stem 替换为 early convolutions,并把初始卷积通道数增大为24

轻量级 ViTs 通常采用分离的降采样层,同时进行加深以尽量避免降采样带来的信息损失。作为对比,如下图(a),MobileNetV3-L使用同样的块结构进行降采样,将块中间的深度卷积步长改为2以降低特征图的分辨率。如图(b),在使用RepViT的块结构后,分辨率变动由上面的深度卷积完成,通道数变动由下面的1*1卷积完成。我们首先在深度卷积后增加单独的1*1卷积变更通道数,如图(c),以使降采样层与块结构解耦。在此基础上,降采样层由前面的RepViT块及后面的FFN进一步加深

MobileNetV3-L 使用了较为复杂的分类头,如图(a)。由于 MobileNetV3-L 原始输出特征图通道数较少,因此其分类头通过使用额外的1*1卷积和全连接层将特征图映射到更高的维度上,以获得更强的拟合能力。然而,这也形成了延迟瓶颈。此外,在块结构设计中,网络的整体宽度已经加宽,所以我们将分类头更改为轻量级 ViTs 中常用的简单分类头,即池化层加全连接层,如图(b)

多头注意力机制相比卷积的一大优势是数据驱动性质,能根据输入调整权重。SE 层通过引入通道注意力可以很好的弥补卷积网络在这方面的不足。MobileNetV3-L 中的SE层不均匀分布,且集中到后面的阶段。而 TResNet [16] 表明由于后面的阶段处理的特征图分辨率更低,SE 层依赖对特征图进行全局池化,因此加入 SE 层的收益更低。此外,考虑到加入SE层会引入额外的延迟,我们设计了交叉使用SE层的策略,来对所有阶段引入 SE

最终,我们获得了 RepViT 网络,结构如下图

图像识别

MAGE

识别和生成是人工智能领域中的两大核心任务,如果能将二者合并到一个统一的系统中,这两个任务应该能实现互补:图像生成的输入是低维度的特征或噪声,而输出是高维度的原始图像;与之相反,图像识别的输入是高维度的原始图像,而输出是低维度的特征

与MIM直接作用于图像的掩码方法不同,MAGE 提出了基于图像语义符的 masked image token modeling 方法

MAGE 首先使用 VQGAN [3] 编码器将原始图像转换为离散的语义符。之后,MAGE 对其进行随机掩码,并使用基于 transformer 的 encoder-decoder 结构对掩码进行重构,重构后的语义符可以通过 VQGAN 解码器生成原始图像。通过在训练中使用不同的掩码率,MAGE 可以同时进行生成模型(接近 100% 掩码率)和表征学习(50%-80% 掩码率)的训练

RAM

涵盖了大部分常用标签,数量适中,为 6449 个。其余的开放词汇标签可通过开放集识别来识别

Tag2Text采用轻量级识别解码器与原始图像编码器相结合,通过图像标记和标题的集成,展示了卓越的图像标记能力。然而,Tag2Text 的有效性仅限于识别固定和预定义的类别。相比之下,RAM 通过将语义信息合并到标签查询中,实现了对以前看不到的类别的泛化

Image Encoder: 为 Swin-Transformer,用来提取图像的特征

Image-Tag Recognition Decoder: 为 Bert 模型,接收图像特征和 Label 特征,输出图像 Tags

Image-Tag-Text Encoder-Decoder: 为 Bert 模型,接受图像特征和 Tag,输出图像描述 Caption, Text

训练阶段,Image-Tag Recognition Decoder 用于预测 tags
推理阶段,Image-Tag Recognition Decoder 生成的 tags 用于指导 generation

这里的 Recognition decoder 输入的每个query 在结果和图像特征的交叉注意力之后,会经过线性层 + sigmoid得到0~1的值,进行二分类,因为queries 是使用 文本的embedding,也就是说每个queries在初始化时就确定了语义。因此想实现开集,只需要在初始化时使用新类别的embedding进行初始化即可

图像分割

SAM

首先将提示的概念从 NLP 转化为分割,提示可以是一组前景/背景点、一个粗略的方框或mask、自由形式的文本,或者,一般来说,指示图像中要分割的内容的任何信息。因此,可提示分割任务就是在给出任何提示的情况下,返回一个有效的分割掩码

Image encoder:使用 MAE预训练的视觉转换器(ViT),并对其进行了最小化调整,以处理高分辨率输入

Prompt encoder:我们考虑了两组提示:稀疏(点、方框、文本)和密集(mask)。我们使用位置编码表示点和方框,并与每种提示类型的学习嵌入相加;使用 CLIP的现成文本编码器表示自由格式文本。密集提示(即masks)则使用卷积法嵌入,并与图像嵌入相加

Mask decoder:解码器块使用提示自注意和双向交叉注意(提示到图像嵌入,反之亦然)来更新所有嵌入。运行两个区块后,我们对图像嵌入进行上采样,然后用 MLP 将输出标记映射到动态线性分类器,再计算每个图像位置的掩码前景概率

OMG-seg

先前的模型通常使用共享的视觉骨干,有几个特定任务的分支,但OMG-Seg采用了共享的编码器-解码器架构

将所有任务的输出统一为一个统一的查询表示。一个查询可以表示一个掩模标签/图像或掩模/唯一的ID/视觉提示。然后,采用一个共享的解码器处理所有类型的查询及其特征

通过在合并的图像和视频数据集上进行共同训练,OMG-Seg能够处理多达十种不同的分割任务,涵盖不同的数据集

OMG-Seg遵循Mask2Former的架构设计。如图所示,它包含一个骨干网络、一个像素解码器和一个掩码解码器

使用VLM编码器作为冻结骨干 为了实现开放词汇的识别,在骨干部分,本文采用冻结的CLIP视觉模型作为特征提取器

像素解码器作为特征适配器 像素解码器与Mask2Former相同,包含多阶段的可变形注意力层。它将冻结特征转换为具有相同通道维度的融合特征

合并的目标查询 对于图像,目标查询侧重于目标级别的定位和识别。对于视频,目标查询可能涉及时间一致性,例如同一目标跨越不同帧。对于交互式分割,目标查询被迫定位特定区域。对于图像和视频输入,本文采用目标查询来表示图像掩码或被跟踪的tube掩码。对于交互模式,按照SAM 的做法,本文采用提示编码器将各种视觉提示编码成与目标查询相同形状的查询。可以共享Transformer解码器的相同接口。

共享的多任务解码器 其主要操作是交叉注意力,接收合并的目标查询和图像/视频特征 ,并输出精炼的目标查询。最终的掩码是通过精炼查询和高分辨率特征的点积获得的。

对于图像语义级别的任务,使用多尺度特征进行掩码交叉注意力。 然后,对精炼的查询应用多头自注意力层

对于视频任务,本文采用相同的交叉注意力设计。唯一的区别是金字塔特征沿着时间维度与3D位置嵌入连接。合并的视频特征和精炼的查询用于预测tube掩码

对于交互式分割,本文执行相同的交叉注意力设计。然而,本文跳过自注意力,以避免在多头自注意力层中的掩模查询之间发生交互,因为交互式分割只关心输入视觉提示区域。在获取精炼的目标查询后,它经过一个预测FFN,通常包括一个带有ReLU激活层和线性投影层的3层感知器

解码过程以级联的方式进行,每个特征金字塔有三个阶段

目标识别

Yolo系列

v1

模块

SE模块

为了提高网络的表示能力,许多现有的工作已经显示出增强空间编码的好处。而作者专注于通道,希望能够提出了一种新的架构单元,通过显式地建模出卷积特征通道之间的相互依赖性来提高网络的表示能力

输入特征图X的每一层都经过一个2D空间核的卷积最终得到C个输出的feature map,组成特征图U

为了解决利用通道依赖性的问题,选择将全局空间信息压缩到一个信道描述符中,即使用通道的全局平均池化,将包含全局信息的W×H×C 的特征图直接压缩成一个1×1×C的特征向量Z,C个feature map的通道特征都被压缩成了一个数值,这样使得生成的通道级统计数据Z就包含了上下文信息,缓解了通道依赖性的问题

为了利用压缩操作中汇聚的信息,采用了两层全连接构成的门机制,第一个全连接层把C个通道压缩成了C/r个通道来降低计算量,再通过一个RELU非线性激活层,第二个全连接层将通道数恢复回为C个通道,再通过Sigmoid激活得到权重s,最后得到的这个s的维度是1×1×C

为什么这里要有两个FC,并且通道先缩小,再放大?因为一个全连接层无法同时应用relu和sigmoid两个非线性函数,但是两者又缺一不可。为了减少参数,所以设置了r比率

将前面得到的注意力权重加权到每个通道的特征上,特征图U中的每个feature map乘以对应的权重,得到SE模块的最终输出

P-Conv

用于带mask或缺失的生成、修复领域

部分卷积的核心思想在于,它不是对输入的所有数据进行统一的卷积操作,而是根据数据的有效性(即数据是否缺失)动态调整卷积核的作用区域。具体来说,对于每一个卷积窗口,PConv仅对那些有效的、非缺失的数据点应用卷积核,并忽略那些缺失的数据点

实现PConv的一个关键步骤是定义一个二进制掩码来区分数据点的有效性。具体来说,对于每个数据点,如果它是有效的,则在对应的掩码位置标记为1;如果数据点缺失,则标记为0。在进行卷积操作时,同时对原始数据和掩码进行卷积,卷积核只会应用于掩码值为1的位置

生成模型

VQGAN

VQGAN使用了两阶段的图像生成方法:

  • 训练时,先训练一个图像压缩模型(包括编码器和解码器两个子模型),再训练一个生成压缩图像的模型。
  • 生成时,先用第二个模型生成出一个压缩图像,再用第一个模型复原成真实图像

VQVAE是VQGAN的前作,它有着和VQGAN一模一样两阶段图像生成方法。不同的是,VQVAE没有使用GAN结构,且其配套的压缩图像生成模型是基于CNN的。为提升VQVAE的生成效果,作者提出了两项改进策略:1) 把图像压缩模型换成GAN;2) 基于CNN的图像生成模型用Transformer代替

VQVAE的学习目标是用一个编码器把图像压缩成离散编码,再用一个解码器把图像尽可能地还原回原图像

但小图像的离散取值之间没有关联,而真实图像的像素值其实是一个连续颜色的离散采样。由于神经网络不能很好地处理这种离散量,在实际实现中,编码并不是以整数表示的,而是以类似于NLP中的嵌入向量的形式表示的。VAE使用了嵌入空间(又称codebook)来完成整数序号到向量的转换

VQVAE采取了一种离散化策略:把每个输出向量ze(x)替换成嵌入空间中最近的那个向量zq(x)。ze(x)的离散编码就是zq(x)在嵌入空间的下标

再训练另一个VQGAN,把约束图像压缩成另一套压缩图片。这一套压缩图片和生成图像的压缩图片有着不同的codebook,把这个0~9的约束信息添加到Transformer的输入s<i之前,以实现由类别约束的图像生成

LVM

数据:为这些数据定义了一种通用的格式, 即视觉句子, 而不需要任何超越像素层面的知识

  • 单张图片 (Single images). {图像, EOS}
  • 图像序列 (Image sequences). 从现有的视频数据集中获取视频数据, 并采用三种不同的步幅 (10, 20, 30) 随机下采样视频, 形成16帧的视觉句子;利用来自 Objaverse 数据集合成的3D对象, 生成一对象为中心的多视角序列, 涵盖各种对象;使用来自 ImageNet 的类别, 将相同类别的图像组合在一起, 形成一个16帧的视觉句子.
  • 带标注的图像 (Images with annotations). 将相同注释类型的 8 个图像对连接在一起形成 16 个图像对视觉句子;对于包含相同图像对 k 个不同注释的数据集, 对每组 1 + k 个图像 (输入+ k 个输出), 随机选择 m 个元素, m ≤ n + 1 ≤ 16 ,n 是被选择的输出数, 将这些 m 元组连接起来形成视觉序列.
  • 带标注的图像序列 (Image sequences with annotations). {frame1, annot1, frame2, annot2, …}或{frame1, frame2, annot1, annot2, …}

训练分为两个阶段:

  • 训练一个大型的视觉标记器 (visual tokenizer), 它操作于单个图像上, 将图像转换成一系列视觉词元 (token).
  • 训练一个自回归的 Transformer 模型, 每个视觉句子都表示为一系列的的词元 (token).

使用 VQGAN 生成 tokens而非patch操作,因为模型离散类别的输出自然地形成了一个概率分布, 这可以更方便的在视觉句子中条件生成新图像时采样

VQGAN tokenizer 独立地在各个图像上操作, 而不是在整个视觉句子上操作. 这种独立性使 tokenizer 的训练与下游的 Transformer 模型分开, 使得 tokenizer 可以在单个图像的数据集上进行训练, 而不必考虑视觉句子的分布

采用了 LLaMA 的 Transformer 架构, 使用4096个 tokens 的上下文长度, 即可以容纳16幅图像组成的视觉句子. 在每个视觉句子的开头添加一个开始 token ([BOS]), 结束添加一个句子结束 token ([EOS])


原文地址:https://blog.csdn.net/m0_73202283/article/details/142808418

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!