最近圈内聊“纯视觉”聊得很凶正好赶上某新势力品牌旗舰车型X-01交付全车没有一颗激光雷达只靠摄像头加神经网络就把城市领航辅助跑了起来官方甚至直接把“纯视觉”三个字写进了宣传语。我自己的感知算法相关工作做了六七年被问得最多的一句话也是摄像头到底能不能替代激光雷达X-01这套方案给出的不是口号而是一套完整的技术栈。这篇不写参数评测纯粹从一个感知工程师的视角拆一拆它背后的方案选型、算法架构、数据闭环以及那些藏在宣传片后面的工程难题。1. 项目全景为什么“去掉激光雷达”是硬挑战1.1 纯视觉方案的定位与价值先说清楚一件事纯视觉不是“少装几个传感器”这么简单。X-01身上有8颗摄像头、4颗毫米波雷达和12颗超声波雷达宣传口径里的“纯视觉”其实指的是“不依赖激光雷达做主感知”而不是真的只剩摄像头。这套组合里摄像头负责建模世界的语义和几何毫米波雷达兜底做长距离速度和障碍物确认超声波负责近场泊车。之所以敢这么设计核心原因是视觉感知在算法层面已经出现了一次质的跨越——从单纯的2D框识别变成对3D空间做端到端的隐式建模。如果激光雷达是“直接给深度”那么摄像头方案就是“用学习去猜深度”。后者最大的价值在于成本、量产一致性和数据统一性。车身周边十几颗摄像头可以和座舱摄像头共用采购体系不用维护激光振镜、扫描机构这些精密件产线标定也只用对内参外参不用做激光雷达与相机的时间同步。这些听上去都是供应链细节但真正跑过量产的人知道越是细节越决定交付节奏。1.2 为什么以前没人敢这么做早几年的纯视觉方案普遍翻车原因不复杂2D检测框没法直接给下游规划用。你检测到了“前面是一辆车”但不知道它离你多远、宽不宽、朝哪个方向控制模块就没法做避让。后来BEVBird’s Eye View鸟瞰视角感知火起来等于把多个摄像头看到的透视画面重新投影到车顶俯视图上再在这个统一坐标系里做检测、分割和预测规划模块拿到的就不再是一堆像素框而是“以自我为中心的局部地图”。这一步走通之后视觉方案才真正有了和激光雷达同台竞技的资格。X-01用的就是这套思路但它比早期BEV方案更激进不是先做多传感器特征拼接而是把多颗摄像头的时间序列特征直接扔进模型让网络自己去学“哪个特征来自哪颗相机、该放到BEV坐标系的哪个位置”。听起来抽象但实际效果是感知输出的稳定性明显提升尤其在转弯、遮挡、近距离切车这些场景不会出现传统单相机“目标瞬间消失”的问题。2. 核心算法拆解BEV、Transformer与占用网络2.1 多相机特征如何统一到一张鸟瞰图整个纯视觉方案的地基是“多相机标定→特征提取→空间投影→时序融合”。先说投影。X-01的8颗摄像头覆盖不同视场角近处有鱼眼远处有长焦每一帧画面进入神经网络后先通过Backbone提取特征层。关键步骤在于网络里有一个专门的可学习模块把每个相机图像上的像素特征依据相机的内参、外参投射到车辆坐标系下的三维空间栅格里。这个步骤看起来像传统几何投影实际是“软投影”。传统方法写死了一条公式像素坐标乘以逆内参再乘外参旋转平移得到三维点。现在的方法是通过Transformer注意力机制让图像特征自己决定该激活三维空间里的哪些位置。好处是当相机外参有微小误差、或者镜头畸变没完全修正时网络能自动适应一部分偏差不用做极致精度的标定。这一点对量产车意义很大因为车辆使用一段时间后摄像头支架可能因为洗车、磕碰发生微小位移。2.2 时序融合摄像头为什么不怕遮挡视觉方案被吐槽最多的是遮挡问题。前车一个大货箱挡在前面激光雷达能透过缝隙感知前方静止障碍物摄像头只能看到一块铁皮。X-01的做法是用时间换空间每个位置的特征不是只看当前帧而是把过去若干帧的BEV特征也缓存起来沿时间维度和当前帧做对齐融合。就算某一帧被挡住之前几帧里“曾经看到过”的特征仍留在空间记忆中。这套时序融合机制在工程上叫“递归状态回传”类似循环神经网络里传递隐层状态。每次推理只保留一个特征图和当前帧的特征图一起输入更新不需要把过去所有帧都存下来。实际表现如何我在封闭场地里测试过模拟前车遮挡的场景一辆车从右侧车道横切进来大部分车身在我车视角里被旁边车辆遮住系统仍然能在前车完全露出前预测出它的轨迹并提前减速。这就是时序记忆带来的直接价值。2.3 占用网络从“检测物体”到“回答空地”纯视觉方案识别不了训练集里没见过的异形障碍物比如卡车掉落的货物、施工锥桶被吹飞、工程车后伸出的钢筋。传统做法是在训练集里加这些“长尾数据”但永远加不完。X-01应对这个问题的关键是占用网络Occupancy Network——不再死磕“这个物体是什么”而是让模型回答“这个3D空间栅格是否被占据”。这种做法更接近人开车的方式你看到前方道路上有块形状不规则的塑料布你不会想“这是某某型号的购物袋”你只会判断它处于行驶路径内并且高度不可碾压于是变道绕开。占用网络把感知从识别式变成了空间式规划模块可以直接把被占据的栅格当障碍物处理。工程上这个分支和传统检测头是并行的检测头提供语义这是车、这是人占用分支提供几何两边融合后输出给规划互补效果明显。3. 数据闭环与训练体系纯视觉的“暗实力”3.1 影子模式与自动挖掘系统能去掉激光雷达的另一半底气来自训练数据。激光雷达方案可以在不识别目标的情况下采集到三维几何做自动标注视觉方案如果也用人工标注成本高到没法量产。X-01的做法是建立影子模式收集系统每台量产车在用户正常驾驶时后台运行一套感知模型当它和实际驾驶员操作不一致时系统自动判断为“疑似异常”截取前后各15秒的多视角视频上传云端。云端自动对这批数据进行粗标签生成和场景聚类再通过人工复核窗口抽检。这套流程看似简单核心难点是怎么控制上传成本。不是所有异常都值得传只有置信度低、场景多样性高、命中困难样例的数据才上传。我见过不少团队在这一步踩坑要么传得太少模型越训越挑食要么传得太多云存储和审核成本爆炸。合理的做法是先做一个基于特征的hash去重同一类场景只保留最困难的样本。3.2 自动标注与仿真闭环纯视觉系统没有激光雷达点云作为标注伪真值怎么办X-01的答案是“跨摄像头重建”。多颗摄像头从不同角度覆盖同一空间通过特征匹配和多视图几何关系可以反推出物体在三维空间的大致位置。再结合毫米波雷达测距信息做交叉验证就能得到质量不错的3D框标签。这套流程本质上是用几何补足单目深度估计不够稳的短板。仿真在纯视觉训练里的比重也比预想高。很多人觉得仿真只能做规控测试感知模型用仿真是“种什么都长不出庄稼”。实际上视觉感知仿真能有用的前提是图像渲染质量足够逼真。X-01的数据闭环里有一个模块可以把真实采集的视频背景和随机生成的虚拟3D障碍物合成在一起生成“半合成数据”。背景是真光真影叠加的车辆、行人却是可控的能模拟很多危险的边缘场景比如前车急刹、鬼探头、儿童横穿。这样训练出来的模型见多识广实车翻车率自然下降。3.3 算力平台与效率策略纯视觉模型参数量比多传感器融合模型更大因为所有感知任务都让一套网络干完。X-01的推理平台是双芯片的架构一颗负责BEV特征提取一颗负责时序融合和任务头输出。这种分工的核心考虑是降低推理延时。BEV特征提取是每帧同步计算时序融合则要考虑上一帧结果回传如果全塞进单颗芯片总延时轻松超过150毫秒对高速场景来说有点危险。工程上有个值得说的小技巧占用网络的栅格分辨率不是全图均匀的车辆近处分辨率高、远处分辨率低。因为近处障碍物直接影响本轮控制指令必须精细远处只需要知道一个粗略占据概率就够了用于提前规划变道。这类“关注区域自适应”配置能把整体算力度量降低三到四成同时还保住安全性。4. 实车场景表现与竞品对比4.1 城市与高速场景下的实际表现城市路段最能看出纯视觉方案的成色。我在一次全程12公里的城市领航试点测试里碰到过几次需要“随机应变”的时刻一次是前方修路锥桶从最左侧车道被风吹到中间车道传统识别模式大概率会把锥桶当成可忽略噪声但占用网络把锥桶区域标记为占据同时数据驱动预测模块判断左右车道都有动态车流系统选择减速而非立刻变道等右侧车辆经过后执行绕行。整个决策链很顺滑没有出现“感知抖动导致规划反复横跳”。高速路段摄像头的好处是视野远且大。8颗摄像头里有两颗长焦镜头专门负责200米外的大目标检测。跑120时速时200米制动距离远小于驾驶者的心理安全距离所以系统能更早给出信心。X-01在高速大曲率弯道上的居中能力也不错靠的是长焦相机识别弯道边界、BEV层同步输出车道曲率两个信号验证一致后才下发给横向控制“双保险”逻辑把误判率压得很低。4.2 夜间与恶劣天气视觉方案的照妖镜夜间场景纯视觉天然吃亏尤其在没有路灯的县道。X-01的方案是利用大光圈传感器做低照度增强同时让时序融合模块承担更多记忆信息补偿。实测下来有对向车灯眩光的场景里传统视觉方案很容易丢失目标两到三秒X-01因为有多帧记忆眩光结束后能立刻找回同一目标不会重新创建一套轨迹。但老实说纯视觉在夜晚的下限和激光雷达方案还有差距特别是对落在地上的深色杂物掉落的轮胎皮、深色包裹视觉方案夜间识别率明显下降。雨天和雾天也有类似问题。密集雨滴会干扰特征提取挡风玻璃上的水渍会形成局部区域模糊。比较实用的工程缓解方式是“多路径特征增强”在训练时对图像随机叠加模拟雨滴、雾化、水滴透镜效果要求网络输出在同一目标的多次增强变化下保持稳定。为什么说这是缓解而不是解决因为极端降雨时物理上能看到的细节就是少算法能做的就是更合理地利用前序帧记忆和毫米波雷达的近距离测距。4.3 与激光雷达方案的对比速查维度纯视觉方案以X-01为例常见激光雷达方案传感器成本整体偏低摄像头成熟、供应链量大激光雷达硬件成本明显偏高高精空间几何依赖模型学习与时序记忆长尾有风险直接输出点云深度几何精度可靠夜间强眩光靠曝光策略与记忆恢复偶有退化主动光源不受环境光影响近距离盲区鱼眼超声波覆盖极近场有灰度激光雷达近场点云同样有盲区数据标注效率跨相机重建半仿真流程较复杂激光雷达点云可自动生成真值车端算力消耗模型大、BEV与占用网络开销高点云处理相对轻但融合复杂度高这个表格不是要分高下而是说明两者各有命门。激光雷达在“稳定几何”上优势明显纯视觉在“语义理解”和“成本量产”上更优。X-01选纯视觉是一次把赌注压在算法迭代速度上的豪赌而目前看来方向可行但上限仍需极端场景检验。5. 量产路上的那些坑标定、泛化与安全冗余5.1 摄像头标定与长期漂移纯视觉系统对相机内参、外参的精度要求比“有激光雷达兜底”的方案高一个数量级。X-01交付后我关注到工程团队设计了一个自标定流程车辆每次在车道线清晰的路面行驶时系统会在后台利用车道线的直线结构反推相机外参是否发生了微小平移或旋转一旦偏差超阈值自动更新矫正参数。这个思路和手机陀螺仪零偏校准很像都是利用环境中的“自然基准”进行后台修正。但自标定有个隐蔽问题依赖结构化环境。在完全没有车道线的土路长时间行驶外参偏差会慢慢累积。比较好的兜底做法是把极端情况下的置信度输出给规划模块提醒系统降低对感知几何的信任增加对毫米波雷达的权重。这种“动态传感器信任管理”目前量产车上做得还比较保守我觉得后续一定会朝更细粒度发展。5.2 泛化困难域与模型迭代节奏纯视觉模型最怕地域跨度大的场景变化。在甲城市训练好的夜间模型到乙城市可能因为道路标识风格、路边植被形态、公交车涂装不同出现感知性能下降。X-01的做法是建立场景指纹库每辆车的感知系统主动提取场景特征比如路面材质、光线分布、建筑风格标签上传云端后按地域聚合再针对特征差距大的地区做定向数据补充训练。等于给训练运营建了一张“数据热力图”缺哪补哪。我特别推荐做自动驾驶的朋友关注一个指标模型版本的回退率。上线新模型时不能只看整体准召率提升更要看哪些老问题“退化”了。X-01团队的做法是上线前先跑一周离线回归集自动对比每个版本在不同场景子集上的表现任何子集精度下降超过一个阈值就阻止发布。这个机制看似保守实际上救了无数次发布事故比任何花哨的评估指标都实用。5.3 安全冗余视觉之外不能裸奔纯视觉不等于“没有任何非视觉冗余”。X-01保留了毫米波雷达做长距速度确认超声波做近场泊车还设计了感知结果交叉验证层视觉检测到目标后会将该目标在雷达点迹里的响应情况作为置信度加权依据。这不是多传感器融合路线那种“缺一个就降级”而是用雷达信息给视觉目标打分减少虚警。另一个容易忽略的安全层是“运动学约束”。模型输出目标位置后系统会做一轮物理合理性过滤——如果一个静止物体的运动轨迹出现一米以上的瞬时跳变而车速本身平稳系统会判定该跳变属于模型抖动直接平滑掉。这类规则占不了多少算力却能把很多算法瑕疵在达到规划模块之前就拦截下来。6. 写在最后的几条实操心得做了一段时间X-01类似的纯视觉项目我个人的体会是这套方案真正的难点不在模型而在你能不能让数据进入正确的循环、让模型在正确的时间点迭代。很多团队在实验室里跑模型效果很好一上路就露馅多半是数据闭环没打通——困难场景没有自动回流工具、标注流程依赖人力、模型评估只看平均指标不看子域退化。X-01至少证明了找到正确工程路径后纯视觉是能撑起城市领航体验的。给正在评估纯视觉路线的人一个建议先放弃“纯视觉必须跨全场景无敌”的执念把场景梳理成一张风险清单按恶劣程度排序。近光夜间无路灯、暴雨、强眩光这类几档先想清楚兜底策略再谈数据采集和训练优化。毕竟自动驾驶最后比的不是谁在顺境里更聪明而是谁在逆境里更不容易沉默。最后分享一个容易被忽略的实用技巧在模型部署前把摄像头画面上加一块可配置的遮挡mask模拟支架偏移导致的视野缺失在仿真环境里跑一遍高难度场景。这种“传感器部分失效”测试成本极低但能把隐蔽的鲁棒性问题提前暴露出来比盲目堆再多的训练数据都值。纯视觉这条路还很长可它已经不再是那个只存在于论文里的空中楼阁了。