Giter Club home page Giter Club logo

charmve / occnet-course Goto Github PK

View Code? Open in Web Editor NEW
140.0 2.0 18.0 174.07 MB

国内首个占据栅格网络全栈课程《从BEV到Occupancy Network,算法原理与工程实践》,包含端侧部署。Surrounding Semantic Occupancy Perception Course for Autonomous Driving (docs, ppt and source code) 课程主页:http://111.229.117.200:7001/

License: BSD 3-Clause "New" or "Revised" License

Dockerfile 0.12% Shell 1.88% Python 61.59% C++ 18.26% Cuda 8.24% CMake 1.15% HTML 0.15% Jupyter Notebook 0.08% Makefile 0.55% Batchfile 0.01% C 7.56% JavaScript 0.29% Vim Script 0.04% CSS 0.09%
autonomous-driving autonomous-vehicles bev end-to-end occupancy occupancy-prediction self-driving-car tesla

occnet-course's Introduction

💖 预计2024年4月会开源本课程的标准版部分内容,包含源代码和课件


✨ News! ✨

更多更新日志会同步到 CHANGELOG,持续更新中,感谢大家的支持与喜欢!

不建议 fork 项目,本项目会持续更新,只 fork 看不到更新,建议 Star ⭐️ ~

文档 源代码 视频 课后答疑

OccNet-Course

Surrounding Semantic Occupancy Perception Course for Autonomous Driving


From BEV to Occupancy Network
*From https://github.com/CVPR2023-3D-Occupancy-Prediction/CVPR2023-3D-Occupancy-Prediction


背景介绍

在没有occupancy network之前,感知只有识别出障碍物是什么类型,规控才会响应,进行制动或避让的响应。如果感知识别不出来,不好意思,就是一堵墙挡在前面,车子也会“无脑”撞上去。

image

没有occupancy network之前的特斯拉

就算识别出了目标,给出的空间也不一定准确。按照3m的跟停距离来说,这种场景也有一定剐蹭的风险。

image

敢问阁下将如何应对

但有了occupancy network之后,感知就可以输出这部分的网格是被占用的,达到类似激光雷达点云的作用,从而给出位置和速度。规控就可以对这种被占用的位置做响应。

occupancy networks 效果图

可以说occupancy network对感知来说是质的飞跃,干掉激光雷达成为了可能。有了occupancy network,撞墙、撞无法识别出类型的障碍物已经成为历史!无论是路边的电线杆、还是标志牌,无论挡在车前的是树枝、是牛都可以响应。

image

Occupancy网络可以识别移动部分和非移动部分、未知障碍物等。

很多人提到Occ网络,会理解为对通用障碍物,尤其是白名单之外的异形障碍物的感知能力,这没有错。但很多人不知道,Occ网络对于遮挡,也能起到很好的脑补能力。3D空间的占据栅格可以很方便计算遮挡关系,就能帮助感知系统预见遮挡区域。




课程介绍

大家好!

欢迎来到《占据网络在自动驾驶中的应用》这门课程的学习,我是Charmve,大家也可以叫我察姆。目前任职于国内某自动驾驶独角兽公司,有多年自动驾驶量产经验。在本课程中,我们主要对今年国内外备受关注的Occupancy Network做一个专题学习分享,普遍认为它是解决自动驾驶感知长尾问题的关键技术。

特斯拉在去年AI DAY上,分享了他们在感知方面的一个重点技术:Occupancy Network (占据网络),自此引发业内网对占据网络的关注。研究机器人技术的同学肯定对occupancy grid不会陌生,occupancy表示空间中每个3D体素(voxel)是否被占据,可以是0/1二元表示,也可以是[0, 1]之间的一个概率值。

为什么估计occupancy对自动驾驶感知很重要呢?很核心的一个原因是:车辆在行驶中,除了常见障碍物如车辆、行人,我们可以通过3D物体检测的方式来估计他们的位置和大小,还有更多长尾的障碍物也会对行驶产生重要影响。例如:

  1. 可变形的障碍物,如两节的挂车,不适合用3D bounding box来表示;
  2. 异形障碍物,如翻倒的车辆,3D姿态估计会失效;
  3. 不在已知类别中的障碍物,如路上的石子、垃圾等,无法进行分类。

因此,我们希望能找到一种更好的表达来描述这些长尾障碍物,完整估计3D空间中每一个位置的占据情况(occupancy),甚至是语义(semantics)和运动情况(flow)。

特斯拉用下图的具体例子来展现Occupancy Network的强大。不同于3D的框,occupancy这种表征对物体没有过多的几何假设,因此可以建模任意形状的物体和任意形式的物体运动。图中展示了一个两节的公交车正在启动的场景,蓝色表示运动的体素,红色表示静止的体素,Occupancy Network精确地估计出了公交车的第一节已经开始运动,而第二节还处于静止状态。

legend
图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完全无人驾驶。

demo legend
图2 空间占据预测示例(TPVFormer、OccFormer)

不知道怎么学习占据网络?学习难度大?

今年来,学术界和工业界都在视觉occupancy方面有了大量的工作,从纯视觉的方案到多传感器的方案、从前向预测到后向预测,再到最近提出的forward-backward联合方案。对于我们初学者,造成了极大的学习困难。一下子不知道如何下手,从哪开始。本课程的出发点就是为了解决这个痛点,应该算是国内外对于占据网络全面讲解的第一个课程或者专题内容。

在接下来的很长一段时间,我会从自动驾驶从业者的角度,跟大家一起学习和分享占据网络的发展及其算法原理,同时我们也提供了代码实践内容。以通俗的语言讲解从2D目标检测到BEV视角下的3D目标检测,再到3D空间占用算法的整个过程。并且尤其关注到算法原理本身,对比不同算法,详细分析其核心**和各算法的优化点。更为特别的,在本课程中,我们会给出两个占据网络的复现和优化,让你快速复现,学以致用。尤其适合目前正在求职的朋友、对自动驾驶感知算法感兴趣的跨行就职者。每个章节都会有详细的课件和答疑群,欢迎大家一起交流!课程后,会有一个大作业,根据给出的条件和目标,思路提示,完成占据网络算法的优化,提升mIoU指标。


图3 课程源代码

课程特色

✨ 系统性学习占据网络算法设计原理、多种方案对比分析,由浅入深。最重要的是,本课程是一个实践课程,亲自动手设计、训练和部署一个Occ网络,走完一个闭环。这对于进入求职者是十分有优势的一点,尤其对于现在想要进入自动驾驶算法岗位的同学,占据网络、BEV、Transformer和部署经验,都是十分有竞争力的一点。

  • 由浅入深,通俗易懂

作者根据多年的自动驾驶经验,从占据网络的发展过程详细的阐述从2D检测到BEV 3D检测再到占据网络,讲清楚为什么前一方法不适用,各自方法有什么局限性。占据网络的神力又在哪里?由浅入深,一个问题一个问题解答。

  • Occ算法全覆盖,高度提炼

涵盖当前几乎所有的占据网络算法,融会贯通,总结和提炼各自算法的核心**,引出新的思考。

  • 理论结合实战

项目实战和理论结合,实战课程的课后配套实战代码和操作文档,随学随练、快速掌握。

Index

课程目录

#自动驾驶感知算法之占据网络专题#

课程章节(点击标题展开章节详情🔎) 课程视频 课件PPT 源代码
🔥 试看
一、BEV感知概述(3周)

课程目录

  • 1.1 课程介绍和内容设计
  • 1.2 BEV感知算法的基本介绍
  • 1.3 相比于PV视角的差异性
  • 1.4 BEV和OccNet的联系
  • 1.5 主流的方法一览(2周)
    • 1.5.1 LSS
    • 1.5.2 BEVDet
    • 1.5.3 BEVFormer
    • 1.5.4 DETR3D
    • 1.5.5 FUTR3D
[📹 Video] | [Baidu Cloud百度网盘] 提取码: 4jja [PPT](Chapter01-BEV感知概述/占据网络专题-第一章-BEV感知概述.pptx) | [百度网盘]
🔥 试看
二、占据栅格网络概述(1.5周)

课程目录

  • 2.1 3D语义场景补全(SSC)介绍
  • 2.2 占据网络基本思路
  • 2.3 纯视觉和多模态分类
    • 2.3.1 纯视觉方案
    • 2.3.2 点云方案
  • 2.4 Occpuancy网络基本流程梳理
  • 2.5 优势与挑战
[📹 Video] | [Baidu Cloud百度网盘] 提取码: wl1f [PPT]() | [百度网盘]()
三、重要数据集和Benchmark介绍(1周)

课程目录

  • 3.1. 主流数据集介绍
    • 3.1.1 nuScenes
    • 3.1.2 SemanticKITTI
  • 3.2. Benchmark对比
    • 3.2.1 指标介绍
    • 3.2.2 当前现状
  • 3.3. 主要的竞赛Challenge介绍
[📹 Video] | [百度网盘]() [PPT]() | [百度网盘]()
四、基于纯视觉的Occ算法(6周)

课程目录

  • 4.1 纯视觉方法概括
  • 4.2 多目相机方案(3周)
    • 4.2.1 方案概述
    • 4.2.2 TPVFormer
    • 4.2.3 OccFormer
    • 4.2.4 OccDepth
    • 4.2.5 voxformer
    • 4.2.6 Occ-BEV
    • 4.2.7 BEV-IO
    • 4.2.8 SurroundOcc
    • 4.2.9方法对比
    • 4.2.10代码实战(1周)
  • 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 代码实战
[📹 Video] | [百度网盘]() [PPT]() | [百度网盘]()
五、基于点云和多模态融合的Occ方案(4周)

课程目录

  • 5.1 多模态方式Occ概述
  • 5.2 点云3D检测网络介绍(1.5周)
    • 5.2.1 VoxelNet
    • 5.2.2 PointPillar
  • 5.3 BEV下的3D点云感知(2周)
    • 5.3.1 FastPillars
    • 5.3.2 SECOND
    • 5.3.3 OpenOccupancy
  • 5.4 方案对比
[📹 Video] | [百度网盘]() [PPT]() | [百度网盘]()
六、占据网络部署小试(1.5周)

课程目录

  • 6.1 Cuda 基本概述
  • 6.2 TensorRT 基本概述
  • 6.3 BEVFormer 部署实战
  • 6.4 VoxFormer 部署实战
[📹 Video] | [百度网盘]
七、课程展望与总结(1周)

课程目录

  • 7.1 Occ应用Nerf的一些思考
  • 7.2 基本现状和发展趋势
[📹 Video] | [百度网盘]
八、大作业(实践内容)(2周)

课程目录

  • 8.1 复现一个纯视觉方案,走通数据标定、3D目标检测、BEV视角坐标对齐、3D语义场景补全补全完整流程。
  • 8.2 参考答案
[📹 Video] | [百度网盘] [PPT]() | [百度网盘]
🔥 试看
九、补充材料(1周)

课程目录

  • 9.1 Transformer in Vision
  • 9.2 BEV+Transformer
  • 9.3 E2E、LLM、Data-driven
[📹 Video] | [百度网盘]
🎉 课程彩蛋 这是一个彩蛋 🥚

课前预习材料

已建立微信交流群,微信 Yida_Zhang2

Quick-start

git clone https://github.com/Charmve/OccNet-Course ~/workspace/OccNet-Course
cd ~/workspace/OccNet-Course

scripts/start_dev_docker.sh
scripts/goto_dev_docker.sh

cd code/

课件代码一应俱全

细致的讲解,不光要有理论,代码及实践也一定要讲透彻!通过全套的视频讲解,帮你在脑海中搭建模型的基本框架,彻底搞懂每一个知识点,从而提高写代码的效率和速度。


图4 课程源代码


图5 课件PPT
图5 课件PPT

Index

讲师介绍

我是 Charmve,在多家自动驾驶头部公司任职,主要关注在BEV视觉感知、3D场景重建,有多个自动驾驶量产项目经验。近年来,尤其关注在占据网络的研发上,根据个人所学所思和工作实践,跟大家一起分享这个主题内容。

Index

课程学后收获

  1. 对占据网络有较为全面的认识,深入理解各种算法的核心**和原理,尽可能做到融会贯通,结合实际工作,改善和提高系统感知能力;
  2. 对自动驾驶系统的感知算法会有较深入的理解,掌握感知算法的设计痛点和难点;
  3. 学完本课程,并理解本课程所讲解的内容,你将会是占据网络掌握的少数人!
  4. 提高从业竞争力,卷过同级身边人,同时也能够结识许多行业从业人员与学习合作伙伴!

Index

适合人群

  1. 计算机视觉与自动驾驶感知相关研究方向的本科/硕士/博士;
  2. CV与自动驾驶2D/3D感知相关算法工程人员;
  3. 对占据网络算法感兴趣的朋友,要是有实际需求会更好;
  4. 对计算机视觉有部分了解,具有一定的Python、Pytorch基础的小伙伴;

Index

开课时间与学习方式

2023年11月份开始学习之路,历经两个月,离线视频授课。主讲老师在微信学习群内答疑,对课程中的算法、代码、环境配置等问题一一解惑!

Index

课程咨询与购买

课程采用预售方式,本仓库star数超过1k,或预定人数超过100人后,将会上线全部课程和源代码,课程长期更新。

VIP 专享8折优惠券

扫码支付 微信支付 支付宝 Paypal

扫码学习课程

微信咨询:Yida_Zhang2

(Click to study) 前20名 或 转发朋友圈 8折

860 688 元
  

付完款,一定记得加我,加入课程答疑交流群 微信Yida_Zhang2

Index

🔥 Stargazers Over Time

Star History Chart

Index


Acknowledge

Some benchmark result and soure code from: https://github.com/CVPR2023-3D-Occupancy-Prediction/CVPR2023-3D-Occupancy-Prediction

@Maiwei.ai

occnet-course's People

Contributors

charmve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

occnet-course's Issues

pull Docker image error

[WARNING] Now switch to AliYun Registry.
Error response from daemon: Get "https://registry.mwayai.com/v2/": dial tcp: lookup registry.mwayai.com: no such host
invalid reference format
[ERROR] Failed to pull Docker image global/mway-dev: from AliYun Registry.
[ERROR] Failed to pull Dev Docker image: global/mway-dev:
yxc@yxc-MS-7B89:~/code/OccNet-Course$ scripts/goto_dev_docker.s

2024 各家bev-occ方案进展

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.