最近和做无人机视觉的同行聊天,几乎每个人都会提起同一个名字: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这类分层评测基准,拿到手第一件事就是要习惯看“分项”。比如一个检测模型的结果,按照下面这样的维度拆分报告才有参考价值(表格数值仅供示范,帮大家理解报告格式):
| 测试子集 | mAP50 | mAP75 | 小目标AP50 | 我的观察 |
|---|---|---|---|---|
| 白天正常光照 | 0.87 | 0.61 | 0.72 | 几个主流模型都能表现不错 |
| 夜间场景 | 0.78 | 0.49 | 0.56 | 可见光几乎失效,融合模型靠红外撑住 |
| 雾天/低能见度 | 0.61 | 0.32 | 0.33 | 双模态同时衰减,最难啃 |
| 极小目标(小于16×16像素) | 0.42 | 0.17 | — | 全数据集最明显的短板 |
注意,单独看总数mAP,可能两个模型差距不到一个点;可一旦拆到“夜间”和“极小目标”子集,往往就能看出谁的融合策略真正有效,谁只是在大目标上刷分。做研究、写报告的时候,精确保留每个子集的指标,对后续定位问题会省很多力气。
另外还有个小建议:每次跑实验固定随机种子,并且把训练配置、预训练权重版本、预处理脚本一起存档。多模态实验的噪声来源比单模态多——两路增强参数、对齐误差、训练顺序都会引入波动,如果不固定种子,你甚至说不清某个指标提升是模型的功劳还是运气的功劳。
4. MODA之后,多光谱航空检测还剩哪些硬骨头
4.1 基准实验暴露出来的研究空白
从MODA这种难度分层的数据集上跑完一轮,我比较明显的感觉是:融合模型的整体精度上去了,但一旦逐项拆指标,就暴露出几个单模态时代根本藏不住的问题。
第一个是红外模态的域偏移。热成像不同于可见光,它记录的是目标与环境的温差,而温差会随季节、地域、一天中的时段剧烈变化。夏天采集的红外数据,模型到了冬天可能大面积误检——背景从“热”变成“冷”,热目标的相对对比度完全变了。这说明只靠固定数据集训练,模型极易过拟合到采集时的热环境,跨季节跨地域泛化是个非常值得做的方向,域适应、跨模态重建、热风格随机增强都是可尝试的思路。
第二个是任意朝向目标检测。航空俯视视角下,车辆、船只、建筑经常是斜着排布的,水平框会包含大量背景。MODA这样的基准后续如果引入旋转框、即OBB检测协议,可以避免“框里一半是干扰物”的问题。对已知的检测框架来说,从水平框转向旋转框不是难事,但数据集的评测协议要先支持,大家才有一个统一比较的擂台。
4.2 把模型塞进无人机:部署真不是精度榜上写那么轻松
MODA把研究热度带起来了,但落地时还有一道很现实的坎。多光谱意味着传感器必须是双光吊舱,重量、功耗、成本都比单可见光相机高一个量级;双模态还需要硬件层面的同步信号,不然图像对时差就会化整为零地吃掉检测精度。这些在上规模的行业应用里都是硬成本。
模型侧也类似。双流backbone在GPU服务器上跑没问题,一旦到了机载边缘设备,比如轻量级Jetson这类功耗受限的平台,双流推理的计算量几乎是单模态的两倍。我见过比较务实的优化方向是知识蒸馏:用训练好的双流教师网络,去蒸馏一个单流学生网络,学生网络在输入端仍然把两个模态都喂进来,但通过中间层约束学会教师网络那种跨模态互补的响应。这样推理时既保留了双模态输入的信息,又不至于背两套backbone的负担。再配合TensorRT的FP16量化,在边缘设备上才基本能跑到能用的帧率。
4.3 给准备上手MODA的同行几条实操建议
如果你准备在这个方向开新坑,我的建议很简单,但每条都是折腾出来的经验。
先跑单模态基线。分别拿可见光图像和红外图像单独训练一个检测器,看单模态的精度上限在哪里。很多融合模型看起来有效,其实只是把两个模态的结果做了个软集成,信息增益并没有想象中多。只有先清楚单模态的边界,才能判断融合模块是不是真的在起作用。
再做数据管线的质量控制。第一步先检查对齐误差,第二步做同步增强,第三步固定随机种子。这三步做扎实,后面所有实验结论才可信。我甚至建议把预处理脚本纳入版本管理,数据管线变更是多模态实验排错里最耗时间的一类问题,脚本化能帮你迅速回滚定位。
最后再谈新模块设计。“先提特征再谈融合”是我惯用的顺序,先用中期融合框架把baseline立起来,再逐步替换融合模块。每换一个组件跑一次分层评测,看它在哪些子集上带来提升。如果某个模块只在白天子集上涨点、在夜间子集上反而掉点,那就得慎重考虑是不是过拟合了红外噪声。
这段时间跟多光谱数据打交道,最大的感受是:两个模态都“看见了”同一个目标,但看见的方式完全不同,模型想让它们协同工作,关键不在网络结构有多花哨,而在输入数据本身干净、对齐、同步。MODA把“挑战性”作为第一宗旨,等于给整个领域立了一根新标尺——与其在容易数据上反复刷点,不如直面真实场景里的复杂性。我后续大概率会先把小目标检测和跨模态对齐这两块吃透,等有阶段性结果了再回来继续填坑。