Skip to content

MeshCNN for Regression

Rana Hanocka edited this page Sep 25, 2020 · 1 revision

This code base supports the experiments from the MeshCNN paper, which performed discriminative tasks, such as classification and segmentation. But it is possible to modify MeshCNN to do regression tasks. Here are some tips and pointers:

Example of MeshCNN with Regression

We used MeshCNN for surface reconstruction in Point2Mesh. Check out our implementation.

Loss Functions

There are many different options here, but the two most common are the bi-directional chamfer distance (requires sampling meshes and comparing the pointsets). Or simply the MSE between corresponding vertices (but this requires vertex correspondence for ground-truth).

Input Features

You should add a function in mesh_prepare.py. For example:

    def mid_point(mesh, features):
        for edge_id, edge in enumerate(mesh.edges):
            features[edge_id].extend(list((mesh.vs[edge[0]] + mesh.vs[edge[1]]) / 2))

Then also, you should add mid_point to the list of feature extractors in this line:

so it would read:

for extractor in [dihedral_angle, symmetric_opposite_angles, symmetric_ratios, mid_point]

Clone this wiki locally