博文

目前显示的是 五月, 2022的博文

Visual Mechanisms Inspired Efficient Transformers for Image and Video Quality Assessment

图片
Image and video quality assessment based on swin-transformer     这是一篇2022年发表于CVPR的一篇文章,文中作者受到swin-transformer中多层注意力机制的启发,构造了一种能在多个维度层面对图像质量进行评价的图像质量评价方法。并将这一方法应用于视频片段中帧图像的质量评定。最终不论是文中提出的图像质量评定方法还是视频质量评价方法都获得了巨大的成效成为全新的标杆性方法。     在图像质量评价方面,由于使用了swin-transformer作为基础框架,作者在进行图像预处理时 对该领域所要求的高分辨率图像与swin-transformer所要求的固定分辨率图像输入中做了折中,摒弃了传统图像分类、目标检测中所做的裁剪预处理转而采用池化层对高分辨率图像的全局信息进行提取并以提取出的信息作为输入放入swin-transformer框架中进行处理。在往常的计算机视觉任务中深度学习框架往往更偏向于提取空间域或时域中的相关信息,但作者提出在图像质量评价任务中频域信息(图像中亮度/对比度的变化快慢)同样值得关注。虽然图像的频域信息在深度学习框架中很难准确地进行表示但是在每层swin-transformer的输出中各个chanel之间的相对信息可以从某种意义上展现出该图片的频域信息因此作者提出了channel attention对原有swin-transformer框架进行了改进提出了一种适用于图像质量评价的swin-transformer(multi-stage channel attention model using Swin Transformer as backbone for IQA)其框架如上图一所示。此外作者认为本文提出的这种channel attention在swin-transformer的各个层之间的注意力表现应当是近乎相同的,同时也为了减少模型的运算数据量,作者决定采用权重共享的方式为原有的swin-transformer添加channel attention机制。由于在swin-transformer各个层的输出中他们的channel数量并不相同,作者引入包含固定数量(K)的滤波器以及1×1卷积核的bottleneck卷积层对各个层的输出进行变...

Swin-transformer

图片
Swin Transformer A Hierarchical Vision Transformer using Shifted Windows         swin-transformer是2021年微软亚洲研究院的相关学者为了尝试构造一种能够同时应用于计算机视觉与自然语言处理领域的通用性基础框架而做出的一种改良性研究并取得了非凡的成就。在swin-transformer之前2020年Google研究院就有相关的研究将自然语言处理领域广泛应用的transformer框架进行一定程度的改写,使其能够应用于计算机视觉领域。不过问题依旧存在。改写后的算法并不能完全胜任所有的计算机视觉任务。在本文中作者分析了其中的困难并提出移动窗口以及分层注意等机制使得改进后的transformer在计算机视觉领域内的各个任务都获得了巨大的成功。 计算机视觉与自然语言处理任务的不同(困难) 首先第一个不同就在于输入的规模,与自然语言处理中每个输入token都是一个单词不同在计算机视觉领域(图像分类,目标检测以及实例分割。。)中由于照片拍摄角度以及距离等等因素的影响,每张照片当中包含的实例大小所占像素的多少都是不同的也因此我们需要将照片按各个规格进行划分并分别进行attention计算以此获得其在各个大小的相关性信息。这对于transformer框架的应用是一个不小的挑战。 第二,与自然语言处理不同,在计算机视觉领域尤其是目标检测、实力分割或者多目标检测等任务上我们的算法常常要处理高分辨率图像,但是在传统的transform框架中模型计算量的大小往往是图像分辨率大小的平方级水平,这样的计算量无论是在模型训练还是在实际预测中进行应用都是无法接受的。 解决方案 面对第一个问题,传统主流的CNN网络往往通过在模型中采用多种不同大小的卷积核实现对图像不同层次的感知。因此本文中的作者同样借鉴了这样的思路,在模型中设置了多个swin-transformer模块并为他们分别设置了多层不同大小的patch作为输入进而达到对不同图像中不同大小的物体进行识别的目的。 为了解决第二个问题,减小模型在训练以及预测过程中的计算量,本文的作者舍弃了在传统transformer中所使用的全局注意而改用局部注意力进行计算。因此被处理图像在刚刚进入模型并分割为patch之...

vision transformer

图片
  简介 从深度学习暴发以来,CNN一直是CV领域的主流模型,而且取得了很好的效果,相比之下,基于self-attention结构的Transformer在NLP领域大放异彩。虽然Transformer结构已经成为NLP领域的标准,但在计算机视觉领域的应用还非常有限。 ViT(vision transformer)是Google在2020年提出的直接将Transformer应用在图像分类的模型,通过这篇文章的实验,给出的最佳模型在ImageNet1K上能够达到88.55%的准确率(先在Google自家的JFT数据集上进行了预训练),说明Transformer在CV领域确实是有效的,而且效果还挺惊人。 Embedding层详解 从图中看,Transformer Encoder读入的是一小块一小块这样的图片。这样做的原因是:将一个个小块图像视为token(token可以理解为NLP中的一个字或词),在Transformer中计算每个token之间的相关性。这一点就和卷积神经网络有很大区别了。以往的CNN,以卷积 + 池化的方式不断下采样,这样理论上模型可以通过加深模型深度,达到增大感受野的目的。不过这样会有两个缺点: 实际结果中显示,CNN对边缘的响应很弱。这也非常好理解,越靠边缘的像素,因为被卷积次数少,自然在梯度更新时,贡献更少。 CNN只能和临近像素计算相关性。由于其滑窗卷积的特性,无法对非领域的像素共同计算,例如左上角的像素无法和右下角的像素联合卷积。这就导致了某些空间信息是无法利用的。同时根据MAE论文中所说的,自然图像具有冗余性,即相邻像素点代表的信息是差不多的,所以只计算领域像素无法最大化利用图像特征。 回到ViT中,仅仅把图像拆分成小块(patch)是不够的,Transformer Encoder需要的是一个向量,shape为[num_token, token_dim]。对于图片数据来说,shape为[H,W,C]是不符合要求的,所以就需要转换,要将图片数据通过这个Embedding层转换成token。以ViT-B/16为例: 假设输入图像为224x224x3,一个token原始图像shape为16x16x3,那这样就可以将图像拆分成(224/16)^2 = 196个patch,然后将每个patch线性映射至一维向量中,那么这个一维向量的长度即为...