|
import os |
|
import shutil |
|
import gradio as gr |
|
from PIL import Image |
|
import subprocess |
|
|
|
|
|
|
|
|
|
|
|
|
|
examples = [['project/cartoon2.jpg','project/video1.mp4'], |
|
['project/cartoon3.jpg','project/video2.mp4'], |
|
['project/celeb1.jpg','project/video1.mp4'], |
|
['project/celeb2.jpg','project/video2.mp4'], |
|
] |
|
|
|
title = "DaGAN" |
|
description = """ |
|
Gradio demo for <b>Depth-Aware Generative Adversarial Network for Talking Head Video Generation</b>, CVPR 2022. <a href='https://arxiv.org/abs/2203.06605'>[Paper]</a><a href='https://github.com/harlanhong/CVPR2022-DaGAN'>[Github Code]</a>\n Read more at the links below. Upload a video file (cropped to face), a facial image and have fun :D. Please note that your video will be trimmed to first 8 seconds. |
|
""" |
|
|
|
|
|
|
|
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/2203.06605'>Depth-Aware Generative Adversarial Network for Talking Head Video Generation</a> | <a href='https://github.com/harlanhong/CVPR2022-DaGAN'>Github Repo</a></p>" |
|
|
|
|
|
def inference(img, video): |
|
if not os.path.exists('temp'): |
|
os.system('mkdir temp') |
|
|
|
cmd = f"ffmpeg -y -ss 00:00:00 -i {video} -to 00:00:08 -c copy video_input.mp4" |
|
subprocess.run(cmd.split()) |
|
video = "video_input.mp4" |
|
|
|
|
|
|
|
os.system("python demo_dagan.py --source_image {} --driving_video {} --output 'temp/rst.mp4'".format(img,video)) |
|
return f'temp/rst.mp4' |
|
|
|
gr.Interface( |
|
inference, |
|
[ |
|
gr.inputs.Image(type="filepath", label="Source Image"), |
|
gr.inputs.Video(type='mp4',label="Driving Video"), |
|
], |
|
gr.outputs.Video(type="mp4", label="Output Video"), |
|
title=title, |
|
description=description, |
|
article=article, |
|
theme ="huggingface", |
|
examples=examples, |
|
allow_flagging=False, |
|
).launch(debug=False,enable_queue=True) |
|
|