Point cloud segmentation for Puck (VLP-16) lidar data
13 views (last 30 days)
I have a point cloud recording from a VLP-16 lidar. (pcap file)
I want to run this on this data: https://www.mathworks.com/help/lidar/ug/detect-classify-and-track-vehicles-using-lidar.html
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?
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:
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)
%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.