W
WithAnyone/MultiID-2M
数据集数据集查看器文件和版本
下载使用量0

MultiID-2M

arXiv 项目页面 HuggingFace 模型 HuggingFace 数据集 MultiID-Bench GitHub 代码

WithAnyone 演示效果

本仓库包含MultiID-2M数据集,这是一个大规模配对数据集,专门为多人场景下的身份一致性图像生成构建。它为每个身份提供了多样化的参考样本,支持开发如WithAnyone等先进的基于扩散模型,旨在减轻“复制粘贴”伪影,并提升生成图像中姿态和表情的可控性。

  • 论文: WithAnyone: Towards Controllable and ID Consistent Image Generation
  • 代码: https://github.com/Doby-Xu/WithAnyone
  • 项目页面: https://doby-xu.github.io/WithAnyone/

论文摘要

论文摘要如下:

身份一致性生成已成为文本到图像研究的重要焦点,近期模型在生成与参考身份一致的图像方面取得了显著成功。然而,包含同一人多张图像的大规模配对数据集的稀缺性,迫使大多数方法采用基于重建的训练方式。这种依赖常常导致一种我们称之为“复制粘贴”的失效模式,即模型直接复制参考人脸,而非在姿态、表情或光照等自然变化中保持身份一致性。这种过度相似性削弱了可控性,并限制了生成的表现力。为解决这些限制,我们(1)构建了大规模配对数据集MultiID-2M,专为多人场景设计,为每个身份提供多样化参考;(2)引入了一个基准,用于量化“复制粘贴”伪影以及身份保真度与变化性之间的权衡;(3)提出了一种新的训练范式,结合对比身份损失,利用配对数据平衡保真度与多样性。这些贡献最终形成了WithAnyone——一个基于扩散的模型,能有效减轻“复制粘贴”问题,同时保持高身份相似度。大量定性和定量实验表明,WithAnyone显著减少了“复制粘贴”伪影,提升了对姿态和表情的可控性,并保持了良好的感知质量。用户研究进一步验证,我们的方法在实现高身份保真度的同时,支持富有表现力的可控生成。

下载

目前,可下载 100 万张图像及其元数据。

HuggingFace 数据集

文件结构

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 演示

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)。您需要提供这些边界框以指示面部位置。您可以通过以下两种方式提供面部边界框:

  1. 在“Mask Configuration (Option 1: Automatic)”中上传一张包含所需面部位置的示例图片。面部边界框将被自动提取,并且生成的面部将位于相同位置。即使提供的图片分辨率或宽高比不同也无需担心,面部边界框会相应地进行调整。
  2. 在“Mask Configuration (Option 2: Manual)”中直接输入面部边界框。格式为每个面部对应 x1,y1,x2,y2,每行一个。
  3. (不推荐)两个选项都留空,此时面部边界框将从预定义集合中随机选择。

⭕ 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 文件。

使用 FLUX.1 Kontext 进行人脸编辑

您可以使用 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"

许可与免责声明

本数据集仅用于非商业学术研究目的。访问或使用本数据集即表示您同意许可协议中的条款。

  • 无所有权声明:本项目不对数据集中包含的原始图像、元数据或其他内容主张所有权。版权及其他权利归原始权利持有人所有。
  • 用户责任:用户有责任确保其对数据集的使用符合所有适用法律、法规和第三方条款(包括平台政策)。
  • 下架/更正请求:如果权利持有人认为数据集中的内容侵犯了其权利,请通过HuggingFace数据集页面或项目页面提交移除或更正请求,并提供充分的所有权证明以及具体的标识符/URL。在验证有效主张后,我们将尽快移除或更正受影响的内容。
  • 无担保;责任限制:本数据集按“原样”提供,不提供任何形式的担保。本项目及维护者对因使用本数据集而产生的任何直接、间接、偶然或 consequential 损害不承担责任。
  • 禁止商业使用:除非获得数据集维护者的单独许可,否则禁止商业使用;未经授权的商业使用可能导致法律责任。
  • 联系方式:使用HuggingFace数据集页面或项目网站提交请求或问题。