everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成

 

实现效果

 

人物freestyle 动作

 

teacher 动作传递给student, 

按照teacher动作生成student,

 

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第1张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第2张图片

 

 

 

 

其他的实例效果

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第3张图片

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第4张图片

 

只训练了一小时,有时间多训练GAN的参数,生成的人物会效果更好。

 

有时间整理好代码,分享。

 

 

 

 

 

Dance 实例

We train and evaluate on Ubuntu 16.04, so if you don't have linux environment, you can set nThreads=0 in EverybodyDanceNow_reproduce_pytorch/src/config/train_opt.py.

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第5张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第6张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第7张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第8张图片

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第9张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第10张图片

 

 

 

 

 

 

 

 

 

1 运行 make_source

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第11张图片

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第12张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第13张图片

Images  存储成图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第14张图片

 

人脸GAN用

Test_head_ori  头部位置

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第15张图片

 

make label images for pix2pix'''
Test_img  
 
 
Test_label_ori  姿态骨架位置
 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第16张图片

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第17张图片

 

2 运行 make_target.py

 

Put target video mv.mp4 in ./data/target/ and run make_target.py, pose.npy will save in ./data/target/, which contain the coordinate of faces (will use in step6).

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第18张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第19张图片

Images  存储图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第20张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第21张图片

'''make label images for pix2pix'''

head_img

脸部特征

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第22张图片

train_img

特征点和整体图

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第23张图片

 

train_label

姿态骨架图

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第24张图片

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第25张图片

Pose.npy

  包含脸部定位

 

3  运行 train_pose2vid.py

 

 

  • Run Run train_pose2vid.py and check loss and full training process in ./checkpoints/
  • If you break the traning and want to continue last training, set load_pretrain = './checkpoints/target/ in ./src/config/train_opt.py
  • and check loss and full training process in ./checkpoints/
  • If you break the traning and want to continue last training, set load_pretrain = './checkpoints/target/ in ./src/config/train_opt.py

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第26张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第27张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第28张图片

 

 

 

 

 

 

 

 

 

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第29张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第30张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第31张图片

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第32张图片

 

 

4 运行normalization.py

 

Run normalization.py rescale the label images, you can use two sample images from ./data/target/train/train_label/ and ./data/source/test_label_ori/ to complete normalization between two skeleton size

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第33张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第34张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第35张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第36张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第37张图片

 

5运行 transfer.py

 

 

Run transfer.py and get results in ./result

 

 

 

 

 

def create_label(shape, joint_list, person_to_joint_assoc):

    label = np.zeros(shape, dtype=np.uint8)

    cord_list = []

    for limb_type in range(17):

        for person_joint_info in person_to_joint_assoc:

            joint_indices = person_joint_info[joint_to_limb_heatmap_relationship[limb_type]].astype(int)

            if -1 in joint_indices:

                continue

            joint_coords = joint_list[joint_indices, :2]

            coords_center = tuple(np.round(np.mean(joint_coords, 0)).astype(int))

            cord_list.append(joint_coords[0])

            limb_dir = joint_coords[0, :] - joint_coords[1, :]

            limb_length = np.linalg.norm(limb_dir)

            angle = math.degrees(math.atan2(limb_dir[1], limb_dir[0]))

            polygon = cv2.ellipse2Poly(coords_center, (int(limb_length / 2), 4), int(angle), 0, 360, 1)

            cv2.fillConvexPoly(label, polygon, limb_type+1)

    return label,cord_list

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第38张图片

 

 

 

 

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第39张图片

Pytorch pose

https://github.com/tensorboy/pytorch_Realtime_Multi-Person_Pose_Estimation/tree/681d16fa6eac64d8828affa477af78dd358381d2

 

 

 

pix2pix

https://github.com/NVIDIA/pix2pixHD/tree/20687df85d30e6fff5aafb29b7981923da9fd02f

 

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第40张图片

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第41张图片

 

 

 

 

6 运行 ./face_enhancer/prepare.py

 

Run ./face_enhancer/prepare.py and check the results in ./data/face/test_sync and ./data/face/test_real.

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第42张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第43张图片

Test_real

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第44张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第45张图片

test_sync

 

 

 

7 运行./face_enhancer/main.py

 

 

优化脸部

 

 

Run ./face_enhancer/main.py train face enhancer and run./face_enhancer/enhance.py to gain results

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第46张图片

训练

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第47张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第48张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第49张图片

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第50张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第51张图片

 

 原图---------------------------------------------------------》训练优化前-----------------------------------------------------》训练优化后脸部

 

Logs

This is comparision in original (left), generated image before face enhancement (median) and after enhancement (right). FaceGAN can learn the residual error between the real picture and the generated picture faces.

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第52张图片

 

 原图---------------------------------------------------------》训练优化前-----------------------------------------------------》训练优化后脸部 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第53张图片

 

 原图---------------------------------------------------------》训练优化前-----------------------------------------------------》训练优化后脸部 

 

8 运行 ./face_enhancer/enhance.py

存储结果

 

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第54张图片

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第55张图片

 

9 运行 make_gif.py

Run make_gif.py and make result pictures to gif picture

pip install -U scikit-image

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第56张图片

安装没有

需要copy文件到python目录下

 

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第57张图片

everybody dance Openpose GAN Pose2vid tensorflow实现 人体姿态迁移 动作传递 人物姿态生成_第58张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(pose,net)