HyperInverter

HyperInverter

超网络技术实现高质量StyleGAN图像反演

HyperInverter是一种两阶段StyleGAN反演方法,结合编码器和超网络实现高质量图像重建、良好可编辑性和快速推理。实验表明,该方法在保持编码器级推理速度的同时,重建质量显著优于现有编码器方法,接近优化方法。在人脸和建筑图像上均取得出色效果。

StyleGANGAN反演图像编辑超网络人脸生成Github开源项目
目录
  1. 开始使用
  2. 实验
  3. 致谢
  4. 联系方式

HyperInverter: 通过超网络改进StyleGAN反演

<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空间中完成的反演而具有出色的可编辑性。我们的方法完全基于编码器,从而实现极快的推理。在两个具有挑战性的数据集上进行的大量实验证明了我们方法的优越性。

teaser.png
我们的方法在质量上显著优于其他基于编码器的方法(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} }

请在使用我们的模型实现来产生发表结果或将其纳入其他软件时引用我们的论文。

开始使用

代码库在以下环境中测试:

  • Ubuntu
  • CUDA 10.0, CuDNN 7

安装

  • 克隆此仓库:
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文件夹。

训练

第一阶段: W编码器

请按照pSpe4e的说明训练W编码器,将图像编码为W空间(512)中的潜在代码。

为了节省时间,我们在模型库中发布了用于教堂和人脸的预训练W编码器。

第二阶段: HyperInverter

我们提供了默认的训练脚本,如下所示。如果您有时间,请进一步调整超参数以获得最佳结果。请注意,参数--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_PATHHyperInverter模型的路径
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_MAGMAX_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每种方法保存图像的大小

支持的编辑方向如下所列。

  • 人脸
方法编辑方向
GANSpaceeye_openness, trimmed_beard, lipstick face_roundness, nose_length, eyebrow_thickness, head_angle_up, displeased
InterFaceGANage, smile, rotation
StyleCLIPsurprised, afro, angry, beyonce, bobcut, bowlcut, curly_hair, hilary_clinton, depp, mohawk, purple_hair, taylor_swift, trump, zuckerberg
  • 教堂
方法编辑方向
GANSpaceclouds, 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_NAMEGIF结果文件的名称
SAVED_SIZE每种方法保存图像的大小

致谢

我们的源代码是基于特拉维夫大学研究小组一系列优秀的StyleGAN反演研究的代码库开发的,包括:pSpe4eReStylePTI

对于辅助预训练模型,我们特别感谢TreB1eNMoCov2CurricularFaceMTCNN。对于编辑方向,感谢GANSpaceInterFaceGANStyleCLIP的作者。

我们使用了StyleGAN2-ADA的PyTorch实现作为StyleGAN模型。所有预训练的StyleGAN模型来自StyleGAN2的官方发布。我们使用作者的官方脚本将原始TensorFlow代码导出的权重转换为与StyleGAN2-ADA的PyTorch版本兼容。

总的来说,非常感谢这些作者的优秀工作和发布源代码及预训练权重的努力。

联系方式

如果您有任何问题,请发送电子邮件至_tan.m.dinh.vn@gmail.com_或在此存储库中提出问题。

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多