CV:利用人工智能算法让古代皇帝画像以及古代四大美女画像动起来(模仿偶像胡歌剧中角色表情动作)
利用人工智能算法让古代四大美女画像动起来(模仿偶像胡歌剧中角色表情动作)
导读:本论文来自NeurIPS2019,该算法中主要采用一阶运动模型的思想,用一组自学习的关键点和局部仿射变换,建立了复杂运动模型。模型由运动估计模块和图像生成模块两个主要部分组成。首先进行关键点检测,然后根据关键点,进行运动估计,最后使用图像生成模块,生成最终效果。
额,哈哈,不好意思了,又拿我的偶像胡歌下手啦,视频截取来源偶像胡歌在《猎场》中的一角色。
目录
利用人工智能算法让经典图片根据自定义动作嗨起来(将一张静态人像图片转为带表情动作视频)
利用人工智能算法让古代皇帝画像动起来(模仿偶像胡歌《猎场》剧中角色表情动作)
作品视频链接
利用人工智能算法,让古代皇帝画像动起来(模仿偶像胡歌《猎场》剧中角色表情动作)
利用人工智能算法让古代美女《西施、王昭君、貂蝉、杨玉环四大美女领衔》画像动起来
Paper:《First Order Motion Model for Image Animation》翻译与解读
- import imageio
- import torch
- from tqdm import tqdm
- from animate import normalize_kp
- from demo import load_checkpoints
- import numpy as np
- import matplotlib.pyplot as plt
- import matplotlib.animation as animation
- from skimage import img_as_ubyte
- from skimage.transform import resize
- import cv2
- import os
- import argparse
-
- ap = argparse.ArgumentParser()
- ap.add_argument("-i", "--input_image", required=True,help="Path to image to animate")
- ap.add_argument("-c", "--checkpoint", required=True,help="Path to checkpoint")
- ap.add_argument("-v","--input_video", required=False, help="Path to video input")
-
- args = vars(ap.parse_args())
-
- print("[INFO] loading source image and checkpoint...")
- source_path = args['input_image']
- checkpoint_path = args['checkpoint']
- if args['input_video']:
- video_path = args['input_video']
- else:
- video_path = None
- source_image = imageio.imread(source_path)
- source_image = resize(source_image,(256,256))[..., :3]
-
- generator, kp_detector = load_checkpoints(config_path='config/vox-256.yaml', checkpoint_path=checkpoint_path)
-
- if not os.path.exists('output'):
- os.mkdir('output')
-
-
- relative=True
- adapt_movement_scale=True
- cpu=False
-
- if video_path:
- cap = cv2.VideoCapture(video_path)
- print("[INFO] Loading video from the given path")
- else:
- cap = cv2.VideoCapture(0)
- print("[INFO] Initializing front camera...")
-
- fourcc = cv2.VideoWriter_fourcc(*'MJPG')
- out1 = cv2.VideoWriter('output/Animation_HuGe_02.avi', fourcc, 12, (256*3 , 256), True)
-
- cv2_source = cv2.cvtColor(source_image.astype('float32'),cv2.COLOR_BGR2RGB)
- with torch.no_grad() :
- predictions = []
- source = torch.tensor(source_image[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2)
- if not cpu:
- source = source.cuda()
- kp_source = kp_detector(source)
- count = 0
- while(True):
- ret, frame = cap.read()
- frame = cv2.flip(frame,1)
- if ret == True:
-
- if not video_path:
- x = 143
- y = 87
- w = 322
- h = 322
- frame = frame[y:y+h,x:x+w]
- frame1 = resize(frame,(256,256))[..., :3]
-
- if count == 0:
- source_image1 = frame1
- source1 = torch.tensor(source_image1[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2)
- kp_driving_initial = kp_detector(source1)
-
- frame_test = torch.tensor(frame1[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2)
-
- driving_frame = frame_test
- if not cpu:
- driving_frame = driving_frame.cuda()
- kp_driving = kp_detector(driving_frame)
- kp_norm = normalize_kp(kp_source=kp_source,
- kp_driving=kp_driving,
- kp_driving_initial=kp_driving_initial,
- use_relative_movement=relative,
- use_relative_jacobian=relative,
- adapt_movement_scale=adapt_movement_scale)
- out = generator(source, kp_source=kp_source, kp_driving=kp_norm)
- predictions.append(np.transpose(out['prediction'].data.cpu().numpy(), [0, 2, 3, 1])[0])
- im = np.transpose(out['prediction'].data.cpu().numpy(), [0, 2, 3, 1])[0]
- im = cv2.cvtColor(im,cv2.COLOR_RGB2BGR)
- joinedFrame = np.concatenate((cv2_source,im,frame1),axis=1)
-
- cv2.imshow('Test',joinedFrame)
- out1.write(img_as_ubyte(joinedFrame))
- count += 1
- if cv2.waitKey(20) & 0xFF == ord('q'):
- break
- else:
- break
-
- cap.release()
- out1.release()
- cv2.destroyAllWindows()
- C:\Users\Administrator>conda activate F:\File_Anaconda\project_py37\envs
-
- (F:\File_Anaconda\project_py37\envs) C:\Users\Administrator>conda list
- packages in environment at F:\File_Anaconda\project_py37\envs:
- Name Version Build Channel
- attrs 19.3.0 pypi_0 pypi
- backcall 0.1.0 pypi_0 pypi
- blas 1.0 mkl https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- bleach 3.1.5 pypi_0 pypi
- ca-certificates 2021.10.26 haa95532_2 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- certifi 2021.10.8 py37haa95532_0 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- cffi 1.11.5 pypi_0 pypi
- cloudpickle 0.5.3 pypi_0 pypi
- colorama 0.4.3 pypi_0 pypi
- cpuonly 2.0 0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
- cudatoolkit 8.0 4 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- cycler 0.10.0 pypi_0 pypi
- dask 0.18.2 pypi_0 pypi
- decorator 4.3.0 pypi_0 pypi
- defusedxml 0.6.0 pypi_0 pypi
- entrypoints 0.3 pypi_0 pypi
- freetype 2.10.4 hd328e21_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- imageio 2.3.0 pypi_0 pypi
- importlib-metadata 1.6.0 pypi_0 pypi
- intel-openmp 2021.4.0 haa95532_3556 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- ipykernel 5.2.1 pypi_0 pypi
- ipython 7.14.0 pypi_0 pypi
- ipython-genutils 0.2.0 pypi_0 pypi
- jedi 0.17.0 pypi_0 pypi
- jinja2 2.11.2 pypi_0 pypi
- jpeg 9d h2bbff1b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- jsonschema 3.2.0 pypi_0 pypi
- jupyter-client 6.1.3 pypi_0 pypi
- jupyter-core 4.6.3 pypi_0 pypi
- kiwisolver 1.0.1 pypi_0 pypi
- libpng 1.6.37 h2a8f88b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- libtiff 4.2.0 hd0e1b90_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- libuv 1.40.0 he774522_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- libwebp 1.2.0 h2bbff1b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- lz4-c 1.9.3 h2bbff1b_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- markupsafe 1.1.1 pypi_0 pypi
- matplotlib 2.2.2 pypi_0 pypi
- mistune 0.8.4 pypi_0 pypi
- mkl 2021.4.0 haa95532_640 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- mkl-service 2.4.0 py37h2bbff1b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- mkl_fft 1.3.1 py37h277e83a_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- mkl_random 1.2.2 py37hf11a4ad_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- nbconvert 5.6.1 pypi_0 pypi
- nbformat 5.0.6 pypi_0 pypi
- networkx 2.1 pypi_0 pypi
- ninja 1.10.2 py37h559b2a2_3 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- notebook 6.0.3 pypi_0 pypi
- numpy 1.15.0 pypi_0 pypi
- olefile 0.46 py37_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- opencv-python 4.2.0.34 pypi_0 pypi
- openssl 1.1.1l h2bbff1b_0 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- packaging 20.4 pypi_0 pypi
- pandas 0.23.4 pypi_0 pypi
- pandocfilters 1.4.2 pypi_0 pypi
- parso 0.7.0 pypi_0 pypi
- pickleshare 0.7.5 pypi_0 pypi
- pillow 5.2.0 pypi_0 pypi
- pip 21.2.4 py37haa95532_0 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- prometheus-client 0.7.1 pypi_0 pypi
- prompt-toolkit 3.0.5 pypi_0 pypi
- pycparser 2.18 pypi_0 pypi
- pygit 0.1 pypi_0 pypi
- pygments 2.6.1 pypi_0 pypi
- pyparsing 2.2.0 pypi_0 pypi
- pyrsistent 0.16.0 pypi_0 pypi
- python 3.7.11 h6244533_0 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- python-dateutil 2.7.3 pypi_0 pypi
- pytorch 1.0.1 py3.7_cuda80_cudnn7_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
- pytorch-mutex 1.0 cpu https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
- pytz 2018.5 pypi_0 pypi
- pywavelets 0.5.2 pypi_0 pypi
- pywin32 227 pypi_0 pypi
- pywinpty 0.5.7 pypi_0 pypi
- pyyaml 5.1 pypi_0 pypi
- pyzmq 19.0.1 pypi_0 pypi
- scikit-image 0.14.0 pypi_0 pypi
- scikit-learn 0.19.2 pypi_0 pypi
- scipy 1.1.0 pypi_0 pypi
- send2trash 1.5.0 pypi_0 pypi
- setuptools 58.0.4 py37haa95532_0 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- six 1.11.0 pypi_0 pypi
- sqlite 3.36.0 h2bbff1b_0 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- terminado 0.8.3 pypi_0 pypi
- testpath 0.4.4 pypi_0 pypi
- tk 8.6.11 h2bbff1b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- toolz 0.9.0 pypi_0 pypi
- torchvision 0.2.2 py_3 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
- tornado 6.0.4 pypi_0 pypi
- tqdm 4.24.0 pypi_0 pypi
- traitlets 4.3.3 pypi_0 pypi
- typing_extensions 3.10.0.2 pyh06a4308_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- vc 14.2 h21ff451_1 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- vs2015_runtime 14.27.29016 h5e58377_2 http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- n-li
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!