<a href="https://di-mi-ta.github.io/HyperInverter/"><img src="https://img.shields.io/badge/WEBSITE-访问项目页面-blue?style=for-the-badge"></a> <a href="https://arxiv.org/abs/2112.00719"><img src="https://img.shields.io/badge/arxiv-2112.00719-red?style=for-the-badge"></a>
Tan M. Dinh, Anh Tran, Rang Nguyen, Binh-Son Hua<br> VinAI Research, 越南
摘要: 近年来,得益于对GAN潜在空间的探索和利用,真实世界图像操作取得了惊人的进展。GAN反演是这一流程的第一步,旨在忠实地将真实图像映射到潜在代码。不幸的是,大多数现有的GAN反演方法无法同时满足以下三个要求中的至少一个:高重建质量、可编辑性和快速推理。在这项研究中,我们提出了一种新颖的两阶段策略,可以同时满足所有要求。在第一阶段,我们训练一个编码器将输入图像映射到StyleGAN2的W空间,该空间被证明具有出色的可编辑性但较低的重建质量。在第二阶段,我们利用一系列超网络来恢复反演过程中丢失的信息,从而补充初始阶段的重建能力。这两个步骤相互补充,由于超网络分支而产生高重建质量,并由于W空间中完成的反演而具有出色的可编辑性。我们的方法完全基于编码器,从而实现极快的推理。在两个具有挑战性的数据集上进行的大量实验证明了我们方法的优越性。
![]() |
---|
我们的方法在质量上显著优于其他基于编码器的方法(pSp、e4e、ReStyle),同时推理时间与它们相同。与基于优化的方法(SG2-W+、PTI)相比,我们的工作在质量上与SG2-W+相当,略低于PTI。然而,值得注意的是,我们的方法运行速度非常快,可以用于交互式应用(比SG2-W+和PTI分别快3000倍和1100倍)。 |
模型架构和实验结果的详细信息可以在我们的论文中找到。
@inproceedings{dinh2021hyperinverter, title={HyperInverter: Improving StyleGAN Inversion via Hypernetwork}, author={Tan M. Dinh and Anh Tuan Tran and Rang Nguyen and Binh-Son Hua}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)}, year={2022} }
请在使用我们的模型实现来产生发表结果或将其纳入其他软件时引用我们的论文。
代码库在以下环境中测试:
git clone https://github.com/VinAIResearch/HyperInverter.git
cd HyperInverter
conda create -p ./envs python=3.7.3
conda activate ./envs
pip install -r requirements.txt
人脸: 我们使用FFHQ数据集中的70,000张图像
进行训练,使用CelebA-HQ数据集中的2,824张图像
进行测试。图像分辨率为1024 x 1024
,并裁剪对齐到中心。有关预处理步骤的更多详细信息,请参考FFHQ。
教堂: 我们使用LSUN Church官方训练集和测试集中的所有126,227张图像
和300张图像
来训练和评估我们的模型。图像调整为256 x 256
分辨率。
请下载相应的数据集并解压到data
文件夹。然后,转到configs/paths_config.py
并修改此文件以正确链接数据:
dataset_paths = {
"ffhq": "/path/to/ffhq/train_img",
"celeba_test": "/path/to/CelebA-HQ/test_img",
"church_train": "/path/to/lsun-church/train_img",
"church_test": "/path/to/lsun-church/test_img",
}
如果您需要尝试自己的数据集,可以在以下文件中 进行必要的修改:(i) data_configs.py
定义数据路径;(ii) transforms_configs.py
定义数据转换。
运行以下命令自动下载实验所需的辅助预训练模型。
python scripts/download_auxiliary_pretrained_models.py
基本上,我们将这些路径正确设置为训练或推理过程。
如果您想更改这些路径,请访问文件configs/paths_config.py
并修改model_paths
字典中的相应记录。
有关我们官方预训练模型的信息,请参阅模型库。请下载我们的预训练模型(W编码器和HyperInverter)并将它们放入pretrained_models
文件夹。
请按照pSp或e4e的说明训练W编码器,将图像编码为W空间(512)中的潜在代码。
为了节省时间,我们在模型库中发布了用于教堂和人脸的预训练W编码器。
我们提供了默认的训练脚本,如下所示。如果您有时间,请进一步调整超参数以获得最佳结果。请注意,参数--hidden_dim
对模型质量有很大影响,增加它会导致更大的模型,并倾向于有更好的质量。在论文中,我们使用hidden_dim=256
。但是,我们建议使用hidden_dim=128
来平衡模型大小和模型性能。此外,值得注意的是,我们的代码也很容易修改以预测StyleGAN2的不同层权重。参考weight_shapes并根据需要进行修改。然后,修改hyper_inverter中的get_target_shapes
函数以添加您的选项。
EXPERIMENT_DIR=""
W_ENCODER_PATH=""
GPU_ID=0
CUDA_VISIBLE_DEVICES="$GPU_ID" \
python scripts/train.py \
--dataset_type=ffhq_encode \
--encoder_type=LayerWiseEncoder \
--w_encoder_path="$W_ENCODER_PATH" \
--output_size=1024 \
--exp_dir="$EXPERIMENT_DIR" \
--batch_size=8 \
--batch_size_used_with_adv_loss=4 \
--workers=4 \
--val_interval=1000 \
--save_interval=5000 \
--encoder_optim_name=adam \
--discriminator_optim_name=adam \
--encoder_learning_rate=1e-4 \
--discriminator_learning_rate=1e-4 \
--hyper_lpips_lambda=0.8 \
--hyper_l2_lambda=1.0 \
--hyper_id_lambda=0.1 \
--hyper_adv_lambda=0.005 \
--hyper_d_reg_every=16 \
--hyper_d_r1_gamma=10.0 \
--step_to_add_adversarial_loss=200000 \
--target_shape_name=conv_without_bias \
--max_steps=500000 \
--hidden_dim=128 \
--num_cold_steps=20000 \
--save_checkpoint_for_resuming_training \
--use_wandb
EXPERIMENT_DIR=""
W_ENCODER_PATH=""
GPU_ID=0
CUDA_VISIBLE_DEVICES="$GPU_ID" \
python scripts/train.py \
--dataset_type=church_encode \
--encoder_type=ResNetLayerWiseEncoder \
--w_encoder_path="$W_ENCODER_PATH" \
--output_size=256 \
--exp_dir="$EXPERIMENT_DIR" \
--batch_size=8 \
--batch_size_used_with_adv_loss=4 \
--workers=4 \
--val_interval=1000 \
--save_interval=5000 \
--encoder_optim_name=adam \
--discriminator_optim_name=adam \
--encoder_learning_rate=1e-4 \
--discriminator_learning_rate=1e-4 \
--hyper_lpips_lambda=0.8 \
--hyper_l2_lambda=1.0 \
--hyper_id_lambda=0.5 \
--hyper_adv_lambda=0.15 \
--hyper_d_reg_every=16 \
--hyper_d_r1_gamma=100.0 \
--step_to_add_adversarial_loss=100000 \
--target_shape_name=conv_without_bias \
--max_steps=500000 \
--hidden_dim=128 \
--num_cold_steps=10000 \
--save_checkpoint_for_resuming_training \
--use_wandb
将输入图像放入文件夹中。
预处理(如果需要)。 对于人脸领域,如果输入图像尚未裁剪和对齐,请运行以下脚本预处理数据。
RAW_IMAGE_DIR=""
PROCESSED_IMAGE_DIR=""
python scripts/align_all_parallel.py \
--raw_dir "$RAW_IMAGE_DIR" \
--saved_dir "$PROCESSED_IMAGE_DIR" \
--num_threads 8
参数说明如下。
参数 | 描述 |
---|---|
RAW_IMAGE_DIR | 包含原始输入图像的文件夹路径 |
PROCESSED_IMAGE_DIR | 保存处理后输入图像的文件夹路径 |
在运行以下脚本之前正确设置参数。
INPUT_DATA_DIR=""
RESULT_DIR=""
MODEL_PATH=""
GPU_ID=0
CUDA_VISIBLE_DEVICES="$GPU_ID" \
python scripts/inference.py \
--exp_dir="$RESULT_DIR" \
--checkpoint_path="$MODEL_PATH" \
--data_path="$INPUT_DATA_DIR" \
--batch_size=4 \
--workers=4
参数说明如下。
参数 | 描述 |
---|---|
RESULT_DIR | 保存推理结果的目录 |
MODEL_PATH | HyperInverter模型的路径 |
INPUT_DATA_DIR | 包含处理后输入图像的文件夹路径 |
最后,重建的图像可以在RESULT_DIR/inference_results
文件夹中找到。
我们已经准备了人脸和教堂模型的定量重建评估脚本。请在这些文件中设置与您的模型兼容的参数,并运行以下命令进行评估过程。
sh sample_scripts/human_faces_reconstruction_quantitative_evaluation.sh
sh sample_scripts/church_reconstruction_quantitative_evaluation.sh
对于以下实验,请访问文件configs/paths_config.py
并使用HyperInverter和其他反演方法的预训练模型的路径更新model_paths
字典。对于其他反演方法,请访问它们的Github仓库下载预训练权重。
定性重建比较的示例脚本是:
DOMAIN=""
METHODS=""
INPUT_DATA_DIR=""
SAVED_RESULTS_DIR_NAME=""
MAX_NUM_IMAGES=100
SAVED_SIZE=1024
GPU_ID=0
CUDA_VISIBLE_DEVICES="$GPU_ID" \
python evaluation/reconstruction_comparison.py \
--methods="$METHODS" \
--domain="$DOMAIN" \
--input_data_dir="$INPUT_DATA_DIR" \
--input_data_id="$SAVED_RESULTS_DIR_NAME" \
--output_dir=outputs \
--saved_embedding_dir=embeddings \
--max_num_images="$MAX_NUM_IMAGES" \
--resize="$SAVED_SIZE"
参数说明如下。
参数 | 描述 |
---|---|
DOMAIN | 输入域,选项为{human_faces , churches } |
METHODS | 反演方法,用逗号分隔,支持的方法有{hyper_inverter , psp , e4e , SG2_plus , SG2 , w_encoder , hyper_inverter , restyle_e4e } |
INPUT_DATA_DIR | 包含处理后输入图像的文件夹路径 |
SAVED_RESULTS_DIR_NAME | 保存结果的文件夹名称 |
MAX_NUM_IMAGES | 要处理的最大图像数量 |
SAVED_SIZE | 每种方法保存的图像大小 |
结果可以在outputs/SAVED_RESULTS_DIR_NAME
文件夹中找到。
编辑比较的示例脚本是:
DOMAIN=""
METHODS=""
DIRECTION=""
INPUT_DATA_DIR=""
SAVED_RESULTS_DIR_NAME=""
MAX_NUM_IMAGES=10
SAVED_SIZE=1024
MIN_MAG=-30
MAX_MAG=30
STEP=5
GPU_ID=0
CUDA_VISIBLE_DEVICES="$GPU_ID" \
python evaluation/editing_inference.py \
--methods="$METHODS" \
--domain="$DOMAIN" \
--input_data_dir="$INPUT_DATA_DIR" \
--input_data_id="$SAVED_RESULTS_DIR_NAME" \
--output_dir=outputs \
--saved_embedding_dir=embeddings \
--direction="$DIRECTION" \
--min_factor="$MIN_MAG" \
--max_factor="$MAX_MAG" \
--step="$STEP" \
--max_num_images="$MAX_NUM_IMAGES" \
--resize="$SAVED_SIZE" \
--save_edited_images \
--gif_speed=4
结果可以在outputs/SAVED_RESULTS_DIR_NAME
文件夹中找到。请尝试不同的MIN_MAG
和MAX_MAG
值以获得最佳结果。
参数说明如下所示。
参数 | 描述 |
---|---|
DOMAIN | 输入域,选项包括{human_faces , churches } |
METHODS | 反演方法,用逗号分隔,支持的方法有{hyper_inverter , psp , e4e , SG2_plus , SG2 , w_encoder , restyle_e4e },例如:hyper_inverter,psp,e4e |
DIRECTION | 编辑方向,支持的方向见下表 |
INPUT_DATA_DIR | 包含已处理输入图像的文件夹路径 |
MIN_MAG | 最小编辑幅度,请调整此参数以获得最佳结果 |
MAX_MAG | 最大编辑幅度,请调整此参数以获得最佳结果 |
STEP | 从最小幅度到最大幅度的步长 |
SAVED_RESULTS_DIR_NAME | 保存结果的文件夹名称 |
MAX_NUM_IMAGES | 要处理的最大图像数量 |
SAVED_SIZE | 每种方法保存图像的大小 |
支持的编辑方向如下所列。
方法 | 编辑方向 |
---|---|
GANSpace | eye_openness , trimmed_beard , lipstick face_roundness , nose_length , eyebrow_thickness , head_angle_up , displeased |
InterFaceGAN | age , smile , rotation |
StyleCLIP | surprised , afro , angry , beyonce , bobcut , bowlcut , curly_hair , hilary_clinton , depp , mohawk , purple_hair , taylor_swift , trump , zuckerberg |
方法 | 编辑方向 |
---|---|
GANSpace | clouds , vibrant , blue_skies , trees |
两张真实图像插值的示例脚本如下:
DOMAIN=""
METHODS=""
PATH_TO_INPUT_IMAGE_1=""
PATH_TO_INPUT_IMAGE_2=""
SAVED_RESULTS_DIR=""
SAVED_RESULTS_FILE_NAME=""
SAVED_SIZE=1024
NUM_STEPS=100
GPU_ID=0
CUDA_VISIBLE_DEVICES="$GPU_ID" \
python evaluation/real_image_interpolation.py \
--domain="$DOMAIN" \
--method="$METHODS" \
--left_image_path="$PATH_TO_INPUT_IMAGE_1" \
--right_image_path="$PATH_TO_INPUT_IMAGE_2" \
--steps="$NUM_STEPS" \
--saved_image_size="$SAVED_SIZE" \
--saved_dir="$SAVED_RESULTS_DIR" \
--saved_file_name="$SAVED_RESULTS_FILE_NAME" \
--save_interpolated_images \
--gif_speed=2
参数说明如下所示。
参数 | 描述 |
---|---|
DOMAIN | 输入域,选项包括{human_faces , churches } |
METHODS | 反演方法,用逗号分隔,支持的方法有{hyper_inverter , psp , e4e , SG2_plus , SG2 , w_encoder , restyle_e4e },例如:hyper_inverter,psp,e4e |
PATH_TO_INPUT_IMAGE_1 | 输入图像1的路径 |
PATH_TO_INPUT_IMAGE_2 | 输入图像2的路径 |
NUM_STEPS | 插值步数 |
SAVED_RESULTS_DIR | 保存结果的文件夹路径 |
MAX_NUM_IMAGES | 要处理的最大图像数量 |
SAVED_RESULTS_FILE_NAME | GIF结果文件的名称 |
SAVED_SIZE | 每种方法保存图像的大小 |
我们的源代码是基于特拉维夫大学研究小组一系列优秀的StyleGAN反演研究的代码库开发的,包括:pSp、e4e、ReStyle和PTI。
对于辅助预训练模型,我们特别感谢TreB1eN、MoCov2、CurricularFace和MTCNN。对于编辑方向,感谢GANSpace、InterFaceGAN和StyleCLIP的作者。
我们使用了StyleGAN2-ADA的PyTorch实现作为StyleGAN模型。所有预训练的StyleGAN模型来自StyleGAN2的官方发布。我们使用作者的官方脚本将原始TensorFlow代码导出的权重转换为与StyleGAN2-ADA的PyTorch版本兼容。
总的来说,非常感谢这些作者的优秀工作和发布源代码及预训练权重的努力。
如果您有任何问题,请发送电子邮件至_tan.m.dinh.vn@gmail.com_或在此存储库中提出问题。
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发 等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号