## ✨ News! ✨ - 2023.11.20: 💻 OccNet-Course 在线学习网站上线 ! http://111.229.117.200:8100/ - 2023.9.10: 📝 课程提案 更多更新日志会同步到 [CHANGELOG](CHANGELOG.md),持续更新中,感谢大家的支持与喜欢! | ||
|
|
|
|
|
|
|
|
源代码
开发环境
文档/课件PPT
视频
课后答疑
Surrounding Semantic Occupancy Perception Course for Autonomous Driving
在线课程网站:http://111.229.117.200:7003/
课程章节 (点击标题展开章节详情🔎) |
课程视频 | 课件PPT | 节选 | |
🔥 试看
|
一、BEV感知概述(3周)[课程目录 >](Chapter01-BEV感知概述) - 1.1 课程介绍和内容设计 - 1.2 BEV感知算法的基本介绍 - 1.3 相比于PV视角的差异性 - 1.4 BEV和OccNet的联系 - 1.5 主流的方法一览(前向预测和反向映射) - 1.5.1 LSS - 1.5.2 BEVDet - 1.5.3 BEVFormer - 1.5.4 DETR3D - 1.5.5 FUTR3D - 1.6 小结与课后习题 |
[📹 Video] | [ 百度网盘 4jja ]
|
PPT | [百度网盘] | |
🔥 试看
|
二、占据栅格网络概述(1.5周)[课程目录 >](Chapter02-占据栅格网络概述) - 2.1 3D语义场景补全(SSC)与3D场景预测 - 2.2 占据网络基本思路 - 2.3 纯视觉和多模态分类 - 2.3.1 纯视觉方案 - 2.3.2 点云方案 - 2.4 Occpuancy网络基本流程梳理 - 2.5 优势与挑战 - 2.6 小结与课后习题 |
[📹 Video] | [ 百度网盘wl1f ]
|
[PPT] | [百度网盘] | |
三、重要数据集和Benchmark介绍(1周)[课程目录 >](Chapter03-重要数据集和Benchmark介绍) - 3.1. 主流数据集介绍 - 3.1.1 nuScenes - 3.1.2 SemanticKITTI - 3.1.3 如何自制Occ数据集(SurroundOcc) - 3.2. Benchmark对比 - 3.2.1 指标介绍 - 3.2.2 [当前现状](Chapter03-重要数据集和Benchmark介绍) - 3.2.2.1 Occ3D - 3.2.2.2 OpenOccupancy - 3.3. 主要的竞赛Challenge介绍 - 3.4 小结与课后习题 |
[📹 Video] | [百度网盘] | [PPT] | [百度网盘] | ||
四、基于纯视觉的Occ算法(6周)[课程目录 >](Chapter04-基于纯视觉的Occ算法) - 4.1 纯视觉方法概括 - 4.2 多目相机方案(3周) - 4.2.1 方案概述 - 4.2.2 TPVFormer - 4.2.2.1 算法动机/开创性思想 - 4.2.2.2 主体结构 - 4.2.2.3 损失函数 - 4.2.2.4 实验方法和性能分析 - 4.2.3 OccFormer - 4.2.2.1 算法动机/开创性思想 - 4.2.2.2 主体结构 - 4.2.2.3 损失函数 - 4.2.2.4 实验方法和性能分析 - 4.2.4 OccDepth - 4.2.2.1 算法动机/开创性思想 - 4.2.2.2 主体结构 - 4.2.2.3 损失函数 - 4.2.2.4 实验方法和性能分析 - 4.2.5 VoxFormer - 4.2.6 Occ-BEV - 4.2.7 OccNeRF - 4.2.7.1 算法动机/开创性思想 - 4.2.7.2 主体结构 - 4.2.7.3 损失函数 - 4.2.7.4 实验方法和性能分析 - 4.2.8 SelfOcc - 4.2.8.1 算法动机/开创性思想 - 4.2.8.2 主体结构 - 4.2.8.3 损失函数 - 4.2.8.4 实验方法和性能分析 - 4.2.9 BEV-IO - 4.2.10 SurroundOcc - 4.2.11 方法对比 - 4.2.12 代码实战(复现SurroundOcc) - 4.2.12.1 数据处理 - 4.2.12.2 模型结构源代码分析 - 4.2.12.3 训练方法(真值监督与loss) - 4.2.12.4 训练与推理可视化 - 4.3 单目相机方案(2周) - 4.3.1 方法概述 - 4.3.2 单目相机3D检测 - 4.3.2.1 PGD - 4.3.2.2 SMOKE - 4.3.2.3 Monoflex - 4.3.2.4 FCOS3D - 4.3.3 单目相机Occ代表工作 - 4.3.3.1 MonoScene 原理 - 4.3.3.2 StereoScene 原理 - 4.3.4 方法对比 - 4.3.5 代码实战(复现MonoScene) - 4.4 小结与课后习题 |
[📹 Video] | [百度网盘] | [PPT] | [百度网盘] | ||
五、基于点云和多模态融合的Occ方案(4周)[课程目录 >](Chapter05-基于点云和多模态融合的Occ方案) - 5.1 多模态方式Occ概述 - 5.2 点云3D检测网络介绍(1.5周) - 5.2.1 VoxelNet - 5.2.2 PointPillar - 5.3 基于点云监督的Occ方案(2周) - 5.3.1 FastPillars - 5.3.2 SECOND - 5.3.3 OpenOccupancy - 5.3.4 OccFusion - 5.3.4 [PointOcc](https://github.com/wzzheng/PointOcc) - 5.3.5 [Occ4cast](https://github.com/ai4ce/Occ4cast) - 5.4 代码实战(复现PointOcc) - 5.4.1 数据处理 - 5.4.2 模型结构源代码分析 - 5.4.3 训练方法(真值监督与loss) - 5.4.4 训练与推理可视化 - 5.5 小结与课后习题 |
[📹 Video] | [百度网盘] | [PPT] | [百度网盘] | ||
六、占据网络部署小试(1.5周)[课程目录 >](Chapter06-占据网络部署小试:模型量化加速与部署) - 6.1 模型量化部署概述 - 6.1.1 PTQ (训练后量化、低比特量化) - 6.1.2 QAT 量化感知训练 - 6.2 英伟达芯片量化部署工具链 - 6.2.1 Cuda 基本概述 - 6.2.2 TensorRT 基本概述 - 6.2.3 模型转换(torch2onnx\onnx2trt) - 6.2.4 低比特量化PTQ - 6.2.5 BEVFusion 部署实战 - 6.2.6 BEVFormer 部署实战 - 6.3 地平线J5量化部署工具链 - 6.3.1 导引:MobileNet 低比特量化 - 6.3.2 ‘天工开物’量化部署基本流程 - 6.3.3 模型转换(torch2onnx\onnx2trt) - 6.3.4 低比特量化PTQ - 6.3.5 FlashOCC 部署实战 - 6.3.6 FastBEV 部署实战 |
[📹 Video] | [百度网盘] | |||
七、课程展望与总结(1周)[课程目录 >](Chapter07-课程展望与总结) - 7.1 基本现状、发展趋势和挑战 - 7.2 Occ应用Nerf的一些思考 - 7.2.1 OccNerf、SelfOcc自监督训练方式 - 7.2.2 4D数据标注 - 7.2.3 3D gaussian-splatting 三维场景重建(训练、仿真) - 7.3 算法框架 - 短期: - 7.3.1 感知-预测联合模型 - 7.3.2 数据驱动的端到端 [UniAD](https://github.com/OpenDriveLab/UniAD) - 7.3.3 矢量地图在线建图:MapTR/MapTRv2、ScalableMap、VectorMapNet、HDMapNet、GeMap、MapEX、[HybriMap](https://mp.weixin.qq.com/s/DrerkRzdiIIz7OZMz_9p0g) - 7.3.4 BEV-OCC-Transformer: OccFormer、OccWorld、Occupancy-Flow - 长期: - 7.3.5 端到端大模型 [LMDrive](https://github.com/opendilab/LMDrive) [关于大模型和自动驾驶的几个迷思](关于大模型和自动驾驶的几个迷思.md) - 7.3.6 通用视觉大模型(世界模型)(常识推理、自监督/弱监督):Drive-WM、DriveDreamer - 7.3.7 模型稀疏化(我们其实不需要那么多数据量做训练?) - 7.3.8 训练加速&端侧大模型推理加速 - 7.4 数据 - 7.4.1 4D数据自动标注 - 7.4.2 数据合成 - DrivingDiffusion、[MagicDrive](https://zhuanlan.zhihu.com/p/675303127)、UrbanSyn - [CLIP2Scene](https://github.com/runnanchen/CLIP2Scene) - 7.5 端到端闭环仿真([NeuroNCAP](https://research.zenseact.com/publications/neuro-ncap/)、[NeuRAD](https://research.zenseact.com/publications/neurad/)、VAD、UniAD、UniSim) - 7.6 其他 - 7.6.1 舱驾一体 - 7.6.2 AI 编译器: MLIR、TVM、XLA、Triton - 7.6.3 模型剪枝、模型蒸馏、模型压缩、模型量化(PTQ、QAT) - 7.6.4 自动驾驶系统评测方案 |
[📹 Video] | [百度网盘] | |||
八、大作业(实践内容)(2周)[课程目录 >](Chapter08-FinalProject) - 8.1 复现一个纯视觉方案: 走通数据标定、BEV视角坐标对齐,实现3D目标检测、3D语义场景补全补全完整流程。 - 8.2 参考答案 |
[📹 Video] | [百度网盘] | [PPT] | [百度网盘] | ||
🔥 试看
|
九、补充材料(1周)[课程目录 >](Chapter09-Appendix) - 9.1 Transformer in Vision - 9.2 BEV+Transformer - 9.3 E2E、LLM、Data-driven |
[📹 Video] | [百度网盘] | ||
🎉 课程彩蛋这是一个彩蛋 🥚
|
已建立微信交流群,微信 Yida_Zhang2
git clone https://github.com/Charmve/OccNet-Course --recursive ~/workspace/OccNet-Course
cd ~/workspace/OccNet-Course
./scripts/start_dev_docker.sh
./scripts/goto_dev_docker.sh
bash docker/run_after_start_docker.sh # inside docker
cd code/
大家好!
欢迎来到《占据网络在自动驾驶中的应用》这门课程的学习,我是Charmve,大家也可以叫我察姆。目前任职于国内某自动驾驶独角兽公司,有多年自动驾驶量产经验。在本课程中,我们主要对今年国内外备受关注的Occupancy Network做一个专题学习分享,普遍认为它是解决自动驾驶感知长尾问题的关键技术。
特斯拉在去年AI DAY上,分享了他们在感知方面的一个重点技术:Occupancy Network (占据网络),自此引发业内网对占据网络的关注。研究机器人技术的同学肯定对occupancy grid不会陌生,occupancy表示空间中每个3D体素(voxel)是否被占据,可以是0/1二元表示,也可以是[0, 1]之间的一个概率值。
为什么估计occupancy对自动驾驶感知很重要呢?很核心的一个原因是:车辆在行驶中,除了常见障碍物如车辆、行人,我们可以通过3D物体检测的方式来估计他们的位置和大小,还有更多长尾的障碍物也会对行驶产生重要影响。例如:
因此,我们希望能找到一种更好的表达来描述这些长尾障碍物,完整估计3D空间中每一个位置的占据情况(occupancy),甚至是语义(semantics)和运动情况(flow)。
特斯拉用下图的具体例子来展现Occupancy Network的强大。不同于3D的框,occupancy这种表征对物体没有过多的几何假设,因此可以建模任意形状的物体和任意形式的物体运动。图中展示了一个两节的公交车正在启动的场景,蓝色表示运动的体素,红色表示静止的体素,Occupancy Network精确地估计出了公交车的第一节已经开始运动,而第二节还处于静止状态。
图1 Tesla Occupancy Network
▲对正在启动的两节公交车的occupancy估计,蓝色表示运动的体素,红色表示静止的体素
特斯拉的Occupancy Network 模型结构如下图所示。首先模型利用RegNet和BiFPN从多相机获取特征,然后模型通过带3D空间位置的spatial query对2D图像特征进行基于attention的多相机融合。如何实现3D spatial query和2D特征图之间的联系呢?具体融合的方式图中没有细讲,但最有可能采取的是两种方案: - 第一种,叫做3D-to-2D query,即根据每个相机的内外参将3D spatial query投影到2D特征图上,提取对应位置的特征。该方法在DETR3D[1]中提出,BEVFormer[2]和PolarFormer[3]也采取了该思想。 - 第二种,是利用positional embedding来进行隐式的映射,即将2D特征图的每个位置加上合理的positional embedding,如相机内外参、像素坐标等,然后让模型自己学习2D到3D特征的对应关系,该方法在论文PETR中提出[4]。再接下来模型进行时序融合,实现的方法是根据已知的自车位置和姿态变化,将3D特征空间进行拼接。 不光是上述提到的BEVFormer、PETR算法,我们在本课程中会详细的分析、总结和对比不同算法之间的来龙去脉,各自发展的过程,核心思想和优化点。 这一工作的分享,激发了大家对自动驾驶感知算法方向的探讨,普遍认为占据网络是未来感知算法的终极解决方案 。通过稠密的空间体素占用确定自动驾驶车辆的感知结果,为预测和规划提供更加准备的条件。更加有利于特征时序融合、做到自动驾驶端到端的解决方案,最终实现L4,直至L5完全无人驾驶。
图2 空间占据预测示例(TPVFormer、OccFormer)
图4 课程源代码
图5 课件PPT
1. 对占据网络有较为全面的认识,深入理解各种算法的核心思想和原理,尽可能做到融会贯通,结合实际工作,改善和提高系统感知能力; 2. 对自动驾驶系统的感知算法会有较深入的理解,掌握感知算法的设计痛点和难点; 3. 学完本课程,并理解本课程所讲解的内容,你将会是占据网络掌握的少数人! 4. 提高从业竞争力,卷过同级身边人,同时也能够结识许多行业从业人员与学习合作伙伴!
[课程目录 >](#课程目录)1. 计算机视觉与自动驾驶感知相关研究方向的本科/硕士/博士; 2. CV与自动驾驶2D/3D感知相关算法工程人员; 3. 对占据网络算法感兴趣的朋友,要是有实际需求会更好; 4. 对计算机视觉有部分了解,具有一定的Python、Pytorch基础的小伙伴;
[课程目录 >](#课程目录)