InstructDiffusion-多种视觉任务统一框架

论文:《InstructDiffusion: A Generalist Modeling Interface for Vision Tasks》
github:https://github.com/cientgu/InstructDiffusion
InstructPix2Pix:参考

文章目录

  • 摘要
  • 引言
  • 算法
    • 视觉任务统一引导
    • 训练集重构
    • 统一框架
  • 实验
    • 训练集
    • 关键点检测
    • 分割
    • 图像增强
    • 图像编辑
    • 详细instruction的优势
    • 多任务训练优势
    • 人工校准数据集影响
    • 对未见任务的泛化性
  • 讨论与结论
  • 个人理解

摘要

作者提出InstructDiffusion,一个统一通用框架用于对齐cv任务与instruction,将不同视觉任务映射为人工引导的图像处理任务。InstructDiffusion可处理各种视觉任务,包括理解任务(分割、关键点检测)、生成类任务(编辑和增强)。InstructDiffusion迈向视觉任务通用模型接口重要一步。

引言

难点:
1、计算机视觉任务的多样性使得其很难找到一个适用于所有任务的统一的表征;
2、不同的任务需要不同的方法,作为对比,NLP任务基于更一致的方法;
3、视觉任务输入输出是连续性的,通过VQ-VAE量化时容易产生量化误差;
本文中作者利用DDPM优势,提出一种新方法将所有视觉任务看做图像生成,解决所提到挑战。
输出格式有三种:RGB图、二进制图、关键点;

算法

作者提出InstructDiffusion,一种通用模型接口适用于各种视觉任务。利用DDPM,将所有视觉任务看做人类引导的图像处理过程,输出在一个灵活和交互的像素空间。
输出为三种格式:3通道RGB图、二进制mask、关键点

视觉任务统一引导

训练集 x i x_i xi可以表征为 c i , s i , t i {c_i, s_i, t_i} ci,si,ti,其中 c i c_i ci表示控制的instruction; s i s_i si t i t_i ti分别表示原图和目标图。Instruct-Pix2Pix天然符合该任务

关键点检测:作者使用更自然详细指令用于关键点检测,比如:”Please use red to encircle the left shoulder of the man.”,仅在输出图中对应位置展示红圈;
分割:识别特定目标区域,instruction实例”apply a blue semi-transparent mask to the rightmost dog while maintaining the remainder un- altered.” 变透明mask更利于评估同时增强分割效果;

图像增强与图像编辑:构建instruction应该明确说明要执行的功能,比如:“Make the image much sharper”、“Please remove the watermark on the image”、“add an apple in the woman’s hand”
为了增加instruction的多样性,作者首先对每个 任务写10个instruction,然后使用GPT-4重写并扩展多样性,

训练集重构

作者使用开源数据集,依据instruction重构目标图;InstructPix2Pix利用GPT-3生成instruction,Prompt2Prompt创建目标图;MagicBrush数据集有1万张人工标注的三元组样本,作者提出了IEIW,包括159000样本对,涵盖多种实体及分割粒度。
作者从以下三个源收集IEIW数据集
目标移除:作者对PhraseCut数据集提供图片及对应短语,使用LAMA进行目标移除;同时翻转instruction及输入、输出图进行数据集扩充
目标替换:作者提出一种生成训练集(特定目标替换)流程。作者使用SA-1B及Open-Images数据集,首先基于分割区域构建目标数据库,选择一个语义区域,从数据库中搜索最相似目标作为参考图,通过PaintByExample生成目标图,为了获得instruction,作者使用图像caption工具生成原图及目标图caption,通过LLM生成instruction
网络爬虫:通过google关键词”photoshop request”,搜索P图人员修过的的图,共2.3万成对数据。
为保证训练集质量,作者进行质量评估。具体地,使用LAION-Aesthetics-Predictor进行美学评分,在LAION-600M数据集构建KNN-GIQA模型进行GIQA评分。作者剔除低质量得分数据、源图与目标图质量得分差异大的数据。

统一框架

在这里插入图片描述
如图2,训练过程包括三个阶段:自适应预训练、特定任务训练、instruction调优
自适应预训练
作者希望扩散模型可生成图像具有特定前景mask或者特别mark,因此使用现有的分割或关键点数据集产生这样的数据,主要挑战在于在保留文生图能力的同时,形成合适caption准确描述这些图像,通过对原始图像caption增加后缀实现,比如:”with a few different color patches here and there” or ”surrounded with a red circle.”
特定任务训练
第二阶段进一步finetune扩散模型,强化其理解不同任务各种instruction能力。对于不同任务所使用训练样本如表1。
在这里插入图片描述
扩散过程增加噪声 z t z_t zt,微调模型,如式1,
在这里插入图片描述
人工对齐
对于每个样本我们生成20个不同的编辑结果,人工挑选最好的0-2个编辑结果用作instruction微调数据集。整个数据集包括1k张图。

实验

训练集

关键点:COCO,149k,17个关键点;CrowdPose,35k,14个关键点;MPII,22k,16个关键点;AIC,378k,14个关键点;
分割:COCO-Stuff作为分割训练集、gRefCOCO和RefCOCO作为引用分割训练集;instruction使用固定模板:“place a color mask on object.”
图像增强:关注三个任务:

  • 去模糊:GoPro 2103张图,REDS 24k张图;
  • 去噪:SIDD 320张图;
  • 水印去除:CLWD 60k张图;

图像编辑:InstructPix2Pix,561k个样本;MagicBrush,8k个样本;GIER,5k;GQA,131k修复数据集;VGPhraseCut,85k样本;作者生成51k样本;
训练细节
训练集955k、batch 3072、200epoch、48 v100、分辨率 256*256,训练4天

关键点检测

作者在COCO验证集、未见过数据集HumanArt、AP-10K(动物关键点)验证模型泛化性;
测试结果如表2,InstructDiffusion超过其他泛化模型,但与关键点检测模型有一定差距,归因于位置不准确。
在这里插入图片描述
在动物关键点数据集AP-10K展示不错效果,如图3.
在这里插入图片描述

分割

作者关注模型对开集词汇能力。表3展示引用分割结果,在RefClef数据集取得出乎意料成果。
在这里插入图片描述
表4展示语义分割量化结果。InstructDiffusion不仅在闭集changjignCOCO-Stuff超过现有专家模型,同时在开集场景也取得有竞争力效果,但在ADE-150K上Painer效果更好,由于Painter在该数据集上训练过。但在Painter和PromptDiffusion难以将颜色与未见过类别联系,这是由于它们通过参考图引导模型将颜色与语义联系,而InstructDiffusion通过文本将它们联系。图4为可视化结果。
在这里插入图片描述
在这里插入图片描述

图像增强

在这里插入图片描述
表5为量化比较结果,可知:

  • 图像编辑任务的专家模型在图像增强任务有较差的泛化性;
  • Painter在去噪任务表现较好,但在编辑任务遇到挑战;
  • InstructDiffusion图像增强性能受限于VAE,括号中为送入VAE真值得到模型上限效果。

图5展示实际应用效果。
在这里插入图片描述

图像编辑

使用CLIP及美学预测AP评估生成结果。量化结果如表5,与Instruct-Pix2Pix、MagicBrush性能相当。可视化结果图6、图7,提供原图,可以添加、移除、替换目标
在这里插入图片描述
在这里插入图片描述

详细instruction的优势

如表6,简单instruction效果比较差。
在这里插入图片描述

多任务训练优势

图8展示多任务联合训练效果远优于单分割任务训练效果;
在这里插入图片描述
图9展示图像编辑也获得类似收益。
在这里插入图片描述

人工校准数据集影响

图10展示人工校准数据集的影响,从29.6提升到29.9
在这里插入图片描述

对未见任务的泛化性

图11展示模型对未见过任务的能力,包括检测、分类、甚至细粒度任务。
在这里插入图片描述

讨论与结论

本文提出的InstructDiffusion,一种统一框架对齐视觉与instruction,将所有视觉任务看做图像生成,作者证明在多个任务达到不错表现,同时多任务联合训练强化模型泛化性。
未来作者关注以下几点提升模型能力:
1、改进统一表征,可更好表征各种视觉任务输出;
2、研究自监督及无监督学习,使用大规模无标注数据,强化模型泛化性;

个人理解

InstructDiffusion基于InstructPix2PIx扩充训练集用于多种视觉任务,将多种任务看做生成任务,并且联合训练展示出一定泛化性,可用于未见过任务。虽然InstructDiffusion展示出一定通用性,但个人认为比较难超越专家模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序本地和真机调试文件上传成功但体验版不成功

可能是微信小程序ip白名单的问题,去微信公众平台(小程序)上设置小程序的ip白名单 1、在本地中取消不校验 然后在本地去上传文件,就会发现控制台报错了,会提示一个https什么不在ip白名单,复制那个网址 2、…

tomcat调优配置

一. 设置账户进入管理页面 通过浏览器进入Tomcat7的管理模块页面&#xff1a;http://localhost:8080/manager/status 按照提示&#xff0c;在Tomcat7服务器指定的位置修改配置文件&#xff08;conf/tomcat-users.xml&#xff09;&#xff0c;增加相应的用户和角色配置标签 <…

win11系列:避坑宝典|win11升级最新预览体验版bug梳理

win11系列&#xff1a;避坑宝典|win11升级最新预览体验版bug梳理 一、亲测win11升级的前世今生。&#xff08;一&#xff09;问题描述梳理。&#xff08;二&#xff09;故障原因分析。&#xff08;三&#xff09;具体解决方案。2.【已解决】①尝试关Hyper-v重启&#xff1b;②从…

基于AOP的声明式事物控制

目录 Spring事务编程概述 基于xml声明式事务控制 事务属性 isolation timeout read-only propagation 全注解开发 Spring事务编程概述 事务是开发中必不可少的东西&#xff0c;使用JDBC开发时&#xff0c;我们使用connection对事务进行控制&#xff0c;使用MyBatis时&a…

Django大回顾 -3 之响应对象、cbv和fbv、关于类中self是谁的问题、上传文件、模版

【1】isinstance方法 判断一个对象是否是一个已知的类型。 isinstance语法&#xff1a; isinstance(object&#xff0c;classinfo) object --------- 实例化对象 cassinfo ------- 可以是字节或间接类名、基本类型&#xff0c;或者由他们组成的元组 相同返回True&#xff0c;不…

肖sir__mysql之视图__009

mysql之视图 一、什么是视图 视图是一个虚拟表&#xff08;逻辑表&#xff09;&#xff0c;它不在数据库中以存储形式保存&#xff08;本身包含数据&#xff09;&#xff0c;是在使用视图的时候动态生成。 二、视图作用 1、查询数据库中的非常复的数据 例如&#xff1a;多表&a…

本地部署GPT的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

微机原理_8

一、单项选择题&#xff08;本大题共 15 小题&#xff0c;每小题 3 分&#xff0c;共 45 分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;请将选定的答案填涂在答题纸的相应位置上。 1,微机内部除CPU外还集成了计算机的其它主要部件,如ROM、RAM、并…

LeetCode(38)生命游戏【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 生命游戏 1.题目 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是…

shell---免交互

一、多行重定向 可以理解为这是标准输入的一种替代品&#xff0c;可以帮助脚本开发人员不必使用临时文件来构建输入信息&#xff0c;可以直接产生一个文件&#xff0c;输入文件信息&#xff0c;常与非交互程序和命令一起使用 语法格式命令<< 标记..........标记 注意…

During handling of the above exception, another exception occurred解决方案

During handling of the above exception, another exception occurred解决方案 前言解决方案总结 前言 今天在写python读取图片中的内容的脚本的时候&#xff0c;常用的图像处理库包括Pillow和OpenCV。以下是使用Pillow库读取图片中的计算公式的示例代码&#xff1a; from P…

详解原生Spring当中的额外功能开发MethodBeforeAdvice与MethodInterceptor接口!

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

Redis对象系统

前言 在Redis中有许多数据结构&#xff0c;比如&#xff1a;简单动态字符串(SDS)&#xff0c;双端链表&#xff0c;字典&#xff0c;压缩列表&#xff0c;整数集合等。 Redis并没有直接使用这些数据结构来实现键值对数据库&#xff0c;而是基于这些数据结构创建了一个对象系统。…

vue项目运行时,报错:ValidationError: webpack Dev Server Invalid Options

在运行vue项目中&#xff0c;遇到报错&#xff1a;ValidationError: webpack Dev Server Invalid Options&#xff0c;如下图截图&#xff1a; 主要由于vue.config.js配置文件错误导致的&#xff0c;具体定位到proxy配置代理不能为空&#xff0c;导致运行项目报错&#xff0c;需…

连接备份1128

深度学习—分类识别篇&#xff1a;http://tr.daheng-imaging.com/watch/1050636http://tr.daheng-imaging.com/watch/1050636 深度学习—目标检测篇&#xff1a;http://tr.daheng-imaging.com/watch/1101141http://tr.daheng-imaging.com/watch/1101141 深度学习—缺陷分割篇&a…

Chrome显示分享按钮

分享按钮不见了&#xff01; Chrome://flags Chrome Refresh 2023 Disabled 左上角的标签搜索会到右上角。

MATLAB实战 | APP设计

01、应用实战 【例1】生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App&#xff0c;界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法&#xff0c;中间的旋钮用于设置视点方位角和仰角&#xff0c;右下部的分档旋钮用于设…

Thrift RPC Java、Go、PHP使用例子

文章目录 1、Thrift RPC介绍1.1、Protocol 支持的数据传输协议1.2、Transport 支持的数据传输方式1.3、Server 支持的服务模型1.4、IDL语法数据类型1.5、开发步骤 2、接口定义文件2.1、创建接口定义文件2.2、生成对应平台语言代码2.2.1、下载生成工具2.2.2、生成各平台语言代码…

基于web宠颐生宠物医院系统设计与实现

基于web宠颐生医院系统开发与实现 摘要&#xff1a;时代飞速发展&#xff0c;网络也飞速发展&#xff0c;互联网许多的行业都可以用互联网实现了&#xff0c;互联网已经成为了人们生活中重要的一部分&#xff0c;或多或少的影响着我们的生活&#xff0c;互联网在给我带了方便的…

Bert-VITS2本地部署遇到的错误

关于Bert-VITS2本地部署遇到的错误 1、在下载python中相关依赖时报错 building ‘hdbscan._hdbscan_tree’ extension error: Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools”: https://visualstudio.microsoft.com/visual-cpp-bu…