今天分享了这个项目,使用StyleGAN算法编辑人脸。在这个项目中,你可以改变画面中人物的发型,给人物添加胡须,让人物笑起来等等。大致思路是先使用StyleGAN算法提取人脸特征,然后使用人脸属性分类器(如:Nvidia的40人脸属性分类器)寻找可以编辑的属性。编辑后,可以编辑原始图像。成想要的效果。该项目在GitHub上开源并准备运行。先介绍一下项目的核心流程。1.提取人脸特征下载StypeGAN预训练模型,放在指定目录下。运行wy_gan_inversion.py得到人脸w并保存。这里解释了w的概念。StypeGAN模型从训练图像数据中提取特征(例如:头发、皱纹、眉毛)。这些特征存储在每张图片的潜在代码中。一张图片有很多潜在的代码。一定数量的latentcode组成一个latent(一个512维的向量),也称为latentcode。w是在解耦潜在代码之后获得的。由于潜在代码的特征之间的耦合比较大。例如:头发长度和男性气质,根据潜在代码的特征分布,这两个特征之间存在很强的关系。事实上,短发和长发的男人可以有很强的阳刚之气,所以需要将特征脱钩。项目中./checkpoint/wy_faces路径下有两个目录,分别是musk和taylor,里面存放的是提取出来的w,对应文章开头的图片,大家可以直接使用。2.获取标签属性,运行wd_direction_nv.py,对标签集进行分类,找到w中可用的编辑方向。标签集在./checkpoint/label_dict/目录下,格式如下:默认标签集存放在./checkpoint/label_dict/stylegan1/目录下的stylegan1_attributes_seed0_30000.pt文件中。如果要标记自己设置的label,可以参考运行./label_set_unit/generation_seed_zw.py文件。3.编辑人脸最后,使用前面两步生成的结果进行人脸编辑,输出最终结果。加载第一步产生的人脸wwy_path='./checkpoint/wy_faces/taylor/ty-norm1024.pt'w_y=torch.load(wy_path,map_location=device).clone().squeeze(0)#人脸对应的图片如下:加载第二步可用的编辑方向-smilewd_path='./checkpoint/wd_directions/ms-cases/00_smile/id0_dict1_l1_12k_acc0.89698_saga_iter2000.npy'w_d=torch.tensor(np.load(wd_path))编辑原图w_d=w_d.view(layere-layers,512)clip1=0.0#0.01-0.03w_d[torch.abs(w_d)<=clip1]=0.0w_y[start_layer:end_layer]=(w_y+a*w_d)[start_layer:end_layer]编辑后会产生一张让原图笑起来的图片把两张图放在一起,对比会更明显。嗯,这就是我今天要分享的项目。大家可以下载运行看看效果。项目地址:https://github.com/disanda/RFMStyleGAN是一个很好的算法。目前有stylegan1、stylegan2和stylegan3三个版本。有兴趣的朋友可以学习原理。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。
