前期我们介绍过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-NetDCT-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种转换类型,你最中意那款,可以使用自己的视频或者图片进行代码实现。
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除
热门信息
阅读 ()
1 注册微信号怎么注册第二个阅读 ()
2 怎么把照片变成卡通头像阅读 ()
3 手机越充越少电怎么解决