BEVDet-Tiny复现Nuscenes-Mini数据集

论文地址:https://arxiv.org/abs/2112.11790
项目地址:https://github.com/HuangJunJie2017/BEVDet


在anaconda中创建虚拟环境并启动

conda create bevdet_ckpt python=3.7 -y

进入虚拟环境

conda activate bevdet_ckpt

阅读论文,想要复现BEVDet的Tiny版本,在原作者的Github最新branch分支中,./configs/bevdet下已经没有tiny的py文件了。查看另外5个brach发现,在checkpoint和master分支下还保留了tiny文件。

通过git进行clone为dev3.0的最新分支,所以通过zip下载。

https://github.com/HuangJunJie2017/BEVDet/archive/refs/heads/checkpoint.zip

解压后进入bevdet-checkpoint文件夹。

安装相关依赖

conda install -c pytorch pytorch torchvision -y
# pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
pip install mmcv-full==1.3.13
pip install mmdet==2.14.0
pip install mmsegmentation==0.14.1
pip install -v -e .

进入nuscenes官网注册账号登陆后https://www.nuscenes.org/nuscenes#download下载mini数据集

image-20241023223028065

image-20241023223048053

将mini dataset下载后的v1.0-mini.tgz解压出来可得到名为v1.0-mini的文件夹,改名为nuscenes,并移动到项目根目录下的./data文件夹中;

Map expansion下载解压后将文件移动到nuscenes解压出来的Map文件夹中,作为地图扩展;

对nuscenes中的v1.0-mini复制一份并改名为v1.0-trainval

image-20241023223656853

预处理nuscenes数据集

python tools/create_data.py nuscenes --version v1.0-mini --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes

如果数据集不在data文件夹下,需要替换–root-path为相应文件路径,并且在后续训练测试时需要修改config文件。

直接开始训练

# single-gpu 
python tools/train.py ${CONFIG_FILE} [optional arguments]

# multi-gpu 
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments]

单gpu和多gpu分别使用上面的命令;本次复现通过单gpu进行测试:

python tools/train.py ./configs/bevdet/bevdet-sttiny.py

如果数据集并不在./data/nuscenes中,需要修改bevdet-sttiny.py中的相关代码为数据集路径:

image-20241026174002950


运行后出现报错,查找相关解决方案:

image-20241026171711565

通过运行pip install yapf==0.40.1解决,并重新进行训练,继续出现报错,查找相关解决方案:

image-20241026171949101

image-20241026172008809

通过运行pip install setuptools==59.5.0解决,并重新进行训练。

image-20241026172142755

测试如下:

# single-gpu testing
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show] [--show-dir ${SHOW_DIR}]

# multi-gpu testing
./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}]

使用单gpu进行测试:

python tools/test.py ./configs/bevdet/bevdet-sttiny.py ./work_dirs/bevdet-sttiny/latest.pth --eval mAP

测试结果

image-20241026172645752

可视化:

因为checkpoint分支下的./tools/analysis_tools中没有vis.py文件,所以从别的分支中下载vis.py文件并移动至./tools/analysis_tools中。

https://github.com/HuangJunJie2017/BEVDet/raw/refs/heads/master/tools/analysis_tools/vis.py

可视化前需要得到json文件,所以重新运行:

python ./tools/test.py ./configs/bevdet/bevdet-sttiny.py work_dirs/bevdet-sttiny/latest.pth --format-only --eval-options jsonfile_prefix=$savepath

./pts_bbox中得到results_nusc.json

运行

python tools/analysis_tools/vis.py ./pts_bbox/results_nusc.json

在根目录下出现vis文件夹,里面为mp4视频文件

image-20241026173654816

<think>好的,我现在需要帮助用户了解BEV(Bird's Eye View)相关的学习路径和资源。首先,我需要回顾用户提供的系统级指令和参考引用,确保回答符合格式和内容要求。 首先,用户提到必须使用中文回答,并且生成相关问题。同时,引用的站内资料需要正确标注。用户提供的引用[1]和[2]主要介绍了BEV的基本概念、应用领域以及当前面临的主要问题,如视角转换、特征融合等。 接下来,我需要构建一个结构清晰的学习路线。考虑到BEV涉及计算机视觉、深度学习、传感器融合等多个领域,学习路径应该从基础到高级逐步推进。可能需要分阶段,比如基础知识、核心算法、实践应用、高级专题等。 在基础知识部分,用户需要了解计算机视觉的基本概念,比如图像处理、特征提取,以及深度学习的基础,如CNN、Transformer。数学基础方面,线性代数、概率统计和3D几何也很重要。这部分可以推荐经典的教材和在线课程,比如《深度学习》和Andrew Ng的课程。 核心概念部分,需要详细解释BEV的定义、传感器数据转换(如相机、激光雷达)、视角转换的算法。这里可以结合引用[1]提到的BEV网络如何转换传感器数据,以及引用[2]中提到的视角重构问题。可能需要提到多视图几何、NeRF等技术。 在实践应用阶段,建议学习框架如PyTorch,参与开源项目如BEVFormer,并实践数据集nuScenes。同时,可以推荐具体的论文和教程,比如Waymo的开放数据集和相关GitHub项目。 高级专题方面,引用[2]提到的特征融合、跨传感器标定、3D目标检测和动态场景处理都是关键点。需要引导用户阅读最新的论文和参与行业会议,保持对前沿技术的了解。 资源推荐部分,要包括课程、论文、代码库和社区。确保引用的资料权威且实用,比如CVPR教程和特斯拉的演讲。 最后,生成的相关问题需要围绕学习路线中的难点、应用优化、数据集比较和实际挑战展开,帮助用户深入思考。 检查是否需要使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$,并确保没有语法错误。同时,引用标识要自然地添加在相关段落的末尾,如[^1][^2]。 总结整个思考过程,确保回答结构清晰,符合用户的要求,并且涵盖用户可能需要的各个方面,从理论到实践,逐步深入。</think>### BEV(Bird's Eye View)学习路线与资源指南 #### 一、基础知识准备 1. **计算机视觉基础** - 学习图像处理、特征提取、目标检测等基础概念,推荐课程如《计算机视觉:模型、学习和推理》。 - 掌握经典算法:卷积神经网络(CNN)、Transformer、多视角几何等。 - 数学基础:线性代数(矩阵变换)、概率统计、3D几何(如坐标系转换公式:$$P_{\text{BEV}} = T \cdot P_{\text{camera}}$$)。 2. **深度学习框架** - 熟练使用PyTorch或TensorFlow,建议通过官方教程和实战项目(如Kaggle竞赛)加深理解。 --- #### 二、BEV核心概念与技术 1. **BEV定义与传感器融合** - BEV的核心是将多传感器数据(相机、激光雷达、雷达)映射到俯视坐标系,需理解相机标定、点云处理(如激光雷达数据格式:$x, y, z, \text{intensity}$)。 - 学习视角转换算法,如IPM(逆透视变换)、NeRF(神经辐射场)等。 2. **特征提取与融合** - 研究多模态特征融合方法(如早期融合、晚期融合),重点关注BEVFormer等模型的设计思路。 - 掌握跨视图特征对齐技术(如可变形注意力机制)。 --- #### 三、实践与项目 1. **开源框架与工具** - 代码库: - [BEVFormer](https://github.com/fundamentalvision/BEVFormer)(基于多摄像头的BEV检测模型) - [LSS(Lift-Splat-Shoot)](https://github.com/nv-tlabs/lift-splat-shoot)(特斯拉采用的BEV生成方法) - 数据集- nuScenes(多传感器标注数据) - Waymo Open Dataset(大规模自动驾驶场景) 2. **论文精读与复现** - 必读论文: - *"BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View"* - *"Translating Images into Maps"*(IPM与深度学习的结合)[^2] - 复现经典模型(如BEVDepth),理解损失函数设计(如$L_{\text{bev}} = \alpha L_{\text{3D}} + \beta L_{\text{2D}}$)。 --- #### 四、高级专题与研究方向 1. **动态场景与时序建模** - 研究BEV中的运动预测(如轨迹生成算法:$s(t) = \int v(t) dt$)。 - 探索多帧BEV融合(如视频BEV感知)。 2. **泛化性与适配性优化** - 针对传感器参数变化(如相机焦距不同),学习领域自适应方法(如无监督域适应)。 --- #### 五、推荐学习资源 1. **课程与教程** - [MIT 6.869: Advances in Computer Vision](https://ocw.mit.edu/)(包含BEV相关专题) - [CVPR 2023 BEV感知教程](https://cvpr2023.thecvf.com/) 2. **社区与论坛** - arXiv最新论文(关键词:BEV Perception, Bird's Eye View) - 知乎专栏《自动驾驶中的BEV感知》 - 特斯拉AI日技术解读(BEV生成与Occupancy Networks) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值