做围棋死活题的网站,科技网站首页,wordpress5.9文章编辑器,外链生成网站1、前言
呃…好久没有写博客了#xff0c;主要是最近时间比较少。今天来做一期视频博客的内容。本文主要讲SimMIM#xff0c;它是一个将计算机视觉#xff08;图像#xff09;进行自监督训练的框架。
原论文#xff1a;SimMIM#xff1a;用于掩码图像建模的简单框架 (a…1、前言
呃…好久没有写博客了主要是最近时间比较少。今天来做一期视频博客的内容。本文主要讲SimMIM它是一个将计算机视觉图像进行自监督训练的框架。
原论文SimMIM用于掩码图像建模的简单框架 (arxiv.org)
代码实现https://github.com/microsoft/SimMIM
视频【SimMIM计算机视觉的随机掩码预训练-哔哩哔哩】
Demo 2、引入
2.1、NLP自然语言处理
我们之前讲过了各种各样的NLP语言处理的模型框架比如BERTGPT没有做相关的博文只有视频。它们都是基于在一大堆没有标签的文本上进行训练。然后才进行下游微调GPT2及以后没有微调。
为什么需要做预训练在互联网上大多数的文本数据都是没有标签的。而有标签的文本则相对较少。为了能够充分利用这些无标签文本我们可以在这些文本上进行预训练然后学习得到文字的表征。进而才执行各种下游任务
2.2、图像视觉
那人们就想是否在图像视觉领域也可以在无标签的图像上进行预训练呢毕竟互联网上也存在大量的无标签图像。不能把这些图像充分利用起来实在可惜。而SimMIM就是一个在无标签图像上预训练的框架
3、方法
同BERT一样最直观的做法当燃是使用随机掩码我们只需要掩码掉其中一些像素值。然后把它送进网络。最后预测出那些被掩码掉的部分再把他们做损失即可。然后进行优化更新。
然而这种做法却存在几个很重要的问题
3.1、问题
① 在图像领域图像往往具有很强的局部性。也就是说彼此接近的像素点之间往往是高度相关的。这样的话模型及其未必需要学习到像素的语义信息。它只需要复制旁边的没有被掩码的像素点填充到被掩码的部分。就可以实现预测彼此接近的像素点之间具有高度的相关性
② 文字是人类生成的高级概念而视觉信号是相对原始、低级的。那么就有这么一个问题低级信号的预测是否对高级视觉识别任务有用
③ 文本是离散的而视觉信号是连续的。目前还不清楚基于分类的掩码语言建模方法如何能够很好地处理连续的视觉信号。
3.2、问题解决
对于问题①
我们可以使用较高的掩码比例以及较大的patch此处指掩码块的大小不是图像分块让模型能够找到附近可见像素点的可能性减少。从而让模型无法直接从附近像素复制来填充被掩码的值。
作者经过实验发现当掩码块大小为32时掩码比例为10%~70%就可以取得相对较好的性能对于一个大小为8的掩码块就需要80%的掩码比例才能达到良好的效果。
② 使用原始像素回归任务。回归任务很好地符合视觉信号的连续特性具有可排序性。
③ 采用了一个轻量级的预测头(如线性层)。使用轻量级的预测头带来了预训练的显著加速。虽然较重的头或较高的分辨率通常会导致更大的生成能力但这种更大的能力不一定有利于下游的微调任务。
4、SimMIM
总的来说模型图可以表达成这样 首先将一张图像按照一定掩码块大小按比例随机掩码掉一些块。然后送给一个编码器比如ViTSwin Transformer。然后再加上一个预测头one-layer prediction Head。得到输出结果后。把预测的结果与真实的结果作损失比如 L 1 L_1 L1损失。
4.1、掩码
在论文里面提到不论是将ViT还是Swin作为编码器结构他们都采用32x32的掩码块。
论文采用了各种掩码规则进行消融对比。最后发现采用随机掩码块大小为32掩码比例为0.5。取得的效果最好 实验对比 4.2、预测头
预测头的作用就是把维度信息重新映射成图像大小。
以Swin Transformer为例我们最后的输出维度是 H 32 × W 32 × 8 C \frac{H}{32}\times\frac{W}{32}\times8C 32H×32W×8C。
那么最后的预测头就可以使用一个1x1的卷积层。把通道数从8C转化成32x32x33072维度。
这样一来我们就得到维度为 H 32 × W 32 × 32 × 32 × 3 \frac{H}{32}\times\frac{W}{32}\times 32\times 32\times 3 32H×32W×32×32×3。就可以把它reshape成 H × W × 3 H\times W\times 3 H×W×3。也就是图像的大小。然后把它与真实的图像作损失 L 1 Ω ( x M ) ∥ y M − x M ∥ 1 L\frac{1}{\Omega(x_M)}\Vert y_M-x_M \Vert_1 LΩ(xM)1∥yM−xM∥1 其 中 x , y ∈ R 3 H W × 1 x,y ∈ R^{3HW}×1 x,y∈R3HW×1 分 别 为 输 入 的RGB值和预测值M表示掩码像素的集合Ω(·)是元素的数量。
在实验中还考虑了 L 2 L_2 L2和 s m o o t h − L 1 smooth-L_1 smooth−L1损失函数它们的表现相似默认采用 L 1 L_1 L1损失函数。
5、其他细节
在代码中其实我还发现了有一个分类头。与BERT一样在下游任务比如图像分类的时候我们可以那他来作分类微调等等非必须。
另外还有一些就是训练的细节了。那一部分很简单就是一些超参数的配置等等。我也不可能一一全部列举出来大家可以看论文或者看代码里面就知道了。
6、结束
好了本篇文章到此为止如有问题还望指出。阿里嘎多