Coder Social home page Coder Social logo

xiaohangyang829 / skeleton_aware_networks_for_deep_motion_retargeting Goto Github PK

View Code? Open in Web Editor NEW

This project forked from anyms-a/skeleton_aware_networks_for_deep_motion_retargeting

0.0 0.0 0.0 157.64 MB

Reproduce the work of the paper "Skeleton-Aware Networks for Deep Motion Retargeting" in Pytorch

Python 100.00%

skeleton_aware_networks_for_deep_motion_retargeting's Introduction

Skeleton-Aware Networks for Deep Motion Retargeting

Reproduce the paper Skeleton-Aware Networks for Deep Motion Retargeting of Kfir Aberman, Peizhuo Li. Most of the pre-processing and post-processing codes which deal with motion capture files are borrowed from their github in Skeleton-Aware Networks for Deep Motion Retargeting

Requirements

Pytorch >= 1.3.1

Demo

from left to right: input, target, output

image

image

Quick Start

First you need to download the test motion data we need from google drive or Baidu Disk, the pass code is (ye1q).

Place the Mixamo directory within ./datasets/

Then run

python inference.py

The output bvh files will be saved in the folder

./pretrained/result/

Train

You need to download data from the Mixamo Datasets for training, here is a convenient intro about how to use a script to download fbx data from the Mixamo Datset. After downloading, you need to customize the "data_path" variable in the script:

./datasets/fbx2bvh.py

Then run:

python preprocessing.py

to convert the fbx files to bvh file, as well as generating the train and validation files list.

At last, run

python train.py

It will train the network which could retarget the motion of "Aj" to "BigVegas" which are 2 different characters from the "Mixamo" dataset. Please note: The architectures of the neural networks are based on the topologies of the skeletons.So if you'd like train a model with your customized skeletons. You might need to change some variables related with the topologies which defined in the

./model/skeleton.py

also the names of joints defined in the

./datatsets/bvh_parser/py

An automatic way to generate the skeleton structure after skeleton pooling might be released in the future.

Learning curves showed below:

Loss Curve

Note

There are some changes compared with code released by the author:

  1. I re-implement the architecture of the neural network. I use nn.Conv2d instead of nn.Conv1d for the skeleton convolution, because I think 2D convolution is more in line with the description about skeleton convolution according to the paper. However, it seems that 2D convolution are not as efficient as the original 1D convolution.

  2. GAN part are deprecated(bad memories with it, training GAN needs lots of tricks). Learning to walk before you run. So, technically my training process is in a "paired"(supervised) mode.

  3. About the loss designing, I haven't add the end-effector loss into the training pipeline, multi-task losses training needs tricks too.

  4. IK optimization has not been implemented.

  5. More data are needed for evaluating the generalization ability.

Visualization

You need to install Blender to visualize the result bvh files. Just import the bvh file into Blender and press "White Space" Key.

Citation

If you use this code for your research, please cite their fancy paper:

@article{aberman2020skeleton,
  author = {Aberman, Kfir and Li, Peizhuo and Sorkine-Hornung Olga and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},
  title = {Skeleton-Aware Networks for Deep Motion Retargeting},
  journal = {ACM Transactions on Graphics (TOG)},
  volume = {39},
  number = {4},
  pages = {62},
  year = {2020},
  publisher = {ACM}
}

skeleton_aware_networks_for_deep_motion_retargeting's People

Contributors

anyms-a avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.