论文阅读-SM3Det: A Unified Model for Multi-Modal Remote Sensing Object Detection

2025-05-02发布于论文随笔 | 最后更新于2025-05-03 16:05:00

remote sensing detection

关于遥感目标检测的多模态统一模型

arXiv原文链接:SM3Det: A Unified Model for Multi-Modal Remote Sensing Object Detection

基本介绍

提出了一个跨模态遥感目标检测任务M2Det(Multi-Modal Datasets and Multi-Task Object Detection),同时也提出了一个作为benchmark的模型SM3Det(Single Model for Multi-Modal datasets and Multi-Task object Detection)。此处的Multi-Task object detection指的是目标识别中不同的细分任务,他们有着不同格式输出要求(例如水平bbox和定向bbox);Multi-Model datasets不仅指不同数据集的模态不同,还强调大部分数据集并没有同时包含某一图片的各模态成像。

下图很好地展示了M2Det任务的特点,要求能对不同的目标检测任务统一响应不同的结果输出:

M2Det特点示意图

显然,完成M2Det的关键在于能否同时捕捉各模态间的共有信息和各模态中特有的信息。本文提出的SM3Det模型通过网格粒度上的MoE完成这一点。

模块详解

Grid-Level MoE

本文使用了一些\(1\times 1\)大小的卷积(输入输出通道数不同)作为专家,并且不以整张图的特征作为输入,而是将图像分块,以图块的特征作为输入。整体框架图如下:

模型框架图

值得注意的是,此处的“输入”事实上来自于已有backbone模型内部某些层的输出。

MoE后的结果按下述公式计算:

$$ \begin{aligned} &f_{MoE}(x_{ij}) = \sum_{n=1}^{N} G(x_{ij}) \cdot \mathrm{Conv}_{n}^{1\times1}(x_{ij}),\\ &G(x_{ij}) = \mathrm{TOP}_k\left( \mathrm{Softmax}\left( \frac{E^T W x_{ij}}{\tau \|W x_{ij}\| \|E\|} \right) \right) \end{aligned} $$

即对于i行j列的图块的特征\(x_{ij}\),在所有专家间进行加权求和,并且通过topk使得仅部分专家拥有权重。对于其中\(G\)的计算,可以理解为先用\(W\)将原特征映射到各专家的空间中,再与代表专家本身的embedding \(E\)进行相似度计算,最后用softmax转换为概率值并进行topk的选择。其中的\(\tau\)为用于缩放的超参,\(N\)为专家的数量。可以发现,每个图块都会交给所有专家进行计算,只不过最后只会取topk个专家结果进行加权求和。

Dynamic Learning Rate Adjustment (DLA)

本文还分别为检测头和骨干网络分别设计了动态学习率策略。

首先会为每一个检测任务的损失维护一个平滑历史统计量\(his\_L_i^t\)(任务\(t\)在第\(i\)轮时):

$$ his\_L_i^t = \alpha \cdot cur\_L_i^t + (1 - \alpha) \cdot his\_L_{i-1}^t $$

检测头的学习率调整策略

$$ \begin{aligned} w_i^t=\frac{his\_L_i^t}{cur\_L_i^t}\\ \lambda_i^t = \frac{T \cdot e^{w_i^t / \theta}}{\sum_{k}^T e^{w_k^t / \theta}} \end{aligned} $$

其中的\(T\)为检测任务的总数,\(\theta\)为温度超参。可以看出,若当前loss越小,学习率就会越大以加快收敛;反之亦然。

骨干网络的学习率调整策略

先用KL散度定义一个一致性评分\(C\in (-\infty,1]\),其中的\(P\)表示对当前任务各轮的统计量进行softmax。

$$ \begin{aligned} C &= 1 - D_{KL}\left( P(\mathrm{cur\_L}) \parallel P(\mathrm{his\_L}) \right) \\ &= 1 - \sum_{t}^{T} P(\mathrm{cur\_L}^t) \cdot \log \frac{P(\mathrm{cur\_L}^t)}{P(\mathrm{his\_L}^t)} \end{aligned} $$

接着定义动态学习率\(\gamma_i\in(0,2)\),其中的\(b\)是一个偏置量超参,\(\tau\)则为用于调整数值敏感度的温度超参:

$$ \begin{aligned} \gamma_i = 2 \cdot \mathrm{Sigmoid}\left( (C - b) \cdot \tau \right) \\ = \frac{2}{1 + e^{-(C - b) \cdot \tau}} \end{aligned} $$

实验结果

下图展示了使用本文所述方法后对检测性能的影响:

模型性能表现

下两图展示了本文所述方法在不同backbone网络和检测头上的性能,体现了方法较好的泛化性:

骨干网络泛化性

检测头泛化性

下图则可视化了微调后骨干网络最后几层上应用的专家的激活图,取了top1的专家进行可视化:

top1专家可视化