Arc2Face
Arc2Face 是一款专注于生成身份一致人脸图像的开源基础模型。它只需输入一张人脸的 ArcFace 特征向量,就能在几秒钟内合成出该人物的高质量图像,且无需针对特定人物进行额外的模型微调。
这一工具主要解决了现有 AI 绘图技术在“保持人物身份一致性”上的痛点。传统方法往往需要繁琐的训练过程才能固定角色形象,而 Arc2Face 基于大规模的 WebFace42M 数据集训练,能够更精准地锁定人物身份特征,即使在生成不同姿态或表情时,也能确保“长得像同一个人”。
Arc2Face 特别适合研究人员、开发者以及需要批量生成特定角色素材的设计师使用。对于普通用户,它也提供了便捷的 Hugging Face 在线演示,无需复杂配置即可体验。
其技术亮点在于直接构建于流行的 Stable Diffusion 架构之上,具备极强的扩展性。它不仅支持结合 ControlNet 实现精确的姿势控制,最新更新的“表情适配器”功能更能通过混合形状引导扩散模型,生成包括极端、不对称在内的各种精细面部表情。此外,项目还集成了 LCM-LoRA 加速技术,显著提升了推理速度,让实时生成成为可能。
使用场景
某独立游戏开发团队正在为一款叙事驱动的角色扮演游戏制作大量具有特定主角面孔的过场动画,需要确保角色在不同表情和姿态下身份特征高度一致。
没有 Arc2Face 时
- 身份一致性难以维持:传统生成模型在改变角色表情或角度时,极易导致面部特征漂移,主角看起来像不同的人,破坏剧情沉浸感。
- 微调成本高昂:为了让模型记住特定角色,团队需对每个角色进行耗时的 DreamBooth 微调,且显存占用大,迭代一次需数小时。
- 极端表情生成失败:面对剧本中要求的夸张大笑或微妙苦笑等罕见表情,现有工具往往生成僵硬扭曲的面孔,无法精准控制肌肉运动。
- 工作流割裂:调整姿态需依赖额外的 ControlNet 插件手动对齐,而保持 ID 又需单独训练 LoRA,流程繁琐且容易出错。
使用 Arc2Face 后
- 零样本 ID 锁定:仅需输入一张主角参考图的 ArcFace 嵌入向量,Arc2Face 即可在几秒钟内生成该角色在任何场景下的高清图像,身份特征完美复刻。
- 无需训练即时可用:作为基础模型,Arc2Face 免去了针对每个角色的微调过程,开发人员可瞬间切换不同角色进行批量素材生产。
- 精细表情操控:结合最新的 Blendshape-Guided 适配器,团队能精确生成从不对称挑眉到极度愤怒等复杂表情,同时严格保持人物身份不变。
- 一体化姿态控制:原生支持结合 ControlNet 进行姿态引导,开发者可在一个统一流程中同时解决“是谁”、“做什么动作”和“什么表情”三大难题。
Arc2Face 通过其强大的 ID 一致性基础能力与细粒度表情控制,将游戏角色资产的生产效率提升了数十倍,让单人开发者也能拥有电影级的角色表现力。
运行环境要求
- Linux
- Windows
- macOS
- 必需 NVIDIA GPU
- 代码示例中使用了 'CUDAExecutionProvider' 和 'torch_dtype=torch.float16',表明需要支持 CUDA 的 NVIDIA 显卡
- 显存需求未明确说明,但运行 Stable Diffusion v1.5 及 ControlNet/EMOCA 扩展通常建议 8GB 或以上
未说明

快速开始
🚀 新增(2025):基于Blendshape引导的扩散模型实现ID一致、精确的表情生成
📄 查看我们的最新扩展!
我们推出了一种细粒度的表情适配器,使Arc2Face能够根据任意面部表情生成任何主体图像(即使是罕见、不对称、细微或极端的表情)。详情请见下方。
Arc2Face:一个用于ID一致人脸的基础模型
Foivos Paraperas Papantoniou1 Alexandros Lattas1 Stylianos Moschoglou1
Jiankang Deng1 Bernhard Kainz1,2 Stefanos Zafeiriou1
1帝国理工学院,英国
2埃尔兰根-纽伦堡大学,德国
这是**Arc2Face**的官方实现,它是一个基于ID条件的人脸生成模型:
✅ 仅需提供ArcFace嵌入即可在几秒钟内生成高质量的任意主体图像
✅ 基于大规模WebFace42M数据集训练,相比现有模型具有更优的ID相似性
✅ 构建于Stable Diffusion之上,可扩展至不同输入模态,例如结合ControlNet
最新消息/更新
- [2025/10/07] 🔥 我们发布了用于准确且ID一致的面部表情迁移的扩展。详情请见下方!
- [2024/08/16] 🔥 被ECCV24接受为口头报告!
- [2024/08/06] 🔥 ComfyUI支持已在caleboleary/ComfyUI-Arc2Face中提供!
- [2024/04/12] 🔥 我们增加了LCM-LoRA支持,以实现更快的推理速度(详情请见下方)。
- [2024/04/11] 🔥 我们在HuggingFace Datasets上公开了训练数据集。
- [2024/03/31] 🔥 我们发布了使用Arc2Face + ControlNet进行姿态控制的演示(说明请见下方)。
- [2024/03/28] 🔥 我们在HuggingFace Spaces上发布了Gradio演示(感谢HuggingFace团队提供的免费GPU支持)!
- [2024/03/14] 🔥 我们正式发布Arc2Face。
安装
conda create -n arc2face python=3.10
conda activate arc2face
# 安装依赖
pip install -r requirements.txt
下载模型
- 模型可以从HuggingFace手动下载,也可以使用Python下载:
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="arc2face/config.json", local_dir="./models")
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="arc2face/diffusion_pytorch_model.safetensors", local_dir="./models")
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="encoder/config.json", local_dir="./models")
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="encoder/pytorch_model.bin", local_dir="./models")
对于人脸检测和ID嵌入提取,需手动下载antelopev2包(直接链接),并将检查点放置在
models/antelopev2目录下。我们使用基于WebFace42M训练的ArcFace识别模型。从HuggingFace下载
arcface.onnx并将其放入models/antelopev2目录,或使用Python下载:
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="arcface.onnx", local_dir="./models/antelopev2")
- 然后请删除
glintr100.onnx(insightface的默认骨干网络)。
最终的models文件夹结构应如下所示:
. ── models ──┌── antelopev2
├── arc2face
└── encoder
使用方法
使用diffusers加载管道:
from diffusers import (
StableDiffusionPipeline,
UNet2DConditionModel,
DPMSolverMultistepScheduler,
)
from arc2face import CLIPTextModelWrapper, project_face_embs
import torch
from insightface.app import FaceAnalysis
from PIL import Image
import numpy as np
# Arc2Face基于SD1.5构建
# 下面的仓库可以用来替代现已弃用的 'runwayml/stable-diffusion-v1-5'
base_model = 'stable-diffusion-v1-5/stable-diffusion-v1-5'
encoder = CLIPTextModelWrapper.from_pretrained(
'models', subfolder="encoder", torch_dtype=torch.float16
)
unet = UNet2DConditionModel.from_pretrained(
'models', subfolder="arc2face", torch_dtype=torch.float16
)
pipeline = StableDiffusionPipeline.from_pretrained(
base_model,
text_encoder=encoder,
unet=unet,
torch_dtype=torch.float16,
safety_checker=None
)
你可以使用任何与SD兼容的调度器和步数,就像使用Stable Diffusion一样。默认情况下,我们使用DPMSolverMultistepScheduler,设置25个步骤,只需几秒钟就能生成非常好的效果。
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)
pipeline = pipeline.to('cuda')
选择一张图片并提取ID嵌入:
app = FaceAnalysis(name='antelopev2', root='./', providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
img = np.array(Image.open('https://oss.gittoolsai.com/images/foivospar_Arc2Face_readme_a5f5eca82820.png'))[:,:,::-1]
faces = app.get(img)
faces = sorted(faces, key=lambda x:(x['bbox'][2]-x['bbox'][0])*(x['bbox'][3]-x['bbox'][1]))[-1] # 选择最大的人脸(如果检测到多张)
id_emb = torch.tensor(faces['embedding'], dtype=torch.float16)[None].cuda()
id_emb = id_emb/torch.norm(id_emb, dim=1, keepdim=True) # 归一化嵌入
id_emb = project_face_embs(pipeline, id_emb) # 通过编码器
生成图像:
num_images = 4
images = pipeline(prompt_embeds=id_emb, num_inference_steps=25, guidance_scale=3.0, num_images_per_prompt=num_images).images
LCM-LoRA 加速
LCM-LoRA 允许你将采样步骤减少到仅2-4步,实现超快速推理。只需插入针对SD v1.5预训练的蒸馏适配器,并切换到LCMScheduler:
from diffusers import LCMScheduler
pipeline.load_lora_weights("latent-consistency/lcm-lora-sdv1-5")
pipeline.scheduler = LCMScheduler.from_config(pipeline.scheduler.config)
然后,你可以使用最少2个步骤进行采样(并禁用guidance_scale,将其设置为1.0,因为LCM对此非常敏感,即使是较小的值也会导致过度饱和):
images = pipeline(prompt_embeds=id_emb, num_inference_steps=2, guidance_scale=1.0, num_images_per_prompt=num_images).images
请注意,这种技术虽然加快了采样速度,但会略微降低生成质量。
启动本地Gradio演示
你可以通过运行以下命令启动本地推理演示:
python gradio_demo/app.py
Arc2Face + ControlNet(姿态)
我们提供了一个基于Arc2Face训练的ControlNet模型,用于姿态控制。我们使用EMOCA来提取3D姿态。要运行我们的演示,请按照以下步骤操作:
1) 下载模型
可以从HuggingFace手动下载ControlNet检查点,或者使用Python下载:
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="controlnet/config.json", local_dir="./models")
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="controlnet/diffusion_pytorch_model.safetensors", local_dir="./models")
2) 拉取EMOCA
git submodule update --init external/emoca
3) 安装
这是最棘手的部分。你需要PyTorch3D才能运行EMOCA。由于其安装可能会引起冲突,我们建议按照以下步骤操作:
- 创建一个新的环境,首先安装支持GPU的PyTorch3D(请遵循官方说明)。
- 添加Arc2Face + EMOCA所需的依赖项:
pip install -r requirements_controlnet.txt
- 安装EMOCA代码:
pip install -e external/emoca
- 最后,你需要下载EMOCA/FLAME资源。运行以下命令并按照终端中的指示操作:
cd external/emoca/gdl_apps/EMOCA/demos
bash download_assets.sh
cd ../../../../..
4) 启动本地Gradio演示
你可以通过运行以下命令启动本地ControlNet演示:
python gradio_demo/app_controlnet.py
Arc2Face + 表情适配器
我们的扩展“基于Blendshape引导扩散的ID一致、精确表情生成”(http://arxiv.org/abs/2510.04706)将Arc2Face与自定义IP-Adapter结合,旨在根据FLAME blendshape参数生成具有精确表情控制且ID一致的图像。我们还提供一个可选的参考适配器,可用于直接以输入图像为条件生成输出,即在一定程度上保留主体的外观和背景。更多细节请参阅报告。
以下是运行方法:
1) 下载模型
可以从HuggingFace手动下载表情和参考适配器,或者使用Python下载:
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="exp_adapter/exp_adapter.bin", local_dir="./models")
hf_hub_download(repo_id="FoivosPar/Arc2Face", filename="ref_adapter/pytorch_lora_weights.safetensors", local_dir="./models")
2) 下载第三方模型(SMIRK)
我们使用SMIRK方法从目标图像中提取FLAME表情参数。下载所需的检查点face_landmarker.task和SMIRK_em1.pt,并将它们放入models/smirk目录下:
mkdir models/smirk
wget https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task --directory-prefix models/smirk
pip install gdown
gdown --id 1T65uEd9dVLHgVw5KiUYL66NUee-MCzoE -O models/smirk/
3) 启动本地Gradio演示
然后,只需运行演示并按照指示操作:
python gradio_demo/app_exp_adapter.py
测试数据
论文中用于比较的测试图像(Synth-500、AgeDB)可在这里获取。请仅将其用于评估目的,并在使用时务必引用相应的来源。
社区资源
复刻演示
- 演示链接由@camenduru提供。
ComfyUI
皮诺曹
- 皮诺曹 实现 由 @cocktailpeanut 提供(可在所有操作系统上本地运行——Windows、Mac 和 Linux)。
致谢
- 感谢 Stable Diffusion 的开发者以及 HuggingFace 的 diffusers 团队所做出的卓越工作 ❤️。
- 感谢 WebFace42M 的创建者提供了如此大规模的人脸数据集 ❤️。
- 感谢 HuggingFace 团队通过社区 GPU 赠款对我们演示项目的慷慨支持 ❤️。
- 我们还感谢弗里德里希-亚历山大大学埃尔兰根-纽伦堡分校(FAU)下属的埃尔兰根国家高性能计算中心(NHR@FAU)所提供的宝贵 HPC 资源,正是这些资源使得 Arc2Face 的训练成为可能。
引用
如果您在研究中使用了 Arc2Face,请考虑引用我们:
@inproceedings{paraperas2024arc2face,
title={Arc2Face: 用于身份一致人脸的基础模型},
author={帕拉佩拉斯·帕潘托尼乌,福伊沃斯;拉塔斯,亚历山德罗斯;莫斯霍格鲁,斯蒂利亚诺斯;邓建康;凯因茨,伯恩哈德;扎菲里乌,斯特法诺斯},
booktitle={欧洲计算机视觉大会(ECCV)论文集},
year={2024}
}
此外,如果您使用了表情适配器,请同时引用该扩展:
@inproceedings{paraperas2025arc2face_exp,
title={基于混合形状引导的扩散模型实现身份一致且精确的表情生成},
author={帕拉佩拉斯·帕潘托尼乌,福伊沃斯;扎菲里乌,斯特法诺斯},
booktitle={IEEE/CVF 国际计算机视觉会议(ICCV)研讨会论文集},
year={2025}
}
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器