安装mmcv-full
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.1/index.html
安装mmdet
pip install mmdet==2.14.0
安装mmseg
pip install mmsegmentation==0.14.1
如果此时编译mmdet3d可能编译不过去,gcc版本问题
gcc -V 或者 gcc -version;7.5.0至少要搭建cuda11,cuda10,要降级gcc到5.5才可以,亲测7.5编译报错。
安装gcc5.5
sudo apt install gcc-5 g++-5
建立软连接
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 80 --slave /usr/bin/g++ g++ /usr/bin/g++-5
再次执行命令gcc -v
和 g++ -v
查看gcc、g++版本已是5.5
返回到gcc7.5.0,切换多版本
sudo update-alternatives --config gcc
直接选择标号即可
编译mmdet3d
cd mmdetection3d
pip install -v -e .
mmdetection3D RuntimeError: Error compiling objects for extension
解决:
第三行是有问题的,写的方式不正确,导致找不到CUDA_HOME的位置,需要修改为第四行的样式,可以正常进入setup环节
看一下这一篇《Fast-BEV: Towards Real-time On-vehicle Bird’s-Eye View Perception》文章,文中发现发现BEV表示可以在不使用昂贵的视图变换或深度表示的情况下就可以拥有较好的性能,文中将 M 2 B E V M^2BEV M2BEV 作为Baseline,然后进一步引入(1)用于图像和BEV空间的强大数据增强策略以避免过度拟合(2)多帧特征融合机制以利用时间信息(3)优化的部署友好视图变换以加速推理。文中提到M1 模型(R18@256 × 704)在 Tesla T4 平台上可以以 50 FPS 的速度运行。代码也已经在Github上开源了。
paper:https://arxiv.org/pdf/2301.07870.pdf
code:https://github.com/sense-gvt/fast-bev
精确的3D感知系统对自动驾驶来说是至关重要的。而使用纯视觉的BEV方法能够替代传统昂贵的激光雷达。本文基于 M2BEV思想,文中认为图像到BEV视图变换过程中,沿着相机光线的深度分布是均匀的。并提出了更强、更快的全卷积BEV感知框架,无需使用昂贵的视图变换器或深度表示。主要贡献如下:
我们在 M2BEV上验证了两种技术的有效性:强数据增强和多帧时间融合,使Fast-BEV达到最先进的性能。
我们提出了两种加速设计:预先计算投影索引并将其投影到相同的体素特征,使Fast-BEV可以在车载芯片上轻松部署,并具有快速的推理速度。
本文所提出的Fast-BEV是针对实时车载BEV感知的首个部署导向工作。希望我们的工作能够对工业级、实时、车载BEV感知提供启示。
下图是整个框架的示意图,我们可以看到其模型框架基本是依据 M2BEV完成的,但是本文针对M2BEV的问题进行了改进,下面我们详细来看一下
本文整体pipeline:
加入了强大的数据增强,以避免过拟合,并且2加入了多帧特征融合机制,以利用时间信息,从而实现最先进的性能。此外,我们还提出优化3视图变换,以使其更适合车载平台的部署。
fastbev
受BEVDet4D和BEVFormer的启发,作者还将历史帧引入到当前帧中以进行时间特征融合。通过空间对齐操作和级联操作,将历史帧的特征与当前帧的对应特征融合。时间融合可以被认为是帧级的特征增强,在一定范围内较长的时间序列可以带来更多的性能增益。
具体来说,用三个历史关键帧对当前帧进行采样;每个关键帧具有0.5s间隔,本文采用了BEVDet4D中的多帧特征对齐方法。如图6所示,在获得四个对齐的BEV特征后,直接将它们连接起来,并将它们馈送到BEV编码器。在训练阶段,使用图像编码器在线提取历史帧特征,在测试阶段,历史帧功能可以离线保存,并直接取出用于加速。与BEVDet4D和BEVFormer进行比较,BEVDet4D只引入了一个历史框架,我们认为这不足以利用历史信息。
Fast BEV使用三个历史帧,从而显著提高了性能,通过使用两个历史帧,BEVFormer略优于BEVDet4D。然而,由于记忆问题,在训练阶段,历史特征在没有梯度的情况下被分离,这不是最佳的。此外,BEVFormer使用RNN样式来顺序融合特征,这是低效的。相比之下,Fast BEV中的所有帧都以端到端的方式进行训练,这与普通GPU相比更易于训练!
数据集描述:评估了nuScenes数据集上的 Fast BEV,该数据集包含1000个自动驾驶场景,每个场景20秒。数据集被分成850个场景用于训练/验证,其余150个场景用于测试。虽然nuScenes数据集提供来自不同传感器的数据,但我们只使用相机数据。相机有六个视图:左前、前、右前、左后、后、右后。
评估指标,为了全面评估检测任务,使用平均精度(mAP)和nuScenes检测分数(NDS)的标准评估指标进行3D目标检测评估。此外,为了计算相应方面的精度(例如,平移、缩放、方向、速度和属性),使用平均平移误差(mATE)、平均缩放误差(mASE)、平均方向误差(mAOE)、平均速度误差(mAVE),以及平均属性误差(mAAE)作为度量。
随着技术的发展,许多自动驾驶制造商已经开始放弃激光雷达,只使用纯摄像头进行感知。结果,在真实车辆收集的大量数据中没有深度信息。在实际开发中,模型放大或数据放大通常基于从真实车辆收集的数据,以利用数据潜力提高性能。在这种情况下,基于深度监控的解决方案遇到瓶颈,而Fast BEV不引入任何深度信息,可以更好地应用!