直接使用
请打开基于基于EasyCV的BEVFormer 3D检测示例,并点击右上角 “ 在DSW中打开” 。
EasyCV BEVFormer 3D检测示例
BEVFormer是一种纯视觉的自动驾驶感知算法,通过融合环视相机图像的空间和时序特征显式的生成具有强表征能力的BEV特征,并应用于下游3D检测、分割等任务,取得了SOTA的结果。我们在EasyCV开源框架中,对BEVFomer算法进行集成,并从训练速度、算法收敛速度角度对代码进行了一些优化。
本文将介绍如何在pai-dsw基于EasyCV快速使用BEVFormer进行3D检测模型模型的训练、推理。
运行环境要求
GPU机型 A100 80G,CUDA >= 11.1
推荐使用dsw官方镜像 modelscope:tf1.15torch1.11-gpu-py37-ubuntu20.04
安装依赖包
1、安装EasyCV算法包
! echo y | pip uninstall pai-easycv && wget https://github.com/alibaba/EasyCV/archive/refs/heads/master.zip && pip install master.zip
2、安装libturbojpeg及依赖用于数据读取加速
! apt-get update ! apt-get install libturbojpeg ! pip install -U git+https://github.com/lilohuang/PyTurboJPEG.git
NuScenes 3D检测模型训练
下面介绍如何利用NuScenes数据,使用BEVFormer模型进行3D检测模型的训练评估、模型预测
数据准备
下载mini-NuScenes数据,并解压
! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/detection3d/nuscenes-v1.0-mini.tar.gz && tar -xf nuscenes-v1.0-mini.tar.gz
下载并调整配置文件
下载训练配置文件,为了节省训练时间,对参数进行一些调整
# 修改data_root data_root = '/mnt/workspace/nuscenes-v1.0-mini/' # 导入预训练模型,确保模型精度 load_from = 'http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/modelzoo/detection3d/bevformer/v2/epoch_24.pth' # 修改epoch数目,节省训练时间 total_epochs = 1
! rm -f bevformer_base_r101_dcn_nuscenes.py ! wget https://raw.githubusercontent.com/alibaba/EasyCV/master/configs/detection3d/bevformer/bevformer_base_r101_dcn_nuscenes.py
训练模型
使用单卡gpu进行训练和验证集评估,为了快速跑通,设置epoch为1。
! python -m easycv.tools.train bevformer_base_r101_dcn_nuscenes.py --work_dir work_dirs/detection3d/bevformer
预测
# 查看训练产生的pt文件,并准备测试文件 ! ls work_dirs/detection3d/bevformer/* ! cd nuscenes-v1.0-mini
导入模型权重和config,并预测测试数据进行预测
import torch import mmcv from easycv.predictors import BEVFormerPredictor predictor = BEVFormerPredictor( model_path='../work_dirs/detection3d/bevformer/epoch_1.pth', config_file='../bevformer_base_r101_dcn_nuscenes.py', ) inputs = mmcv.load('nuscenes_infos_temporal_val.pkl')['infos'][:1] predict_results = predictor(inputs) print(predict_results)