IE盒子

搜索
查看: 83|回复: 6

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

[复制链接]

3

主题

11

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2023-3-1 18:18:56 | 显示全部楼层 |阅读模式
头条号:人工智能研究所微信号:启示AI科技视频号:启示科技
前期我们介绍过VToonify模型,一种基于StyleGAN的人脸动漫转换模型,本期我们介绍另外一个转换人脸的模型DCT-Net。


什么是 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 "modelscope[cv]" -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 = {
    "anime": "damo/cv_unet_person-image-cartoon_compound-models",
    "3d": "damo/cv_unet_person-image-cartoon-3d_compound-models",
    "handdrawn": "damo/cv_unet_person-image-cartoon-handdrawn_compound-models",
    "sketch": "damo/cv_unet_person-image-cartoon-sketch_compound-models",
    "art": "damo/cv_unet_person-image-cartoon-artstyle_compound-models"
}

img_anime = pipeline(Tasks.image_portrait_stylization, model= model_dict["anime"])
img_3d = pipeline(Tasks.image_portrait_stylization, model= model_dict["3d"])
img_handdrawn = pipeline(Tasks.image_portrait_stylization, model= model_dict["handdrawn"])
img_sketch = pipeline(Tasks.image_portrait_stylization, model= model_dict["sketch"])
img_art = pipeline(Tasks.image_portrait_stylization, model= model_dict["art"])

首先我们需要安装modelscope,并定义了DCT-Net模型转换人脸风格的5种类型,分别是
"anime": "damo/cv_unet_person-image-cartoon_compound-models",
    "3d": "damo/cv_unet_person-image-cartoon-3d_compound-models",
    "handdrawn": "damo/cv_unet_person-image-cartoon-handdrawn_compound-models",
    "sketch": "damo/cv_unet_person-image-cartoon-sketch_compound-models",
    "art": "damo/cv_unet_person-image-cartoon-artstyle_compound-models"此模型在第一次运行代码时,会自动下载模型的预训练文件。有了以上5种风格转换类型,我们定义5个转换变量,方便后期进行人脸风格的转换


import os
import cv2
from IPython.display import Image,display, clear_output

style = "anime"  ["anime", "3d", "handdrawn", "sketch", "art"]
filename = "4.jpg"
img_path = 'picture/'+filename

if style == 'anime': result = img_anime(img_path)
if style == '3d': result = img_3d(img_path)
if style == 'handdrawn': result = img_handdrawn(img_path)
if style == 'sketch': result = img_sketch(img_path)
if style == 'art': result = img_art(img_path)

save_name = 'picture/images/' + os.path.splitext(filename)[0] +'_'+style+'.jpg'
cv2.imwrite(save_name, result[OutputKeys.OUTPUT_IMG])
clear_output()
display(Image(save_name))然后我们便可以加载任意一个人脸图片,这个人脸图片最好是人的正脸。然后选择一个人脸转换类型就可以自动进行人脸风格的转换操作了。转换完成后,我们可以保存下来图片。



DCT-Net人脸风格视频文件转换代码实战
当然除了可以处理图片外,我们可以把视频传递给此模型,再模型进行转换前,需要把视频每帧的图片提取出来。


video = 'sample_video.mp4'
video_file = 'movie/'+video
image_dir='movie/images/'

vc=cv2.VideoCapture(video_file)
i = 0
if vc.isOpened():
        rval,frame=vc.read()
        cv2.imwrite(image_dir+str(c)+'.jpg',frame)
        i += 1
        cv2.waitKey(2)
cv.release()所有图片保存完成后,我们便可以进行图片的人脸风格转换了


import glob
from tqdm import tqdm
import cv2

style = "anime" # ["anime", "3d", "handdrawn", "sketch", "art"]
reset_folder('movie/images')
files = sorted(glob.glob('movie/images/*.jpg'))
for i, file in enumerate(tqdm(files)):
   if style == 'anime': result = img_anime(file)
   if style == '3d': result = img_3d(file)
   if style == 'handdrawn': result = img_handdrawn(file)
   if style == 'sketch': result = img_sketch(file)
   if style == 'art': result = img_art(file)
   save_name = 'movie/images/' + str(i).zfill(6) + '.jpg'
   cv2.imwrite(save_name, result[OutputKeys.OUTPUT_IMG])

fps_r = fps/interval
file_path = '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种转换类型,你最中意那款,可以使用自己的视频或者图片进行代码实现。
VX搜索小程序:AI人工智能工具,体验不一样的AI工具

回复

使用道具 举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-3-1 18:19:32 | 显示全部楼层
作者大大可以指导毕设嘛,现在一头雾水
回复

使用道具 举报

3

主题

8

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2023-3-1 18:19:55 | 显示全部楼层
毕业设计是什么专业,那个方向的
回复

使用道具 举报

1

主题

8

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-3-1 18:20:00 | 显示全部楼层
电子信息类,人工智能方向,课题就是DCTNet人脸卡通画
回复

使用道具 举报

2

主题

6

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-3-1 18:20:47 | 显示全部楼层
[捂脸][捂脸][捂脸][捂脸]。可以参考这个开源代码,实际运行一下,也有相关的论文,可以学习一下
回复

使用道具 举报

2

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-3-1 18:21:05 | 显示全部楼层
好的好的
回复

使用道具 举报

6

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2023-3-1 18:21:25 | 显示全部楼层
[赞同][赞同]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表