Point cloud segmentation for Puck (VLP-16) lidar data

13 views (last 30 days)
Dániel Attila Anderle
Dániel Attila Anderle on 16 Dec 2021
I have a point cloud recording from a VLP-16 lidar. (pcap file)
But it gives me this error:
I assume this is because the network was made for 64 channels lidar, and VLP-16 is 16 channel.
How can I solve this?

Answers (1)

Srivardhan Gadila
Srivardhan Gadila on 2 Jan 2022
In summary, I think the network seems to work only on the data which is of size 64-by-1024-by-5. Also I don't think the network would output expected/good results on any type of data apart from what it is trained on.
You can first check the network architecture and its summary using the analyzeNetwork function:
analyzeNetwork(net)
We can overcome the error w.r.t the imageInputLayer by replacing it with another imageInputLayer with compatible paramaters:
lgraph = layerGraph(net);
inputLayer = lgraph.Layers(1)
inputLayerMean = inputLayer.Mean
newInputLayer = imageInputLayer([16 1024 5],Name="input",Mean=inputLayerMean)
newlgraph = replaceLayer(lgraph,"input",newInputLayer)
analyzeNetwork(newlgraph)
%newNet = assembleNetwork(newlgraph)
But again we will face an issue with the "SR1_GAP" layer which is an averagePooling2dLayer with 64x256 as its PoolSize. Even though if we can replace this layer with another averagePooling2dLayer with compatible parameters just like above, still there would be issues with the custom layers "helperResizeLayer", "helperReweightLayer" and "helperSigmoidLayer" which are shipped along with the example.
Hence I would suggest to either understand the network architecture and create a similar network, train it from scratch or create/use other networks like squeezesegv2 etc. You can refer to squeezesegv2Layers, Segmentation - Lidar Toolbox & Lidar Processing Using Deep Learning for relevant information.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!