资讯详情

资讯详情

StyleGAN-Human:面向全身人像生成的数据工程实战——SHHQ 数据集、训练、生成与编辑全流程

StyleGAN-Human面向全身人像生成的数据工程实战——SHHQ 数据集、训练、生成与编辑全流程【免费下载链接】DragGANOfficial Code for DragGAN (SIGGRAPH 2023)项目地址: https://gitcode.com/GitHub_Trending/dr/DragGANStyleGAN-Human 是一个以数据为中心data-centric视角研究无条件全身人像生成的开源项目隶属 DragGAN 仓库的stylegan_human/子目录。本文基于该目录下的 README 与 SHHQ 数据集说明完整覆盖环境搭建、SHHQ-1.0 数据集获取、StyleGAN2/3 训练、图像生成、插值、风格混合、真实图像对齐、PTI 反演与属性编辑的全流程命令与参数细节并结合仓库源码解析各脚本的底层实现帮助读者从零复现一套高保真人体生成与编辑流水线。研究视角为什么是数据工程而不是网络工程原论文的摘要指出已有研究大多聚焦于网络工程设计新组件与新目标函数而本项目反其道而行从数据工程角度系统研究了三个关键因素数据规模data size实验表明用原版 StyleGAN 训练高保真无条件人体生成模型需要超过40K张图像的大规模数据数据分布data distribution均衡的训练集能提升罕见人脸姿态下的生成质量相比长尾分布有明显优势但单纯均衡服装纹理分布并不能带来有效改善数据对齐data alignment以身体中心作为对齐锚点的人体 GAN 模型优于使用脸部中心或骨盆点作为锚点的模型。围绕这三点项目贡献了一个超过 23 万样本的全身人像数据集分版本释放、一个模型库model zoo、以及若干人体编辑应用脚本。SHHQ 数据集规模、来源与获取方式数据集详情记录在 Dataset.md 中SHHQ-1.0目前释放40K张图像分辨率1024 × 512即全身竖幅比例包含对齐后的原始图像与机器计算的人体分割掩码数据来源分两类一是通过官方 API 的爬虫从 Flickr、Pixabay、Pexels 等网络抓取使用时需满足 CC0、Pixabay License 与 Pexels License 等许可二是从摄影师、模特机构等数据供应商处购买并经法务团队审查确认可用于研究SHHQ-1.0 的组成为上述来源的图像 9991 张 DeepFashion 处理图仅保留全身图 1940 张来自 InFashAI 的非洲人像图像用于增加多样性。许可与协议要点数据仅面向非商业研究用途禁止复制、出售、转售或以任何商业目的利用数据及衍生数据禁止将数据向第三方分发同一组织内部副本除外。获取步骤依据 Dataset.md下载 数据释放协议仔细阅读并妥善填写、签署签名须为手写使用机构邮箱将签署后的表格发送给协议中列明的联系人主题标题为 SHHQ Dataset Release Agreement审核通过后官方会联系你提供数据集下载链接与解压密码。由于申请量大、需逐一审验等待时间可能较长。此外项目还提供了一个 100 张随机采样图像的预览包SHHQ-1.0_samples可从 Dataset.md 中的链接获取方便快速上手测试SHHQ-1.0若已下载训练脚本默认假设其放置在data/SHHQ-1.0/下。数据集还提供 bg_white.py 脚本可基于分割掩码将原图背景填白。Model Zoo预训练模型与 FID 指标README 给出了主模型库训练于论文完整数据集结构1024x512指标得分512x256指标得分StyleGAN1stylegan_human_v1_1024.pklfid50k3.79待发布--StyleGAN2stylegan_human_v2_1024.pklfid50k_full1.57stylegan_human_v2_512.pklfid50k_full1.97StyleGAN3待发布--stylegan_human_v3_512.pklfid50k_full2.54而在 Dataset.md 中还单独列出了仅用 SHHQ-1.040K训练的模型结构1024x512指标得分512x256指标得分StyleGAN2SHHQ-1.0_sg2_1024.pklfid50k_full3.56SHHQ-1.0_sg2_512.pklfid50k_full3.68下载所得的模型权重统一放置到pretrained_models/目录相对stylegan_human/。注意后文所有插值、风格混合、编辑示例均基于StyleGAN2 版本stylegan_human_v2_*.pkl若要使用 V1 或 V3 模型查看效果需要调整对应模型的加载方式。环境搭建系统要求代码基座来自 NVIDIA 官方的 stylegan (TensorFlow)、stylegan2-ada (PyTorch)、stylegan3 (PyTorch) 三个仓库官方测试环境为Python 3.8.5 PyTorch 1.9.1 CUDA 11.1。安装步骤conda env create -f environment.yml conda activate stylehuman # [可选] 仅当需要运行 StyleGAN1 时才需安装 tensorflow 1.x pip install nvidia-pyindex pip install nvidia-tensorflow[horovod] pip install nvidia-tensorboard1.15environment.yml 中固定了关键版本python3.8、pytorch1.9.1、cudatoolkit11.1、numpy1.20、pillow8.3.1并通过 pip 安装imgui、glfw、dlib、opencv-python、moviepy、imutils等依赖后者用于可视化窗口与图像对齐流程。常见坑若调用 CUDA 时出现版本冲突可以尝试临时清空LD_LIBRARY_PATH再运行LD_LIBRARY_PATH; python generate.py --outdirout/stylegan_human_v2_1024 --trunc1 --seeds1,3,5,7 \ --networkpretrained_models/stylegan_human_v2_1024.pkl --version 2训练为 SHHQ 定制的shhq配置训练脚本基于官方 stylegan1/2-ada/3 做了少量改动仓库中随附了修改后的 SG2 与 SG3 训练脚本SG1 未随附需用原始脚本替换文件。训练 StyleGAN2-adaSHHQ-1.0python train.py --outdirtraining_results/sg2/ --datadata/SHHQ-1.0/ \ --gpus8 --augnoaug --mirror1 --snap250 --cfgshhq --squareFalse从 sg2/train.py 源码可以看到两个 SHHQ 专属改动基础配置枚举中新增了shhq选项click.Choice([auto, stylegan2, paper256, paper512, paper1024, cifar, shhq])。其规格定义为kimg25000, map8, ramp0.05其余超参mb、mbstd、fmaps、lrate、gamma、ema与auto一样根据分辨率和 GPU 数量动态计算例如spec.mb max(min(gpus * min(4096 // res, 32), 64), gpus)即 8 卡 1024 分辨率下总 batch 为 32新增了--square选项True for square, False for rectangle以支持 SHHQ 的非方形 1024×512 数据。训练 StyleGAN3SHHQ-1.0python train.py --outdirtraining_results/sg3/ --cfgstylegan3-r --gpus8 --batch32 --gamma12.4 \ --datadata/SHHQ-1.0/ --squareFalse --snap250从 sg3/train.py 可见SG3 的--cfg取值为stylegan3-t / stylegan3-r / stylegan2当选择stylegan3-r时源码会将卷积核改为 1×1conv_kernel 1并将channel_base、channel_max翻倍即论文中的StyleGAN3-R变体。使用预训练模型生成全身人像generate.py 同时支持 TensorFlow 版的 StyleGAN1 与 PyTorch 版的 StyleGAN2/3# 无截断truncation1生成 python generate.py --outdiroutputs/generate/stylegan_human_v2_1024 --trunc1 --seeds1,3,5,7 \ --networkpretrained_models/stylegan_human_v2_1024.pkl --version 2 # 带截断truncation0.8生成 python generate.py --outdiroutputs/generate/stylegan_human_v2_1024 --trunc0.8 --seeds0-10 \ --networkpretrained_models/stylegan_human_v2_1024.pkl --version 2 # StyleGAN V1 生成 python generate.py --outdiroutputs/generate/stylegan_human_v1_1024 --networkpretrained_models/stylegan_human_v1_1024.pkl --version 1 --seeds1,3,5 # StyleGAN V3 生成 python generate.py --outdiroutputs/generate/stylegan_human_v3_512 --networkpretrained_models/stylegan_human_v3_512.pkl --version 3 --seeds1,3,5从源码实现看generate.py--version 1走legacy.load_pkl加载 TF 图因此需要 tensorflow 1.x 环境V2/V3 则从 pickle 中取出G_ema在 GPU 上以float64精度执行 mapping synthesisG.mapping(z, label, truncation_psi)后G.synthesis(w, noise_mode...)--noise-mode可取const默认/random/none。--seeds支持1,3,5这种逗号列表与0-10这种范围写法输出为outdir/seed0001.png形式的逐图 PNG。潜码插值python interpolation.py --networkpretrained_models/stylegan_human_v2_1024.pkl --seeds85,100 --outdiroutputs/inter_gifs该脚本对指定两个种子的潜码做插值并输出 GIF可用于观察模型在潜空间中的平滑度。风格混合Style Mixing图像风格混合python style_mixing.py --networkpretrained_models/stylegan_human_v2_1024.pkl \ --rows85,100,75,458,1500 --cols55,821,1789,293 --styles0-3 --outdiroutputs/stylemixing--rows作为底图的行种子列表--cols提供风格列的种子列表--styles混合所涉及的 style 通道范围StyleGAN 合成网络中逐层的风格注入位置。视频风格混合python stylemixing_video.py --networkpretrained_models/stylegan_human_v2_1024.pkl --row-seed3859 \ --col-seeds3098,31759,3791 --col-styles8-12 --trunc0.8 --outdiroutputs/stylemixing_video视频版混合固定一行的行种子让不同列种子的指定 style 通道--col-styles随时间变化从而生成换装/换纹理式的视频例如对 8-12 层做混合通常对应服装纹理变化。真实图像对齐AlignmentSHHQ 数据的核心工程之一是对齐把任意原始全身照裁剪、补边、缩放为 1024×512 的标准画布且保证人物以身体中心水平居中。alignment.py 实现了该流程人体关键点检测使用openpose-pytorchopenpose/ 目录含src/body.py等人体分割使用 PaddlePaddle 的PP-HumanSeg模型PP_HumanSeg/deploy/infer.py。依赖模型下载运行对齐脚本前需要放置以下模型下载body_pose_model.pth放到 openpose/model/ 下下载并解压deeplabv3p_resnet50_os8_humanseg_512x512_100k_with_softmax导出版到PP_HumanSeg/export_model/deeplabv3p_resnet50_os8_humanseg_512x512_100k_with_softmax下载并解压deeplabv3p_resnet50_os8_humanseg_512x512_100k预训练版到PP_HumanSeg/pretrained_model/deeplabv3p_resnet50_os8_humanseg_512x512_100k安装 PaddleSegpip install paddleseg。运行python alignment.py --image-folder img/test/ --output-folder aligned_image/从 alignment.py 的源码可以看到身体中心对齐的具体做法取肩中点keypoint 1与髋中点keypoint 8 与 11 的中点连线的中点作为水平中心mid_x再据此计算 1:2宽:高目标裁剪框若裁剪框需要越出原图边界则用BORDER_REPLICATE补边刻意不做背景色填充最后统一缩放到 512×1024 输出。此外脚本还做了前置检查分割掩码触边时自动白色补边、只允许单个人len(subset) ! 1时跳过并提示。这正是摘要中身体中心对齐优于脸部中心/骨盆点结论的工程落地——示例输入 img/test/test.jpg 即可直接跑通。PTI 反演真实图像反演部分基于 PTI配置集中在pti/pti_configs/下前置准备下载官方发布的 PTI 权重e4e_w.pt放到pti/目录。关键配置paths_config.pye4e ./pti/e4e_w.pt stylegan2_ada_shhq ./pretrained_models/stylegan_human_v2_1024.pkl input_data_path aligned_image/ # 待反演的真实图像目录alignment.py 的输出 input_data_id test # 反演结果标识 checkpoints_dir ./outputs/pti/checkpoints/ embedding_base_dir ./outputs/pti/embeddingshyperparameters.pyfirst_inv_type w使用预训练 e4e 编码器做初始反演first_inv_type w改用投影 优化的方式其他可参考项max_pti_steps 350、first_inv_steps 450、LPIPS_value_threshold 0.04以 LPIPS 作为收敛判据、pti_learning_rate 5e-4、局部正则use_locality_regularization默认 False。运行python run_pti.py注意官方以aligned_image/下的测试图作为输入示例反演得到的潜码与微调后的生成器会保存到outputs/pti/下潜码在outputs/pti/embeddings/test/PTI/test/中微调生成器如outputs/pti/checkpoints/model_test.pkl。属性编辑InterfaceGAN / StyleSpace / SeFaedit.py 提供三种编辑方法InterfaceGAN、StyleSpace、SeFa在人体潜码方向上的编辑演示# 用随机种子编辑生成图 python edit.py --network pretrained_models/stylegan_human_v2_1024.pkl --attr_name upper_length \ --seeds 61531,61570,61571,61610 --outdir outputs/edit_results # 用 PTI 反演出的潜码编辑真实图像 python edit.py --network outputs/pti/checkpoints/model_test.pkl --attr_name upper_length \ --outdir outputs/edit_results --real True \ --real_w_path outputs/pti/embeddings/test/PTI/test/0.pt --real_img_path aligned_image/test.png--attr_name目前支持两个方向upper_length上身躯干/衣长上半段长短bottom_length下身腿长长短。控制层与编辑强度在 edit/edit_config.py 中定义attr_dict dict( interface_gan{ # strength upper_length: [-1], bottom_length: [1] }, stylespace{ # layer, strength, threshold upper_length: [5, -5, 0.0028], bottom_length: [3, 5, 0.003] }, sefa{ # layer, strength upper_length: [[4, 5, 6, 7], 5], bottom_length: [[4, 5, 6, 7], 5] } )即 StyleSpace 在 3/5 层施加强度 ±5 的扰动、SeFa 作用于 4-7 层、InterfaceGAN 按单位方向向量做正负向移动upper_length为负方向表示缩短。仓库中还附带了统计得到的方向资源 latent_direction/ss_statics/如upper_length_statis/5/statis.csv可结合 edit/edit_helper.py 自行替换方向向量做更多属性实验。从 edit.py 源码看脚本会先把.pkl权重经legacy.convert转为.pth再以latent512, n_mlp8, channel_multiplier2的 StyleGAN2 生成器结构加载g_emamean_latent3000 个样品的均值潜码会缓存到edit/mean_latent.pkl以加速后续运行。--real True模式下--seeds被强制为[0]即只处理反演出的真实图像。InsetGAN 演示面部 身体联合生成insetgan.py 实现了 InsetGAN 思路的快速演示将 FFHQ 人脸模型生成的人脸与本项目的人体生成结果组合并联合优化人脸与身体的潜码得到协调一致的全身图像。运行前需准备FFHQ 人脸模型ffhq.pkl或使用自有人脸模型预训练人脸关键点模型dlib 用的预训练 CNN 人脸检测模型。python insetgan.py --body_networkpretrained_models/stylegan_human_v2_1024.pkl \ --face_networkpretrained_models/ffhq.pkl --body_seed82 --face_seed43 \ --trunc0.6 --outdiroutputs/insetgan/ --video 1已知限制与后续计划README 的 TODO 列表说明了当前边界尚未发布基于 StyleGAN3 的 1024x512 版本与基于 StyleGAN1 的 512x256 版本InsetGAN 演示尚无用户真实人脸反演 → 与 StyleGAN-Human 身体融合的完整接口SHHQ 完整数据集仍在分批释放中当前为 40K 的 SHHQ-1.0。此外项目提供了 Web Demo基于 Gradio 的 Hugging Face Spaces与 Colab notebook前者可直接体验生成与插值后者会引导安装环境并下载预训练模型输出保存在./StyleGAN-Human/outputs/下。引用如果该工作对你的研究有帮助请引用article{fu2022styleganhuman, title{StyleGAN-Human: A Data-Centric Odyssey of Human Generation}, author{Fu, Jianglin and Li, Shikai and Jiang, Yuming and Lin, Kwan-Yee and Qian, Chen and Loy, Chen-Change and Wu, Wayne and Liu, Ziwei}, journal {arXiv preprint}, volume {arXiv:2204.11823}, year {2022} }小结StyleGAN-Human 的价值不在于新网络结构而在于把数据规模、数据分布、数据对齐三个数据工程问题在全身人像生成场景中量化验证40K 规模是 StyleGAN 达到高保真人体生成的门槛均衡数据分布对罕见姿态有效、对纹理则不然以身体中心肩髋中点为锚点的对齐策略显著优于脸部或骨盆锚点。仓库内的 alignment.py、training_scripts/sg2/train.py 中的shhq配置与 edit/edit_config.py 的编辑方向配置正是这些结论对应的可复现实现结合generate.py、run_pti.py、edit.py三条命令链即可复现从原始照片对齐、模型训练、生成插值到真实人体属性编辑的完整闭环。【免费下载链接】DragGANOfficial Code for DragGAN (SIGGRAPH 2023)项目地址: https://gitcode.com/GitHub_Trending/dr/DragGAN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →