本仓库包含MultiID-2M数据集,这是一个大规模配对数据集,专门为多人场景下的身份一致性图像生成构建。它为每个身份提供了多样化的参考样本,支持开发如WithAnyone等先进的基于扩散模型,旨在减轻“复制粘贴”伪影,并提升生成图像中姿态和表情的可控性。
论文摘要如下:
身份一致性生成已成为文本到图像研究的重要焦点,近期模型在生成与参考身份一致的图像方面取得了显著成功。然而,包含同一人多张图像的大规模配对数据集的稀缺性,迫使大多数方法采用基于重建的训练方式。这种依赖常常导致一种我们称之为“复制粘贴”的失效模式,即模型直接复制参考人脸,而非在姿态、表情或光照等自然变化中保持身份一致性。这种过度相似性削弱了可控性,并限制了生成的表现力。为解决这些限制,我们(1)构建了大规模配对数据集MultiID-2M,专为多人场景设计,为每个身份提供多样化参考;(2)引入了一个基准,用于量化“复制粘贴”伪影以及身份保真度与变化性之间的权衡;(3)提出了一种新的训练范式,结合对比身份损失,利用配对数据平衡保真度与多样性。这些贡献最终形成了WithAnyone——一个基于扩散的模型,能有效减轻“复制粘贴”问题,同时保持高身份相似度。大量定性和定量实验表明,WithAnyone显著减少了“复制粘贴”伪影,提升了对姿态和表情的可控性,并保持了良好的感知质量。用户研究进一步验证,我们的方法在实现高身份保真度的同时,支持富有表现力的可控生成。
![]() | ![]() |
|---|
目前,可下载 100 万张图像及其元数据。
MultiID-2M/
├── ref/
│ ├── cluster_centers.tar
│ └── tars/ # reference tars
│ ├── ...
│
├── train_rec/ # reconstruction training data
│ ├── re_000000.tar
│ ├── re_000001.tar
│ └── ...
│
└── train_cp/ # identifiable paired data
├── re_000000.tar
├── re_000001.tar
└── ...ref/cluster_centers.tar:包含数据集中所有可识别身份的聚类中心。ref/tars:包含每个可识别身份的参考图像。train_cp:仅包含可识别身份的训练图像。train_rec:包含可识别和不可识别身份的训练图像。数据集为每张图像提供了密集标签,包括:
url:原始图像的原始 URL。ram_score:来自“万物识别”模型的分数。bboxes:检测到的人脸边界框。aesthetics_score:图像的美学分数。caption_en:由视觉语言模型(VLM)生成的英文描述。name:可识别身份的 ID 编号(若可识别,则为该编号;否则为 none)。embeddings(或 embedding):使用 ArcFace antelopev2 模型提取的人脸嵌入向量。此向量与边界框相对应。本节提供了快速上手 WithAnyone 模型的说明,该模型可使用此数据集进行训练。
使用 pip install -r requirements.txt 安装必要的软件包。
Gradio GUI 演示是体验 WithAnyone 的便捷起点。运行以下命令启动演示:
python gradio_app.py --flux_path <path to flux1-dev directory> --ipa_path <path to withanyone directory> \
--clip_path <path to clip-vit-large-patch14> \
--t5_path <path to xflux_text_encoders> \
--siglip_path <path to siglip-base-patch16-256-i18n> \
--model_type "flux-dev" # or "flux-kontext" for WithAnyone.K❗ WithAnyone 需要面部边界框(bboxes)。您需要提供这些边界框以指示面部位置。您可以通过以下两种方式提供面部边界框:
x1,y1,x2,y2,每行一个。⭕ WithAnyone 与 LoRA 配合使用效果良好。如果您有任何风格化的 LoRA 检查点,在启动演示时使用 --additional_lora_ckpt <path to lora checkpoint>。LoRA 将被合并到扩散模型中。
python gradio_app.py --flux_path <path to flux1-dev directory> --ipa_path <path to withanyone directory> \
--additional_lora_ckpt <path to lora checkpoint> \
--lora_scale 0.8 # adjust the weight as needed您可以使用 infer_withanyone.py 进行批量推理。该脚本支持通过 MultiID-Bench 生成多张图像。
首先,请下载 MultiID-Bench:
huggingface-cli download WithAnyone/MultiID-Bench --repo-type dataset --local-dir <path to MultiID-Bench directory>使用 MultiID_Bench/parquet2bench.py 将 parquet 文件转换为一个图像文件夹和一个 json 文件:
python MultiID_Bench/parquet2bench.py --parquet <path to parquet file> --output_dir <path to output directory>您将获得一个具有以下结构的文件夹:
<output_dir>/
├── p1/untar
├── p2/untar
├── p3/
├── p1.json
├── p2.json
└── p3.json然后使用以下命令运行批量推理:
python infer_withanyone.py \
--eval_json_path <path to MultiID-Bench subset json> \
--data_root <path to MultiID-Bench subset images> \
--save_path <path to save results> \
--use_matting True \ # set to True when siglip_weight > 0.0
--siglip_weight 0.0 \ # Resemblance in Spirit vs Resemblance in Form, higher means more similar to reference
--id_weight 1.0 \ # usually, set it to 1 - id_weight, higher means more controllable
--t5_path <path to xflux_text_encoders> \
--clip_path <path to clip-vit-large-patch14> \
--ipa_path <path to withanyone> \
--flux_path <path to flux1-dev>其中,data_root 应设置为 p1/untar、p2/untar 或 p3/,具体取决于您要评估的子集。eval_json_path 应是从 parquet 文件转换而来的对应 json 文件。
您可以使用 gradio_edit.py,结合 FLUX.1 Kontext 和 WithAnyone.Ke 进行人脸编辑。
python gradio_edit.py --flux_path <path to flux1-dev directory> --ipa_path <path to withanyone directory> \
--clip_path <path to clip-vit-large-patch14> \
--t5_path <path to xflux_text_encoders> \
--siglip_path <path to siglip-base-patch16-256-i18n> \
--model_type "flux-kontext"本数据集仅用于非商业学术研究目的。访问或使用本数据集即表示您同意许可协议中的条款。