本文介绍两篇提出了基于Transformer的无参考视频质量评估模型的论文。首先对Transformer结构做简单介绍,接着详细介绍两篇论文所提出的质量评估模型。
Transformer是由Google Brain在2017年提出的,开创了继MLP、CNN和RNN后的第四大类模型,近年来在深度学习领域里影响非常大。作者提出Transformer是为了解决自然语言处理领域中的序列转录问题,即给定一段序列,能够输出满足要求的序列,比如机器翻译问题。
2020年谷歌首次将Transformer应用到计算机视觉领域中的分类问题,提出了Vision Transformer,简称ViT。
首先将待分类的图片分割为不交叠的patch,将每个patch线性映射到一维向量,由向量来表示图像块的信息,这也是模拟NLP问题里将输入的字映射为一个token,每个token是一维向量。在NLP里,输入的一段话里的每个字有先后顺序,因此会用给每个token加上Position embedding来表示位置信息。这里图像块之间也是有位置关系,因此也给每个图像块的token加上position embedding。另外再增加一个空的token,经过encoder后会学习到图像块之间的相互作用关系,并能表征整幅图像的特征。这个token在最后也会经过projection到待分类的类别,与数据集中的Label做交叉熵得到分类结果。
ViT的整体结构就是L个重复的encoder再加上最后head token的linear层。ViT模型里的基础模型包括12个encoder,图像块映射到的token向量维度是768,MLP的隐藏层大小是3072,多头注意力机制里的头数是12。
首先,整个encoder的计算过程是,输入的一系列token先经过Layer normalization,经过多头注意力机制后,再经过一个linear层映射和残差,再经过第二次Layer normalization,和前馈MLP,这里的MLP是两个linear层,激活函数是Gelu。
多头注意力机制是Transformer里的核心模块。卷积神经网络的感知域是局部的,3x3或者5x5的卷积核只能学习到局部像素之间的关系,但是多头注意力机制可以实现全局感知能力,能够学习到当前图像块和其他所有图像块之间的多维度的关系。
具体的实现过程是,例如这里有四个图像块,想学习到a1块和其他3个块之间的关系,首先将a1做线性映射,得到q1和k1向量,同时其他三个图像块的token分别映射为k2,k3,k4。将a1的q1分别与包括自己在内的k值做点积,4个点积缩放一定倍数,再经过softmax,得到被称为attention score的四个值,这四个值将作为分别从四个图像块中提取信息的权重,这里的信息也不是输入的a本身,而是输入映射的v值。将提取到的信息求和,得到b1,这里的b1就表征了a1与包括自己在内的所有图像块之间的作用关系。同理可以计算得到a2,a3,a4与其他所有块之间的关系。这里的q,k,v全称分别为query, key和value,query相当于a1拿出去搜索的问题,key相当于其他图像块能够提供的供搜索的关键词,value相当于表征当前块的信息值。
把q,k,v分别都拆分为低维度的向量,让每套低维度qkv向量都去重复刚刚的计算,就相当于从qkv中学习到多维度的关系,也就是注意力机制中“多头”的意义。
Transformer相比于卷积神经网络的主要优点是全局感知能力和参数可变,但transformer有一个明显的问题,也是由注意力机制的计算过程可以得到,这个计算复杂度和图片大小是成平方关系,而CNN是线性的。因此有很多论文针对降低Transformer在处理高分辨率图片时的计算复杂度,如往期推送“用于图像处理的多轴多层感知机”。
接下来介绍两篇基于transformer的无参考视频质量评估模型。首先介绍StarVQA,这是第一篇将transformer应用到VQA问题的论文。作者提到在NLP领域盛行的注意力机制和基于多头注意力机制的transformer模型近年来被CV领域的学者在各种CV任务上做尝试。也提到了transformer的一大优势是能够对序列的全局关系建模,考虑到视频也是序列,所以尝试了将transformer应用到VQA问题。
首先是encoder之前对输入做处理。考虑到transformer的计算复杂度是输入token数目的平方关系,因此这里选择等间隔取视频中的8帧图片作为输入,8帧图片进行一定尺寸的剪裁,再分割为不交叠的图像块,进行常规的像素展平、映射和position embedding,得到输入的一系列token。这里的token在空间维度上有一张图片的S个patch,在时间维度上有一段视频中的8帧。类似ViT里增加了一个空白的token作为能够学习到所有输入关系、进行分类的head,这里也给增加一个token作为能够浓缩学习到整个视频的质量信息。
接着是L个连续的encoder,每个encoder里包含三个小模块。首先是时域上的注意力机制,也就是分别取这8个视频帧里,相同位置的patch之间做多头注意力计算;同样的,空域上的注意力机制,就是分别在每个视频帧里,做所有Patch之间的注意力计算。最后再进行layer normalization和MLP,完成一个encoder,L个encoder进行级联。
作者还提到本文的一个贡献,是提出了向量化的regression loss function,能够在模型训练中完成收敛。具体而言,将最后一个encoder输出的head token向量取出,做MLP和softmax,得到y向量。将训练数据集里每个视频的主观打分MOS值取出,scale到0到5之间,每个MOS再编码为一个概率向量,同y进行距离计算,得到loss。经过训练不断减小Loss,就能学到最终的模型。测试时,模型预测也是有常规的SVR从向量y中学习到预测的视频分数。
这里展示了StarVQA在三个数据集上的视频质量预测表现,可以看到在LIVE-VQC上表现不佳,但是在KONVID和LSVQ上表现比较好。在视频数量最少的LIVE-VQC上表现不佳,也印证了transformer相比于CNN,通常需要一定数量的训练数据才能发挥出优势。
第二篇要介绍的论文是PHIQNet。这是一篇CNN和Transformer结合的文章。作者提到目前深度学习方法在VQA领域里还没有广泛被应用起来,主要由于对视频的时域空域同时建模的复杂多样性,和输入到深度学习模型里的图片无法满足224、384这样小的分辨率。因为模型需要提取出表征视频质量的信息,而额外的剪裁,放缩,会给视频带来新的质量失真。上一篇里将提取到的视频帧首先进行了224x224的剪裁,其实也引入了一定的失真。而现在比较多的神经网络模型通常需要小分辨率的输入。
特定到UGC视频的质量评估问题,UGC视频本身的分辨率就是各种各样的,这要求特征提取的输入需要能够接纳不同输入大小。另外在其他CV任务里常用到的,将在其他数据集上预训练的网络提取的特征作为自己的一部分特征,也是不能完全表征与质量感知相关的信息。
因此作者提出了设计一个全新的能够接受不同图片分辨率的图像质量评估的CNN模型,并且用transformer的方法从帧级特征里学习得到整个视频的质量分数。也是为了减少注意力机制的计算复杂度,这里并不是将每一个视频帧的特征都作为一个输入的token,而是将一个clip的特征作为一个token。这样做的另一个原因,是作者进行了一个小的Human study,得出结论人们在最后给出视频质量分数时,总是倾向于回顾某几个单个clip的内容,而不是对单个视频帧有很深的印象。
首先介绍作者设计的用于无参考的图像质量评估深度学习模型。输入一个视频帧,以在ImageNet上预训练的resnet-50作为backbone,将后四个stage的feature map取出,将通道维度都调整到256上,由深到浅,逐级做upsample和fusion,最深的feature单独保留下来,作为最抽象最高维的信息保存。这样得到5组feature map。
考虑到人眼视觉系统的对比度敏感机制和选择性敏感机制,作者分别设计了通道和空域的attention block来建模这两种视觉特性。在通道注意模块里,输入的feature maps分别在空域维度上进行平均池化和最大池化,得到两个1x256维的向量,经过sigmoid和average,得到通道权重。在空域注意模块里,输入的feature maps在通道维度上分别进行平均池化和最大池化,得到两张HXW的map,经过卷积层和sigmoid得到空域权重。经过将原始输入和通道权重以及空域权重进行点积得到输出。5组feature map都经过这样的attention模块。
5组feature maps分别经过全局空域平均池化,得到5组1x256的向量。再分别经过softmax和全连接层,得到5维的质量分数概率分布向量。质量分数x从1到5分别表示质量从低到高。i从2到5分别表示从5组feature maps变换得到的6组视觉感知信息。每组信息都有对应的分数概率分布,对应分数维度平均起来得到表征整个视频的分数概率分布。在训练这个提取图像特征进行图像质量分数预测的模型时,将用这个分数概率分布和数据集MOS经过one hot编码的五维向量进行交叉熵Loss回归。预测图像质量分数时,将视频分数概率分布对应的分数和概率成累加,得到质量分数。
借助刚才的由CNN组成的网络,视频的每一帧都将提取到5组1x256的特征向量,拼接起来就是每帧对应1x1280的特征向量。每16帧组成一个video clip,考虑到每个视频长度不同,这里将video clip的数目固定为对应到论文所用数据集视频的最大长度。视频长度较短的就以全零向量作为特征向量。这样的clip经过一维CNN得到short-term clip level的质量特征,每个clip特征长度映射到32维,再经过transformer常规的输入处理:包括token映射、位置编码、增加Head token,得到encoder输入。经过2层级联encoder后,取head token再经过MLP,输出一个值作为quality score。取预测的quality score和MOS值做MSE计算,作为loss 进行训练。
实验部分分别测试了提出的IQA模型,PHIQNet的图像质量预测能力,和结合Long short-term transformer后的VQA视频质量预测能力。可以看到在所对比的模型中,在这两个数据集上预测能力最强。
关 注 我 们 
  实验室网站:http://viplab.fudan.edu.cn/
  OpenASIC官方网站:www.openasic.org
  知乎专栏:http://zhuanlan.zhihu.com/viplab
  微信公众号:OpenASIC
继续阅读
阅读原文