AI智能
改变未来

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

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

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

 

 

 

目录

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

相关论文

输出结果

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

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

实现代码

 

 

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

相关论文

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

 

输出结果

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

 

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

 

 

实现代码

更新中……

[code]import imageioimport torchfrom tqdm import tqdmfrom animate import normalize_kpfrom demo import load_checkpointsimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfrom skimage import img_as_ubytefrom skimage.transform import resizeimport cv2import osimport argparseap = 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 = Nonesource_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=Trueadapt_movement_scale=Truecpu=Falseif 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 = 0while(True):ret, frame = cap.read()frame = cv2.flip(frame,1)if ret == True:if not video_path:x = 143y = 87w = 322h = 322frame = frame[y:y+h,x:x+w]frame1 = resize(frame,(256,256))[..., :3]if count == 0:source_image1 = frame1source1 = 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_testif 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 += 1if cv2.waitKey(20) & 0xFF == ord(\'q\'):breakelse:breakcap.release()out1.release()cv2.destroyAllWindows()

 

 

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » CV:利用人工智能算法让古代皇帝画像以及古代四大美女画像动起来(模仿偶像胡歌剧中角色表情动作)