最近和做无人机视觉的同行聊天几乎每个人都会提起同一个名字MODA。它是一篇被AAAI 2026接收的目标检测工作副标题写得很直接——The First Challenging Benchmark for Multispectral Object Detection in Aerial航空视角下多光谱目标检测的第一个具有挑战性的基准。关键词里三个词都踩在热点上多光谱、目标检测、航空视角。对做检测的人来说“基准”两个字听起来平淡但能同时挂上“第一个”和“挑战性”出现在顶会上基本可以判断这个交叉方向已经到了需要重新定规则的节点。这篇文章我不打算复述论文摘要而是从我自己折腾类似双模态数据的经历出发拆一拆MODA到底准对了什么、数据构建有哪些门道、跑实验会踩哪些坑以及拿到这个基准之后该往哪个方向使劲。不管你是刚入门想做多光谱检测还是已经在单模态航空检测上有点积累想转过来我都尽量写成能直接用的经验。1. MODA出现之前航空多光谱检测的痛点清单1.1 一个真实场景逼出来的需求天黑以后的“上帝视角”先别急着聊模型结构先想一个问题把无人机飞起来之后你希望它在什么时候还能看清地面白天、晴天、光线充足普通可见光相机确实够用。可一旦到了夜间、浓雾、逆光、树荫遮挡严重的环境可见光图像就像蒙了一层纱局部细节完全消失。这时候热红外相机的价值就出来了它被动接收物体表面的热辐射不依赖外部照明白天晚上都能成像。这就是“多光谱检测”在航空场景里最朴素的动机——用两种互补的成像模态覆盖单模态失效的盲区。典型应用大家都听过夜间搜救靠人体和周围环境的热差找人、森林防火火点温度异常高、交通巡查夜间车辆引擎盖温度明显、农业监测灌溉异常区域温度分布不同。这些场景里目标往往很小、分布散、背景复杂漏检的代价非常高。我做类似项目时遇到过一个很扎心的例子同一片厂区白天可见光图像里行人挺清楚但是到了黄昏逆光时人完全藏在大楼阴影里肉眼都难分辨。可红外图像里人的轮廓反而清晰因为人体温度比被晒了一天的水泥地低很多。两种模态合在一起看目标信息才是完整的。MODA把这两种模态做成了像素级对应的图像对正好填上了这个数据空缺。1.2 现有数据集的三个尴尬模态窄、场景简单、难度不均聊MODA之前得先把旧账翻一翻。我接触过的多光谱类公开数据大部分来自地面车载视角相机高度低、目标占画面比例大检测难度和航空俯视根本不是一回事。而航空视角下的公开检测数据又绝大多数只有一个模态要么只有可见光要么只有红外。两个模态都齐、又做了严格空间对齐的航空数据确实少得可怜。也就是说这个交叉点——航空视角 双模态像素对齐 大规模检测标注——长期处于真空状态。研究者想验证“多光谱融合到底能不能提升航空检测”只能自己费劲去采集、去配准而且各自用各自的数据结果根本没法横向比较。这种情况持续下去领域就没法积累。更何况旧有数据的难度分布普遍失衡。多数图像是空旷背景、大目标、清晰光照模型扫一眼就能拿到高分检测器真正该啃的骨头——极小目标、夜间噪点、热红外干扰物——反而没多少样本。所以说MODA强调自己是“challenging benchmark”不是谦虚是真的在对着这些旧账逐一开刀。1.3 “挑战性”不是模糊形容词而是一套明确定义做数据集的都知道说自己“难”很容易难在哪里说不清楚就是耍流氓。从标题里已经能看到MODA的态度challenging。按照这类基准的惯常设计思路挑战性通常会落到几个维度上。第一是目标尺度。航空平台高度高行人在图像里往往只有十几甚至几个像素小目标检测的难度天然拔高。第二是遮挡与伪装。树冠遮挡、草丛掩体、车辆掩映在建筑物阴影里单模态很难同时保住漏检率和虚警率。第三是热红外特有的干扰源。正午暴晒的屋顶、长时间运行的发动机、被阳光加热的地面在红外图像里全是高温亮点模型很容易把热干扰当成目标。第四是天气与光照覆盖。雾天、雨天、夜间、黄昏这些条件如果在数据集里占了足够比例光靠“白天高清图堆里刷分”的老套路就行不通了。把这些维度系统地揉进一个数据集里再配合难度分层评测才算得上“挑战性”。这一点MODA做得非常明确它逼着每个模型在每一类困难样本上交答卷而不是平均分一高就万事大吉。2. MODA的数据构建逻辑挑战性是这样被设计出来的2.1 为什么是可见光加红外而不是更多波段严格说“光谱”的覆盖面可以很广可见光之外还有近红外、短波红外、中波红外、热红外甚至高光谱可以分出几十上百个波段。那MODA为什么选了“可见光热红外”这个双模态组合我认为核心原因是工程性价比和物理互补性。可见光RGB对颜色、纹理、边缘非常敏感能体现“这个东西长什么样”热红外LWIR一般8到14微米波段对温度差敏感能体现“这个东西的温度和周边环境是否不同”。前者像看照片后者像看温度分布图两者信息重叠小、互补大。夜间可见光失效红外顶上来大中午红外一片噪点可见光又拉回清晰纹理。这个互补逻辑在航空视角下尤其重要因为俯视时目标与背景的纹理差异往往很小但温度差异可能很明显反之亦然。至于更高阶的多光谱或者高光谱数据采集成本高、传感器贵、波段对齐复杂而且在“目标检测”这种偏实时任务上几十个波段带来的计算负担对部署非常不友好。双模态是当前能把检测精度和落地可行性同时拉满的配置MODA选这个方向也说明了基准本身不打算脱离现实太远。2.2 双模态对齐数据集最容易被低估的工程环节很多不做数据的人以为多光谱数据集就是把红外相机和可见光相机装在一起拍然后resize成同样尺寸就能用了。如果真这么干检测模型八成要翻车。原因在于两个相机之间存在三个层面的错位问题。第一个是几何视差。两个镜头安装位置不同视角中心不重合同一目标在两幅图像里的像素坐标会有偏移。第二个是光学畸变。广角镜头边缘的桶形畸变、透视变形必须通过内参标定做校正否则图像边缘的小目标会明显偏移。第三个是时间同步。红外相机帧率往往低于可见光相机快门响应也慢无人机飞行中如果两路图像时间戳对不上运动目标在两张图里的位置就会差出一截。我见过比较规范的做法是先把两路图像都做内参畸变校正再用标定好的外参把红外图像重采样投影到可见光坐标系里最后按时间戳插值对齐输出统一分辨率的图像对。这个过程听起来不复杂但每一步的参数误差都会直接影响后续检测框的精度。对航空这样的小目标场景哪怕只是偏两三个像素一个行人框就可能“半进半出”训练样本的标签质量直接被拉低。2.3 公平评测难度子集与分层指标比总分更能说明问题一个基准能不能服众除了数据本身评测协议也占一半。如果训练集和测试集分布高度一致模型很容易通过在训练集上记住背景特征来刷分如果只报一个总的mAP模型在夜间样本上掉点掉得厉害、白天样本做得很好总分也能被平均掉问题全被隐藏了。MODA这个层级的基准通常会把测试集按场景类别、光照条件、目标尺寸等维度切成若干子集并且明确要求分别报告。比如城市白天、城市夜间、野外雾天、极小目标等。每个子集单独出AP研究者一眼就能看出自己的模型强在哪、弱在哪这对领域进步的价值远比一个好看的均值大得多。另外评测时还要防止测试集的“难度泄漏”。比如测试图像如果和训练图像来自同一段航迹的连续帧模型可能记住背景上下文而不是真正学会检测目标。严格的基准会对图像做场景级划分确保同一个场景的照片不会既进训练集又进测试集。这一点在航空数据里尤其关键因为一飞就是一段连续视频随便划分很容易让结果虚高。3. 在MODA上跑检测实验三种融合思路与我的排坑记录3.1 预处理阶段最容易翻车的三个细节拿到MODA这样的双模态数据集第一件事不是改模型而是把数据管线搭稳。以我的经验预处理阶段有三个坑几乎人人都会踩写出来给大家避一避。第一个坑是对齐检查。不能拿到红外图就直接resize成可见光尺寸开训。先做一次叠加目测把两张图半透明混合或者并排放大看同一个目标点的坐标差。特别是图像边缘区域畸变校正不彻底的话边缘目标偏几个像素是常事。建议先验证对齐质量再进训练管线。第二个坑是数据增强必须“双模态同步”。随机翻转、随机裁剪、旋转这些空间变换必须对可见光和红外用同一组变换参数。如果两路图像各自独立做增强等于亲手往训练数据里注入错位噪声模型学到的融合特征就废了。我可以分享一个实现技巧生成一组随机变换参数再把这个参数同时应用到两路图像上。而亮度扰动、对比度调整这类“非空间变换”则可以独立做因为两路传感器的动态范围本就不一样。第三个坑是标签格式与空标签处理。不同检测框架对标签坐标系的约定不一样有的是归一化的中心点加宽高有的是像素坐标的左上角右下角。从数据集的原始标注转换成项目需要的格式时一定要写脚本统一转换并在转换后抽样检查。还有一个容易被忽略的问题某些图像对里红外模态可能没有任何目标这时生成的标签文件全为空不少pipeline会默认跳过空标签样本导致训练样本背地里变少只是你不知道。3.2 双流检测框架怎么搭早期、中期、晚期融合多光谱目标检测最常见的模型结构就是“双流backbone 某种融合”区别在于融合发生的位置。我在自己的实验里把三种方式都试过各有各的特点。早期融合最简单把可见光和红外图在通道维度拼起来形成6通道输入直接塞进单流检测网络。优点是实现成本低、计算开销小缺点是卷积网络第一层就要处理跨模态信息很难学出高质量的双模态交互而且某一模态的质量一旦变差比如红外夜间噪点大会直接污染整条特征流。实测下来早期融合对轻量级模型是个稳妥方案但对精度上限要求高的场景就不太够看。中期融合可燃性强很多也是目前的主流两个独立的backbone分别提取可见光特征和红外特征然后在特征金字塔的特定层做交互——可以直接concat后用1×1卷积压缩维度也可以用注意力机制对两路特征加权。这个做法的好处是两种模态先各自充分编码再在语义层面交换信息对输入端的对齐误差容忍度更高。代价是计算量几乎翻倍显存压力也大训练时间明显变长。晚期融合则是两条分支各自预测框和类别最后对两路结果做NMS合并或加权融合。这种方案对模型改动最小但两路预测的置信度尺度经常不一致合并时很容易出现重复框或漏删框需要额外做置信度校准。一般不建议上来就用这个除非你的目标只是快速看看某一路模态的效果。三种方式的取舍我用一个比较直观的维度来总结精度上限和计算复杂度基本正相关中期融合通常是最值得优先尝试的均衡点。我自己习惯的起手式是可见光分支加载RGB预训练权重红外分支把单通道热图复制成三通道再加载灰度预训练权重这样两个分支的初始特征都被预训练信息暖过身收敛速度明显比随机初始化快。3.3 评估时别被一个mAP蒙住眼MODA这类分层评测基准拿到手第一件事就是要习惯看“分项”。比如一个检测模型的结果按照下面这样的维度拆分报告才有参考价值表格数值仅供示范帮大家理解报告格式测试子集mAP50mAP75小目标AP50我的观察白天正常光照0.870.610.72几个主流模型都能表现不错夜间场景0.780.490.56可见光几乎失效融合模型靠红外撑住雾天/低能见度0.610.320.33双模态同时衰减最难啃极小目标小于16×16像素0.420.17—全数据集最明显的短板注意单独看总数mAP可能两个模型差距不到一个点可一旦拆到“夜间”和“极小目标”子集往往就能看出谁的融合策略真正有效谁只是在大目标上刷分。做研究、写报告的时候精确保留每个子集的指标对后续定位问题会省很多力气。另外还有个小建议每次跑实验固定随机种子并且把训练配置、预训练权重版本、预处理脚本一起存档。多模态实验的噪声来源比单模态多——两路增强参数、对齐误差、训练顺序都会引入波动如果不固定种子你甚至说不清某个指标提升是模型的功劳还是运气的功劳。4. MODA之后多光谱航空检测还剩哪些硬骨头4.1 基准实验暴露出来的研究空白从MODA这种难度分层的数据集上跑完一轮我比较明显的感觉是融合模型的整体精度上去了但一旦逐项拆指标就暴露出几个单模态时代根本藏不住的问题。第一个是红外模态的域偏移。热成像不同于可见光它记录的是目标与环境的温差而温差会随季节、地域、一天中的时段剧烈变化。夏天采集的红外数据模型到了冬天可能大面积误检——背景从“热”变成“冷”热目标的相对对比度完全变了。这说明只靠固定数据集训练模型极易过拟合到采集时的热环境跨季节跨地域泛化是个非常值得做的方向域适应、跨模态重建、热风格随机增强都是可尝试的思路。第二个是任意朝向目标检测。航空俯视视角下车辆、船只、建筑经常是斜着排布的水平框会包含大量背景。MODA这样的基准后续如果引入旋转框、即OBB检测协议可以避免“框里一半是干扰物”的问题。对已知的检测框架来说从水平框转向旋转框不是难事但数据集的评测协议要先支持大家才有一个统一比较的擂台。4.2 把模型塞进无人机部署真不是精度榜上写那么轻松MODA把研究热度带起来了但落地时还有一道很现实的坎。多光谱意味着传感器必须是双光吊舱重量、功耗、成本都比单可见光相机高一个量级双模态还需要硬件层面的同步信号不然图像对时差就会化整为零地吃掉检测精度。这些在上规模的行业应用里都是硬成本。模型侧也类似。双流backbone在GPU服务器上跑没问题一旦到了机载边缘设备比如轻量级Jetson这类功耗受限的平台双流推理的计算量几乎是单模态的两倍。我见过比较务实的优化方向是知识蒸馏用训练好的双流教师网络去蒸馏一个单流学生网络学生网络在输入端仍然把两个模态都喂进来但通过中间层约束学会教师网络那种跨模态互补的响应。这样推理时既保留了双模态输入的信息又不至于背两套backbone的负担。再配合TensorRT的FP16量化在边缘设备上才基本能跑到能用的帧率。4.3 给准备上手MODA的同行几条实操建议如果你准备在这个方向开新坑我的建议很简单但每条都是折腾出来的经验。先跑单模态基线。分别拿可见光图像和红外图像单独训练一个检测器看单模态的精度上限在哪里。很多融合模型看起来有效其实只是把两个模态的结果做了个软集成信息增益并没有想象中多。只有先清楚单模态的边界才能判断融合模块是不是真的在起作用。再做数据管线的质量控制。第一步先检查对齐误差第二步做同步增强第三步固定随机种子。这三步做扎实后面所有实验结论才可信。我甚至建议把预处理脚本纳入版本管理数据管线变更是多模态实验排错里最耗时间的一类问题脚本化能帮你迅速回滚定位。最后再谈新模块设计。“先提特征再谈融合”是我惯用的顺序先用中期融合框架把baseline立起来再逐步替换融合模块。每换一个组件跑一次分层评测看它在哪些子集上带来提升。如果某个模块只在白天子集上涨点、在夜间子集上反而掉点那就得慎重考虑是不是过拟合了红外噪声。这段时间跟多光谱数据打交道最大的感受是两个模态都“看见了”同一个目标但看见的方式完全不同模型想让它们协同工作关键不在网络结构有多花哨而在输入数据本身干净、对齐、同步。MODA把“挑战性”作为第一宗旨等于给整个领域立了一根新标尺——与其在容易数据上反复刷点不如直面真实场景里的复杂性。我后续大概率会先把小目标检测和跨模态对齐这两块吃透等有阶段性结果了再回来继续填坑。