-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Having some issues with running on a custom dataset #38
Comments
Oh, and I should add, that's with a different value of --ptn_nfeat_stn (but anything less than 6 is set to 8). |
Hi, It is due to an insufficient documentation of my part. This was solved in this issue. I will add it in the readme very soon. Let me know if this does not fix it for you. |
So hardcoding to what is at the end of that issue, I get - RuntimeError: Given groups=1, weight[64, 8, 1], so expected input[69, 7, 128] to have 8 channels, but got 7 channels instead Just poking and prodding, given how we're indexing, I figured for lpsv, it may have needed to be 4:8 (if we're to pick up 4 indices), which does indeed move me to a different error, mentioned below. Traceback (most recent call last): |
Can you run main.py in debug mode and tell me the dimensions of |
So they're both empty; label_mode_cpu is an array only of -100 values. |
Doo you have ground truth labels available on your small dataset? Are you trying to fine tune? If you just want to do inference, set the option Ps: a common source for poor quality results is the scaling of the elevation variable. Are you using the retrained weight of semantic3d or s33dis? |
I largely used the semantic3d dataset as a model for arranging data and such; I have a set of labeled train data, and a few sets of unlabeled test data. Now, that said, the data itself could be -completely- inappropriate for this. I wanted to see if this would be useful for training/testing against a single full rotational sweep of a 3d lidar, i.e., object recognition in semi-real time. So I'm assuming that rather than an entire 3d scene, I only have point projections from a single location in space. While eventually those would be 360 degrees, to start with (just to get some data to play with), I used a Kinect, so point projections from a single viewport. I snapped pointclouds with that for a number of objects, across a number of scenes/angles, labeled them by hand, and that's what I'm using. |
If your shots are indoor I would advise you to use the s3dis model. It seems that the labels are not correctly seen by the algorithms. |
Well, I'm not using either model, but looking to train one from scratch. I just meant I used the sema3d structure as a model, since it had unlabeled test data (and the s3dis used k-fold validation, splitting training into train/test sets; the former more closely matches what I'm trying to do). Setting epochs to -1 does execute (with a not unexpected 0% accuracy). Looking into an object at random from features, I see 939 points in xyz, and 939 labels. |
Hi, can you post the content of the labels value in a /features/ h5 file? or post here a link to a .h5 file? |
Here's a zip with all the h5s (not many, again, very small data set to start with) - https://s3.amazonaws.com/kinect-toy-data/data.zip |
Ok thanks. So it seems like none of the labels of your training dataset are read correctly. In |
I should clarify; I'm actually using the elif condition for custom dataset. Here's what I changed that implementation to -
I also changed read_ply to take in both file and label, and to handle them appropriately, but the raised errors as above should indicate that we have some sort of label info being read in at that stage. |
Do the line |
Ah-hah. Okay. I added some split logic to handle things differently if it was an unlabeled file, vs a labeled one (trying, again, to use the sema3d provider as an example, since that is a case which has both), and it ran. I'm now running into a different issue. If I prevent pruning on the test data, I get some mismatched arrays when calculating the confusion matrix; if I allow it, it all works, but attempting to upsample the prediction to the original test files leads to failure for the lack of RGB data in the feature file, specifically - 1 / 3---> test2 |
And following that to do the obvious, replacing the rgb line with 1 / 3---> test2 So...maybe it wrote out something wonky? |
Right. These are bugs, I'm getting to it now, will push a commit when it's fixed. |
Hi, I did not have time to provide a fully tested solution and I don't want to break the repo just before leaving for 10 days for a conference. Here are some of the (not fully tested) changes I have started to make: new
new
change the last lines of
As for your last error I am not sure. You can try to use Let me know if this fixes some of your errors. Otherwise I will provide a new patch in about 2 weeks. cheers, |
Hi, did you have a chance to run those changes, and did it fix your problems? |
I'm trying to just get things working with a custom dataset right now, one that has no RGB values. The amount of data is small (if that matters), and so I'm not really looking for accuracy, just getting segmentation/training/testing working.
I've attempted to follow the steps listed for both custom and no-RGB data, but I'm still having an issue I'm uncertain of. Partitioning goes fine, reorganizing goes fine, but the training step fails with the following -
Traceback (most recent call last):
File "learning/main.py", line 383, in
main()
File "learning/main.py", line 286, in main
acc, loss, oacc, avg_iou = train()
File "learning/main.py", line 183, in train
embeddings = ptnCloudEmbedder.run(model, *clouds_data)
File "/home/ubuntu/dev/spgraph/learning/pointnet.py", line 135, in run_full_monger
out = model.ptn(Variable(clouds, volatile=True), Variable(clouds_global, volatile=True))
File "/home/ubuntu/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/ubuntu/dev/spgraph/learning/pointnet.py", line 96, in forward
input = self.convs(input)
File "/home/ubuntu/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/ubuntu/anaconda3/lib/python3.6/site-packages/torch/nn/modules/container.py", line 91, in forward
input = module(input)
File "/home/ubuntu/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/ubuntu/anaconda3/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 176, in forward
self.padding, self.dilation, self.groups)
RuntimeError: Given groups=1, weight[64, 8, 1], so expected input[3, 5, 128] to have 8 channels, but got 5 channels instead
Any suggestion as to what I've missed/am doing wrong?
The text was updated successfully, but these errors were encountered: