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 搜索开放平台:从算法到业务——AI 搜索驱动企业智能化升级
本文介绍了阿里云 AI 搜索开放平台的技术的特点及其在各行业的应用。
414 3
|
4月前
|
人工智能 自然语言处理 vr&ar
当人类关系重构:从“相互需要”到“鹅卵石化”——生成式人工智能(GAI)认证的角色与影响
在数字化浪潮下,人类关系从“相互需要”逐渐转变为“鹅卵石化”的复杂结构。生成式人工智能(GAI)作为新兴技术,正深刻影响这一变革。GAI认证的推出,不仅填补了技能评估空白,还通过促进知识共享、增强信任与合作、推动创新发展,助力人类关系的重构。未来,随着GAI技术发展和认证体系完善,人类社交网络将更紧密高效,持续推动社会进步。
|
3月前
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
354 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
|
5月前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
8339 71
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
18天前
|
传感器 数据采集 人工智能
AI是如何收集体育数据的?从摄像头到算法,揭秘赛场背后的“数字间谍网“!
⚽ 你是否好奇:AI如何知道哈兰德每秒跑多快?教练的平板为何比裁判还清楚谁偷懒?本文揭秘AI收集体育数据的“黑科技”:视觉追踪、传感器网络、数据清洗与高阶分析。从高速摄像机捕捉梅西肌肉抖动,到GPS背心记录姆巴佩冲刺速度;从表情识别判断装伤,到量子计算模拟战术可能,AI正让体育更透明、精准。未来已来,2030年世界杯或将实现AI替代球探、裁判甚至教练!你认为AI数据收集算侵犯隐私吗?最想统计哪些奇葩指标?留言互动吧!
|
2月前
|
数据采集 人工智能 算法
深度合成算法备案全知道:不同角色审核的重点是什么?
深度合成技术正深刻改变生活,其算法备案对保障技术安全至关重要。目前已有3445款算法通过备案,其中服务提供者占76.78%。本文详解服务提供者与技术支持者的角色差异、审核重点及文件要求,强调两者不可混用且需独立备案。只有严格遵循备案流程,才能让深度合成技术真正造福大众,推动行业健康发展。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
147 6
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
AI赋能教育评价改革:生成式人工智能(GAI)认证的角色与影响
本文探讨了人工智能(AI)技术在教育评价改革中的作用及生成式人工智能(GAI)认证的影响。随着数字化时代的到来,AI为教育评价提供了新工具与手段,能够优化评价过程、提升质量并促进个性化发展。GAI认证不仅提升了教育工作者的技能与竞争力,还推动了教育评价的标准化与规范化。文章强调需加强AI技术应用研究、推广GAI认证,并注重评价的个性化与差异化,以助力学生全面发展。AI赋能教育评价改革是未来趋势,将为教育事业注入更多智慧与力量。
|
4月前
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
195 5
|
4月前
|
人工智能 监控 算法
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
251 4

热门文章

最新文章

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问