• Python+AI智能编辑人脸


    哈喽,大家好。

    今天继续给大家分享优秀的 AI 项目。

    今天分享这个项目使用StyleGAN算法对人脸进行编辑。

    在该项目中,可以改变图片中人物的发型、给人物加胡须、让人物微笑等等。

    大致思路是,先用StyleGAN算法提取人脸特征,再利用人脸属性分类器(如:Nvidia的40个人脸属性分类器),找到可进行人脸编辑的属性,执行编辑后即可将原图变成想要的效果。

    项目已在 GitHub 上开源,可直接运行。

    下面我介绍下项目核心流程。

    1. 提取人脸特征

    下载StypeGAN预训练模型,放在指定目录下。

    运行wy_gan_inversion.py获取人脸w并保存。

    这里解释下w的概念,StypeGAN模型从训练图像数据中提取特征(如:头发、皱纹、眉毛),这些特征存储在每一张图片的latent code中,一张图片有许多latent code,一定数量的latent code组成latent(一个512维的向量),这个latent又被称为潜码

    w是将潜码解耦后得到的。由于潜码的特征之间的耦合性比较大。例如:头发长度和男子气概,按照潜码的特征分布,这两个特征之间有紧密的联系。实际上,短发男子、长发男子都可以有很强的男子气概,因此需要将特征解耦。

    项目中./checkpoint/wy_faces路径下有两个目录,分别为musktaylor,里面存放了已提取出来的w,对应文章开头的那个图,可供大家直接使用。

    2. 得到标签属性

    运行wd_direction_nv.py,对标签集分类,在w中找到可用的编辑方向。

    标签集./checkpoint/label_dict/目录中,格式如下:

    默认的标签集是存放在./checkpoint/label_dict/stylegan1/目录的stylegan1_attributes_seed0_30000.pt文件中。

    如果想自己标记标签集,可以参考并运行./label_set_unit/generation_seed_zw.py文件。

    3. 编辑人脸

    最后,用前两步生成的结果对人脸进行编辑输出最终结果。

    加载第一步产出的人脸w

    1. wy_path = './checkpoint/wy_faces/taylor/ty-norm1024.pt'
    2. w_y = torch.load(wy_path, map_location=device).clone().squeeze(0) # face

    对应的图片如下:

    加载第二步可用的编辑方向——微笑

    1. wd_path = './checkpoint/wd_directions/ms-cases/00_smile/id0_dict1_l1_12k_acc0.89698_saga_iter2000.npy'
    2. w_d = torch.tensor(np.load(wd_path))

    对原图编辑

    1. w_d = w_d.view(layere-layers,512)
    2. clip1 = 0.0 # 0.01-0.03
    3. w_d[torch.abs(w_d)<=clip1] = 0.0
    4. w_y[start_layer:end_layer] = (w_y+a*w_d)[start_layer:end_layer]

    经过编辑后,便会产出一张让原图微笑的图片

    两张图放一起,对比会更明显一些。

    好了, 这个就是我今天要分享的项目。大家可以下载运行,看看效果。

    项目地址:https://github.com/disanda/RFM

    StyleGAN是非常好的算法,目前有stylegan1stylegan2stylegan3三个版本,感兴趣的朋友可以学习下原理。

    最后,感谢你的关注,我将持续分享优秀的 AI 项目。

    如果本文对你有用就点个 在看 鼓励一下吧。

    【python学习】
    学Python的伙伴,欢迎加入新的交流【君羊】:1020465983
    一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

  • 相关阅读:
    C++ 学习 ::【基础篇:07】:C++ C11 标准中 关键字 auto 的基本介绍与使用
    ObjectARX简单自定义实体的实现
    数据分析方法-对比分析和用户画像(文末送书)
    Activiti可视化流程管理器
    树控件、下拉框、文本框常用测试用例
    Qt 集成OSG
    八股文学习三(jvm+线程池+锁)
    神经系统ct与mri影像解读,神经系统影像学检查
    第14章 JVM(一)
    【Vue】(二)Vue组件化思想、全局组件与局部组件、父子组件、父子组件通信、slot-插槽
  • 原文地址:https://blog.csdn.net/SixStar_FL/article/details/125599985