Git Product home page Git Product logo

jonasschult / dcm-net Goto Github PK

View Code? Open in Web Editor NEW
118.0 11.0 16.0 21.78 MB

This work is based on our paper "DualConvMesh-Net: Joint Geodesic and Euclidean Convolutions on 3D Meshes", which appeared at the IEEE Conference On Computer Vision And Pattern Recognition (CVPR) 2020.

Home Page: https://visualcomputinginstitute.github.io/dcm-net/

License: MIT License

Python 89.12% Shell 10.88%
dcm-net 3d-deep-learning deep-learning semantic-segmentation 3d-segmentation scannet cvpr2020 cvpr

dcm-net's People

Contributors

jonasschult avatar

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  avatar  avatar  avatar

dcm-net's Issues

There is no .csv file when prepare the scannet dataset

in graph_level_generation.py--->quadric_error_metric--->csv2npy:
FileNotFoundError: [Errno 2] No such file or directory: 'Data/scannet_qem_train_rooms/scannet/curr_mesh.csv'
I debugged the code and couldn't find the.csv file in the output directory,only a curr_mesh.ply file.
`def quadric_error_metric(curr_file_path, ratio, old_vertices):
os.system(f"tridecimator "
f"{curr_file_path} {curr_file_path} {ratio} -On -C > /dev/null")

mesh = open3d.read_triangle_mesh(curr_file_path)
if not mesh.has_vertices():
    raise QEMError('no vertices left')
coords = np.asarray(mesh.vertices)
edges_list = edges_from_faces(np.asarray(mesh.triangles))
edge_out = []
for key, group in enumerate(edges_list):
    for elem in group:
        edge_out.append([key, elem])

reverse_trace = csv2npy(curr_file_path.replace(
    '.ply', '.csv'), old_vertices=old_vertices, new_vertices=coords)

return coords, edge_out, reverse_trace`

vcglib - undeclared variables in apps/tridecimator

Hi,

Thank you so much for creating this great work. I have one question regarding the vcglib that you shared. It seems to me that there are some undeclared variables in tridecimator.cpp. Would you mind fixing this issue for us?

Best,
Xingtong

Fail to compile Mesh Simplification Preprocessing (VCGlib)

Hi Jonas,

Thank you for the amazing work and the code!

I followed the installation step by step, everything went good, until when I ran the "make" for QUADRIC ERROR METRICS. I got the errors below. Seems like something wrong in the cpp file. Could you please have a look at that?

And to clearify, by "Add vcglib/apps/tridecimator and vcglib/apps/sample/trimesh_clustering to your environment path variable!", is this the right thing to do or not?

PATH=$PATH:vcglib/apps/tridecimator
PATH=$PATH:vcglib/apps/sample/trimesh_clustering

Appreciate your attention!

tridecimator.cpp: In function ‘int main(int, char**)’:
tridecimator.cpp:165:147: error: ‘dup_face’ was not declared in this scope
face %i and edge %i and deg vertex %i and deg face %i\n",dup,unref, dup_face, dup_edge, deg_vertex, deg_face);
^~~~~~~~
tridecimator.cpp:165:157: error: ‘dup_edge’ was not declared in this scope
d edge %i and deg vertex %i and deg face %i\n",dup,unref, dup_face, dup_edge, deg_vertex, deg_face);
^~~~~~~~
tridecimator.cpp:165:167: error: ‘deg_vertex’ was not declared in this scope
and deg vertex %i and deg face %i\n",dup,unref, dup_face, dup_edge, deg_vertex, deg_face);
^~~~~~~~~~
tridecimator.cpp:165:179: error: ‘deg_face’ was not declared in this scope
tex %i and deg face %i\n",dup,unref, dup_face, dup_edge, deg_vertex, deg_face);
^~~~~~~~
tridecimator.cpp:171:32: error: ‘FinalSize’ was not declared in this scope
printf("reducing it to %i\n",FinalSize);
^~~~~~~~~

Couldn't import GraphLevelDataLoader

Hi, thank you for making your work available. I tried running the model using the scannet_benchmark.json configuration but I got this error
Capture
I checked torch_geometric.data documentation but I couldn't find GraphLevelDataLoader, is it in a different version of torch-geometric or in another library? Thank you

Crops for regression task

Thanks, @JonasSchult for sharing your work.

I'm trying to prepare a dataset for a regression task. I'm not sure how to handle crops as I think the following piece of code assigns labels to level 0 and is written for segmentation task?.

Any idea how can I assign regression labels to level 0.

Thanks

In utils/preprocess/crop_training_samples.py

if level == 0 and is_train:
                        pooled_levels = np.zeros(
                            (traces[0].max() + 1, labels.max() + 1), dtype=np.int)
                        for i in range(len(labels)):
                            pooled_levels[traces[0][i]][labels[i]] += 1

                        pooled_levels = np.argmax(pooled_levels, axis=1)
                        block_labels = pooled_levels[filters[-1]]

                    # map from old indices to new ones
                    block_edges[-1] = np.unique(block_edges[-1],
                                                return_inverse=True)[1].reshape(-1, 2)

How to prepare my own dataset

Thanks for sharing your wonderful work.
Could you please help me to preprocess(prepare) other dataset for training, such as ShapeNet.

Random rotation augmentation neglects normals

On the following line you apply random rotation to help teach your network to be invariant to absolute position. This is important because even though you formulated your input EdgeConv operator to be invariant to absolute position, it still contains absolute orientation. However you neglect to apply this random rotation to your normals as well. This not only means you're learning on absolute orientation but also that your normals and positions no longer match. I suspect fixing this issue could lead to noticeable improvements in your segmentation IoU scores.

https://github.com/VisualComputingInstitute/dcm-net/blob/e021c69d7a27fc985450b6afadef0a3327161a1c/transform/random_rotation.py#L18

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.