paulguerrero / pcpnet Goto Github PK
View Code? Open in Web Editor NEWPytorch implementation of PCPNet
License: Other
Pytorch implementation of PCPNet
License: Other
Hi, great work and thanks for sharing code.
But, is there some auto tools for adding noise to point cloud on your project(Not add noise one by one, just add noise for a batch of point clouds)?
Hello,
Thanks for ur reponse and sharing.
I noticed that you mentioned in the paper that you translated the patch to the origin and normalize its radius multiplying with 1/r. And you transform output curvatures to the original scale of the point cloud by multiplying with r. But in case of multi_scale, there are more than one r. How do you transform the output curvatures to the original scale?
Have a good day,
best,
mulin
Hello
I'm using my own data that only contains curvature, what should I do when training?
I execute the following code:
python train_pcpnet.py --indir ./mydata --trainset trainingset_no_noise.txt --testset validationset_no_noise.txt
How do I choose a training mode
Hi @paulguerrero,
Thanks for releasing this work.
I have a question regards the rectified curvature loss introduced in your paper:
If I understand correctly, that means it's very difficult to get a loss value larger than 1.0, unless the estimated curvature is so bad that the error between it and ground truth is even larger than the ground truth magnitude. For example, estimated k = 11 when ground truth k = 5 so the rectified error in this example is (11 - 5) / 5 = 1.2
If my understanding above is correct, I am confused about how the algorithms (pcpnet and jet) get average mean square rectified error larger than 1.0 for the first principle curvature (Figure 7 in the pcpnet paper)? I guess I must misunderstand something because both jet and pcpnet get this value larger than 1.0 according to Figure 7.
Best,
Zirui
hello ,could you please tell me how to train the model if I use the curvature loss?when we MLP getting the curvature,should we use the oriented or not oriented loss?
I have trained my data and i got the normals and curvatures files,but i don't know how to generate the mesh or texture scene! any recommendations?
Hello, author. I'd like to inquire about an issue. The format required for your experimental data is .xyz .curv .normals, but the point cloud data I've scanned is in a text file (.txt), containing XYZ coordinates. I'm interested in knowing how to convert my XYZ coordinate text file to your .xyz format.
when I tried to download the data and pre-trained model the following error occurred:
You don't have permission to access /group_website/projects/2018/pcpnet/pclouds.zip on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Is it caused by my server or something else? I wonder if anyone has access to the data or the site.
I'm trying to generate point cloud data from mesh such as .stl file, but I failed to create the groundtrue normals of sampled points. Is there any way to generate point cloud and normals from stl file using 3D tools like MeshLab? Thanks.
To author
I think it's kind of idiot question to you about PCPNet Datasets.
I encountered about difference between noise-free normal and noise normal. but some kinds of objects are same....
I thought that kinds of difference will be represent to preserve geometry structure. but i can't understand that should be same from noise case or noise-free case. so can you tell me why should noise pointcloud need different ground truth type normal vector.
Thank you
Hi @paulguerrero,
Thanks for releasing your code. I was wondering if I can ask how are the ground truth normals generated in the dataset? Is it using PCA and KNN?
Best,
Zirui
When using PyTorch 1.0 (and possibly 0.4?), the example eval_pcpnet.py
crashes when using the --models "single_scale_normal_curv"
option:
$ python3 eval_pcpnet.py --models "single_scale_normal_curv"
Random Seed: [number]
getting information for shape galera100k
getting information for shape icosahedron100k
getting information for shape netsuke100k
getting information for shape Cup34100k
getting information for shape sphere100k
getting information for shape cylinder100k
getting information for shape star_smooth100k
getting information for shape star_halfsmooth100k
getting information for shape star_sharp100k
getting information for shape Liberty100k
getting information for shape boxunion2100k
getting information for shape pipe100k
getting information for shape pipe_curve100k
getting information for shape column100k
getting information for shape column_head100k
getting information for shape Boxy_smooth100k
getting information for shape sphere_analytic100k
getting information for shape cylinder_analytic100k
getting information for shape sheet_analytic100k
[single_scale_normal_curv 0/29687] shape galera100k
[single_scale_normal_curv 1/29687] shape galera100k
[single_scale_normal_curv 2/29687] shape galera100k
[single_scale_normal_curv 3/29687] shape galera100k
[single_scale_normal_curv 4/29687] shape galera100k
[single_scale_normal_curv 5/29687] shape galera100k
[snip]
[single_scale_normal_curv 1556/29687] shape galera100k
[single_scale_normal_curv 1557/29687] shape galera100k
[single_scale_normal_curv 1558/29687] shape galera100k
[single_scale_normal_curv 1559/29687] shape galera100k
[single_scale_normal_curv 1560/29687] shape galera100k
[single_scale_normal_curv 1561/29687] shape galera100k
[single_scale_normal_curv 1562/29687] shape galera100k
Traceback (most recent call last):
File "eval_pcpnet.py", line 255, in <module>
eval_pcpnet(eval_opt)
File "eval_pcpnet.py", line 224, in eval_pcpnet
curv_prop[:, 0] = shape_properties[:, output_pred_ind[oi1]:output_pred_ind[oi1]+1]
RuntimeError: expand(torch.cuda.FloatTensor{[100000, 1]}, size=[100000]): the number of sizes provided (1) must be greater or equal to the number of dimensions in the tensor (2)
I think it should be fixable by calling squeeze on the RHS:
curv_prop[:, 0] = shape_properties[:, output_pred_ind[oi1]:output_pred_ind[oi1]+1].squeeze()
This change at least avoids the crash, but I haven't verified the results as yet. The line storing the second curvature also needs to be changed.
Hello i have a problem with dataset.py
can you help me resolve this issue thank you!
dataset.py", line 324, in getitem
patch_normal = torch.from_numpy(shape.normals[center_point_ind, :])
IndexError: index 6033759 is out of bounds for axis 0 with size 2364679
Hello,
Thank u for ur sharing.
I want to know how do you dressing the 3D images which have different color in different place with different properties.
best,
mulin
I want to see how the Net would estimate my one pointcloud.
I added the pointcloud in the pclouds folder (as .xyz and only containing the x y z coordinates) and wrote it in the dataset file.
Unfortunately the eval_pcpnet.py ends around this line:
dataset = PointcloudPatchDataset(
What can I do about that?
Hi,
maybe I am missing something here, but shouldn't the computed principal curvature values be (an approximation) of max/min value of local curvature and therefore c1>=c2 at each point?
Kind regards
Rene
Hello! I want to use the pre-trained models to obtain a consistent normal orientation for a point cloud that already has the estimated normals. Which pre-trained model should I use?
Can anyone share the details steps how we could generate the ground truth normal from point cloud?
I have referred to the previous issue #5, but I don't think I know the exact step to do it.
I have tried to use CloudCompare to calculate the normal, but it doesn't look right.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.