1 背景信息
团队:南京大学,上海人工智能实验室
时间:2023年12月
代码:https://github.com/MCG-NJU/SparseOcc
2 OCC预测存在的问题
2.1 dense 3D features
目前都是提取的密集3D特征,但是据统计,**90%**的Voxel都是空的,造成了极大的浪费,帧率现在很低,在Tesla A100上只能达到2-3FPS;然而,SparseOCC达到了17FPS;
还有一些稀疏的特征表征方式,最后还是做了saprse2dense的操作,比如VoxFormer。所以本文说自己是fully sparse。
2.2 evaluation
原本是mIOU,这篇文章提出了自己的评价方式RayIOU。
3 SparseOCC的做法
分为3个部分:
- backbone + FPN,提取特征
- sparse voxel decoder,解码出占据网格,但是不带类别信息
- mask transformer,分别各个实例的类别
- 2个decoder输出处理得到带分类的占据网格
3.1 sparse voxel decoder
将下述的层多次执行:
- 将一个体素voxel 8等份,得到8个新的体素;这一步就是论文里说的coarse2fine的步骤,它一步步把占据的网格细化,得到更细致的占据分布
- 这一步使用交叉熵损失进行监督,并考虑到地面这个种类最多,所以对每个类别进行了权重的平衡。
3.2 Mask transformer
- 这一步用到了上一步的输出,但是上一步输出的占据网格也会有错误,因此会把错误的结果类别设为no object;损失使用focal loss
4 Evaluation
4.1 mIOU的问题
一言以蔽之,mIOU鼓励模型预测的网格更厚,和真实场景不符。
If the model fills all areas behind the surface, it inconsistently penalizes depth predictions.
The model can obtain a higher IoU by filling all areas behind the surface and predicting a
closer depth.
如果模型预测的网格在真实网格的后面,那么IOU得分为0;那么如果想要得分高,而且也不预测那么准的话,就把网格预测厚一点,把真实网格包裹住就可以。
If the predicted occupancy represents a thin surface, the penalty becomes overly strict. Even
a deviation of just one voxel results in an IoU of zero.
反之,预测薄了的话,如果没包住真值,那IOU为0,得分就很低。
The visible mask only considers the visible area at the current moment, reducing occupancy
prediction to a depth estimation task and overlooking the scene completion ability.
visible mask告诉模型哪些区域有效,哪些区域无效invisible,那么模型只需要预测有效区域的深度就可以了,让模型occ预测变成了深度预测。
4.2 Ray-IOU的提出
针对每一束射线射到的第一个样本C:求:
TP /(TP + FP + FN)
TP表征实际有,预测有
FP表征实际没有,预测有
FN表征实际有,预测没有
这样有好处:
- 只看射线射到的第一个样本,不考虑其厚度
- TP的阈值更宽,比mIOU宽松一点
- 任何位置都有可能成为光束的起始点,这样子让模型能够真正进行场景建模能力,而不是仅仅深度预测能力
实验
在Ray-IOU中,SparseOCC达到最佳,在mIOU中,BEVDet-OCC达到最佳。
后面的实验结论没看了。
版权归原作者 EEPI 所有, 如有侵权,请联系我们删除。