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


相关文章
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
1700 55
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
853 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
人工智能 自然语言处理 vr&ar
当人类关系重构:从“相互需要”到“鹅卵石化”——生成式人工智能(GAI)认证的角色与影响
在数字化浪潮下,人类关系从“相互需要”逐渐转变为“鹅卵石化”的复杂结构。生成式人工智能(GAI)作为新兴技术,正深刻影响这一变革。GAI认证的推出,不仅填补了技能评估空白,还通过促进知识共享、增强信任与合作、推动创新发展,助力人类关系的重构。未来,随着GAI技术发展和认证体系完善,人类社交网络将更紧密高效,持续推动社会进步。
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
902 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
机器学习/深度学习 人工智能 自然语言处理
AI赋能教育评价改革:生成式人工智能(GAI)认证的角色与影响
本文探讨了人工智能(AI)技术在教育评价改革中的作用及生成式人工智能(GAI)认证的影响。随着数字化时代的到来,AI为教育评价提供了新工具与手段,能够优化评价过程、提升质量并促进个性化发展。GAI认证不仅提升了教育工作者的技能与竞争力,还推动了教育评价的标准化与规范化。文章强调需加强AI技术应用研究、推广GAI认证,并注重评价的个性化与差异化,以助力学生全面发展。AI赋能教育评价改革是未来趋势,将为教育事业注入更多智慧与力量。
|
数据采集 人工智能 算法
深度合成算法备案全知道:不同角色审核的重点是什么?
深度合成技术正深刻改变生活,其算法备案对保障技术安全至关重要。目前已有3445款算法通过备案,其中服务提供者占76.78%。本文详解服务提供者与技术支持者的角色差异、审核重点及文件要求,强调两者不可混用且需独立备案。只有严格遵循备案流程,才能让深度合成技术真正造福大众,推动行业健康发展。
|
算法 数据挖掘 数据安全/隐私保护
基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真
本项目基于CS模型和CV模型的多目标协同滤波跟踪算法,旨在提高复杂场景下多个移动目标的跟踪精度和鲁棒性。通过融合目标间的关系和数据关联性,优化跟踪结果。程序在MATLAB2022A上运行,展示了真实轨迹与滤波轨迹的对比、位置及速度误差均值和均方误差等关键指标。核心代码包括对目标轨迹、速度及误差的详细绘图分析,验证了算法的有效性。该算法结合CS模型的初步聚类和CV模型的投票机制,增强了目标状态估计的准确性,尤其适用于遮挡、重叠和快速运动等复杂场景。
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
773 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用

热门文章

最新文章