facebookresearch / votenet

Deep Hough Voting for 3D Object Detection in Point Clouds
MIT License
1.7k stars 376 forks source link

Attempting to train on my own data, receiving RuntimeError about number of channels #110

Closed damonftl closed 3 years ago

damonftl commented 3 years ago

Hi, I've managed to write a custom DataLoader to import my own data into VoteNet. I used the SUNRGBD data loader code as a basis to start from. It gets point cloud data from ply files (just x y z coordinates for each point) and bounding boxes and labels from xml files that go with the ply data. When running a training, it appears to load the data just fine, but as soon as it gets to this line:

end_points = net(inputs)

in train.py in the train_one_epoch() method it fails with this error:

RuntimeError: Given groups=1, weight of size 64 4 1 1, expected input[4, 3, 2048, 64] to have 4 channels, but got 3 channels instead

What I can't figure out is why I apparently am only giving it 3 channels instead of 4. How can I determine what the actual missing data is? It seems like it only requires point cloud data there, which is just x, y, and z values. What's the fourth channel? Or am I looking at this incorrectly?

damonftl commented 3 years ago

I figured this out so I'll post the solution here in case others run across it. It was somewhat dumb on my part - the 4th channel was actually the "height." That is, the height of the points above the floor. My own data does not use that, so all I had to do was add "--no_height" to my train.py command line parameters and that fixed it.