1.介绍
Explicit Visual Prompting for Low-Level Structure Segmentations
低级结构分割的显式视觉提示
2023年发表在IEEE CVPR
Paper Code
2.摘要
检测图像中低级结构(低层特征)一般包括分割操纵部分、识别失焦像素、分离阴影区域和检测隐藏对象。虽然每个此类主题通常都是通过特定领域的解决方案来解决的,但统一的方法在所有这些主题中都表现良好。从 NLP 中广泛使用的预训练和提示调整协议中汲取灵感,本文提出了一种新的视觉提示模型,称为显式视觉提示(EVP)。与之前的视觉提示(通常是数据集级隐式嵌入)不同,本文强调的是强制调整参数,重点关注每个单独图像的显式视觉内容,即来自冻结补丁嵌入的特征和输入的高频成分。在相同数量的可调参数下(每个任务有 5.7% 的额外可训练参数),所提出的 EVP 显着优于其他参数高效的调整协议。
就是不同于直接把输入给到网络模型让它自己学习,学习内容不可知的隐式视觉提示,本文提出了显示视觉提示,调整参数重点关注频域的高频输入部分(即低层特征)。
Keywords:显式视觉提示,频域高频部分
3. Introduction
图像编辑和操作算法的进步使得创建逼真但虚假的图片变得容易。由于其与监视和犯罪相关的潜在负面影响,检测此类被操纵区域成为一个重要问题。众所周知,低级结构(低级特征)有利于篡改区域检测,比如调整大小和复制粘贴将破坏原始图像与被纂改图像之间的 JPEG 压缩级别,被纂改图像的噪声水平并且背景也不同。要分割模糊像素、阴影区域和隐藏物体,低级线索也很重要。虽然所有这些任务都属于低级结构分割,但它们是通常由具有精心设计的网络架构的特定领域解决方案来解决。此外,缺乏大规模数据集通常被认为是限制性能的主要因素。
本文基本思想是使用最少的额外可训练参数,有效地将冻结的大型基础模型适应许多下游任务。由于基础模型已经在大规模数据集上进行了训练,因此提示通常会导致下游任务上更好的模型泛化,特别是在注释数据有限的情况下。提示还显着节省了模型的存储,因为它只需要保存共享的基本模型和任务感知提示。
视觉提示调整。即使在GPT3中手动选择提示的少量或零次设置中,也可以对下游迁移学习任务进行强大的泛化。最近,提示已经适应视觉任务。有任务提出了记忆令牌,这是一组可学习的嵌入向量的每个Transformer层。VPT 提出了类似的想法,并通过跨多个领域和骨干架构的多种识别任务的广泛实验来研究视觉提示的通用性和可行性。不像VPT重点是识别任务,本文的工作旨在探索低层次结构分割的最佳视觉内容。
伪造检测的目标是检测手动操作的像素,例如被删除、替换或编辑的像素。早期的方法通过局部噪声水平的不一致来检测区域拼接,基于不同来源的图像可能包含由传感器或后处理步骤引入的不同噪声特性的事实。其他线索也很有帮助,例如SIFT,JPEG压缩伪影和重新采样伪影。最近,有人通过在标记的训练数据上训练一个完全卷积的网络来学习检测剪接。还有结合生成对抗网络(GAN)来检测复制移动攻击。Huh等人提出将摄影元数据作为一种自由而丰富的监督信号,用于学习自我一致性,并应用训练后的模型来检测拼接。最近,TransForensic利用视觉Transformer来解决这个问题。高频元件在这一领域仍然是有用的优先级。RGB-N设计了一个额外的噪声流。ObjectFormer提取高频特征作为视觉内容的补充信号。但与ObjectFormer不同的是,本文的主要重点是利用高频组件作为一种激励设计,以有效地适应不同的低级分割任务。
4.网络结构详解
显式视觉分割(EVP),基于在ImageNet 上预训练的视觉变换器(SegFormer),用以低级结构分割。EVP冻结backbone的参数,只包含少量的可调参数,从冻结补丁嵌入和高频分量的特征中学习特定于任务的知识。模型总体结构图如下:
如右边所示,图像输入,经过补丁嵌入层获取到的特征入Embedding Tune层,获取补丁分量,图像经过HFC Extraction 提取层提取到高频分量,首先将两者相加入适配器Adaptor得到自适应后的输出;将补丁分量与自适应后的结果相加,入Transformer层,输出结果再与自适应的分量相加入下一Transformer层,循环几次;最后的输出进入第二阶段。
需要注意的是,backbone比如SegFormer是预训练好的,它的参数无需再调整,只需调整Embedding Tune,HFC Extraction ,和Adaptor的参数。
SegFormer:
SegFormer是一个基于transformer的分层结构,具有更简单的语义分割解码器。与传统的CNN主干类似,SegFormer通过几个阶段捕获多个陈旧特征。因此,每个阶段都是通过特征嵌入层1和视觉Transformer块构建的。至于解码器,它利用来自编码器和MLP层的多尺度特征来解码特定的类。注意,所提出的提示策略不限于SegFormer,并且可以容易地适应于其他网络结构。
高频分量:
对于维数为H ×W的图像I,可以将其分解为低频分量Il(LFC)和高频分量Ih(HFC),即 I = { I l , I h } I = {\{Il,Ih\}} I={Il,Ih}。将fft和ifft分别表示为快速傅立叶变换及其逆变换,使用z来表示I的频率分量。因此有 z = f f t ( I ) z = fft(I) z=fft(I)和 I = i f f t ( z ) I = ifft(z) I=ifft(z)。将低频系数移到中心(H/2,W/2)。为了获得HFC,生成二进制掩码 M h ∈ { 0 , 1 } H × W M_h ∈ {\{0,1\}}^{H×W} Mh∈{0,1}H×W,并根据掩码比τ将其应用于z:
τ表示掩蔽区域的表面比。HFC可以计算:
类似地,可以适当地定义二进制掩码 M l ∈ { 0 , 1 } H × W M_l ∈ {\{0,1\}}^{H×W} Ml∈{0,1}H×W以计算LFC:
LFC可以表示为:
请注意,对于RGB图像,独立地在每个像素通道上计算上述过程。
显式视觉提示:
显式视觉识别(EVP):从补丁嵌入和高频分量中学习明确的提示。学习前者来将分布从预训练数据集转移到目标数据集。而学习后者的主要动机是通过数据增强来学习预训练模型对这些特征保持不变。与学习隐式提示的VPT不同,它由三个基本模块组成:补丁嵌入调谐,高频分量调谐以及适配器。
从补丁嵌入中学习明确的提示:这指的是利用补丁嵌入(通常是从预训练模型中获得的)来将数据分布从预训练数据集转移到目标数据集。补丁嵌入是将图像的小块或局部区域映射到低维向量空间的过程,而这些向量可以被视为对图像特征的编码。通过学习从预训练模型中得到的这些特征嵌入,可以帮助将模型在预训练数据集上学到的知识转移到目标数据集上,从而提高模型在目标任务上的性能。
学习高频分量的主要动机是通过数据增强来学习预训练模型对这些特征保持不变:
这指的是利用数据增强技术来学习模型对图像的高频分量(即图像中变化较快的部分)的不变性。数据增强是一种通过对训练数据进行一系列随机变换来增加数据样本数量和多样性的技术。通过在训练过程中对高频分量进行数据增强,可以帮助模型学习到对这些变化保持不变的特征表示,从而提高模型的鲁棒性和泛化能力。高频分量的不变性指的是对图像中高频部分的特征保持不变的性质。在图像处理中,高频分量通常指的是图像中变化快速的部分,如边缘、纹理等。这些特征对于图像的识别和理解非常重要,因为它们包含了图像中的细节信息。
为什么要保持高频分量的不变性呢?
鲁棒性: 高频分量往往包含了图像中的重要细节和结构信息。如果模型能够在不同的输入图像中保持对这些细节的感知不变,那么它在面对各种变化,如旋转、缩放、光照变化等时会更加稳健。
泛化能力: 如果模型在训练过程中学习到了对高频特征的不变性,那么它在处理未见过的数据时也会表现更好。这是因为模型已经学习到了对图像中普遍存在的模式和结构的抽象表示,而不仅仅是对训练数据的记忆。
抑制噪声: 高频分量往往受到噪声的影响,保持对高频特征的不变性可以帮助模型抑制噪声的影响,从而提高对干净数据的处理能力。
补丁嵌入调整。本模块旨在调整预训练的补丁嵌入。在预训练的SegFormer中,补丁 I p I^p Ip被投影到 C s e g − d i m e n s i o n C_{seg}-dimension Cseg−dimension特征。冻结这个投影,并添加一个可调线性层 L p e L_{pe} Lpe,以将原始嵌入投影到c维特征 F p e ∈ R c F_{pe} ∈ R^c Fpe∈Rc中:
比例因子r控制可调参数。
高频分量调谐。对于高频分量 I h f c I_{hfc} Ihfc,学习了类似于SegFormer的重叠补丁嵌入。形式上, I h f c I_{hfc} Ihfc被分成与SegFormer具有相同补丁大小的小补丁。表示补丁 I h f c P ∈ R C I^P_{hfc} ∈ R^C IhfcP∈RC,C = h×w×3,学习一个线性层 L h f c L_{hfc} Lhfc将补丁投影到c维特征 F h f c ∈ R c F_{hfc} ∈ R^c Fhfc∈Rc。
适配器。Adaptor的目标是通过考虑来自图像嵌入和高频分量的特征,在所有层中高效地执行自适应。对于第i个适配器,将 F p e F_{pe} Fpe和 F h f c F_{hfc} Fhfc作为输入并获得提示 P i P^i Pi:
P i = M L P u p ( G E L U ( M L P t u n e i ( F p e + F h f c ) ) ) P^i = MLP_{up}({GELU({MLP^i_{tune}}(F_{pe}+F_{hfc}) ))} Pi=MLPup(GELU(MLPtunei(Fpe+Fhfc)))
其中GELU是GELU激活。 M L P t u n e i MLP^i_{tune} MLPtunei是一个线性层,用于在每个适配器中产生不同的提示。 M L P u p MLP_{up} MLPup是所有适配器共享的上投影层,用于匹配Transformer特征的尺寸。Pi是附加到每个Transformer层的输出提示。
5.实验与结果
隐藏物体检测的结果如下: