【论文阅读笔记】InstructDiffusion: A Generalist Modeling Interface for Vision Tasks

【论文阅读笔记】StyleAvatar3D: Leveraging Image-Text Diffusion Models for High-Fidelity 3D Avatar Generation

  • 论文阅读笔记
    • 论文信息
    • 引言
      • 动机
        • 挑战
      • 方法
      • 结果
    • 关键发现
    • 相关工作
        • 1. 视觉语言基础模型
        • 2. 视觉通用模型
    • 方法/模型
        • 视觉任务的统一说明
        • 训练数据构建
        • 网络结构
    • 实验设计
      • 关键点检测
      • 分割
      • 图像增强
      • 图像编辑
      • 复杂指令与简单指令
      • 多任务学习
      • 质量调整的重要性
      • 未知任务的泛化
    • 训练代价
    • 总结

论文阅读笔记

  1. 用于将计算机视觉任务与人工指令相协调的统一通用框架
  2. 这篇工作希望单一模型整合计算机视觉领域的任务。和Emu Edit的出发点一样,都将多个视觉任务视为图像生成任务并同时处理,尤其是图像编辑。
  3. 和Emu一样使用质量调整作为提升模型性能的方法
  4. 数据制造过程使用了很多离线的图像编辑方案,如Paint by Example: Exemplar-based Image Editing with Diffusion Models制作目标替换数据,LAMA(Resolution-robust Large Mask Inpainting with Fourier Convolutions)制作目标删除和添加数据。此外还通过公开数据集扩充以及爬虫爬取真实数据
  5. LAION-Aesics-Predictor评估美学、LAION-600M图像上构建KNN-GIQAKNN-GIQA计算GIQA,这两个评估标准可作为现有图像生成质量的补充评价标准
  6. Emu Edit和Instruct Diffusion的异同
    • 相同点:
      • 视作多任务学习
    • 不同点:
      • 两者涵盖的任务不同,前者为不同任务使用不同的指令编码进行引导,训练标签遵循于不同任务的标签;后者手动设置了不同任务的编辑指令,不同格式的输出都整合到了三通道的图像作为标签;
      • Emu Edit基于Emu更好的性能的diffusion;InstructDiffusion额外进行了质量调整
      • 两者使用的数据集筛选标准不同;前者制作的数据集主要通过P2P生成,且更加精细化,后者使用了不少公开数据集
      • 前者数据集大概1000万张;后者大概100万张
      • 前者512分辨率,没有给出具体训练时间;后者分辨率256,200epoch,48个A100 GPU训练4天

论文信息

  • 论文标题:InstructDiffusion: A Generalist Modeling Interface for Vision Tasks
  • 作者:微软亚洲研究院
  • 发表年份:2023
  • 期刊/会议:暂无
  • code:https://github.com/cientgu/InstructDiffusion
  • 项目主页:https://gengzigang.github.io/instructdiffusion.github.io/

在这里插入图片描述

引言

动机

生成式预训练 Transformer (GPT) 通过为各种应用提供一个单一的、连贯的框架,成功地统一了多个 NLP 任务。
本文旨在计算机视觉领域实现类似的统一,即同时处理多个计算机视觉任务。

挑战
  1. 计算机视觉任务的多样性:
    • 包含识别、检测、分割、生成等任务
    • 不同任务的标签也不一样
  2. 方法和技巧的多样性:
    • 视觉任务倾向于使用显著不同的方法和技巧处理不同任务,如GAN和DPM(概率扩散模型)
    • 语言模型依靠Transformer可以解决大部分问题
  3. 连续输入和输出:
    • 计算机视觉任务的输入和输出通常是连续的,如坐标或图像
    • 图像可以被看作符合一定分布的,如果进行离散化会导致误差,不想文本数据可以被解释为离散Token的组合

方法

  • 利用DDPM,提出了一种新的方法来解决这些挑战,将所有计算机视觉任务视为图像生成,特别是图像编辑任务【Visual Prompting via Image Inpainting和Images Speak in Images: A Generalist Painter for In-Context Visual Learning两篇文章是视作inpainting任务
    • 首先将不同的视觉任务通过文本描述为对应的图像编辑任务,如Figure1所示,分割可以解释为将对应的object像素转换为特定的颜色
    • 随后把输出格式概括为3通道RGB图像、二进制掩码和关键点三种,并将mask和keypoint也编码到3通道RGB图像以适应DPM的输出
    • 最后使用后处理模块来提取常用的输出格式进行评估
  • 训练阶段使用一组不同的任务来统一训练单个模型,此外收集了一个新的图像编辑数据集

结果

  • InstructDiffusion 可以处理各种视觉任务,包括理解任务(例如分割和关键点检测)和生成任务(例如编辑和增强)
  • 它甚至展示了处理看不见的任务的能力,并在新的数据集上优于以前的方法。

关键发现

  1. 为每个任务训练单个模型相比,多个任务的联合训练可以提高泛化能力(同Emu Edit)
  2. 模型还在一定程度上展示了 AGI 的能力,因为它可以处理训练阶段看不到的任务,例如图像分类和分类
  3. 在训练期间没有看到的数据集上的表现优于以前的方法

相关工作

【构建一个能够解决任何任意任务的通用模型一直是人工智能研究的长期愿望】

1. 视觉语言基础模型

利用文本和图像大型数据对

  • CLIP 和 ALIGN 使用对比损失进行训练
    • 通过在跨模态共享嵌入空间中对齐图像和文本对,显示出对下游任务令人印象深刻的泛化能力
    • 基于对比的方法缺乏生成语言的能力,限制了在开放任务中的使用,如Image caption、visual question answering
  • 大型语言模型GPT、LLaMA、PaLM将视觉任务视作文本预测问题,将视觉任务映射为语言语义
2. 视觉通用模型

多任务学习,关键挑战在于任务输出的各种结构的多样性和复杂性

  • 类语言的生成(量化离散)
    • 从 NLP 领域的序列到序列模型中汲取灵感,并通过下一个标记预测对一系列离散标记进行建模
    • Pix2Seq v2通过量化前三个任务的连续图像坐标来统一目标检测、实例分割、关键点检测和图像字幕
    • Unified IO使用矢量VQ-VAE进一步统一密集结构输出,如图像、分割掩码和深度映射
  • 图像组装生成
    • Painter将密集预测任务表述为掩模图像修复问题,并在深度估计、语义分割、实例分割、关键点检测和图像恢复等视觉任务中展示了上下文能力
    • PromptDiffusion利用上下文视觉学习与文本引导的扩散模型,并集成了六种不同任务的学习

本文方法通过更有力的指令对齐,显式的处理多种图像任务

方法/模型

通过利用去噪扩散概率模型 (DDPM),将所有计算机视觉任务视为具有灵活和交互式像素空间中的输出的人类直觉图像处理过程

视觉任务的统一说明
  • 所有任务的统一建模界面称为指令图像编辑
    • 训练集 x i : { c i , s i , t i } x^i:\{c^i,s^i,t^i\} xi:{ci,si,ti},分别编辑指令、原图像和目标图像,类似于Instruct pix2pix
  • 关键点检测
    • 精确定位图像中的关键对象组件
    • 指令示例:“Please use red to encircle the left shoulder of the man.“
  • 分割
    • 识别输入图像中特定对象的区域
    • 指令示例:“apply a blue semi-transparent mask to the rightmost dog while maintaining the remainder unaltered.“
  • 图像增强和图像编辑
    • 去模糊、去噪和水印去除等图像增强固有地产生输出图像,同样适用于图像编辑
    • 指令示例:“Make the image much sharper” for 去模糊, “Please remoe the watermark on the image” for 去水印, and “add an apple in the woman’s hand” for 图像编辑

首先为每个任务手动编写 10 条指令。然后使用 GPT4 重写和扩展这些指令的多样性,从而模仿用户输入系统。。在训练过程中随机选择一个指令

训练数据构建
  • 采用广泛使用的公开可用数据集,并根据指令模板构建地面实况目标图像
  • InstructPix2Pix (IP2P)通过利用GPT3生成指令和Prompt2Prompt来创建输出图像,开创了使用合成训练数据集。然而,合成的源图像和目标图像表现出不同的质量和不可忽略的伪影,大多数指令都集中在全局样式修改而不是局部更改上【Emu Edit则是精心设计了合成数据集的制造流程和筛选流程】。
  • MagicBrush 引入了一个包含超过 10,000 个手动注释的三元组的数据集,但与其他视觉任务相比,它的大小是有限的。
  • 除了 IP2P [6]、GIER [63]、GQA [90] 和 MagicBrush [96] 等现有数据集外,还提出了一种新的数据集,称为野外图像编辑 (IEIW),其中包含 159,000 个图像编辑对,涵盖广泛的语义实体和不同级别的语义粒度
    • 对象删除。参考分割数据集PhraseCut来构建对象删除数据。PhraseCut 为相应区域提供参考短语的图像。将这些区域设置为掩码并使用 LAMA 对其进行修复,将它们转换为教学修复数据集。交换输入和输出图像,并将“删除树顶部的蓝色鸟”等指令反转为“在树的顶部添加蓝色鸟”,以从添加组件的角度进一步补充数据
    • 对象替换。首先构建了一个图库数据库,该数据库由基于这些语义感知区域的不同图像块组成。给定OpenImages或SA-1B的源图像,我们随机选择一个语义区域,作为查询补丁,从上述构建的图库中检索其最近的邻居数据库。检索到的相似补丁被视为源图像的参考图像,两者都被馈送到 PaintByExample 以生成目标图像。通过这种方式,我们获得了源图像和修改后的目标图像。为了生成指令,我们利用图像字幕工具,例如 BLIP2,以产生源字幕和目标字幕然后通过大型语言模型生成可能的指令。例如,给定标题“正在运行的狗”和“带有黑白条纹的剪刀猫”,可能的指令是“请将跑步狗更改为带有黑白条纹的剪刀猫”
    • Web 爬虫。收集了真实的用户请求以及来自网站的经验丰富的 Photoshop 专业人士提供的相应结果。为了确保数据的准确性和相关性,我们利用关键字“Photoshop 请求”在 Google 中搜索,积累一个包含超过 23,000 个数据三元组的大量数据集,进一步改进对用户需求的理解,并减少训练和推理之间的域差距。
  • 利用图像质量评估工具来消除标准数据
    • LAION-Aesics-Predictor进行美学评分
    • LAION-600M图像上构建KNN-GIQAKNN-GIQA模型来计算GIQA评分
    • 排除质量分数较低的,以及源图像和目标图像质量分数差异过大的
网络结构

分为预训练适应、特定于任务的训练和指令调整三个阶段

  • 预训练适应

    • finetineSD1.5以适应编辑指令以及对应的图像
  • 特定任务的训练

    • 遵循Instruct pix2pix进行训练,但由于不同任务的数据量不同,使用不同的权重进行训练
      L = E ( s i , c i , t i ) ∼ P ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t , s i , t i ) ∥ 2 2 ] L=\mathbb{E}_{\left(s_i, c_i, t_i\right) \sim \mathcal{P}(x), \epsilon \sim \mathcal{N}(0,1), t}\left[\left\|\epsilon-\epsilon_\theta\left(z_t, t, s_i, t_i\right)\right\|_2^2\right] L=E(si,ci,ti)P(x),ϵN(0,1),t[ϵϵθ(zt,t,si,ti)22]
  • 人工对齐

    • 为提高编辑的质量,遵循大型语言模型的指令调优的思想,类似Emu Edit的质量调整过程
    • 具体来说,生成一批数据,人工筛选其中最好的1000张队预训练模型微调

实验设计

训练数据
- 三元组{指令、源图像、目标图像},包含多种任务关键点检测、语义分割、参考分割、图像增强,包括去噪、去模糊和水印去除、图像编辑
- 关键点检测:COCO、CrowdPose、MPII、AIC四个数据集,训练过程中每个图像随机使用 1 到 5 个关键点,随机颜色。指令通过填充关键点类和特定颜色类的模板生成的
- 分割:COCO-Stuff作为语义分割训练,gRefCOCO和 RefCOCO 作为参考分割训练数据集。利用LLM收集提示模板作为文本指令。如“在对象上放置颜色掩码”。训练过程中,随机选择一个颜色进行“颜色”,并将“对象”替换为语义分割中的相应类别名称或引用分割。目标图像使用其对应的颜色放置透明度为 0.5 的掩码
- 图像增强:去模糊、去噪和水印去除。利用包含 2103 张图像和 REDS [50] 数据集的 GoPro,其中包含 24,000 张图像用于去模糊,SIDD 数据集由 320 张图像组成用于去噪,CLWD 数据集包含 60,000 张图像用于水印去除。
- 图像编辑:过滤的InstructPix2Pix、MagicBrush、GIER、GIER、GIER、生成的数据
在这里插入图片描述

关键点检测

后处理:提取准确的姿势坐标信息,即精确的水平和垂直坐标,而不是简单地用不同的符号标记位置。采用了一个轻量级的 U-Net 结构,该结构对输出图像进行后处理以生成多通道heatmap
结果:没有打过专有模型,但高于其他通才模型,可能是由于数据量不够或者结合但是可以泛化检测出训练集以外的关键点
在这里插入图片描述
在这里插入图片描述

分割

后处理:与关键点检测类似,采用了一个轻量级的 U-Net 结构,该结构对输出图像进行后处理以提取每个单独对象的二进制掩码
结果:优于专有模型,通过文本指令建立与每个语义类别相对应的颜色,从而显着提高性能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像增强

在这里插入图片描述

  • 首先,针对图像编辑任务训练的专业模型在应用于图像增强任务时往往表现出较差的泛化能力
  • 通才模型 Painter 在去噪任务中表现更好,但在通过上下文学习无缝集成图像编辑任务时遇到了挑战
  • 模型在图像增强方面的性能受到 VAE 模型的限制,该模型引入了信息丢失。所以ground truth使用的是VAE重建的原始图像

在这里插入图片描述

图像编辑

定量实验见Figure.5
在这里插入图片描述
在这里插入图片描述

复杂指令与简单指令

在这里插入图片描述

假设泛化能力是通过理解单个元素的特定含义而不是记忆整个指令来学习的技能。与之前简单地将自然语言视为任务指标的 Pix2seq 和 Unified-IO 等统一模型不同,该方法为每个任务使用详细描述作为指令。详细指令可以实现更好的性能

多任务学习

在这里插入图片描述
多任务学习下与专有模型分别在未见过的数据集上测试,泛化性能明显增强

在这里插入图片描述
多任务训练的编辑准确性高于单任务编辑

质量调整的重要性

在这里插入图片描述

符合Emu的描述,不能训练太久,也不能训练太少,需要权衡。

未知任务的泛化

在这里插入图片描述

  • 通过这种高度详细的指令跟随格式利用丰富的任务和不同的数据集来展示一定程度的人工智能 (AGI) 能力。
  • 我们验证了它处理不属于其训练库的任务的能力,如人脸检测、分类甚至复杂的细粒度任务,如人脸对齐。
  • 在检测和分类的背景下,采用了类似于参考分割的提示,通过识别标记区域的顶部、底部、左侧和右侧边界来导出边界框坐标。此外,使用一个通用的提示结构来验证类标签
  • 发现能够泛化到动物的五点检测

训练代价

  • SD] v1.5作为初始化来利用文本到图像的生成先验。将输入图像分辨率预处理为256 × 256,训练过程中学习率固定为1 × 10−4
  • 采用 0.9999 的 EMA 率来稳定训练,使用 3072 的批量大小进行训练,总共 200 个 epoch,48 个 NVIDIA V100 GPU 上大约 4 天
  • 在人工对齐阶段,使用 0.99 的 EMA 率来帮助模型快速适应指令调整数据集

总结

  • InstructDiffusion 将所有计算机视觉任务视为图像生成,重点关注三种类型的输出格式:3 通道 RGB 图像、二进制掩码和关键点。我们证明了我们的方法在单个任务中取得了良好的性能,并且多个任务的联合训练增强了泛化能力。
  • 未来工作
    1)改进统一表示:我们旨在探索替代编码方案和技术,以更好地表示与各种计算机视觉任务相关的更多样化的输出范围。2)研究自监督学习和无监督学习的作用:为了增强 InstructDiffusion 的泛化能力,我们将探索使用自我监督和无监督学习技术来利用大规模未标记数据进行模型训练和适应。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高端制造业中的通用性超精密3D光学测量仪器

超精密光学3D测量仪器具有高精度、自动化程度高、实时反馈和范围广等优势。它能够实现微米级别的精确测量,能够精确测量产品的尺寸、形状和表面粗糙度等,具有广泛的应用价值和重要意义。 超精密光学3D测量仪器配备多种传感器、控制器和计算机系统&#…

【华为OD】统一考试B\C卷真题 100%通过:开源项目热榜 C/C++实现

目录 题目描述: 示例1 示例2 题目描述: 某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数…

什么是数据增强,为什么会让模型更健壮?

在做一些图像分类训练任务时,我们经常会遇到一个很尴尬的情况,那就是: 明明训练数据集中有很多可爱猫咪的照片,但是当我们给训练好的模型输入一张戴着头盔的猫咪进行测试时,模型就不认识了,或者说识别精度…

14、矩阵键盘

矩阵键盘介绍 在键盘中按键数量越多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态 扫描的概念 数码管扫描(输出扫描) 原理:显示第1位—&g…

【iOS-UIImagePickerController访问相机和相册】

【iOS-UIImagePickerController访问相机和相册】 一. UIImagePickerController的介绍1 . UIImagePickerController的作用2 . UIImagePickerController的功能 二 . UIImagePickerController的测试程序 一. UIImagePickerController的介绍 1 . UIImagePickerController的作用 U…

Unity 关于Input类的使用

Input类在我们游戏开发中需要获取外设设备(比如键盘、鼠标、游戏手柄等)进行交互时,基本都会用到。 它主要有以下一些常用的方法。 1、GetKey(KeyCode key),检测按键是否被按下; 2、GetKeyDown(KeyCode key)&#x…

sqli-labs(4)

17. 观察页面发现是一个用来更改用户密码的页面,页面中出现了用户Dhakkan user输入Dhakkan passs输入1发现成功找注入点 先在user尝试,发现不管输入什么都失败在pass中尝试注入 在pass中输入1‘ 报错注入 1 and extractvalue(1,concat(0x5c,database(…

openpnp - 给底部相机加防尘罩

文章目录 openpnp - 给底部相机加防尘罩概述笔记END openpnp - 给底部相机加防尘罩 概述 设备标定完, 看着底部相机, 有点担心掉进去东西, 万一从吸嘴掉下去的料(或者清理设备台面时, 不小心掉进去东西)将顶部相机搞短路怎么办. 就想加个防尘罩, 如果有东西掉进去, 可以掉到机…

【python】python基础速通系列2-python程序中的积木块

【组成Python的几个单位】 变量:指向值的名称。或者说变量是一个名称,这个名称指向一个具体的指。比如n=17,就说这个叫做n的变量的值是17。表达式:是值,变量和运算符的组合。如果把变量理解为名词,那么表达式就是把名词连起来的动词形容词。比如:n+25。语句:代码的基本…

还在为写论文焦虑?免费AI写作大师来帮你三步搞定

先来看1分钟的视频,对于要写论文的你来说,绝对有所值! 还在为写论文焦虑?免费AI写作大师来帮你三步搞定 第一步:输入关键信息 第二步:生成大纲 稍等片刻后,专业大纲生成(由于举例&am…

CANdelaStudio 使用教程6 编辑DTC

文章目录 DTC的导入导出定义 19 服务的DTC编辑快照数据 DTC的导入导出 DTC导出的文件是 Excel 文件,可以先将这个池子的DTC导出去修改,再导入进来,完成DTC的修改 定义 19 服务的DTC 编辑快照数据

入侵redis之准备---VMware上面安装部署centos7镜像系统【详细含云盘镜像】

入侵redis之准备—VMware上面安装部署centos7镜像系统【详细含云盘镜像 废话不多说直接开始 下载centos7镜像 网上有好多,但是我相信来看小编文章的基本上应该都有centos7的镜像了吧,毕竟咱们都是同一类人,哈哈不卖关子了,小编直…

根据密码构成规则检测密码字符串

从键盘输入密码字符串,程序根据给定密码构成规则检测并给出对应提示。 (笔记模板由python脚本于2023年11月27日 19:27:47创建,本篇笔记适合熟悉Python字符串str对象的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.…

SpringCloud gateway (史上最全)

目录 1.1 SpringCloud Gateway 简介 1.2 SpringCloud Gateway 特征 1.3 SpringCloud Gateway和架构 1.3.1 SpringCloud Zuul的IO模型 1.3.2 Webflux 服务器 1.3.3 Spring Cloud Gateway的处理流程 2 路由配置方式 2.1 基础URI路由配置方式 2.2 基于代码的路由配置方式 …

C++ :const修饰成员函数

常函数: 常函数: 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 属性可修改: class Person { public: void showPerson() …

外观设计模式

package com.jmj.pattern.facade;public class Light {public void on(){System.out.println("打开电灯...");}public void off(){System.out.println("关闭电灯...");} }package com.jmj.pattern.facade;public class AirCondition {public void on(){S…

2020年12月 Scratch(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 陶朱家开了一间小卖部,学了编程的他想编写一个程序帮助分析小卖部各种商品的售卖情况。如下图所示,目前各个商品的名称和销售量分别存在了两张列表里,一一对应,并且每一样商品的销…

Windows系统 TexWorks 显示“Font Monaco not found.“

先双击MONACO.ttf文件完成安装,还是不行用以下方法解决: 解决方法:将Monaco.ttf后缀(不一定非要这个格式的,可以自行尝试)的字体文件解压,复制进texlive文件夹下的路径,例如: C:\t…

【leetcode每日一题】565数组嵌套

思路流程: 思路v1.0 先学会写 s[0] ,用一个ans数组接收元素,每次往ans里添加的时候,先判断一下 这个index会不会超出数组的长度。ans里有没有这个元素。 s[0] 写完,就是用一个for循环,算出所有的 s[i],每次算出来的时…

Jmeter工具学习三——CSV文件、关联、断言

Jmeter学习三——CSV文件和关联 jmeter做功能测试和做性能测试的区别CSV数据文件设置(读取外部文件,进行分数据驱动)文件设置字段介绍:文件名文件编码如果出现编码问题导致的乱码,如何解决? 变量名忽略首行…
最新文章