在今年 CVPR 2019 WAD Workshop nuScenes Detection Challenge 中,Mapillary 使用本文介绍的 MonoDIS 达到了目前 SOTA 的 image-only 3D Detection Performance(NDS 38.4%);虽然不及官方基于 lidar 的 pointpillars baseline,但也已经是基于单目非常高的精度了,而且方法很简单。(本次 challenge 最高的 NDS 是我们的 63.3%)
本文的核心是提出了解耦的 regression loss,用来替代之前同时回归 center、size、rotation 带来的由于各个 opponent 的 loss 大小不同导致的训练问题;基本思想是将回归的部分分成 k 个 group,每个 group 只有自身的参数需要学习,其他的部分使用 gt 代替,从而实现每个分支只回归某一个 component,使得训练更加稳定。同时提出了改进的 sIoU loss,将没有 overlap 的 bboxes 的 loss 也考虑进来。同时,本文使用 memory efficient in-place synced bn 替换了原来的 BatchNorm,从而更 efficient 的训练;
arXiv:https://arxiv.org/abs/1905.12365v1
homepage:
https://research.mapillary.com/publication/MonoDIS/
### 1. 2D Detector
#### 1.1 Backbone - RetinaNet
你可以注意到这个 FPN 的方向是反着的;另外,本文提到的 iABN 可以参考 https://github.com/mapillary/inplace_abn
#### 1.2 2D Detection Head
#### 1.3 Loss
* Focal Loss for cls
* IoU Loss for reg
sIoU 值域是 [-1, 1]
### 2. 3D Detector
#### 2.1 3D Detection Head
其中,iABN 参考的是 https://github.com/mapillary/inplace_abn
### 3. Disentangling 2D and 3D Losses
disentangling transformation because it isolates the contribution of groups of parameters to a given loss, while preserving its inherent nature.
翻译成人话就是
把要回归的 loss 分成 k 组,每一组计算 loss 时,使用 Output_j, 以及 GroundTruth_-j,计算出对应的 smooth l1 loss。
这样的好处是,可以解耦具有不同语义的各个部分的相互影响;使得收敛的过程更加平滑,训练更加稳定;如下图所示:
### 4. KITTI benchmark 的问题
本文指出 KITTI 目前采用的从 0~1 之间的 41 个 bin 中取 10 个会出现歧义(9.09),因此转而使用 1/40 ~ 1 之间的 40 个 bin 来计算 AP。
### 5. Results
本文给出了 KITTI 和 nuScenes 上的结果