【EVP】Explicit Visual Prompting for Low-Level Structure Segmentations

2024-01-31 12:12

本文主要是介绍【EVP】Explicit Visual Prompting for Low-Level Structure Segmentations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

🍇🍇0.简介

🌷🌷1.研究动机

🍋🍋2.主要贡献

🍓🍓3.网络结构

🍭3.1整体结构

🍭3.2高频分量计算

🍭3.3显示视觉提示EVP

🍂🍂4.实验

🏆4.1四种任务结果对比

🏆4.2不同可训练参数量结果对比

🏆4.3四种任务可视化结果

🏆4.4消融实验

🏆4.5参数选择对比结果

🏆4.6在四个不同任务上与其他微调方法对比

🍉🍉5.总结

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


🍇🍇0.简介

  1. 论文:paper
  2. 代码:CODE
  3. 出处:CVPR2023

🌷🌷1.研究动机

        通用的分割任务通常在高分辨率高质量的图像上表现良好,而EVP关注的则是图像中的低级结构问题,比如伪造目标、识别失焦目标、分离阴影和检测隐藏的对象等等,尽管每个任务通常都是通过特定领域的解决方案来解决的,但EVP方法将所有主题任务统一至一个方法中,也就是通常所说的“范式”。由此可见,ECP主要关心的就是图像中不清晰的,结构模糊的对象。

        我们从NLP中广泛使用的预训练和提示调优协议中获得灵感,提出了一种新的视觉提示模型,称为显式视觉提示(EVP)。与之前的视觉提示(通常是数据集级别的隐式嵌入)不同,我们的关键见解是强制使用可调参数,重点关注每个单独图像的显式视觉内容,即来自冻结补丁嵌入的特征输入的高频分量。在相同数量的可调参数(每个任务的5.7%的额外可训练参数)下,所提出的EVP显著优于其他参数有效调节。与特定任务的解决方案相比,EVP在各种低级别结构分割任务上也实现了最先进的性能。

🍋🍋2.主要贡献

  • 设计了一种统一的方法,为许多任务提供最先进的性能,包括伪造检测(forgery detection,)、散焦模糊检测(defocus blur detection)、阴影检测(shadow detection)和伪装物体检测(camouflaged object detection)
  • 提出了显式视觉提示(EVP),它以冻结补丁嵌入的特征输入的高频分量作为提示。它被证明在不同的任务中是有效的,并且优于其他参数有效的调整方法。
  • EVP方法极大地简化了底层结构分割模型,并与精心设计的SOTA方法实现了相当的性能。

🍓🍓3.网络结构

🍭3.1整体结构

        EVP整体结构如下,使用在大规模数据集上预训练的Transformer模型冻结其参数,为了适应每个任务,再调整embedding的特征并学习每个单独图像的高频成分的额外embedding。可以看到每个任务的可训练参数均在embedding-finetunehigh-frequency提取模块中。

        EVP使用的Tranformer是SegFormer,是一个分层Transformer,具有更简单的decoder用来进行语义分割。另一篇论文《SAM Fails to Segment Anything? – SAM-Adapter: Adapting SAM in Underperformed Scenes: Camouflage, Shadow, Medical Image Segmentation,and More》中,SAM-Adapter网络用的类似的结构,只是将EVP中的Transformer结构换成了SAM结构,SAM-Adapter主要是使用了SAM的Image Encoder和Masked Decoder,其中Image Encoder冻结了参数,Decoder是参与梯度回传的。

🍭3.2高频分量计算

        在EVP论文中的创新点之一的输入的高频分量具体网络结构如下。

        对于尺寸为H×W的图像I,我们可以将其分解为低频分量Il(LFC)和高频分量Ih(HFC),即I={Il,Ih}。将fft和ifft分别表示为快速傅立叶变换及其逆变换,我们使用z来表示I的频率分量。因此,我们有z=fft(I)和I=ifft(z)。我们把低频系数移到中心(H/2,W/2)。为了获得高频分量HFC,根据掩码比τ,生成二进制掩码Mh∈{0,1}H×W,并将其应用于傅里叶变换后的影像:

        为了获得低频分量LFC,其计算方式与高频分量相似:

        此处的,可以将其看做是一个权重矩阵,将其与傅里叶变换后的影像Z进行相乘,再将其结果进行傅里叶逆变换操作,即可实现高低频分量的区分计算和表示。

🍭3.3显示视觉提示EVP

        显式视觉提示(EVP)的关键是从图像embedding和高频分量中学习明确的提示。

        学习图像embedding将分布从预训练数据集转移到目标数据集。学习高频分量的主要动机是通过数据扩充来学习预训练的模型的特征不变性。EVP方法如图3所示,它由三个基本模块组成:embedding 微调、高频分量微调以及Adaptor

        Patch embedding tune:在预训练segformer网络中,将patch投影到C维的特征图上,并且冻结该投影,添加一个可微调的线性层L,将原始embedding投影至C维特征中。

此处的尺度参数r即可控制微调参数,

        High-frequency components tune:对于高频分量Ihfc,我们学习了类似于SegFormer的重叠补丁嵌入。形式上,Ihfc被划分为与SegFormer具有相同补丁大小的小补丁。我们学习一个线性层Lhfc来将补片投影到c维特征Fhfc中。

        Adaptor:  通过考虑来自图像嵌入和高频分量的特征,在所有层中高效地执行自适应。对于第i个适配器,我们将Fpe和Fhfc作为输入,并获得提示Pi: 

🍂🍂4.实验

🏆4.1四种任务结果对比

🏆4.2不同可训练参数量结果对比

🏆4.3四种任务可视化结果

🏆4.4消融实验

🏆4.5参数选择对比结果

🏆4.6在四个不同任务上与其他微调方法对比

🍉🍉5.总结

        EVP提出了一种明确的视觉提示,以统一低层次结构分割的解决方案。我们主要关注两类特征:来自块嵌入的冻结特征和来自原始图像的高频分量。使用我们的方法,我们发现来自ImageNet的具有有限可调参数的冻结视觉转换器主干可以实现与全微调网络结构相似的性能,与其他特定任务的方法相比,也具有最先进的性能。对于未来的研究,我们将把我们的方法扩展到其他相关问题,并希望它能促进视觉提示的进一步探索。 

 

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

这篇关于【EVP】Explicit Visual Prompting for Low-Level Structure Segmentations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663734

相关文章

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

MiniCPM-V: A GPT-4V Level MLLM on Your Phone

MiniCPM-V: A GPT-4V Level MLLM on Your Phone 研究背景和动机 现有的MLLM通常需要大量的参数和计算资源,限制了其在实际应用中的范围。大部分MLLM需要部署在高性能云服务器上,这种高成本和高能耗的特点,阻碍了其在移动设备、离线和隐私保护场景中的应用。 文章主要贡献: 提出了MiniCPM-V系列模型,能在移动端设备上部署的MLLM。 性能优越:

【Visual Studio 报错】未加载 wntdll.pdb(一种可行的解决办法)

调试程序时,会出现下面这个报错 分析原因: 出现未加载 wntdll.pdb 报错大概率是你的指针使用错误 ,比如使用野指针、越界访问、或者堆区空间释放方式错误等。 这里以 堆区空间释放方式错误 为例子 1、堆区开辟的数组空间使用 delete 释放 // 堆区开辟的数组空间使用 delete 释放int* p = new int[10];delete p; 正

查看Excel 中的 Visual Basic 代码,要先设置excel选项

1. excel VB的简单介绍 百度安全验证 2.excel选项设置 excel表格中在选项->自定义功能区域,选择开发工具,visual baisc/查看代码,即可看到代码。 3.excel已经设置,可以直接查看

[VC] Visual Studio中读写权限冲突

前置场景: 编译没有报错,但是运行提示 内存异常: 情景1: 如下代码运行异常,提示引发了异常:写入权限冲突。*** 是 0xFFFFF..... char* str = (char*)malloc(10);str[0] = 0x30;  解决方案:要包含头文件<stdlib.h>  情景2: 在FileA文件调用FileB文件的函数,但是在FileA中却没有声明该B函数的原型

解决Visual C++ 中相互包含头文件的问题

在编MFC应用程序时,经常会遇到头文件相互包含的问题,很是苦恼,于是便求助于强大的CSDN,得到如下答案:   方法一:利用友元类   我一共有两个类,由于要在两个类的头文件里互相应用对方,所以,在每一个类的头文件里面现包含另一个类的头文件,然后在该类的定义中声明另一个类为友元类。如下:    #include "B.h"      class CA: public CDialog

如何简单而优雅地升级Visual NMP中的PHP版本

需求:自己想测试下不同版本的PHP性能,就想升级下 Visual 这个集成环境中PHP的版本 网上: 升级PHP到5.6.11  1、下载新的nts版的PHP并解压缩到bin\PHP下,保留原文件夹的名称; 2、将旧版PHP文件夹下的PHP.ini复制到新版的PHP文件夹下;修改复制的PHP.ini,将旧版PHP文件夹信息替换成新版PHP文件夹信息; 3、下载php_xdebug-2.3

应用Visual Studio Profiler分析CPU使用情况

使用Visual Studio Profiler分析CPU使用情况‌的步骤如下: 1.‌启动CPU分析:‌ 在Visual Studio中打开你要分析的项目。 在菜单栏中选择Debug > Performance Profiler,或者使用快捷键Alt + F2。 在性能分析工具窗口中,选择CPU Usage选项,这将帮助你分析应用程序的CPU使用情况。 2.‌运行CPU

PrimeTime low power-SMVA分析(4)

1.6使用示例 以下使用示例展示了SMVA流程: - 所有电压条件下的SMVA分析 - 特定DVFS约束下的SMVA分析 在以下脚本示例中,红色突出显示的文本显示了在SMVA流程中使用的命令、命令选项和变量。这些功能只有在将timing_enable_cross_voltage_domain_analysis变量设置为true时才能使用。 1.6.1所有电压条件下的SMVA分析 要对多

MySQL 迁移中 explicit_defaults_for_timestamp 参数影响

前言 最近在做数据迁移的时候,使用的是云平台自带的同步工具,在预检查阶段,当时报错 explicit_defaults_for_timestamp 参数在目标端为 off 建议修改 on,有什么风险呢?在此记录下。 测试对比 MySQL 默认情况下 explicit_defaults_for_timestamp = 0 我们对比一下看看。 explicit_defaults_for_tim