GithubHelp home page GithubHelp logo

phymucs / cuboid_abstraction Goto Github PK

View Code? Open in Web Editor NEW

This project forked from isunchy/cuboid_abstraction

0.0 1.0 0.0 2.14 MB

Code release for "Learning Adaptive Hierarchical Cuboid Abstractions of 3D Shape Collections" (SIGGRAPH Asia 2019)

License: Other

CMake 0.16% Python 31.34% C++ 68.50%

cuboid_abstraction's Introduction

Learning Adaptive Hierarchical Cuboid Abstractions of 3D Shape Collections

teaser

Introduction

This work is based on our SIGA'19 paper. We proposed an unsupervised learning method for 3D shape abstractions. You can check our project webpage for a quick overview.

Abstracting man-made 3D objects as assemblies of primitives, i.e., shape abstraction, is an important task in 3D shape understanding and analysis. In this paper, we propose an unsupervised learning method for automatically constructing compact and expressive shape abstractions of 3D objects in a class. The key idea of our approach is an adaptive hierarchical cuboid representation that abstracts a 3D shape with a set of parametric cuboids adaptively selected from a hierarchical and multi-level cuboid representation shared by all objects in the class. The adaptive hierarchical cuboid abstraction offers a compact representation for modeling the variant shape structures and their coherence at different abstraction levels. Based on this representation, we design a convolutional neural network (CNN) for predicting the parameters of each cuboid in the hierarchical cuboid representation and the adaptive selection mask of cuboids for each input 3D shape. For training the CNN from an unlabeled 3D shape collection, we propose a set of novel loss functions to maximize the approximation quality and compactness of the adaptive hierarchical cuboid abstraction and present a progressive training scheme to refine the cuboid parameters and the cuboid selection mask effectively.

In this repository, we release the code and data for training the abstraction networks on 3D objects in a class.

Citation

If you use our code for research, please cite our paper:

@article{sun2019abstraction,
  title     = {Learning Adaptive Hierarchical Cuboid Abstractions of 3D Shape Collections},
  author    = {Sun, Chunyu and Zou, Qianfang and Tong, Xin and Liu, Yang},
  journal   = {ACM Transactions on Graphics (SIGGRAPH Asia)},
  volume    = {38},
  number    = {6},
  year      = {2019},
  publisher = {ACM}
}

Setup

Pre-prequisites

    Python == 3.6
    TensorFlow == 1.12
    numpy-quaternion

Compile customized TensorFlow operators

    $ cd cext
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make

Experiments

Data Preparation

Now we provide the Google drive link for downloading the training datasets:

Training data

Training

To start the training, run

    $ python training_script.py --category class_name

Test

To test a trained model, run

    $ python iterative_training.py --test_data test_tfrecords --test_iter number_of_shapes --ckpt /path/to/snapshots --cache_folder /path/to/save/test_results --test

Now we provide the trained weights and the final results used in our paper:

Weights

Results

License

MIT Licence

Contact

Please contact us (Chunyu Sun [email protected], Yang Liu [email protected]) if you have any problem about our implementation.

cuboid_abstraction's People

Watchers

 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.