Giter Club home page Giter Club logo

learning-for-3d-assignment5's Introduction

Overview

In this assignment, you will implement a PointNet based architecture for classification and segmentation with point clouds (you don't need to worry about the tranformation blocks). Q1 and Q2 focus on implementing, training and testing models. Q3 asks you to quantitatively analyze model robustness. Q4 (extra point) involves locality.

models.py is where you will define model structures. train.py loads data, trains models, logs trajectories and saves checkpoints. eval_cls.py and eval_seg.py contain script to evaluate model accuracy and visualize the task results. Feel free to modify any file as needed.

Data Preparation

Download zip file (~2GB) from https://drive.google.com/file/d/1wXOgwM_rrEYJfelzuuCkRfMmR0J7vLq_/view?usp=sharing. Put the unzipped data folder under root directory. There are two folders (cls and seg) corresponding to two tasks, each of which contains .npy files for training and testing.

Q1. Classification Model (40 points)

Implement the classification model in models.py.

  • Intput: points clouds from across 3 classes (chairs, vases and lamps)

  • Output: probability distribution indicating predicted classification (Dimension: Batch * Number of Classes)

Complete model initialization and prediction in train.py and eval_cls.py. Run python train.py --task cls to train the model, and python eval_cls.py for evaluation. Check out the arguments and feel free to modify them as you want.

Deliverables: On your website,

  • Report the test accuracy of your best model.

  • Visualize a few random test point clouds and mention the predicted classes for each. Also, visualize at least 1 failure prediction for each class (chair, vase and lamp), and provide interpretation in a few sentences.

Q2. Segmentation Model (40 points)

Implement the segmentation model in models.py.

  • Input: points of chair objects (6 semantic segmentation classes)

  • Output: segmentation of points (Dimension: Batch * Number of Points per Object * Number of Segmentation Classes)

Complete model initialization and prediction in train.py and eval_seg.py. Run python train.py --task seg to train the model. Running python eval_seg.py will save two GIFs, one for ground truth and the other for model prediction. Check out the arguments and feel free to modify them as you want. In particular, you may want to specify --i and --load_checkpoint arguments in eval_seg.py to use your desired model checkpoint on a particular object.

Deliverables: On your website

  • Report the test accuracy of your best model.

  • Visualize segmentation results of at least 5 objects (including 2 bad predictions) with corresponding ground truth, report the prediction accuracy for each object, and provide interpretation in a few sentences.

Q3. Robustness Analysis (20 points)

Conduct 2 experiments to analyze the robustness of your learned model. Some possible suggestions are:

  1. You can rotate the input point clouds by certain degrees and report how much the accuracy falls
  2. You can input a different number of points points per object (modify --num_points when evaluating models in eval_cls.py and eval_seg.py)

Feel free to try other ways of probing the robustness. Each experiment is worth 10 points.

Deliverables: On your website, for each experiment

  • Describe your procedure
  • For each task, report test accuracy and visualization on a few samples, in comparison with your results from Q1 & Q2.
  • Provide some interpretation in a few sentences.

Q4. Expressive architectures (10 points + 20 bonus points)

Instead of using a vanilla PointNet, improve the base model using one of PointNet++, or DGCNN, or Point Transformers. Your implementation need not leverage all details of these models (e.g. you can use different levels of hierarchy), but should borrow the key design principles and should allow some improvement over the base PointNet model.

Deliverables: On your website,

  • Describe the model you have implemented.
  • For one of the tasks (either segmentation or classification), report the test accuracy of your best model, in comparison with your results from Q1 & Q2.
  • Visualize results in comparison to ones obtained in the earlier parts.

Note that you need to implement at least one of the above locality methods. That will be of worth 10 points. Each extra implemented method will be of worth 10 bonus points each.

learning-for-3d-assignment5's People

Contributors

madhu-korada avatar himangim avatar shubhtuls avatar ayushjain1144 avatar haowoo96 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.