❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 技术特点:SHMT 采用自监督学习,无需成对训练数据,支持高效妆容迁移。
- 功能亮点:动态对齐校正功能,能够灵活处理复杂面部特征和表情变化。
- 应用场景:适用于虚拟试妆、社交媒体美容滤镜、电影角色设计等多个领域。
正文(附运行示例)
SHMT 是什么
SHMT(Self-supervised Hierarchical Makeup Transfer)是阿里巴巴达摩院与武汉理工大学等机构联合研发的自监督化妆转移技术。该技术通过潜在扩散模型实现,能够在无需成对训练数据的情况下,将各种化妆风格自然地应用到目标面部图像上。
SHMT 采用“解耦-重建”策略,结合拉普拉斯金字塔和迭代双重对齐模块,实现了对不同化妆风格下纹理细节的灵活控制和对齐误差的动态校正,显著提升了化妆转移的效果和保真度。其主要优点在于能够处理复杂的面部特征和表情变化,提供高质量的迁移效果。
SHMT 的主要功能
- 高效迁移:在处理多种化妆风格时保持高效和高质量,能将多样化的妆容风格自然且精准地应用于给定的面部图像。
- 动态对齐校正:通过迭代双重对齐(IDA)模块,在每个去噪步骤中动态调整注入条件,纠正由内容和化妆表示之间的域间隙引起的对齐错误。
- 多样化应用:适用于图像处理、风格迁移、计算机视觉等多个领域,如电商平台的线上试妆等。
SHMT 的技术原理
- 自监督学习:SHMT 采用自监督策略进行模型训练,遵循“解耦-重建”范式,不依赖质量欠佳的伪造参考数据,避免了错误指导模型的问题。
- 层次化纹理细节处理:该技术将化妆过程分解为多个层次,包括底妆、眼妆、唇妆等。不同妆容细节通过拉普拉斯金字塔的方法分层分解,再选择性地融入到人脸的内容表示中。
- 动态校正对齐误差:通过迭代双重对齐模块(IDA),动态调整扩散模型中的妆容注入过程,逐步修正人脸内容和妆容风格之间的“对不上”的问题。
如何运行 SHMT
1. 环境配置
首先,创建一个适合的 conda 环境并激活:
conda env create -f environment.yaml
conda activate ldm
2. 下载预训练模型
从 LDM 下载预训练的自动编码模型,并放置在 checkpoints
文件夹中。
3. 运行推理脚本
执行以下脚本进行推理:
# SHMT-h0
CUDA_VISIBLE_DEVICES=0 python makeup_inference_h0.py --outdir inference_h0_results --config configs/latent-diffusion/shmt_h0.yaml --ckpt logs/2024-12-20T12-01-44_shmt_h0/checkpoints/epoch=00800.ckpt --source_image_path examples/images/non_makeup --source_seg_path examples/seg2/non_makeup --source_depth_path examples/3d/non_makeup --ref_image_path examples/images/makeup --ref_seg_path examples/seg2/makeup --seed 321 --ddim_steps 50
4. 训练模型
如果需要训练模型,可以执行以下脚本:
CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/shmt_h0.yaml -t --gpus 0,
资源
- GitHub 仓库:https://github.com/Snowfallingplum/SHMT
- arXiv 技术论文:https://arxiv.org/pdf/2412.11058
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦