AGC-Drive:自动驾驶空中-地面协同感知数据集全解析
做自动驾驶感知的人都有一个共同的痛点车上的感知系统再强遇到被大车挡住的横穿行人、十字路口被建筑遮挡的电动车照样抓瞎。这类场景不是靠堆算力、堆模型就能解决的车载传感器的高度和安装位置决定了地面视角存在物理盲区传感器没接收到信息算法再聪明也没法无中生有。所以这两年我特别关注一个正在升温的方向空中与地面协同感知Aerial-Ground Collaboration——让无人机在高处看全局、补遮挡让地面车辆看细节、验语义两个视角配合起来补上单车感知的视野死角。这个方向真正缺的不是算法思路而是一份真实世界采集、大规模、时空对齐的空中-地面协同驾驶数据。AGC-Drive正是冲着这个缺口来的。这个项目是今年AI顶级学术会议上亮相的大型数据集工作聚焦真实驾驶场景采集了多车、多无人机同步运行的多模态数据并配套了完整的标注与评测协议。对做融合感知、多智能体协同、轨迹预测的研究者或者想落地车机协同应用的工程师来说拿到这套数据等于把最耗时耗力的数据工程环节直接省掉了可以把精力全部放在算法本身。这篇文章我会完整梳理一遍这个数据集要解决什么问题、采集和同步是怎么做的、标注体系有什么讲究以及拿到手后怎么用、有哪些坑。内容会尽量保持实操性给准备上手的人一份能走通全流程的参考。1. 项目背景自动驾驶感知的“盲区焦虑”1.1 单车感知的物理天花板有人会问现在的车装了那么多摄像头和激光雷达还有盲区吗我一般会用一个特别日常的例子说明你开车经过一辆公交车公交车另一侧突然跑出一个人你车上所有传感器都看不到他因为没有一条视线能绕过车身。盲区问题的本质是视线被遮挡跟传感器数量没有直接关系。再比如路口左转左侧来车被路边围挡遮住车上的鱼眼镜头同样无能为力。这两个场景对应的就是“鬼探头”最主要的来源也是事故率最高的场景之一。地面传感器的安装高度通常在1.5到2.5米之间这个高度决定了它的视线很容易被大型车辆、绿化带、围墙、建筑遮挡。激光雷达虽然能360度扫描但受限于物理高度遮挡区域里就是没有点云。摄像头同理像素再多也拍不到被墙挡住的东西。这类问题想在感知链路本身去解决已经碰到了物理天花板——除非改变传感器所在的高度否则信息根本进不来。这也是空中视角补盲最直接的动机无人机可以飞到十几米甚至几十米高度对低矮障碍物几乎是俯视天然拥有全局视野。但“有无人机”和“用无人机做协同感知”是两回事。要让空中视角真正帮到地面车需要空中和地面的数据在时间上和空间上严格对齐需要知道同一个目标在无人机画面里和地面画面里到底对应的是哪辆车需要有人把坐标系、标注规则、评测方法都定义清楚。这些东西单靠某个团队自己攒设备采集数据很难规模化。1.2 已有数据集的缺口从公开数据集的发展脉络看自动驾驶感知数据基本都沿着同一条路在走。KITTI、nuScenes、Waymo Open Dataset、Argoverse这些经典数据集传感器都装在车顶或车身周围高度没有本质差异记录的永远是“地面中心视角”。它们对单车感知的推动巨大但视角单一的局限也很明显。这些年出现了车路协同数据集摄像头和激光雷达被装到路侧杆上高度提升到三四米甚至更高视野确实打开了。不过路侧设备是固定的它的覆盖范围是杆件周围的一小片区域无法跟着目标移动也不能为车辆提供全程伴随视角。无人机数据集其实也有不少航拍车辆检测、交通流量分析这些方向都有人做但它们大多数是“单独飞行的航拍视角”没有和地面车辆形成严格时空对齐的关系。至于仿真环境生成的协同数据例如基于CARLA或AirSim的合成数据集可以任意生成多视角、多智能体场景在思路上很有启发但仿真和真实世界在传感器噪声、光照变化、动力学特性上存在系统性差异。很多算法在仿真里表现不错迁移到真实场景立刻退化。所以“真实世界采集空中视角地面视角严格同步”这个组合在过去很长一段时间里是空白。AGC-Drive就是瞄准这个空档来做数据的。1.3 AGC-Drive补上的拼图AGC-Drive的名字基本把项目的核心说清楚了Aerial代表空中视角Ground代表地面视角Drive表明它面向的是驾驶场景。从这个项目的设计来看它做了三件关键的事。第一是真实所有数据来自真实道路环境不是渲染出来的传感器噪声、天气干扰、目标遮挡都是真实分布第二是规模化多城市、多路段、多时段采集数据量足以支撑大规模模型训练第三是可用统一坐标系、统一标注格式、统一评测入口研究者拿到手可以直接写模型跑实验不需要先花几个月处理原始数据。对领域来说这种数据集最大的价值是把“多智能体协同感知”从少数有自建采集能力的团队那里解放出来变成了一个可以在公开协议上横向比较算法的方向。后面几章我会具体拆解数据从采集到标注的全链路这是做算法之前最值得搞清楚的底层逻辑。2. 数据采集与同步方案拆解这套数据是怎么造出来的2.1 地面车与无人机的传感器选型采集平台分为地面车和无人机两部分各自承担的感知任务不同传感器配置也完全不一样。我整理了一个典型的配置思路供你参考平台传感器作用安装要点地面车6路环视相机提供360度近距离语义信息覆盖车身周围避免视野死角地面车顶装激光雷达精确三维空间感知车顶中央保证水平视场地面车RTK/INS组合导航高精度自车定位与姿态天线与IMU刚性安装无人机下视相机俯视道路与目标云台减震固定采集频率无人机前视相机斜视前方场景与下视相机严格时间同步无人机RTK定位模块空中平台高精度定位确保固定解可用地面车的核心是“全”要承担近距离高精度感知所以环视相机、激光雷达和组合导航都配齐。无人机的核心是“轻”因为载荷和续航直接把传感器上限卡死了配置以下视相机为主前视相机做补充配上RTK模块保证空中平台也能获得厘米级定位。有些数据集会考虑给无人机装轻量化激光雷达比如16线的小型雷达重量可以控制在几百克能提供高度维的稀疏点云对空中三维感知有帮助。但代价是成本上升、续航下降、处理链路更复杂。选择“车端带LiDAR、机端带相机”的组合是一种务实取舍车端负责精度机端负责全局视野两边各干各最擅长的事。这套配置背后的逻辑是协同感知不是把两种传感器的数据简单堆起来而是利用它们在不同维度上的互补性——车端LiDAR的精确三维信息用来确定目标位置和距离机端相机的俯视结构信息用来理解全局布局和遮挡关系。2.2 时间同步让所有传感器对齐到同一时刻多传感器协同采集最核心的环节就是时间同步。地面车和无人机自己在运动目标也在运动如果传感器之间时间错位融合出来的结果一定是乱的。我打个比方这就像多个机位同时拍一个场景摄影师按快门的时间不一致最后剪出来的片子每帧画面都差几毫秒人在画面里就是残影。自动驾驶的数据也一样时间不齐边界框和点云的位置就对不上。工程上常用的方法是给所有传感器一个统一时钟源。以GPS/北斗的PPS秒脉冲为基准通过PTP协议在系统内分发时间相机工作在硬件外触发模式每一帧的曝光时刻精确对应一个时间戳激光雷达通过旋转编码器输出角度同样对齐到统一时间轴上。多无人机采集的时候每台设备起飞前完成校时飞行中持续保持时钟驯服状态保证所有镜头“同步”。同步误差对数据质量的影响是直接可算的。以60km/h的车速为例换算下来大概是16.7m/s10毫秒的误差对应约16.7厘米的空间偏移。这个级别的偏差在跨视角投影时会让目标边界框明显错位3D标注和融合训练都会受到干扰。所以合格的采集方案时间同步误差一般要控制在毫秒级最好在1毫秒以内。我在排查数据的时候最深的体会是时间同步做得好的数据逐帧回放会非常“稳”。无人机影像里的车辆位置、地面点云投影、标注框三者应该严丝合缝地叠在一起。如果发现无人机影像里的车和地面LiDAR点云在同一个全局坐标下有规律地偏移第一嫌疑就是时间戳不同步。2.3 空间对齐与坐标系统一时间同步解决的是“同一时刻”空间对齐解决的是“同一位置”。空中和地面视角要融合必须把两边的数据统一到同一个全局坐标系里。全局坐标系一般用UTM投影或者局部笛卡尔坐标GPS/RTK先给出经纬度和海拔再转换到局部坐标这样地面车和无人机的位置、目标的位置都在同一张“地图”上。这里有一个关键点要特别留意RTK不是时刻都能拿到固定解。在高楼密集的城区、桥梁下方、树荫遮挡严重的路段卫星信号容易丢失或降级定位精度会从厘米级掉到分米甚至米级。可靠的做法是靠IMU做航迹推算填补信号盲区或者用PPK后处理差分解算进一步修正。采集时如果某一段的RTK解算状态不好对应的数据段会被标记或剔除避免脏数据进入训练集。跨视角相对位姿的标定逻辑也很清晰。地面车上装了LiDAR无人机有精确的全局位姿那么地面LiDAR点云可以转换到全局坐标系再投影到无人机影像上通过调整外参使投影误差最小化就能得到无人机与地面车之间的相对位姿。也可以用视觉特征匹配加RANSAC做几何验证。整体链路是传感器内参标定、传感器外参标定、平台全局位姿、最后做一次联合优化。有一件事我建议所有拿到这类数据的人做把官方给出的坐标变换矩阵打印出来用一张已知位置的图像做数值验证。因为从无人机镜头到云台、从云台到机体、从机体到全局坐标中间通常隔着三四层坐标变换任何一层有微小偏差都会逐级放大到最终投影结果上。盲目信任中间结果往往会在后续训练中踩到莫名其妙的坑。2.4 场景与路线规划数据集的场景覆盖本质上是算法泛化能力的上限。规划时一般会覆盖几类典型环境城市交叉口多方向交通流、大量遮挡、目标密度高、快速路和高架车速快、长直道、匝道汇入汇出多、园区和封闭道路低速、人车混杂、物流场景、老旧小区和背街小巷窄路、停车占道、频繁出现突发穿行、大型停车场密集停驻目标、泊车倒车行为多。这几类场景几乎覆盖了城市驾驶里最常遇到的高难度情况。不同场景对协同感知价值的体现也不一样。交叉口考验的是“遮挡补全”能力空中视角直接看到被围挡和建筑挡住的路口内侧这是地面传感器做不到的快速路考验的是“远距离提前感知”空中视角能在几百米外就发现拥堵点或事故区域园区和老旧小区则考验低速场景下对行人、非机动车密集混杂的感知精度。采集时段同样重要。白天、黄昏、夜间是三个视觉难度层级白天光照稳定目标纹理清楚黄昏光线变化快、对比度低是最容易出问题的时段夜间低照度条件下很多目标只能靠微光和车灯判断。如果数据集里三种时段都有覆盖模型的域适应能力会强很多研究光照鲁棒性的团队也能找到合适的评测数据。3. 标注体系与质量管控一份能直接训练的数据集是怎么炼成的3.1 跨视角3D标注从各标各的到全局ID一致单视角数据集的标注已经相当成熟但空中-地面协同数据的标注难度直接翻倍。原因很简单同一个目标在无人机视角里可能只是几十个像素的小块在地面视角里却可能被车或树挡掉一半两边怎么保证标的是同一个目标这要求标注体系从“各标各的”升级成“全局ID一致”。具体流程一般是这样。先用预训练模型在每个视角独立跑一轮生成3D框候选。然后人工在地面车视角修正这些框重点处理遮挡和截断目标。接着利用全局坐标转换把地面端的3D框投影到无人机影像上自动生成机端的候选标注。最后人工修正机端框为跨视角的同一个目标分配同一个全局ID。做完一轮之后还有二次质检随机抽检标注框的一致性。这套流程里最耗费精力的就是那个全局ID。它要求标注员在切换到不同视角时心里始终对“这是哪个目标”有清晰判断。一旦两个视角下的ID对应错了后面所有跨视角的检测、跟踪、融合实验都会连锁出错。所以合格的数据集在发布之前会单独统计ID切换率作为标注质量的核心指标之一。对使用方来说全局ID是一个非常重要的“隐藏宝藏”。很多基于这个数据集的研究可以直接把跨视角目标跟踪当成一个以ID为监督信号的二阶段问题来做而不需要自己再去设计复杂的跨视角匹配流程。这就是标注设计对算法研究最直接的赋能。3.2 数据清洗与难例保留数据采集完成之后不是所有帧都有资格进入最终版本。清洗工作通常遵循几条规则传感器异常片段直接删除包括丢帧、掉电、时序断裂RTK状态为浮点解或不可用的时段会被剔除因为这些帧的全局坐标不可信时间同步漂移超过阈值的段落也会被标记或清理。难例的处理是另一个容易忽略但很关键的环节。很多团队做数据清洗习惯把“难”的都删掉只留干净的帧理由是“不让模型学到噪声”。但协同感知研究的价值恰恰在于处理困难场景如果所有遮挡目标都被排除那空中视角的补盲优势就无从体现了。合理的做法是保留困难样本并单独标注类别和遮挡状态比如“截断”“遮挡程度高”“低光照”等属性这样算法可以明确知道在什么条件下该信任哪个视角。我个人的看法是负样本也不能全删。完全没有目标的车道空景帧看起来无用但对于抑制误检有实质作用。模型如果只在“有目标”的帧上训练很容易对背景纹理产生过拟合。保留适当比例的负样本代价很小收益却长期存在。3.3 评测协议如何公平地比较算法好坏一个数据集如果没有统一的评测协议就只是“一堆数据”没法成为推动领域进步的基准。这类数据集在设计初期就要确定三件事数据划分、评测任务、评价指标。数据划分不是随机划分而是按采集时间和地理位置划分。如果同一路段的地面特征同时出现在训练集和测试集模型相当于背了答案测出来的指标虚高迁移到新路段马上露馅。合理的划分要确保训练和测试覆盖不同的路段、不同的时间段让评测结果能够真实反映泛化能力。评测任务和指标要跟领域主流对齐3D目标检测看AP、位置误差ATE、朝向误差AOE多目标跟踪看MOTA和ID切换率IDSW轨迹预测看minADE和minFDE。有了这套统一标准不同研究团队的结果可以直接横向比拼谁的算法在遮挡条件下协同增益更大一眼就能看出来。这也正是大规模数据集对方向发展的核心推动力。4. 基于AGC-Drive能做什么几个可以直接上手的研究方向4.1 空中-地面协同3D检测互补视角怎么融合把空中影像和地面信息融合起来做3D检测是这个数据集最直接的任务。从方法框架上看主流做法都是分三步先各自编码、再统一到同一空间、最后用融合模块输出检测结果。地面端输入通常是环视图像加LiDAR点云机端输入主要是无人机影像。编码后的特征会被转换到BEV或者全局三维空间再做特征级融合。这里最需要处理的矛盾是尺度差异。同一个目标在车端看起来很大、纹理细节丰富在无人机视角下只是一个小块如果直接用同一套特征编码器处理小目标特征很容易被淹没。常见的解法包括尺度感知编码、高度归一化、以及在BEV网格上按距离衰减权重。这些细节直接决定了协同感知比单地面感知到底能提升多少。从价值上看协同3D检测的最大增益场景就是前面说的盲区场景。比如一辆车被大车挡住一半地面模型只能看到一个斜角甚至看不到但空中视角可以看到车顶两个视角一叠加检测置信度和定位精度都会明显改善。这就是“视角互补”最朴素的体现。从已有实验结果来看在遮挡严重的数据段上协同模型的召回率会明显高于单地面模型尤其是在小目标和远距离目标上。4.2 跨视角多目标跟踪用“上帝视角”做轨迹接力多目标跟踪一直是自动驾驶的难题核心痛点在于ID切换目标被遮挡几秒钟再出现时模型已经不认识了身份就丢了。单视角数据下很难根治这个问题因为遮挡是物理必然。而空中视角恰好能部分解决它——无人机从上往下看目标在整个过程中大概率不会被低矮障碍物完全遮挡。在这个数据集上做跟踪最关键的思路是跨视角轨迹接力。地面端负责近距离高清目标识别空中端负责全局连续轨迹预测。同一个目标在全局坐标系下只有一个真实轨迹两个视角的检测结果可以通过位置接近度和表观特征进行关联。一旦地面端跟丢空中端的轨迹还可以继续维持ID等目标重新出现时再无缝接回来。落地价值也很直接交通流量统计需要一个ID稳定的跟踪系统如果系统里频繁切换ID统计出来的流量就不可信异常行为检测更是高度依赖ID连续性。用跨视角数据训练出来的模型在这类任务上的表现会明显优于单视角方案。4.3 全局语义地图与可行驶区域感知空中视角一个很自然的下游应用是实时构建全局语义地图。无人机影像做语义分割能直接得到全局的可行驶区域、车道结构、障碍物分布甚至能从俯视结构里推测出哪里是路肩、哪里是逆向车道。这些信息如果完全靠车辆自身传感器拼接需要跑很长时间才能形成而且视野有限空中视角则是一眼全局。放到实际场景里价值很直观。车辆接近十字路口前空中视角已经看到对向车流的密度和左转车道的排队长度下游的路径规划模块就能提前决定是减速、变道还是重新选择路线。相比纯靠车端感知在接近路口时才发现拥堵这种提前量对通行效率和驾驶舒适度都有帮助。这个方向也适合做仿真到现实的衔接研究因为BEV语义图本身就和规划模块的输入格式天然契合。4.4 弱监督与难例挖掘空中视角给地面模型“开小灶”最后一个方向特别适合算法工程团队用空中标注来反哺地面模型。核心思路是把两个视角当成“检错工具”来用。空中真值显示某个区域有车地面模型却没有检测到这个差异区域就是一个高质量的难例可以直接加入训练数据做困难样本挖掘。反过来也一样地面模型检测到但空中没有的目标区域可能是误检也可能说明该目标在高度维不显著需要人工二次判断。更进一步可以用空中视角的标注作为远端教师信号对地面模型的中间特征做一致性约束让地面模型在不依赖无人机的推理阶段也能“记住”全局结构。这个方向的本质在于协同感知不只是给模型更多输入而是利用两个视角之间的信息冗余与互补来增强单一视角模型的上限。对无法全天候配备无人机的量产车辆来说这种从“协同信号”中提炼知识再回灌给单车的方法是更有落地可能的路径。5. 实操心得与避坑指南拿到数据后怎么办5.1 第一件事先做跨视角可视化回放拿到这类数据集很多人第一反应是立刻训练一个baseline模型我的建议是别急先做一遍跨视角可视化回放。写一个简单的脚本把地面相机画面、LiDAR点云投影、无人机画面按时间戳同时铺在一个播放器里随机挑几段持续回放。重点看三样东西投影是否对齐、目标轨迹是否连续、标注框是否稳定。这一步看起来只是“看数据”但它能帮你建立对整套数据集最直观的感知。你会清楚地看到空中视角对地面视角的互补边界在哪里哪些区域车端永远看不见、哪些目标在空中视角里小到什么程度、哪些遮挡条件下两种视角都看不清。这个认知会在后面设计模型、选择融合策略时直接转化为判断力。我一般建议先花几个小时把可视化脚本跑通这个时间的投入回报率极高。补充一个可视化检查的技巧在回放界面里同时显示目标的3D框中心点投影到各视角的位置。如果三个视角的投影点始终落在同一个物理点上说明内参、外参、时间戳都是准的如果出现规律性偏移后面排查的方向也就明确了。5.2 坐标系与时间戳排查跨视角数据常见的异常有两类投影残差规律增大和边界框抖动。投影残差规律增大通常意味着位姿轨迹在某段发生漂移比如RTK长时间没有固定解IMU积分误差越积越多。处理方法是先检查对应的定位状态标签把浮点解或不可用段标记出来分析时单独处理。边界框抖动则大概率来自时间戳不同步可以先看相邻帧的时间戳间隔是否均匀是否存在跳变或重复值。还有一个小坑很多人容易忽略坐标变换矩阵的约定不一致。不同数据集对旋转矩阵的行主序和列主序、坐标系轴向比如Z轴向上还是向下可能有不同约定。如果不统一一个简单的矩阵乘法看起来没问题实际投影到图像上就是旋转了90度或者镜像。我的习惯是拿到数据后先写一个自检脚本用一个已知点的坐标走一遍全链路输出结果跟预期对比确认所有约定没问题再放心用。5.3 训练效率优化多视角数据带来的最直接问题是计算量成倍增长。一个常见做法是分阶段训练先只用地面视角数据训练一个多模态baseline等模型基本收敛后再加入空中视角做联合微调。这样既能控制显存峰值又能让模型先学会基础的地面感知再学习如何利用空中信息补充视野。我自己实测下来这个流程比一开始就全量输入稳定不少。空中视角的帧率可以适当降低。无人机在空中运动幅度相对地面车小目标在画面里的变化速度慢地面取10帧时空中只取其中2到3帧对大多数下游任务都够用。降低空中视角采样率可以显著减少特征提取和融合的计算量对显存和墙钟时间都很友好。输入分辨率也建议分档处理先用小分辨率探路调通链路后再提高分辨率跑正式实验很多融合层的问题在小分辨率下同样会暴露出来。5.4 看指标时要小心别被尺度差异带偏同样是AP指标在单地面数据上和在跨视角数据上的含义不完全一样。空中视角目标像素面积小如果直接用通用检测器评估AP会被小目标拉低很多这不是模型退化而是尺度分布变化。建议在做评测时按目标尺度分层统计近距离、中距离、远距离各算一份指标。这样能清晰看出协同模型到底在哪个距离区间上获得了增益也方便跟单地面baseline逐项对比。跟踪指标也一样IDSW在跨视角融合时对ID匹配策略非常敏感。如果评测时允许无人机轨迹和地面轨迹在某个时间点强制合并IDSW的定义不同结果也会不同。所以发表结果或者做横向对比时ID融合策略必须写清楚否则数值很难复现。总的来说跨视角数据的评测要比单视角更细致多花一点时间在指标口径上能避免很多后续争议。我个人在实际使用这类数据时最大的感受是空中与地面协同感知的真正难点往往不在模型的网络结构而在数据链路本身。只要时间同步、坐标统一、ID对齐这三件事做扎实了很多算法上的问题会变得比想象中简单反过来如果数据本身是乱的再漂亮的结构也会被基线打得抬不起头。AGC-Drive这类数据集的意义不只是提供了更多训练样本而是把“空中视角怎么与地面融合、怎么互相校验”的全链路方法沉淀了下来。最后分享一个长期管用的小技巧每次拿到新版本数据先别急着跑全量实验挑一小段遮挡最严重的序列把空中视角和地面视角同步播放一遍你的模型设计灵感和排错方向往往就藏在这些画面里。这个习惯我保持了很久省下的时间远超想象。