If the latest PartNetMobility dataset cause any issue to the code, Please use the PartNetMobility dataset from this link: https://drive.google.com/file/d/1zT6x8ZjICP3aHVZ0wpfxHDCMCFId1NrK/view?usp=sharing
This is the official code for our paper "Unsupervised Kinematic Motion Detection for Part-segmented 3D Shape Collections", https://arxiv.org/abs/2206.08497
required python packages:
trimesh pytorch pytorch3d plotly numpy joblib networkx scipy sklearn json
create a folder named "data" in parallel to the "src" folder and put the PartNetMobility dataset files in the folder. The folder structure will be:
data/partnet/geo
data/partnet/precomputed
python main.py --option process --category 'Category'
python main.py --option train --category 'Category'
python main.py --option resolve --category 'Category'
After runing the resolve, a file named shape_annotations.joblib should be generated in the exp/category/* folder, the file is a list containing the annotations for all shapes, then each item in this list corresponds to the annotion of one shape, the item itself is another list, with each item being the annotation of a part of the shape.
The format for the part annotation is : ((shape id, shape part id), motion type, motion axis direction, motion axis center/pivot, motion min range, motion max range, moving part point cloud (for debug, can ignore), base part point cloud (for debug, can ignore), rotation group(for debug, can ignore), translation group(for debug, can ignore) )
python main.py --option accuracy --category 'Category'
The config.py file contains a lot of adjustable hyper-parameters and configurable settings of the system, the performance of the system can be sensitive to these hyper-parameters and settings.