窝牛号

DCT-Net——用于纵向人脸肖像风格化转换模型

前期我们介绍过VToonify模型,一种基于StyleGAN的人脸动漫转换模型,本期我们介绍另外一个转换人脸的模型DCT-Net。

VToonify转换人脸到动漫脸

什么是 DCT-Net

首先,输入图片x生成以矢量 z 为输入的实时 Xs 的样式 GAN 网络 Gs,以及矢量 z 以生成样式传输图像 Xt 的网络 Gt 组合。 这允许网络在输入矢量 z 时生成实时 Xs 和相应的样式传输图像 Xt。

然后,使用此连接网络在 GAN 框架中学习 U-Net 结构的文本传输网络。 通过同步几何扩展中的仿射变换(缩放、旋转、平移等),将纹理传输网络输入 Xs和比较输出 Xt 同步,从而消除了对面对齐和区域的限制。

DCT-Net模型同时提供人脸的动漫,3D,手绘,素描,美术风格的人脸转换,更多此模型的介绍可以参考GitHub

https://github.com/menyifang/DCT-Net

DCT-Net人脸风格转换代码实战

DCT-Net模型可以进行人脸图片的风格转换,当然,我们也可以把视频实时帧提取出来,然后进行DCT-Net模型的风格转换,转换完成后,我们再把视频帧合并,达到视频人脸风格转换的功能。

! pip install &34; -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html ! pip install --upgrade urllib3 from function import * ! mkdir picture/images from modelscope.outputs import OutputKeys from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks model_dict = { &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34; } img_anime = pipeline(Tasks.image_portrait_stylization, model= model_dict[&34;]) img_3d = pipeline(Tasks.image_portrait_stylization, model= model_dict[&34;]) img_handdrawn = pipeline(Tasks.image_portrait_stylization, model= model_dict[&34;]) img_sketch = pipeline(Tasks.image_portrait_stylization, model= model_dict[&34;]) img_art = pipeline(Tasks.image_portrait_stylization, model= model_dict[&34;])

首先我们需要安装modelscope,并定义了DCT-Net模型转换人脸风格的5种类型,分别是

&34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;, &34;: &34;

此模型在第一次运行代码时,会自动下载模型的预训练文件。有了以上5种风格转换类型,我们定义5个转换变量,方便后期进行人脸风格的转换

import os import cv2 from IPython.display import Image,display, clear_output style = &34; [&34;, &34;, &34;, &34;, &34;] filename = &34; img_path = &39;+filename if style == &39;: result = img_anime(img_path) if style == &39;: result = img_3d(img_path) if style == &39;: result = img_handdrawn(img_path) if style == &39;: result = img_sketch(img_path) if style == &39;: result = img_art(img_path) save_name = &39; + os.path.splitext(filename)[0] +&39;+style+&39; cv2.imwrite(save_name, result[OutputKeys.OUTPUT_IMG]) clear_output() display(Image(save_name))

然后我们便可以加载任意一个人脸图片,这个人脸图片最好是人的正脸。然后选择一个人脸转换类型就可以自动进行人脸风格的转换操作了。转换完成后,我们可以保存下来图片。

DCT-Net人脸风格视频文件转换代码实战

当然除了可以处理图片外,我们可以把视频传递给此模型,再模型进行转换前,需要把视频每帧的图片提取出来。

video = &39; video_file = &39;+video image_dir=&39; vc=cv2.VideoCapture(video_file) i = 0 if vc.isOpened(): rval,frame=vc.read() cv2.imwrite(image_dir+str(c)+&39;,frame) i += 1 cv2.waitKey(2) cv.release()

所有图片保存完成后,我们便可以进行图片的人脸风格转换了

import glob from tqdm import tqdm import cv2 style = &34; 34;anime&34;3d&34;handdrawn&34;sketch&34;art&39;movie/images&39;movie/images/*.jpg&39;anime&39;3d&39;handdrawn&39;sketch&39;art&39;movie/images/&39;.jpg&39;movie/images/%06d.jpg' ! ffmpeg -y -r $fps_r -i $file_path -vcodec libx264 -pix_fmt yuv420p -loglevel error out.mp4 ! ffmpeg -y -i $video_file -loglevel error sound.mp3 ! ffmpeg -y -i out.mp4 -i sound.mp3 -loglevel error output.mp4

得到的转换图片,我们需要使用ffmpeg进行所有图片的合并成视频文件,当然若源视频存在音频文件,我们也可以使用ffmpeg进行视频与音频文件的合成。

以上,便是本期介绍的DCT-Net模型了,5种转换类型,你最中意那款,可以使用自己的视频或者图片进行代码实现。

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1