news 2026/4/22 0:26:12

Apollo 占据网格感知模型:从训练到部署的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apollo 占据网格感知模型:从训练到部署的完整指南

Apollo 占据网格感知模型:从训练到部署的完整指南

    • 引言:什么是占据网格?
    • 第一部分:为什么需要这份指南?(背景与初衷)
    • 第二部分:核心概念与准备工作
      • 2.1 关键术语
      • 2.2 准备工作:驱动确认
    • 第三部分:训练阶段详解
      • 步骤 1: 获取训练环境与数据
      • 步骤 2: 创建并运行容器
      • 步骤 3: 进入容器并初始化
      • 启动SSH服务[可选]
      • 步骤 4: 数据预处理
      • 步骤 5: 模型评估(验证预训练权重)
      • 步骤 6: 模型微调
      • 步骤 7: 保存训练成果并清理
    • 第四部分:模型导出与部署
      • 步骤 1: 导出为ONNX格式
      • 步骤 2: 在Apollo系统中替换并测试模型
      • 模型文件结构说明
    • 总结

引言:什么是占据网格?

想象一下,自动驾驶汽车需要理解它周围的世界。传统方法像识别“那里有一辆车”或“这是一个行人”,但这还不够。自动驾驶汽车还需要知道那些没有被明确训练的物体(比如一个翻倒的纸箱、一个掉落的轮胎),以及空间是否可以被安全通过。

占据网格就是解决这个问题的关键技术。你可以把它理解成自动驾驶汽车的“上帝视角”或“三维思维导图”。它将车辆周围的环境划分成无数个细小的立方体网格(比如长宽各200米,高10米,每个网格0.5米见方),然后为每一个小立方体预测一个简单的状态:是否被占据(是/否)。通过这种方式,汽车能获得一个详尽、统一且不受预定义类别限制的3D环境表示。

本文介绍的camera_detection_occupancy是百度Apollo平台中的一个感知模型,它仅使用摄像头图像,就能生成这种强大的3D占据网格。下面,我们将一步步拆解如何训练、优化并最终将它部署到自动驾驶系统中。


第一部分:为什么需要这份指南?(背景与初衷)

  1. 原训练环境复杂:Apollo官方模型的训练环境依赖众多,配置步骤繁琐,容易出错。
  2. 简化流程:为此,我们将所有依赖打包成Docker镜像,并将测试所需的小型数据集(nuScenes v1.0-mini)也做成数据卷,实现开箱即用。
  3. 云端替代方案:虽然百度百舸AI平台提供了更便捷的BEV模型训练环境,但通常需要申请稀缺的GPU资源。本指南提供的本地Docker方案,让你在拥有NVIDIA GPU的机器上即可快速开始。

核心价值:本指南旨在提供一个一体化、可复现的解决方案,帮助开发者和研究者绕过环境配置的“坑”,直接聚焦于模型本身的训练、评估与部署。


第二部分:核心概念与准备工作

2.1 关键术语

  • Docker:一个容器化平台,可以将软件及其所有依赖打包在一个“容器”里,确保在任何地方运行的结果都一致。我们用它来封装训练环境。
  • nuScenes数据集:一个大型自动驾驶公开数据集,包含摄像头、激光雷达、雷达等多种传感器数据。我们使用其精简版v1.0-mini进行演示。
  • ONNX:一种开放的模型格式,允许你在不同框架(如PyTorch, TensorRT)之间转换和部署模型。
  • TensorRT:NVIDIA推出的高性能深度学习推理SDK,能极大优化模型在GPU上的运行速度。

2.2 准备工作:驱动确认

确保你的NVIDIA显卡驱动版本为580.95.05或兼容版本。

# 查看当前驱动版本nvidia-smi

如果版本不符,可从提供的链接下载安装。
驱动下载


第三部分:训练阶段详解

我们将整个过程分为两个容器:一个用于存放数据,一个用于运行训练代码。这样做的好处是数据可以独立存在,即使删除了训练容器,数据依然保留。

步骤 1: 获取训练环境与数据

下载我们预制的Docker镜像。

# 拉取训练环境镜像,并为其设置一个简短的标签dockerpull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hi20240217/pub:apollo_vision_netdockertag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hi20240217/pub:apollo_vision_net apollo_vision_net:v1dockerrmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hi20240217/pub:apollo_vision_net# 拉取数据卷镜像,它包含了nuScenes mini数据集dockerpull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hi20240217/pub:apollo_vision_net_datadockertag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hi20240217/pub:apollo_vision_net_data apollo_vision_net_datadockerrmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hi20240217/pub:apollo_vision_net_data

步骤 2: 创建并运行容器

# 首先,创建一个“数据容器”,它只是挂着数据,不运行任何程序dockerrun -d --name occ_data_container apollo_vision_net_datatail-f /dev/null# 然后,创建并运行“训练容器”。这里做了几件重要的事:# 1. `--gpus all`:将GPU透传给容器。# 2. `--shm-size=32g`:分配共享内存,大数据处理需要。# 3. `-v $PWD:/home`:将当前主机目录挂载到容器的`/home`,方便文件交换。# 4. `--volumes-from occ_data_container`:从数据容器挂载数据集。# 5. `--name ot_dev`:给容器起名为`ot_dev`。docker
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 23:40:46

【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现

项目介绍 本课程演示的是一款 基于SpringBoot的过滤协同算法之网上服装商城设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署…

作者头像 李华
网站建设 2026/4/21 3:45:37

【02】微服务系列 之 初始化工程

微服务系列 之 工程创建 前言创建应用工程创建 父工程配置 父工程 pom.xml 文件 创建 子模块(服务器)配置 子模块 pom.xml 文件 创建 子模块(实例)配置 子模块 pom.xml 文件 前言 微服务系列技术选型主要为Spring Cloud Alibaba …

作者头像 李华
网站建设 2026/4/18 22:37:50

U++集成开发环境:提升编码效率

在软件开发的世界里,工具的选择往往决定了开发的效率与体验。U框架下的TheIDE,便是一款集代码编辑、调试、界面设计于一体的集成开发环境。它以其轻量级、高响应速度和深度集成U库的特性,吸引了众多追求高效开发的程序员。初次接触TheIDE&…

作者头像 李华
网站建设 2026/4/18 20:10:05

PHP程序员成长感崩塌的庖丁解牛

PHP 程序员成长感崩塌 不是能力不足,而是 在技术迭代、业务压力、价值模糊的三重夹击下,认知系统陷入“无效努力循环”。它表现为“学了很多却用不上”“写了多年代码却无深度”“看不到技术与生命的连接”。 一、崩塌根源:三大认知牢笼 ▶ …

作者头像 李华
网站建设 2026/4/18 11:59:44

《计算机网络》深入学:路由算法与路径选择

在计算机网络的广袤疆域中,数据包如何从全球的一端精准地跳转到另一端?这离不开网络层的核心功能——路由(Routing)。路由算法就像是网络世界的导航系统,决定了数据包在复杂的拓扑结构中应当遵循的路径。 本章将带你深…

作者头像 李华