nitika-verma / feastnet Goto Github PK
View Code? Open in Web Editor NEWFeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
Hi Nitika,
could you please explain in a bit more details, how exactly get_slices works, especially at the point where gather function is called. And also, how is adj represented, you say that it is a list of neighbour's indices, but it should be a tensor, and if it a tensor, is it just 0 and 1?
Thanks in advance!
Andrej
Dear Mrs. Verma,
which values do you use for N (according to the paper) or the batch_size (according to the code) in the case of the FAUST dataset?
Will you provide your routines for loading the FAUST data?
Best regards,
Martin.
Hi Nitika ..
Is there any plans to release the code?
so, how do you do labeling, do you use all groundth labels to train?
Hello.
I have used your code to train your model on the FAUST dataset (80/20 training/evaluating) and obtains an accuracy of 0.92 after 175k iterations.
However, if I simply change the order of the vertices in the mesh (and accordingly re-index the faces and adapt the labels), the accuracy from the learned model drops to near 0.
Is that expected behavior, or have I done something wrong ?
My understanding is that the learned weights Wm have no relation to the mesh topology only to its surface, and that the learned weight function qm is only sensitive to the neighbors order, which should not change by simply re-ordering the vertices.
Hi Nitika, thanks for sharing the project! I wonder if you have used pooling/unpooling in the current code? I saw 'custom_max_pool' but no usage of it. Thanks!
Nothing has been mentioned about license. Is it permitted to use for commercial purpose ?
You will need to sign up here to get it and create/read the files as highlighted in point 2.
I can not understand the above part , "create/read the files as highlighted in point 2".
And,I don't know which data must beloaded.
(example)
x(input) :vertex(from tr_scan_000.ply to tr_scan_099.ply)
adj(train_adj) :mesh(from tr_scan_000.ply to tr_scan_099.ply)
y_(label) :ground_truth_vertices(from tr_gt_000.txt to tr_gt_099.txt)
I load the data"tr_scan_000.ply",but 'mesh' don't fit "shape=[BATCH_SIZE, NUM_POINTS, K]".
So should I create function that makes "y_(label)" data that fit "shape=[BATCH_SIZE, NUM_POINTS, K]".
('mesh' number doesn't correspond vertex number.)
[tr_scan_000.ply]
'mesh': v1 v2 v3
0 130176 7952 105406
1 7099 6131 6111
2 44554 25566 59072
3 1195 82888 82898
4 125943 80471 3402
5 3102 3017 3105
6 48371 46964 51590
7 78198 72749 18518
8 10977 8871 8894
Please explain it concretely.
TakoyakiTako.
Hi Nitika, thanks for the code! I cannot find the code ahout mutil-scale.Can you share the pool/upsample code?
Hi, I am very interested in your paper "FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis", and I found this corresponding repository in the paper.
Could you kindly release the code for us to do some further research on the graph convolutions?
Thank you very much!
Hi Nitika,
there seems to be a bug in get_slices() that causes all elements of the batch (except for the first) to be indexed wrongly. In src/model.py, line 92 should be adj_flat = adj_flat*(num_points+1)
instead of adj_flat = adj_flat*in_channels
.
As a simple test case, use return tf.stop_gradient(tf.convert_to_tensor([[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]))
for weight_variable, return tf.stop_gradient(tf.convert_to_tensor([0., 0., 0.]))
for bias_variable, and then use a single conv layer like this: net = custom_conv2d(net, adjacency, 3, M=1, translation_invariance=False)
(where the vertex features are simply the xyz coordinates). That should be a Laplacian smoothing, but the results looked only correct for the first element of the batch for me. With the change from above, all elements look good.
Regards,
Edgar
Hello, can you share your code or ideas about how to prepare the training and test dataset? Thanks!
Thank you for sharing this code.
Could you please explain further how to reproduce the paper results?
get_model()
seems to provide a skeleton for the shape segmentation but not the architecture reported in the paper. There should be Lin512-Lin2048-MaxPool before the last two dense layers, right?Line 208 in 53903d5
Thank you.
Edit: For point 2., I realise now that the provided architecture matches the single scale model.
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.