手把手教你利用算法工具链训练、量化、编译、可视化征程 6 参考算法 BEVFormer

作者:杨一飞

1 环境部署

1.1 开发机准备

为了顺利地使用工具链,地平线建议您选择的开发机应满足以下要求:

硬件/操作系统要求 CPUCPU I3 以上或者同级别 E3/E5 的处理器内存16G或以上级别 GPUCUDA11.8、驱动版本 Linux:>= 510.39.01*

(推荐驱动版本 Linux:520.61.05)

适配显卡包括但不限于:

1. GeForce RTX 3090

2. GeForce RTX 2080 Ti

3. NVIDIA TITAN V

4. Tesla V100S-PCIE-32GB

5. A100 系统原生 Ubuntu 22.04

1.2 Docker 容器部署

地平线要求的 Docker 基础环境如下,请提前在您的宿主机上完成安装:

完成 Docker 基础环境安装后,还需要将无 root 权限的用户添加到 Docker 用户组中。参考命令如下:

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart

拉取 docker 镜像,并下载 OE 开发包,将 OE 开发包和 Nuscenes 数据集挂载到 docker 容器中。参考命令如下:

# GPU Docker
docker pull openexplorer/ai_toolchain_ubuntu_20_j6_gpu:{version}
# 手动启动 GPU Docker 镜像
docker run -it --rm
  --network host \ # 调整网络模式为host
  --gpus all \ # 在启动容器时,添加标记以启用GPU资源的访问
  --shm-size=15g \ # 修改共享内存大小,切记修改不然默认64MB
  -v {OE 包路径}:/open_explorer \ # 挂载 OE 包
  -v {数据集路径}:/data/horizon_j6/data \ # 挂载数据集
  openexplorer/ai_toolchain_ubuntu_20_j6_gpu:{version}

注意,“--gpus”参数一定要设置为 all,代表着在容器内能使用开发机所有的 GPU,“--shm-size”一定要修改,不然默认共享内存仅为64MB。

2 数据集准备

2.1 数据集下载

进入nuscenes官网,根据提示完成账户的注册,下载 Full dataset(v1.0)、CAN bus expansion和Map expansion(v1.3)、nuScenes-lidarseg 这四个项目下的文件。下载后的压缩文件为:

|-- nuScenes-map-expansion-v1.3.zip
|-- nuScenes-lidarseg-all-v1.0.tar.bz2
|-- can_bus.zip
|-- v1.0-mini.tar
|-- v1.0-trainval01_blobs.tar
|-- ...
|-- v1.0-trainval10_blobs.tar
`-- v1.0-trainval_meta.tar

Full dataset(v1.0)包含多个子数据集,如果不需要进行 v1.0-trainval 数据集的浮点训练和精度验证,可以只下载 v1.0-mini 数据集进行小场景的训练和验证。

2.2 Full dataset 版本数据集打包和 meta 文件夹构建

2.2.1 数据集打包

将下载完成的 v1.0-trainval01_blobs.tar~v1.0-trainval10_blobs.tar、nuScenes-lidarseg-all-v1.0.tar.bz2、v1.0-trainval_meta.tar、nuScenes-map-expansion-v1.3.zip和can_bus.zip 进行解压,解压后的目录如下所示:

|--nuscenes
    |-- can_bus #can_bus.zip解压后的目录
    |-- lidarseg #nuScenes-lidarseg-all-v1.0.tar.bz2解压后的目录
    |-- maps #nuScenes-map-expansion-v1.3.zip解压后的数据
    |-- samples #v1.0-trainvalXX_blobs.tar解压后的目录
    |   |-- CAM_BACK
    |   |-- ...
    |   |-- CAM_FRONT_RIGHT
    |   |--  ...
    |   `-- RADAR_FRONT_RIGHT
    |-- sweeps
    |   |-- CAM_BACK
    |   |-- ...
    |   |-- CAM_FRONT_RIGHT
    |   |--  ...
    |   `-- RADAR_FRONT_RIGHT
    |-- v1.0-trainval #v1.0-trainval_meta.tar解压后的数据
        |-- attribute.json
        |    ...
        `-- visibility.json

进入 horizon_model_train_sample/scripts 目录,使用以下命令将训练数据集和验证数据集打包,格式为 lmdb。如果将上述 nuscenes 文件夹放到上述目录内,下面 WORKSPACE 可替换为`pwd`。

#pack train_Set
python3 tools/datasets/nuscenes_packer.py --src-data-dir /WORKSPACE/nuscenes/ --pack-type lmdb --target-data-dir /WORKSPACE/tmp_data/nuscenes/v1.0-trainval --version v1.0-trainval --split-name train
#pack val_Set
python3 tools/datasets/nuscenes_packer.py --src-data-dir /WORKSPACE/nuscenes/ --pack-type lmdb --target-data-dir /WORKSPACE/tmp_data/nuscenes/v1.0-trainval --version v1.0-trainval --split-name val

打包结束生成目录如下所示。

|--scripts
    |-- tmp_data
        |-- nuscenes  
            |-- v1.0-trainval 
                |-- train_lmdb
                |   |--data.mdb
                |   |--lock.mdb    
                `-- train_lmdb
                    |--data.mdb
                    `--lock.mdb   
  • --src-data-dir为解压后的 nuscenes 数据集目录;
  • --target-data-dir 为打包后数据集的存储目录;
  • --version  选项为["v1.0-trainval", "v1.0-test", "v1.0-mini"],如果进行全量训练和验证设置为 v1.0-trainval,如果仅想了解模型的训练和验证过程,则可以使用 v1.0-mini 数据集;v1.0-test数据集仅为测试场景,未提供注释。
  • 全量的 nuscenes 数据集较大,打包时间巨长,如果仅仅作为学习使用 mini 版就好。

2.2.2 meta文件夹构建

  • 在 tmp_data/nuscenes 下创建 meta 文件夹,如果使用--version = "v1.0-mini",将解压后的 v1.0-mini 文件夹拷贝到tmp_data/nuscenes/meta 文件夹内,如果使用--version = "v1.0-trainval",将解压后的 v1.0-trainval 文件夹拷贝到tmp_data/nuscenes/meta 文件夹内;
  • 将解压后的maps文件夹拷贝到tmp_data/nuscenes/meta 文件夹内;
  • 将解压后的lidarseg文件夹拷贝到tmp_data/nuscenes/meta 文件夹内。

如果使用--version = "v1.0-trainval"ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值