9 Matching Annotations
  1. Dec 2025
    1. 这是一个非常典型的“PNC(规控)选手误入CV(计算机视觉)深水区”的课表。

      作为PNC架构师,我必须敲醒你:李沐老师的课虽然是神课,但他是讲CV和NLP通用的。如果你全看,至少浪费50%的时间。 对于PNC算法岗,你的核心战场是“时序预测”“决策逻辑”,而不是教车子怎么“看图”。

      以下是基于PNC高薪Offer标准的剪裁版学习指南


      第一部分:绝对核心区 (必修 - 死磕)

      优先级:S+ 理由:这是现代自动驾驶Prediction(预测)和End-to-End Planning(端到端规划)的基石。不懂这个,你只能做传统的规则代码,拿不到顶薪。

      • 7月17日 - 7月18日:序列模型、RNN
        • PNC视角:把课程里的“文本/单词”自动脑补替换成“车辆历史轨迹点 (x, y, v, a)”。预测旁车未来3秒怎么走,本质上就是个语言模型(Next Token Prediction)。
      • 7月25日:GRU、LSTM
        • 面试考点:LSTM怎么解决梯度消失的?在轨迹预测(Social-LSTM)里怎么用?
        • 要求手写代码。弄懂Input/Output的维度。
      • 8月7日:Seq2Seq、Encoder-Decoder、束搜索 (Beam Search)
        • PNC视角:这是轨迹生成的标准架构。输入过去5秒轨迹(Encoder),输出未来5秒轨迹(Decoder)。
        • 实战痛点:Beam Search用于生成多模态轨迹(比如预测前车可能直行,也可能左转,这是两条不同的Beam)。
      • 8月8日:注意力机制 (Attention)
        • PNC视角:核心中的核心。用于处理交互 (Interaction)。比如:自车在规划时,应该关注左边的车还是右边的车?Attention Score告诉你答案。
      • 8月14日 - 8月15日:Transformer、BERT
        • 判决学死它
        • 理由:现在的SOTA预测模型(如VectorNet, TNT)和端到端规划(UniAD)全是Transformer架构。面试必问 Self-Attention 的 $O(n^2)$ 复杂度怎么优化。

      第二部分:上下游常识区 (选修 - 速通概念)

      优先级:A 理由:PNC的输入是Perception发来的。你不需要会写检测算法,但你必须懂“输入数据”的特性,才能在规划层做鲁棒性处理(Safety Shield)。

      • 6月27日:物体检测基础 (边缘框、锚框)
        • PNC视角:你需要懂 Bounding Box (bbox)。
        • 痛点:感知发给你的bbox经常会抖动(跳变)。如果你不懂IOU(交并比)和NMS(非极大值抑制),你就不知道怎么在规划层过滤这些噪声。
      • 7月3日:YOLO vs R-CNN
        • PNC视角:只看实时性对比。
        • 考点:为什么车端常用YOLO(快,One-stage)而不用R-CNN?因为规控需要感知在30ms内给结果。
      • 7月10日:语义分割
        • PNC视角:懂概念即可。
        • 理由:语义分割的输出就是PNC里的Costmap(代价地图)可行驶区域 (Drivable Area)。你要知道这个东西是怎么来的,边缘为什么会不准。
      • 8月21日:优化算法
        • PNC视角:SGD, Adam。虽然PNC主要用QP/SQP求解器,但深度学习优化器的思想(动量、梯度下降)对理解非凸优化有帮助。

      第三部分:垃圾时间 (跳过 - 别浪费生命)

      优先级:C (Direct Pass) 理由:这是CV算法岗或者Infra架构师的活,PNC看了没用。

      • 6月19日:多GPU训练、分布式
        • 判决:[跳过]
        • 理由:除非你去搞自动驾驶云端训练平台。
      • 6月20日:图像增广
        • 判决:[跳过]
        • 理由:这是感知的活。规划的增广是对轨迹做扰动,不是对图片做旋转/裁剪。
      • 6月26日:Kaggle 图像分类实战
        • 判决:[跳过]
        • 理由:纯CV比赛,对PNC无加分。
      • 7月11日:样式迁移 (Style Transfer)
        • 判决:[跳过]
        • 理由:那是搞滤镜App用的,车不需要画梵高风格的画。
      • 7月4日:多尺度检测实现、SSD实现
        • 判决:[跳过]
        • 理由:实现细节太繁琐,面试不考规控人员手写SSD Loss。

      导师的“一针见血”总结

      你的学习路径应该是这样的:

      1. 略过前面的CV卷积部分(知道卷积是提特征的就行)。
      2. 空降7月17日 (RNN) 开始认真学。
      3. 死磕 Transformer 及其变体。
      4. 思维转换:每当李沐老师说“单词”时,你脑子里要自动替换成“(x, y)”;每当他说“句子”时,你替换成“轨迹”。

      下一步建议: 学完 Transformer 后,不要去微调 BERT 做文本分类。 直接去找一篇自动驾驶轨迹预测的经典论文(比如 VectorNet 或 Trajectron++)的代码读一下,看看他们是怎么用 LSTM/Transformer 处理 (x,y) 坐标序列的。这才是把你学到的东西变现的唯一路径。

    1. 第一梯队:必刷,且要深挖 (★★★★★) 这部分直接对应PNC的核心算法逻辑,面试必考,工作中常用。

      1. 图论 (Graph Theory) 地位: PNC的灵魂。

      为什么刷: 全局路径规划(Global Routing)完全依赖图搜索。

      重点题目类型:

      BFS / DFS (广度/深度优先搜索): 是一切搜索的基础。

      最短路径 (Dijkstra / Floyd): 必须滚瓜烂熟。

      拓扑排序 (Topological Sort): 处理任务依赖关系时偶尔用到。

      (注:LeetCode上很少有直接的 A 题目,但你需要用 Dijkstra 的题去练习 A 的写法)

      1. 数组 (Array) 地位: 基础中的基础。

      为什么刷: 自动驾驶处理的是矩阵、栅格地图(Grid Map)、点云。

      重点题目类型:

      二维矩阵操作: 比如“矩阵旋转”、“岛屿数量”(本质是搜索)、“搜索二维矩阵”。

      前缀和 (Prefix Sum): 快速计算某段轨迹的累积代价。

      1. 栈与队列 (Stack & Queue) -> 特指 优先队列 (Priority Queue) 地位: 路径规划加速器。

      为什么刷: 图片里可能把“堆”归类在了这里。你需要精通 std::priority_queue(最小堆/最大堆)。

      重点题目类型: Top K 问题、合并K个排序链表(类似多路归并)。这直接对应 A* 算法中 OpenList 的维护。

      第二梯队:选刷,理解思想 (★★★) 这部分有助于解决特定子问题,或者优化性能。

      1. 动态规划 (Dynamic Programming) PNC视角: 在PNC中,DP常用于速度规划(Speed Planning)。例如在 S-T 图(路程-时间图)上寻找一条代价最小的速度曲线,本质就是一个在一个网格中找最优路径的DP问题。

      刷题策略: 不需要刷太偏太难的数学DP,重点刷“网格路径类”和“打家劫舍类”(相邻约束问题)。

      1. 二叉树 (Binary Tree) PNC视角: 标准二叉树用得少,但空间划分树(KD-Tree, Octree)用得多。

      刷题策略: 重点练习树的遍历(递归与非递归)、计算树的深度。这是为了让你理解如何在一个层级结构中快速查找数据。

      1. 滑动窗口 / 双指针 (Two Pointers) PNC视角: 轨迹平滑和处理。

      场景: 比如你需要检查一条长轨迹中,是否存在一段连续的曲率过大的点。这就是一个滑动窗口问题。

      1. 贪心算法 (Greedy) PNC视角: 行为规划(Behavior Planning)中有时会用贪心策略做决策(先变道还是先加速?)。刷一些基础题保持脑子灵活即可。

      第三梯队:可以直接跳过 / 浏览即可 (★) 这部分在PNC领域性价比极低,除非为了应付纯计算机类的通用面试,否则别浪费时间。

      1. 字符串 (String)理由: 自动驾驶处理的是坐标 $(x, y, z, v, a)$,不是文本。除了简单的日志解析,你基本不会遇到“回文串”、“括号匹配”这种问题。

      2. 链表 (Linked List)理由: 正如之前所说,链表内存不连续,对 Cache 不友好,在追求极致性能的 C++ PNC 代码中几乎被 std::vector 全面取代。面试手撕链表通常是为了考察指针操作能力,而不是因为工程中真这么用。会反转链表就行,别钻太深。

      3. 单调栈 (Monotonic Stack) / 回溯算法 (Backtracking)理由:回溯: 也就是暴力穷举。自动驾驶要求 10ms-100ms 必须出结果,回溯的时间复杂度通常是指数级的,工程上不可接受(除非解空间极小)。单调栈: 太针对特定题目,通用性不强。

  2. Nov 2025
    1. 这篇文章深入解析了 PlanT、DIPP 和 PLUTO 三种自动驾驶 PnC 端到端方法,重点阐述了它们在 结构、创新点、损失函数和性能 上的特点,展示了该领域从 基于 Transformer 的特征学习 到 集成预测与可微分规划,再到 结合参考线、辅助 Loss 和对比学习 以超越传统规则方法的演进路线。Bold

    2. 然后加上位置编码Positional Encoding,作为Key和Value,然后会初始化可学习的Query,去做Cross Attention得到最后的编码信息。

      位置编码

    3. 包括主车不能穿越的任何实体都算障碍物

      比如交通锥或其他障碍物,这个是用MLP进行编码,包含位置,朝向角,长宽

    4. 主车状态编码,为了避免先前主车根据历史信息外延就能得到GT的轨迹

      主车状态编码,为了避免先前主车根据历史信息外延就能得到GT的轨迹