CV:利用人工智能算法让古代皇帝画像以及古代四大美女画像动起来(模仿偶像胡歌剧中角色表情动作)

简介: CV:利用人工智能算法让古代皇帝画像以及古代四大美女画像动起来(模仿偶像胡歌剧中角色表情动作)

利用人工智能算法让经典图片根据自定义动作嗨起来(将一张静态人像图片转为带表情动作视频)


相关论文


Paper:《First Order Motion Model for Image Animation》翻译与解读https://yunyaniu.blog.csdn.net/article/details/108306885



输出结果


利用人工智能算法让古代皇帝画像动起来(模仿偶像胡歌《猎场》剧中角色表情动作)

image.png




利用人工智能算法让古代四大美女画像动起来


image.png




实现代码

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()


相关文章
|
3天前
|
机器学习/深度学习 人工智能 算法
"拥抱AI规模化浪潮:从数据到算法,解锁未来无限可能,你准备好迎接这场技术革命了吗?"
【10月更文挑战第14天】本文探讨了AI规模化的重要性和挑战,涵盖数据、算法、算力和应用场景等方面。通过使用Python和TensorFlow的示例代码,展示了如何训练并应用一个基本的AI模型进行图像分类,强调了AI规模化在各行业的广泛应用前景。
14 5
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19
28 2
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-16
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-16
10 1
|
4天前
|
机器学习/深度学习 人工智能 算法
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-15
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-15
22 1
|
4天前
|
存储 人工智能 算法
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18
19 0
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-17
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-17
27 0
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能技术在金融领域的应用有哪些?
【10月更文挑战第16天】人工智能技术在金融领域的应用有哪些?
17 1
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能在医疗诊断中的应用与发展
【10月更文挑战第13天】 随着科技的不断进步,人工智能(AI)在医疗领域展现出巨大潜力。本文将探讨AI在医疗诊断中的应用现状、面临的挑战以及未来发展的趋势。通过深入分析AI技术如何辅助医生提高诊断精度和效率,我们期望能为相关领域的研究和实践提供有价值的参考。
20 1
|
6天前
|
机器学习/深度学习 人工智能 算法
探究人工智能在医疗诊断中的应用与挑战
本文深入探讨了人工智能(AI)技术在现代医疗诊断中的多样化应用,包括影像识别、临床决策支持系统和个性化治疗方案的制定等。同时,文章也剖析了AI在数据隐私保护、算法透明度以及跨学科合作等方面所面临的挑战,并提出了相应的解决策略。通过综合分析,旨在为读者提供关于AI在医疗领域未来发展的洞见与思考。
ly~
|
12天前
|
人工智能 自然语言处理 搜索推荐
人工智能在医学领域的应用
人工智能在医学领域的应用广泛,涵盖医学影像分析、医疗数据分析与预测、临床决策支持、药物研发、自然语言处理及智能健康管理等方面。它能提高诊断准确性,预测疾病风险与进展,优化治疗方案,加速药物研发,提升手术安全性,并实现个性化健康管理,有效推动了医疗科技的进步。
ly~
27 3

热门文章

最新文章