Git Product home page Git Product logo

keypointnet's Introduction

KeypointNet

Full dataset is available now! KeypointNet is a large-scale and diverse 3D keypoint dataset that contains 83,231 keypoints and 8,329 3D models from 16 object categories, by leveraging numerous human annotations, based on ShapeNet models. Our paper is available on https://arxiv.org/pdf/2002.12687.pdf and is accepted to CVPR 2020. You can explore our dataset on http://qq456cvb.github.io/keypointnet/explore/.

News! Two interesting unsupervised keypoint detectors: UKPGAN (unordered but SE(3) invariant) and SkeletonMerger (not SE(3) invariant but ordered) are now released!

Change Logs

For updated dataset information, see Change Log

Keypoint Data

Dataset can be downloaded from Google Drive or OneDrive. Annotated JSON data is placed under annotations. In addition, we provide sampled point clouds (2048 points) for each ShapeNet model under pcds.

We have processed and cleaned labels for airplane (1022 models), bathtub (492 models), bed (146 models), bottle (380 models), cap (38 models), car (1002 models), chair (999 models), guitar (697 models), helmet (90 models), knife (270 models), laptop (439 models), motorcycle (298 models), mug (198 models), skateboard (141 models), table (1124 models) and vessel (910 models).

UPDATE: we have managed to add color information onto sampled point clouds and keypoints. In addition, since processing raw ShapeNet obj file as colored triangle meshes is painful, we have generated corresponding ply files (named ShapeNetCore.v2.ply.zip) with vertex colors (diffuse texture color), for those are interested in dealing with triangle meshes. We believe color is an important source when learning from 3D geometries.

Data format

[
    ...,
    {  
        "class_id": "03001627",  // WordNet id
        "model_id": "88382b877be91b2a572f8e1c1caad99e",  // model id
        "keypoints": [
            {
                "xyz": [0.16, 0.1, 0.1],  // xyz coordinate of keypoint
                "rgb": [255, 255, 255], // rgb color of keypoint, uint8
                "semantic_id": 0,  // id of semantic meaning
                "pcd_info": {
                    "point_index": 0  // keypoint index on corresponding point cloud
                },
                "mesh_info": {  // mesh information for both obj and ply files
                    "face_index": 0,  // index of mesh face where keypoint lies
                    "face_uv": [0.2, 0.4, 0.4]  // barycentric coordinate on corresponding mesh face
                }
            },
            ...
        ],
        "symmetries": { // information of keypoint symmetries
            "reflection": 
            [
                {
                    "kp_indexes": [0, 1]  // keypoint indexes of a reflection symmetric group
                },
                ...
            ],
            "rotation":
            [
                {
                    "kp_indexes": [0, 1, 2, 3],  // keypoint indexes of a rotation symmetric group
                    "is_circle": true,  // true if this rotation symmtric group is a rounding circle
                    "circle": {
                        "center": [0.2, 0.5, 0.2],  // circle center
                        "radius": 0.32,  // circle radius
                        "normal": [0, 1.0, 0],  // normal of circle plane
                    }
                },
                ...
            ]
        }

    },
    ...
]

Examples

Example scripts on reading and visualizing keypoints on both point clouds and triangle meshes are placed under examples.

Keypoint Detection Tasks

Keypoint saliency and correspondence training and evaluation baselines for various backbones are placed under benchmark_scripts. For more details, please refer to benchmark_scripts/README.md.

Data Splits

train/val/test splits are placed under splits. Each line is formatted as [class_id]-[model_id].

Citation

If you find KeypointNet data or code useful in your research, please consider citing:

@article{you2020keypointnet,
  title={KeypointNet: A Large-scale 3D Keypoint Dataset Aggregated from Numerous Human Annotations},
  author={You, Yang and Lou, Yujing and Li, Chengkun and Cheng, Zhoujun and Li, Liangwei and Ma, Lizhuang and Lu, Cewu and Wang, Weiming},
  journal={arXiv preprint arXiv:2002.12687},
  year={2020}
}

TODOs

  • clean labels for more classes
  • add colored pcds/meshes
  • a browser interface to explore dataset

License

Our KeypointNet is released under MIT license.

keypointnet's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keypointnet's Issues

Question about training strategy

As for the training process on the KeypointNet dataset, should I train my model for each class one by one? Or can I train it on the whole dataset?

Any plan to release the annotation tool?

Hi,

We are working on a project that has similar annotation format and we'd like to annotate some of the keypoints on the model as well. Would you please to tell whether you have plan to release the annotation tool as well?

Thank you

Origin of annotated keypoints?

Hi Guys,

I'm rendering images for shapenet using blender, i'm unsure on how can i store the keypoint location wrt the origin of blender.

Rejection rule in correspondence key-points estimation

Hi,

Thank you for making your work public.
I am stuck in a problem, can you please help me?
How could I reject the extra (not required) key-points especially in test time? For example, during training, I can use "-1" to exclude the extra key-points but in test scenario all (21) key-points are estimated by the model. So, how could I ignore the key-points that are not required by assuming that I don't have any info about ground truth.

Best regards,
mz

How to convert class name to english?

Hi, since the class name is wordnet id and the label in annotation file is in English, is there a simple way to find the correponding annotation file for each class?

Install dependencies

Hi. Could you please provide the install dependencies of this code? Some network models cannot run without knowing the install dependencies. Thank you very much.

Full train/val/test split

Hi. Could you please provide the full train/val/test split list? The current version only contains 3 categories. Appreciate for your contribution and kindness!

About environment

Thanks for making this public!
On setting the environment, I am faced with several gcc problems, could you tell me your gcc edition : )

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.