码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-09-15 21:24:44      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:load   res   count   help   tar   inpu   key   lib   and   

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

导读:本论文来自NeurIPS2019,该算法中主要采用一阶运动模型的思想,用一组自学习的关键点和局部仿射变换,建立了复杂运动模型。模型由运动估计模块和图像生成模块两个主要部分组成。首先进行关键点检测,然后根据关键点,进行运动估计,最后使用图像生成模块,生成最终效果。
额,哈哈,不好意思了,又拿我的偶像胡歌下手啦,视频截取来源偶像胡歌在《猎场》中的一角色。

 

 

 

目录

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

相关论文

输出结果

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

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

实现代码


 

作品视频链接
利用人工智能算法,让古代皇帝画像动起来(模仿偶像胡歌《猎场》剧中角色表情动作)
利用人工智能算法让古代美女《西施、王昭君、貂蝉、杨玉环四大美女领衔》画像动起来

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

相关论文

Paper:《First Order Motion Model for Image Animation》翻译与解读

 

输出结果

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

技术图片技术图片技术图片技术图片

 

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

技术图片技术图片技术图片

 

 

实现代码

更新中……

  1.  
    import imageio
  2.  
    import torch
  3.  
    from tqdm import tqdm
  4.  
    from animate import normalize_kp
  5.  
    from demo import load_checkpoints
  6.  
    import numpy as np
  7.  
    import matplotlib.pyplot as plt
  8.  
    import matplotlib.animation as animation
  9.  
    from skimage import img_as_ubyte
  10.  
    from skimage.transform import resize
  11.  
    import cv2
  12.  
    import os
  13.  
    import argparse
  14.  
     
  15.  
    ap = argparse.ArgumentParser()
  16.  
    ap.add_argument("-i", "--input_image", required=True,help="Path to image to animate")
  17.  
    ap.add_argument("-c", "--checkpoint", required=True,help="Path to checkpoint")
  18.  
    ap.add_argument("-v","--input_video", required=False, help="Path to video input")
  19.  
     
  20.  
    args = vars(ap.parse_args())
  21.  
     
  22.  
    print("[INFO] loading source image and checkpoint...")
  23.  
    source_path = args[‘input_image‘]
  24.  
    checkpoint_path = args[‘checkpoint‘]
  25.  
    if args[‘input_video‘]:
  26.  
    video_path = args[‘input_video‘]
  27.  
    else:
  28.  
    video_path = None
  29.  
    source_image = imageio.imread(source_path)
  30.  
    source_image = resize(source_image,(256,256))[..., :3]
  31.  
     
  32.  
    generator, kp_detector = load_checkpoints(config_path=‘config/vox-256.yaml‘, checkpoint_path=checkpoint_path)
  33.  
     
  34.  
    if not os.path.exists(‘output‘):
  35.  
    os.mkdir(‘output‘)
  36.  
     
  37.  
     
  38.  
    relative=True
  39.  
    adapt_movement_scale=True
  40.  
    cpu=False
  41.  
     
  42.  
    if video_path:
  43.  
    cap = cv2.VideoCapture(video_path)
  44.  
    print("[INFO] Loading video from the given path")
  45.  
    else:
  46.  
    cap = cv2.VideoCapture(0)
  47.  
    print("[INFO] Initializing front camera...")
  48.  
     
  49.  
    fourcc = cv2.VideoWriter_fourcc(*‘MJPG‘)
  50.  
    out1 = cv2.VideoWriter(‘output/Animation_HuGe_02.avi‘, fourcc, 12, (256*3 , 256), True)
  51.  
     
  52.  
    cv2_source = cv2.cvtColor(source_image.astype(‘float32‘),cv2.COLOR_BGR2RGB)
  53.  
    with torch.no_grad() :
  54.  
    predictions = []
  55.  
    source = torch.tensor(source_image[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2)
  56.  
    if not cpu:
  57.  
    source = source.cuda()
  58.  
    kp_source = kp_detector(source)
  59.  
    count = 0
  60.  
    while(True):
  61.  
    ret, frame = cap.read()
  62.  
    frame = cv2.flip(frame,1)
  63.  
    if ret == True:
  64.  
     
  65.  
    if not video_path:
  66.  
    x = 143
  67.  
    y = 87
  68.  
    w = 322
  69.  
    h = 322
  70.  
    frame = frame[y:y+h,x:x+w]
  71.  
    frame1 = resize(frame,(256,256))[..., :3]
  72.  
     
  73.  
    if count == 0:
  74.  
    source_image1 = frame1
  75.  
    source1 = torch.tensor(source_image1[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2)
  76.  
    kp_driving_initial = kp_detector(source1)
  77.  
     
  78.  
    frame_test = torch.tensor(frame1[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2)
  79.  
     
  80.  
    driving_frame = frame_test
  81.  
    if not cpu:
  82.  
    driving_frame = driving_frame.cuda()
  83.  
    kp_driving = kp_detector(driving_frame)
  84.  
    kp_norm = normalize_kp(kp_source=kp_source,
  85.  
    kp_driving=kp_driving,
  86.  
    kp_driving_initial=kp_driving_initial,
  87.  
    use_relative_movement=relative,
  88.  
    use_relative_jacobian=relative,
  89.  
    adapt_movement_scale=adapt_movement_scale)
  90.  
    out = generator(source, kp_source=kp_source, kp_driving=kp_norm)
  91.  
    predictions.append(np.transpose(out[‘prediction‘].data.cpu().numpy(), [0, 2, 3, 1])[0])
  92.  
    im = np.transpose(out[‘prediction‘].data.cpu().numpy(), [0, 2, 3, 1])[0]
  93.  
    im = cv2.cvtColor(im,cv2.COLOR_RGB2BGR)
  94.  
    joinedFrame = np.concatenate((cv2_source,im,frame1),axis=1)
  95.  
     
  96.  
    cv2.imshow(‘Test‘,joinedFrame)
  97.  
    out1.write(img_as_ubyte(joinedFrame))
  98.  
    count += 1
  99.  
    if cv2.waitKey(20) & 0xFF == ord(‘q‘):
  100.  
    break
  101.  
    else:
  102.  
    break
  103.  
     
  104.  
    cap.release()
  105.  
    out1.release()
  106.  
    cv2.destroyAllWindows()

 

本文首发于python黑洞网,博客园同步更新

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

标签:load   res   count   help   tar   inpu   key   lib   and   

原文地址:https://www.cnblogs.com/pythonzhilian/p/13601124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!