当前位置: 首页 > news >正文

[论文阅读] Explicit Visual Prompting for Low-Level Structure Segmentations

[论文地址] [代码] [CVPR 23]

Abstract

我们考虑了检测图像中低层次结构的通用问题,其中包括分割被操纵的部分,识别失焦像素,分离阴影区域,以及检测隐藏的物体。每个问题通常都有一个特定领域的解决方案,我们表明,一个统一的方法在所有这些问题上都表现良好。我们从NLP中广泛使用的预训练和提示调整协议中得到启发,并提出了一个新的视觉提示模型,即显式视觉提示(EVP)。与以往的视觉提示不同的是,我们的视觉提示是典型的数据集级别的隐性嵌入,我们的关键见解是强制执行可调整的参数,专注于每个单独图像的显性视觉内容,即来自冻结补丁嵌入和输入的高频成分的特征。在相同数量的可调整参数(每个任务5.7%的额外可调谐参数)下,提议的EVP明显优于其他参数高效的微调协议。与特定任务的解决方案相比,EVP在不同的低层次结构分割任务上实现了最先进的性能。


Overview

本文是做什么的: 做的是参数高效微调(Parameter-Efficient Tuning)。例如对一个参数量巨大的模型,调整其所有参数是十分低效的,可以设计算法以只调整网络的一小部分(额外的)参数来取得与完全调整相当的性能。

何为显式(Explicit) 现有的方法(例如Visual Prompt Tuning)其所利用的提示(Prompt)是隐式的,也就是直接加网络层进去让模型自己学,具体学的东西是什么不知道,但最后模型性能有提升;本文的Prompt则是强制学习了模型的一些底层的结构信息(FFT+IFFT取得的模型高频成分),这些底层结构信息所构成的"手工特征"能够大大提升Prompt的效果。

本文的核心思想其实比较类似于传统分割网络里面的boundary aware之类的方法,加额外的与图片相关的信息进去给网络学。


Method

本文的网络结构如下所示:
在这里插入图片描述
虚线左边为Adapter的结构,虚线右边为整体结构。以SegFormer的Transformer backbone为例,本文主要加了以下几个东西,一个个来看:

  • Embedding Tune: 本文将Patch Embedding所得到的特征送入了一个Embedding Tune层。这么做的目的是辅助原始训练数据分布迁移到现在finetune的新数据上,思想类似于现有的VPT-Shallow。具体的网络实现则是一个线性层就可以搞定。需要注意的是,这个线性层对输入的Patch Embedding Feature进行了降维,具体降多少算是本文的一个超参。

  • HTC Tune 直接从原始图像中提取高频分量,作为手工特征以辅助finetune。具体的网络实现同样是使用一个线性层将提取的frequency map转化为特征。

  • Adapter 负责整合Embedding与HTC Tune获得的信息,并将其送入到Transformer backbone的每一层中去。其网络实现由三部分组成,分别为 M L P t u n e MLP_tune MLPtune G E L U GELU GELU M L P u p MLP_up MLPup,也就是两个线性层以及中间的GELU。将第二个MLP共享可以认为单纯是为了节省参数量(见消融实验)。


Ablation Study

在这里插入图片描述
本文主要所提出来的东西也就是这个高频分量Adapter F h f c F_{hfc} Fhfc。可以看到该组件在Shadow和Forgery上的贡献较大,而在Defocus以及Camouflaged上的贡献有限。事实上,对于Defocus以及Camouflaged这两个任务,修改单一的设计几乎都不会对最终结果有较大的影响。

http://www.lryc.cn/news/90504.html

相关文章:

  • swagger在spring项目中的使用
  • 操作系统第五章——输入输出管理(中)
  • 【网络】socket套接字基础知识
  • Go语言介绍以及Go语言环境安装
  • FPGA纯verilog实现CameraLink视频接收和发送,附带工程源码和技术支持
  • k8s中的service、api-server、kube-proxy有什么区别
  • 记录::opencv编译,cmake编译vs动态库
  • 网易SmartAuto,中文编程就是爽
  • 适配器模式那么强大,该怎么使用呢?
  • [极客大挑战 2019]PHP1
  • PID 学习
  • 002. java.lang.NumberFormatException: Infinite or NaN,怎么破?
  • Vue常用的修饰符
  • freertos笔记-任务切换
  • 企业电子招投标采购系统源码之登录页面-java spring cloud
  • 接口测试|Fiddler弱网测试
  • Linux-0.11 文件系统super.c详解
  • 什么是ChatGPT、历史发展及应用领域
  • Spring的创建与使用
  • 抖音Flutter插件的使用
  • Debezium报错处理系列之六十八:No resolvable bootstrap urls given in bootstrap.servers
  • Python二级编程:分词去重
  • Android Wifi开发——Wifi锁(十九)
  • Nginx的优化与防盗链
  • STP协议
  • 方法——检查参数的有效性
  • 七、Docker仓库之nexus搭建(四)
  • MySQL 锁机制
  • HACKER KID: 1.0.1实战演练
  • Android车载学习笔记1——车载整体系统简介