AnyDoor任意门:零样本物体级图像定制化

文章目录

  • 一、AnyDoor简介
  • 二、AnyDoor方法
    • (一)ID特征提取
    • (二)细节特征提取
    • (三)特征注入
    • (四)视频、图像动态采样


一、AnyDoor简介

  1. “任意门”算法:可以将任意目标传送到指定场景的指定位置,无需微调,便捷生成高质量、高保真的合成图像。被传送的目标会自动对新的场景进行姿态、角度、动作等方面的调整,确保生成图像的多样性以及和谐度。
  2. 该算法可以完成多种图像生成或编辑任务如:图像定制化,多目标组合,虚拟试衣;同时,经过简单拓展,任意门算法可以完成更多神奇的应用比如物体移动、换位等。

二、AnyDoor方法

  • 核心思想: 将目标表征成“ID相关”和“细节相关”的特征,然后将他们组合到与背景场景的交互中。
  • 算法流程:
    1. 给定一张目标图,使用分割模型对该图进行背景去除;
    1. 用ID extractor进行ID特征提取;同时使用高频滤波器提取参考图的高频细节分类,将该高频图拼贴到背景图的指定位置,送入Detail extractor进行细节提取;
    1. 将提取的ID特征和细节特征注入预训练的文生图大模型以控制最终的生成结果。

在这里插入图片描述

(一)ID特征提取

首先通过一个分割模块去除目标物体的背景,然后使用DINO-V2模型提取物体的身份信息。

  • Segmentor:去除背景,并将对象对齐到图像中心
  • ID Extractor: DINO-V2 作为 ID 提取器的Backbone,使用单个线性层将 ID 提取器的 token 对齐到预训练的文本到图像的 UNet 中。

以往使用的CLIP 的训练数据是粗略描述的文本图像对,只能嵌入语义级别的信息,而难以保留有区分度的对象身份表示;DINO-V2是一种强大的自监督模型,在保留高辨别度特征方面,自监督模型展现了更强大的能力。

在这里插入图片描述

(二)细节特征提取

提出了一种频率感知的细节特征提取器,用于提取目标物体的高频细节信息。

  • 防止生成的图像和参考图过于相似:提取参考图中的高频分量用于表达细节特征
  • 将高频分量图和背景图拼贴在一起,用Detail extractor提取一组不同尺度的特征图送入U-Net进行监督

在这里插入图片描述

(三)特征注入

核心就是通过交叉注意力机制,将物体特征引入到Unet的生成过程中:

  • 使用Stable Diffusion作为backbone,将ID特征通过cross-attention注入Stable Diffusion的每一层;
  • 同时我们将细节特征和UNet decoder的特征进行concat融合。
  • 在训练过程中,我们将UNet Encoder的参数固定,对Decoder参数进行微调。
    在这里插入图片描述

(四)视频、图像动态采样

为了学习“同一个目标在不同场景的外观变化”,收集了大量图像视频数据进行联合训练

  • 对于视频数据,使用分割以及跟踪标注构造样本对;
  • 对于静态图像,对图像进行扩充构造样本对。
    在这里插入图片描述

该方式构造的数据面临一个问题:视频样本有很高的多样性,但是画质模糊;图像样本画质清晰,但是不能很好的建模目标的姿态、动作变化。由此我们提出动态采样的方法:

    1. 去噪训练的初始阶段更多的采样视频样本,由此学习更大幅度的外观变化;
    1. 去噪的后期更多的采样静态图像,以学习更好的细节重建能力。

参考:
任意门:零样本物体级图像定制化
再也不怕合照缺人,Anydoor为图片编辑开了一道「任意门」
【AIGC实践篇4】:来自阿里的AnyDoor模型开源,图像工业应用侧的大利好,任意物体放入任意场景。

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

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

相关文章

Java SPI机制总结系列之开发入门实例

原创/朱季谦 在该文章正式开始前,先对 Java SPI是什么做一个简单的介绍。 SPI,是Service Provider Interface的缩写,即服务提供者接口,单从字面上看比较抽象,你可以理解成,该机制就像Spring容器一样&…

Python之Matplotlib绘图调节清晰度

Python之Matplotlib绘图调节清晰度 文章目录 Python之Matplotlib绘图调节清晰度引言解决方案dpi是什么?效果展示总结 引言 使用python中的matplotlib.pyplot绘图的时候,如果将图片显示出来,或者另存为图片,常常会出现清晰度不够的…

【JAVA】在 Queue 中 poll()和 remove()有什么区别

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 poll() 方法: remove() 方法: 区别总结: 结语 我的其他博客 前言 在Java的Queue接口中&…

强化学习应用(六):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

day-09 删除排序链表中的重复元素

思路 从前往后遍历链表,当当前节点的值与下一个节点值相等时,删除下一节点;否则向后移动一个节点,继续遍历 解题方法 while(p!null&&p.next!null){ if(p.next.valp.val)p.nextp.next.next;//当前节点的值与下一个节点值相…

鸿蒙Harmony-层叠布局(Stack)详解

我们总是为了太多遥不可及的东西去拼命,却忘了人生真正的幸福不过是灯火阑珊处的温暖,柴米油盐的充实,人生无论你赚的钱,是多还是少,经历的事情是好还是坏,都不如过好当下的每一天! 目录 一&am…

初始化数组

一、静态初始化格式: 数据类型[ ] 数组名 new 数据类型[ ]{元素1,元素2,元素3......} 等号后面的new 数据类型可以省略 注意:什么类型的数组只能存放什么类型的数据 直接打印a或b会显示其地址 数组的元素个数:arr…

C# 基础入门

第二章 C# 语法基础 2-1 C# 中的关键字 关键字,是一些被C#规定了用途的重要单词。 在Visual Studio的开发环境中,关键字被标识为蓝色,下图代码中,用红方框圈出的单词就是关键字。 关键字 class ,这个关键字的用途是…

Linux下编写zlg7290驱动(1)

大家好,今天给大家介绍Linux下编写zlg7290驱动(1),文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 在智能仪表中,经常会用到键盘、数码管等外设。因此&…

【Java语言基础②】Java基本语法——Java程序基本格式,注释,标识符,常量

通过前面的学习,大家对Java语言有了一个基础认识,但现在还无法使用Java语言编写程序,要熟练使用Java语言编写程序,必须充分掌握Java语言的基础知识。今天咱们就来聊一聊Java的基本语法。 1.java程序的基本格式 Java程序代码必须…

Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

文章目录 一、实战概述二、实战步骤(一)创建数据库(二)创建用户表(三)后端项目引入数据库1、添加相关依赖2、用户实体类保持不变3、编写应用配置文件4、创建用户映射器接口5、创建用户服务类6、修改登录控制…

NLP论文阅读记录 - 2021 | WOS 使用深度强化学习及其他技术进行自动文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1. Seq2seq 模型2.2.强化学习和序列生成2.3.自动文本摘要 三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Auto…

Java:常见算法

认识算法 什么是算法? 解决某个实际问题的过程和方法 学习算法的技巧 先搞清楚算法的流程直接去推敲如何写代码 排序算法 冒泡排序 每次从数组中找出最大值放在数组的后面去。 实现冒泡排序的关键步骤分析 确认总共需要做几轮:数组的长度-1每轮比较…

【java】创建打印数组的方法并调用

java的数组和Python不一样,不能直接用print打印,而如果每次都用循环的方法,比较麻烦,就直接创建一个类&方法,每次用的时候直接调用。 public class list_deal {public static void printArray(int[] arr){for (in…

Python实现对角但非同一性协方差结构回归模型(WLS算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 WLS回归分析是一种常用的回归分析方法,通过对数据进行加权处理,可以更准确地评…

VSCode编写 C/C++ 程序

VSCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,并…

Day02

今日任务: 977 有序数组的平方209 长度最小的子数组59 螺旋矩阵Ⅱ 977 有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 双指针问题,以及数组本身时有序的; 思路: 左、右两个…

SG-8101CGA 系列 (晶体振荡器 可编程 可用 +125°C )

SG-8101CGA是可编程晶体振荡器,具有CMOS输出,适用于汽车,同时,该系列还提供相同的频率和其他参数的轻松编程能力,符合AEC-Q100标准,具有出色的电磁兼容性和稳定性,可以在各种环境下使用。外部尺…

Linux的DHCP工作原理和dns服务器

目录 一、DHCP原理 1.DHCP的好处 2.DHCP的分配方式 3.实验 二、dns服务器 1.什么是dns 2.dns域名解析 3、在内网搭建dns 一、DHCP原理 DCHP工作原理使用C/S架构 (1)第一步,客户端广播发送一个discover报文寻找DHCP服务器。 &#…