毕业设计文献阅读--OmniPerson: Unified Identity-Preserving Pedestrian Generation
原文链接:OmniPerson: Unified Identity-Preserving Pedestrian Generation
主要贡献:
- 一个模型 (OmniPerson): 这是一个基于扩散模型(Diffusion Model)的统一生成框架。它能同时支持:
- 多参考图输入: 给出一组不同角度的照片,提取更稳固的身份特征。
- 多模态生成: 支持可见光(RGB)和红外(IR)图像及视频生成。
- 精细化控制: 可以通过姿态(2D骨架或3D模型)、背景图片、文字描述来共同引导生成。
- 一个核心组件 (Multi-Refer Fuser): 这是论文的技术精髓。通过“多参考融合器”,模型能从多张参考图中提取并聚合特征,确保生成的行人在任何角度下“看起来都是同一个人”。
- 一个大数据集 (PersonSyn): 作者构建并开源了一个大规模数据集,它将现有的 ReID 数据集重新标注,包含了丰富的姿态、属性、背景等稠密标注,专门用于训练这种可控的生成模型。(但是这点尚未公开)
核心组件——多特征融合器(Mutil-Refer Fuser)
这是论文的技术核心章节,解释了 OmniPerson 如何利用“多张参考图”来保证生成的行人始终是同一个人。
一、 核心生单词与术语
- Distill [dɪˈstɪl]:提炼/蒸馏。这里指从多张杂乱的照片中提取出最核心的身份特征。
- ReferenceNet:参考网络。这是作者设计的一个专门用来“看图”的网络,负责提取参考图特征。
- Concatenated [kɒnˈkætəneɪtɪd]:拼接/串联。在深度学习中,指把两个矩阵连在一起(比如把两张图的特征叠在一起)。
- Channel-wise Attention:通道注意力。一种机制,让模型自动判断哪些特征通道(channel)重要,哪些不重要。
- Salient [ˈseɪliənt]:显著的/突出的。指图片中最显眼的特征(如衣服上独特的Logo)。
- MLP (Multi-Layer Perceptron):多层感知机。一种简单的神经网络结构,这里用来计算权重。
- Key-Value Set:键-值对。在 Attention(注意力)机制中,Query(查询)去匹配 Key(键),然后取出 Value(值)。
二、 分段翻译与深度解析
第一部分:为什么要搞“多参考融合”?(Motivation)
【原文翻译】
4.2. 用于身份保持的多参考融合 (Multi-Refer Fusion)
ReID 的有意义数据增强要求合成的行人在姿态和视角上具有显著的变化。这项任务本质上具有挑战性,因为单张参考图像只能提供一个人外观的不完整、依赖于视角的快照,通常会导致生成过程中的身份偏移。我们的方法通过引入一种机制来克服这一限制:即从一个人的一整套可用参考图像中提炼出一个完整且稳健的身份表示。
【通俗解读】
- 痛点:如果你只给 AI 一张侧面照,让它画正面,它不知道这人正脸长啥样,只能瞎猜(身份偏移)。
- 解法:我们不只给一张,而是给一叠照片(有正面、背面、侧面)。模型需要把这些照片的信息“融合”起来,拼凑出这个人的全貌。
第二部分:特征提取网络 (ReferenceNet)
【原文翻译】
融合过程始于将 $N(N \ge 1)$ 张参考图像输入到一个 ReferenceNet 中。为了确保特征空间的兼容性,该网络与去噪 U-Net [18] 共享架构和权重。虽然 ReferenceNet 拥有完整的编码器-解码器结构,但为了平衡计算效率和采样质量,仿照 [54] 的做法,我们选择性地仅从其三个下采样编码器块和中间块中提取特征。
每个 U-Net 块由用于空间特征提取的自注意力层(Self-Attention)和用于整合语义信息的交叉注意力层(Cross-Attention)组成。为了隔离纯视觉信息,我们禁用交叉注意力机制,仅收集每个块中自注意力层的输出特征。这些特征充当了用于融合的多级行人表示。
【通俗解读】
- 怎么提取特征? 作者复制了一份主生成网络(U-Net),改名叫 ReferenceNet。
- 为什么复制? 因为它们结构一样,提取出来的特征才“门当户对”,方便后续融合。
- 怎么省算力? 不需要跑完整个网络,只取其中几层的输出就行。
- 为什么禁用 Cross-Attention? Cross-Attention 通常是用来处理文字(Text)和图片交互的。在这里,ReferenceNet 的任务只是单纯地“看懂图片”,不需要管文字,所以把那个功能关掉,只留下了看图的 Self-Attention。
第三部分:分层融合策略 (The Key Insight)
【原文翻译】
我们的核心洞察是,来自不同网络深度的特征代表了不同层次的抽象,因此受益于不同的融合策略。我们将这些特征分为两类,并在我们的 Multi-Refer Fuser 模块中相应地处理它们:
- 低层特征 (Low-Level Features):从早期阶段(down0, down1)提取,这些特征代表细粒度的视觉细节,如纹理、颜色和局部图案。
- 高层特征 (High-Level Features):从更深阶段(down2, mid)提取,这些特征编码了更抽象的、定义该人核心身份的语义信息。
【通俗解读】
- AI 也是分层次看图的:
- 浅层(低层):看的是“红色的”、“条纹的”、“棉质的”。
- 深层(高层):看的是“这是一个背着包的男人”、“他的体型是微胖的”。
- 作者决定:对这两类特征,要用两种不同的方法来融合。
第四部分:低层特征融合 —— 通道注意力 (Channel Attention)
【原文翻译】
通过通道注意力融合低层特征。对于低层特征,目标是从参考集中选择最显著的纹理和颜色信息。我们采用了一种通道注意力融合(Channel Attention Fusion)机制。对于给定的特征层(例如 down0),来自所有 $N$ 张参考图像的特征图被拼接(concatenated)在一起。为了捕获全局通道统计信息,我们沿空间维度同时应用平均池化和最大池化,并使用多层感知机(MLP)处理生成的描述符,以计算一个共享的通道注意力向量。该向量经过 Sigmoid 函数处理后,为每个通道分配一个重要性分数,有效地放大包含信息的特征(例如独特的服装图案)并抑制不太有用的特征。最后,在参考图像维度上执行掩码平均操作,以生成单个稳健融合的低层特征图。
【通俗解读】
- 原理:低层特征主要是颜色和纹理。比如有 3 张图,其中 2 张这人的衣服Logo被遮住了,只有 1 张能看清 Logo。
- 做法:
- 把 3 张图的特征叠在一起。
- 用一个打分器(MLP)去看每一个通道(Channel),判断哪个通道的信息最有用(比如那个包含清晰 Logo 纹理的通道)。
- 给有用的通道打高分(Amplifying),没用的打低分(Suppressing)。
- 最后取平均值,得到一张“集大成”的纹理特征图。
第五部分:高层特征融合 —— 自注意力 (Self-Attention)
【原文翻译】
通过自注意力融合高层特征。对于高层特征,关键是理解跨多个视角的语义部分之间的上下文关系。为此,我们采用自注意力融合(Self-Attention Fusion)机制。对于给定的深层特征层(例如 mid),来自所有参考图像的特征 Token 被拼接成一个序列。然后对该序列应用标准的多头自注意力,允许每个特征 Token 关注每一个其他 Token,无论它来自哪张原始图像。这使得模型能够识别并聚合最具代表性的身份定义特征。例如,清晰的面部正面视图可以为侧面视图的特征提供信息。
对参考图像维度的平均操作产生了最终的融合语义特征图。
【通俗解读】
- 原理:高层特征是关于“结构”和“身份”的。
- 做法:把所有参考图切成小块(Token),混在一起开会。
- 效果:
- 假设要生成侧脸。模型在画侧脸时,会通过自注意力机制去“看”那张正脸参考图里的眼睛和鼻子信息。
- “Attention”(注意力)在这里的作用就是:哪怕我在处理图 A,我也可以参考图 B、图 C 里的信息来补全我对这个人的理解。
第六部分:注入主网络 (Injection)
【原文翻译】
最后,来自 RefFuser 的一组融合后的多级特征被整合到每个 Transformer 块的注意力计算中:去噪 U-Net 的自注意力模块用融合后的参考特征扩充其键-值(Key-Value)集合,使模型能够执行跨实例注意力(cross-instance attention)。
通过这种机制,我们提取并融合了多级身份特征,然后将其注入去噪 U-Net,为行人的外观提供了丰富而全面的表示。
【通俗解读】
- 怎么用这些特征?
- 融合好的特征(包含了完美的纹理和完美的结构)被打包。
- 在主生成模型(去噪 U-Net)画图的时候,每画一步,都会查阅这个“特征包”(作为 Key 和 Value)。
- 这就像画家在画画时,旁边贴了一张完美的合成参考图,画家每画一笔都要看一眼那张图,确保画出来的人是对的。
总结
这一节的技术核心在于“分而治之”:
- 浅层(纹理颜色)用 Channel Attention:挑出最清晰的纹理通道,过滤掉模糊的。
- 深层(结构身份)用 Self-Attention:把正面、侧面、背面的信息打通,互补盲区,形成完整的 3D 身份理解。
这种设计确保了 OmniPerson 即使输入几张角度刁钻的参考图,也能拼凑出完美的身份信息,而不会像以前的模型那样“由于看不见所以瞎编”。
OmniPerson管线
整体框架
4.1 统一生成框架
我们的方法建立在潜空间扩散模型(LDM)之上,它能在一个高效的潜空间中合成图像 $x$。LDM 采用一个去噪 U-Net(记为 $\epsilon_\theta$),在条件 $c$ 的引导下,通过迭代逐步逆转扩散过程。该过程将一个随机噪声向量 $z_t$ 转化为清晰的潜空间表示 $z_0$,随后由 VAE 解码器 $x = D(z_0)$ 将其渲染成高分辨率图像。
虽然先前的行人合成研究通常依赖有限的引导信息(通常是文本提示词,或者是单张参考图结合姿态控制),但这些方法不足以实现对行人的整体身份、姿态、背景及模态所要求的结构化、细粒度控制。
因此,我们的核心贡献是用一个专门为行人生成设计的统一、多维调节框架来取代这种单一的控制条件。如图 4 所示,该框架由一套不同的控制信号引导:
- 一组用于确定身份的 $N$ 张多视角参考图。
- 一个目标姿态表示(骨架或 SMPL-X 模型)。
- 一个背景场景(可选)。
- 一个指定模态的文本描述符。
生成流水线的运作流程如下:首先,多视角参考图像由我们专门的 Multi-Ref Fuser 模块(见 4.2 节)处理,以获得一个稳健的身份嵌入向量 $c{id}$。同时,其他的调节输入由各自的编码器进行编码,产生姿态嵌入 ($c{pose}$)、背景嵌入 ($c{bg}$) 和文本嵌入 ($c{text}$),详见 4.3 节。这些嵌入向量被共同整合到去噪 U-Net 中,引导扩散过程将随机噪声 $z_t$ 转化为一个结构化的潜码 $z_0$,使其与所有输入条件保持连贯一致。
5421
身份引导的补充 (Identity Guidance via CLIP-ReID)
标准的 ReID 特征虽然对于 ReID 任务来说可能比较“弱”(因为它不够纯粹),但对我们的目的来说却完美适配。这是因为 ReID 特征本质上纠缠(entangled)了相机域信息和高层行人语义——这正是将合成图像“落地”到所需语境中所需的信息。
因此,我们使用预训练的 CLIP-ReID 模型提取 ReID 特征。该特征与文本嵌入一起,作为 Key(键)和 Value(值) 用于去噪 U-Net 的交叉注意力层,从而引导目标行人的生成。
2. 姿态与背景引导 (Pose and Background Guidance)
姿态和背景引导:为了控制人物的结构和周围场景,我们使用了专门的空间编码器。
- 姿态编码器 (Pose Encoder):提供结构引导。它设计灵活,既能处理 2D 骨架关键点,也能处理渲染的 3D 网格图像。编码器由四个卷积块组成。
- 背景编码器 (Background Encoder):为了显式控制环境,使用一个架构相同的背景编码器处理所需背景图像,生成捕获场景特征的空间嵌入 $E_{bg}$。
这两个空间嵌入首先通过逐元素相加 (Element-wise addition) 合并为一个统一的引导图:$E{spatial} = E{pose} + E_{bg}$,然后直接加到进入 U-Net 之前的噪声潜变量 $z_t$ 上。
文本与模态控制 (Text-based Attribute and Modality Control)
基于文本的属性和模态控制:OmniPerson 还支持通过自然语言进行语义控制。我们构建一个文本描述符,结合 PersonSyn 数据集中的丰富属性(如“一个穿蓝夹克的人”)与所需模态(如“可见光照片”)。这个提示词被送入冻结的 CLIP 文本编码器,生成语义嵌入 $E_{text}$。该嵌入通过标准的交叉注意力机制集成到去噪 U-Net 中。
视频生成的时间连贯性 (Temporal Coherence)
视频合成的时间连贯性:为了将 OmniPerson 从图像扩展到视频合成,跟随 [18] AnimateAnyone 的方法,我们在 U-Net 中集成了一个时间连贯模块。该模块由添加到每个 UNet 块的时间注意力层组成。
当生成当前帧时,其中间特征作为 Query(查询),而前一生成帧的对应特征作为 Key 和 Value。为了生成具有连续姿态变换的视频……我们构建了一系列中间姿态来引导合成过程。
训练目标 (Training Objective)
在训练期间,我们采用无分类器引导 (Classifier-free guidance),即随机丢弃条件,以增强推理时的可控性。







