PRBonn/lidar-bonnetal

Why in all arch settings, KNN is disabled?

Rasoul77 opened this issue · 1 comments

Hello,
Thanks for sharing your great work!
When I look at the provided arch-yaml files for semantic task, I can observe that in all of them KNN as post processing is disabled, and instead you use CRF (at least for training phase). On the other hand, you have described the KNN post processing in details in the paper (Algo 1). I am confused about the results reported in the paper. Are they achieved by KNN or CRF post processing?

The results in the paper are either achieved via CRFs or KNN as indicated in Table I (i.e. SqueezeSeg-CRF), see also the in the config file of DarkNet53, where under CRF is use: False:

post:
CRF:
use: False
train: True
params: False # this should be a dict when in use
KNN:
use: False
params:
knn: 5
search: 5
sigma: 1.0
cutoff: 1.0

This determines what is done at inference time. Note that the provided checkpoints also have this variable set to False. You can reproduce the results with the checkpoints, but also directly use the predictions that have been provided in the beginning of the README.md.

To be explicit: The reported results for RangeNet53++ in Table I are the RangeNet53 results + additional post-processing with KNN post-processing without the CRF.

It's kind of also a bit misleading, since the Trainer also checks both flags:

if self.ARCH["post"]["CRF"]["use"] and self.ARCH["post"]["CRF"]["train"]:

Therefore, when use is False it disables also the training path. You know...it's still research code. ;)