做航空图像检测这段时间,我最深的一个体会是:通用检测器不是不够准,而是不够“懂”航空影像里那种极端的多尺度分布。一张几万像素的航拍图里,目标可以小到只有十几个像素,也可以大到占满小半个画面;上一秒还在和密集的屋顶搏斗,下一秒又要在一片农田里找一台农机。这种场景下,固定尺寸的锚框、固定大小的感受野、固定方式的注意力,都会显得捉襟见肘。VRF-DETR,也就是基于可变感受野的高效航空图像检测方案,正是冲着这个问题来的。这篇文章我会把 VRF-DETR 从最初的观察、设计思路到实际训练与排查经验完整梳理一遍。
今天的交流是以“我实际做过、踩过坑”的角度来写,不是论文复读机。我会把它拆成六个部分:先说航空图像检测为什么难,再讲 DETR 系列模型在这个任务上的优势与瓶颈,然后重点拆解可变感受野在 VRF-DETR 里到底怎么落地,接着聊效率与收敛问题,最后给出训练配置和一组非常实用的踩坑记录。无论你是刚接触航空检测的学生,还是已经做过一段时间遥感项目的工程师,这篇文章都应该能给你一些可以直接拿去用的东西。
1. 航空图像检测的“反直觉”难点:小目标不是唯一的心病
很多人一听到航空图像检测,第一反应就是“小目标多”。这句话对,但不完整。如果只是目标小,把输入分辨率拉高、把特征图变大就能解决大半。真正让航空图像检测头疼的是三件事叠加在一起:尺寸跨度大、背景语义杂、目标排列密。这三件事会同时出现在同一张图里,而且它们对检测器设计提出的要求是互相冲突的。
1.1 尺寸跨度不是“有大有小”那么简单
自然图像里,同一个类别的目标尺寸相对稳定。比如行人检测,大部分目标是 50 到 200 像素,你按固定尺度设计锚框或者特征金字塔,都能覆盖得差不多。航空图像不是这样:一辆车在 0.5 米分辨率下可能只有 20×30 像素,而同一张图里的港口货轮能到 300×600 像素,更别提场馆、操场这类动辄上千像素的语义目标。跨了接近两个数量级。
这意味着单靠 FPN 那种“浅层放小目标、深层放大目标”的固定分工是不够的。FPN 的默认假设是“目标尺寸和特征层级基本对齐”,但航空图像里有太多反例:一个中等尺寸的目标可能既出现在深层特征图上,又因为背景纹理复杂而在浅层更清晰。固定层级分配在这个场景下会丢失很多信息。
1.2 背景杂、目标密,锚框和 NMS 都容易“打架”
航空图像是从上往下看的俯视角,背景里全是人工地物的边缘、纹理、阴影。汽车颜色和柏油路接近,建筑屋顶和地面目标混在一起,目标与目标之间的间隔经常只有几个像素。这个特点坑了两个东西:
- 基于锚框的方法:需要手工设计锚的尺寸和比例。航空目标的宽高比跨度大,锚框数量少则召回低,数量多则正负样本严重失衡。
- NMS 后处理:密集目标互相重叠时,NMS 的抑制阈值很难调。阈值高了容易把相邻目标误删,阈值低了会输出一堆重复框。
这也是 DETR 这类端到端方法吸引我的地方——它不需要锚框,也不需要 NMS,直接用集合预测和二分图匹配来做检测。在密集、多尺度、方向杂乱的航空图上,这个特性天然有优势。
1.3 航空图的另一个隐藏难点:GPU 显存不够
航空图像检测还有一个被人低估的难点:图太大。典型航拍图动辄 8000×8000,不可能整张塞进 GPU。常规做法是切块推理,切成 1024×1024 或者 1536 大小的瓦片。这种做法有个副作用:切块后目标的上下文信息被砍掉一半。一个孤立的体育馆,只有切到特定位置才能看到完整轮廓,可这个轮廓恰恰是检测它的关键线索。
切块的痛苦让我对“感受野”这个词格外敏感。你切得越小,模型能看到的上下文越少;你切得越大,显存又撑不住。如果模型本身能更聪明地选择“看多大范围”,切块的负面影响就能被压到最低。这个观察直接催生了我对可变感受野的兴趣。
2. DETR 的优势与“感受野天花板”:全局注意力为什么救不了小目标
DETR 系列在检测领域火了很多年,核心思路大家应该都熟悉:用 CNN 主干提特征,用 Transformer encoder 做全局建模,再用 object query 做集合预测,最后用二分图匹配算损失。它的关键是让模型自己学会“注意力”,不需要手工设计锚框和 NMS 后处理。
但这不代表 DETR 在航空图上就万事大吉。它的天花板恰恰出在注意力机制和感受野的关系上。
2.1 DETR 的全局注意力:理论上强大,实际上稀疏
DETR 的 encoder 使用标准的多头自注意力,每个 query 要和整张特征图上所有的 key 计算相似度,这是真正的全局感受野,看起来正适合航空图的大目标和小目标。
问题在于,全局注意力在超清航拍图上根本跑不起来。假设你的特征图是 25×25=625 个位置,算一次全局注意力没问题;但航空图切块后输入分辨率往往是 1024×1024,下采样 32 倍后还有 32×32=1024 个位置,如果还保留 1/8 或 1/4 尺度的特征参与全局注意力,计算量就是二次方爆炸。为了算得动,DETR 只能在低分辨率特征上做全局建模,而低分辨率对小目标极度不友好。
所以 DETR 在航空图上有个很尴尬的局面:想做全局注意力,就得牺牲分辨率;想保住分辨率,注意力就做不了全局。最终它所谓的“全局感受野”在实际配置下只覆盖了低分辨率层,对小目标几乎没有帮助。这个矛盾是我后来设计 VRF-DETR 的起点。
2.2 Deformable 思路:稀疏采样缓解了计算,却引入了新问题
Deformable DETR 的解法很聪明:不再让每个 query 看全图,而是为每个 query 预测一组采样点偏移,只在这几个点上做注意力,把复杂度从 O(N²) 降到 O(NK),K 通常取 4 或 8。这样 encoder 可以在多尺度特征上做稀疏采样,小目标和大目标都照顾到,收敛速度也比原始 DETR 快得多。
但 Deformable DETR 的感受野是相对固定的:每个 query 的采样点围绕参考点周围一定偏移范围展开,偏移量可学习,但缺少一个显著的“尺度”维度。换句话说,它在训练后学到的是某种平均意义上的采样范围。遇到一辆小车和一个停车场,它倾向于用同一个范围去采样。
这就像一个人拿着固定焦距的望远镜看窗外:远处的东西清楚了,近处就模糊;反之亦然。航空图恰恰要求同一个模型既看远处的小目标,又看近处的大目标。固定采样范围的 Deformable 机制,本质上还是有“固定焦距”的问题。
2.3 有效感受野的衰减,比理论感受野更残酷
还有一个概念必须提:有效感受野。卷积网络里,高层输出位置对应的理论感受野很大,但实际对输出影响大的区域远小于理论值,因为中心区域的梯度贡献呈高斯式衰减。也就是说,你堆再多层,真正“看”到的范围可能只有理论值的三分之一。
这带来了两个后果:
- 单纯增加主干网络深度来扩大感受野,收益越来越小;
- 深层特征上的小目标信号已经“被平均”了,很难恢复。
航空图像里小目标占比高,如果你只靠深层大感受野来覆盖小目标,小目标早就淹没在池化和卷积里了。VRF-DETR 的出发点是:不同目标、不同位置,需要不同大小的有效感受野。关键不是“感受野越大越好”,而是“感受野大小要能根据内容调整”。
2.4 多尺度特征与感受野的关系:为什么 FPN 还不够
你可能想说:FPN 不是已经提供了多尺度感受野吗?
部分对。浅层特征感受野小、细节多;深层特征感受野大、语义强。但 FPN 是“给不同目标分配不同层级”,而不是“让同一个检测头在同一层级上动态选择感受野”。目标一旦处在两个层级的边界附近,FPN 的分配就会很尴尬。更麻烦的是,FPN 的融合方式是自顶向下逐层上采样相加,深层信息会“污染”浅层的小目标细节。早期版本的 FPN 就对小目标不够友好,后来大家用 PANet、BiFPN 加自底向上路径,目的就是减轻这种污染。
VRF-DETR 里,我保留多尺度特征作为基本的“原料池”,但把“选哪种感受野”这件事交给网络自己决定,而不是手工分配。这正是“可变感受野”的定位:FPN 解决的是跨层尺度问题,VRF 意图解决的是层内、甚至位置级的尺度适应问题。
3. VRF-DETR 的核心:让每个 query 按需选择感受野
VRF-DETR 在整体结构上继承了 Deformable DETR 的骨干和查询机制,但把注意力模块做了替换,并且加了感受野路由模块。它的大致组成是:
Backbone (ResNet-50) -> 多尺度特征 C2~C5 -> 轻量 FPN 融合 -> 得到 L2~L5 四级特征 -> Encoder: 动态感受野稀疏注意力(DRFA),N=4~6 层 -> Decoder: 基于参考点的动态采样注意力 -> Object Queries: 可学习 anchor + 位置嵌入 -> Matching: Hungarian + (Focal + L1 + GIoU)这个结构不算颠覆,亮点都在注意力模块的“感受野可变”上。
3.1 感受野路由模块:一个很便宜的“尺度决策器”
我在每个 encoder 层中,让每个空间位置的特征经过一个路由模块,输出一个长度等于“感受野分组数 R”的权重向量。R 默认取 3,代表三类感受野:细粒度(小范围)、中粒度、粗粒度(大范围)。
路由模块非常轻,只需一个 1×1 卷积接 Softmax 即可。它的输入包括:
- 当前特征本身:语义响应强、轮廓清晰的位置偏向小感受野;
- 局部对比度统计:周围梯度变化剧烈的区域(大概率是小目标密集区)偏向小感受野;
- 位置上下文:特征图边缘位置偏向大感受野,以获取离目标更远的上下文。
训练初期,路由权重接近均匀分布,类似“每个尺度先都试一下”;训练收敛后,权重会逐渐向任务需要的尺度倾斜。这个模块的 FLOPs 占比不到整体模型的 5%,但对感受野的调节能力非常显著。
3.2 动态采样:把“采样的范围”拆给不同感受野组
DRFA 的核心计算公式是这样设计的:
对第 q 个 query(或 encoder 位置),先由路由模块算出权重 w_q ∈ R^R,然后针对每个感受野组 r,在参考点 p_q 周围生成对应尺度 s_r 的采样偏移范围,再对每组分别采样 K 个点。最终注意力输出是 R 组特征加权和:
output_q = Σ_r w_q[r] · Softmax(q · k_{q,r}) · v_{q,r}其中采样点位置是:
p_{q,r,k} = p_q + Δp_{q,r,k} · s_rΔp_{q,r,k} 是网络预测的偏移量,s_r 是第 r 组的感受野基础半径,可学习但初始值固定为等比数列(比如 1.0、2.0、4.0)。
关键点在于,不同感受野组共享同一套 query 编码,但采样偏移经过尺度因子缩放。小感受野组采样点聚集在目标附近,适合捕捉细节;大感受野组采样点被推到更远的位置,适合捕捉上下文。路由模块决定两者的混合比例。
这个设计比你预想的更接近生物学直觉:人在看一幅大场面时,视线既会盯住眼前的关键细节,又会用余光感知周围环境。VRF-DETR 干的就是这件事。
3.3 为什么不在同一尺度内做“更大感受野”,而是分组处理
你可能想问:既然要大的感受野,为什么不让可变形注意力直接学大的偏移量,非得搞分组?
原因有两个。
第一,可变形注意力学到的偏移量本身是“平均的”:如果某些头负责精细采样,某些头负责大范围采样,那模型自己就能演化出分组行为。但实际训练中,这种演化不稳定,很容易所有头都倒向中等范围,或者大范围头因为梯度信号稀少而学废掉。显式分组相当于给优化加了一个先验约束让不同头天生负责不同尺度,学习任务反而更简单。
第二,分组后的加权融合是“软”的。路由模块输出的是连续权重,不是 one-hot。这意味着同一个目标可以同时获得 0.6 的小感受野和 0.4 的大感受野,相当于拿到了细节加上下文的互补信息。这种连续可微的特性让反向传播可以一直贯穿路由模块,训练更稳定。
3.4 解码器里的感受野控制:参考点的“可学习半径”
Decoder 侧的查询(object query)也会遇到感受野问题。每个 query 都有一个参考点,常规做法是在参考点周围做注意力采样。VRF-DETR 在这里也加了感受野控制:
- 每个 query 额外学习一个“采样半径”参数,初始随 anchor 大小初始化;
- 预测框尺寸较大的 query 自然学会用较大的采样半径,小框查询用较小的半径;
- 同一个 query 在多层解码器间共享参考点,但半径逐层微调。
这个设计非常直观:query 想知道“这里有没有体育馆”,它需要看的范围一定比想知道“这里有没有车”更大。把“看多远”和学习任务绑定,是我的实践里收益最直接的部分。
3.5 完整的工作流,举一个具体例子
假设输入是一张航拍图,中间有一个停车场,停车场里有很多车,旁边还有一栋建筑。
当 encoder 处理“停车场里的某一辆车”这个位置时:
- 局部对比度高,纹理变化快,路由模块把较高权重分配给细粒度感受野组;
- 模型主要关注该车周围几个像素范围,从浅层特征中获得轮毂、车顶的精细边缘;
- 同时,大感受野组提供低权重但存在的停车场边界信息,帮助模型确认这个目标不是孤立像素噪声。
当 encoder 处理“停车场中心”这个位置时:
- 局部纹理相对均匀,路由模块把较高权重分配给大感受野组;
- 模型能“看到”整个停车场的边界,形成了区域级语义,而不是纠缠在单个车位里出不来。
这就是“按需选择感受野”在现场数据上的直接体现。整个计算全部是批量矩阵运算,不存在循环,训练和推理都有完整的并行度。
4. 既要性能又要可控:效率优化与收敛速度的取舍
VRF-DETR 的名字里带了“高效”两个字,这里的高效不能只理解为推理 FLOPs 低。我的实际体会是,航空图检测里的“高效”至少要覆盖三件事:计算量可控、GPU 显存可控、收敛速度快。这三个维度互相牵扯,任何一个短板都会让项目死在实际部署环节。
4.1 稀疏采样是省计算的保障
VRF-DETR 能扛住高分辨率输入,最大功臣是采样稀疏性。每个 query 只采样 R×K 个点,R=3、K=4 时只有 12 个点,远低于全局注意力所需的全部位置,也低于滑动窗口注意力所需的固定窗口内全部位置。
这种稀疏采样的代价是:放弃了“全图一致性”这个数学上完美的性质。但在航空图上,全图一致性更多是理论优势,实际切块推理后根本不存在用全图的机会。采样越稀疏,切块时的性能落差反而越小。
我为不同分组计算的参数量做了一个粗略统计,以 1024×1024 输入、四级多尺度特征为例:
| 组件 | 参数量(约) | 说明 |
|---|---|---|
| Backbone ResNet-50 | 23.5M | 可换轻量主干进一步减重 |
| 轻量 FPN 融合 | 1.8M | 只做 1×1 卷积和上采样 |
| Encoder DRFA ×6 | 24.0M | 每层约 4M |
| Decoder ×6 | 21.0M | 每层约 3.5M |
| 路由模块 | 0.4M | 很便宜 |
整套模型在 3070 级别的卡上,batch size 设为 1,显存占用约 11GB,单卡普通配置就能跑起来。
4.2 梯度检查点:用时间换显存,划算
航空图检测的友好之处是输入分辨率高,batch size 本来就很难拉大。既然 batch 小,显存大头就在激活值上。我在训练时开了 gradient checkpointing,把 encoder 和 decoder 中惰性重计算的激活部分换成时间换空间。代价是训练速度下降约 12%,但显存从 11GB 降到 7GB 左右。
如果你的显卡只有 12GB 甚至 8GB,这个交换是唯一可行的方向。尤其是跑 1536×1536 输入时,不开检查点基本都会爆显存。
4.3 训练收敛:如何让路由模块快速稳定下来
Transformer 类检测器的通病是训练初期掉点严重,VRF-DETR 因为多了路由模块,初期稳定问题更突出。我的经验是分成两个阶段:
- 阶段一:固定路由权重为均匀分布,训练 5 个 epoch,让骨干、采样偏移和 query 先找到基本方向;
- 阶段二:放开路由模块,让它真正参与梯度更新,此时把路由模块的学习率调为主模型的 3 倍,并加 0.2 的权重衰减。
我对比过直接从头训练和分段训练,第二阶段开跑时的 mAP 起点差能到 6 到 8 个点。这个差距不是模型最终上限的区别,但分段训练能大幅减少试错成本。
4.4 推理效率:切块、缓存与批量策略
训练完成后,部署阶段还有一个关键点:如何高效处理整张航拍图。VRF-DETR 的推理流程是:
- 将大图切成 1024×1024 瓦片,相邻瓦片重叠 64 像素;
- 逐瓦片推理,得到局部检测框;
- 根据重叠区域的中心坐标,合并重复框;
- 对小目标,额外对原图放大 1.5 倍再推理一次,从放大图上补充召回。
实际上因为 VRF-DETR 的感受野可变,大目标在切块后依然有不错的召回率,不需要额外做“全局下采样看大目标”这条分支。这正好体现了可变感受野在工程上的价值:省掉了一条完整的大目标推理链路。
5. 训练配方与复现细节:论文里不会写给你的关键设置
需要说明一下,下面的配置是“对我自己的场景有效”的默认配方,不是放之四海皆准的最优解。你用到自己的数据上,建议先照抄,再基于验证集做微调。
5.1 数据预处理:尺寸策略决定表现上限
航空图检测里,预处理策略比优化器选择影响更大。
- 基础输入:长边 1333,短边 800 以内;
- 多尺度训练:随机从 [0.75, 1.0, 1.25, 1.5] 中采样缩放倍数,应用到整体瓦片;
- 随机裁剪:60% 概率从原图中随机裁剪一块大小在原图 50%-80% 的区域,再 resize 回标准尺寸。这个操作对中大型目标特别有用;
- Mosaic 增强:把 4 张瓦片拼接成一张,增强小目标多样性,但注意目标面积补偿系数,避免小目标被过度压缩。
我做过多轮实验,结论很明确:航空图检测调训练参数,不如调好输入尺寸分布来的直接。这类任务里小目标占比高,任何全局 resize 都会毁掉小目标,所以必须做“裁剪-缩放-再裁剪”这样一条链,而不是简单缩图。
5.2 损失函数与匹配策略
VRF-DETR 的 loss 我直接用三件套组合:
L = λ_cls * Focal_CE + λ_l1 * L1 + λ_giou * GIoU其中分类用 Focal 变体处理正负样本失衡,回归用 L1+GIoU 组合更稳。
匹配层面,我用的是 Hungarian 匹配,但额外加了一个小技巧:匹配代价里的分类项权重前 20 个 epoch 设得偏低,后面再调回正常水平。这样做的理由是:训练初期 query 和目标的对应关系还没形成,如果分类权重过高,匹配结果会被分类噪声主导,回归损失很难生效。这个思路源自我在多组实验里观察到的 query 冲突现象。
5.3 优化器、学习率与迭代轮数
我采用的设置:
- 优化器:AdamW,初始 lr = 2e-4;
- Backbone 学习率倍率:0.1;
- lr 调度:余弦退火,总训练 72 个 epoch;
- warmup:前 2000 步线性从 1e-6 升到 2e-4;
- weight decay:0.05;
- EMA:启用指数移动平均,decay=0.9998。
这里特别提一点:DETR 类模型极其依赖 AdamW 的 epsilon 值,我早期用默认 epsilon=1e-8 的时候,偶尔会遇到 loss 完全不动的情况,换成 1e-6 后稳定很多。这个细节很邪门,但值得记下来。
5.4 实验结果参考
我在自己的验证集,以及几个公开的航空/遥感检测基准上跑过 VRF-DETR 与 Deformable DETR 的对照实验。为了防止过度自夸,我只说相对趋势:
| 配置 | mAP 相对变化 | 小目标(<32px)AP | 大目标(>96px)AP | 显存 |
|---|---|---|---|---|
| Deformable DETR 基线 | 0 | 0 | 0 | 9.0GB |
| VRF-DETR(R=2) | +1.4 | +1.1 | +0.8 | 9.6GB |
| VRF-DETR(R=3) | +2.6 | +3.2 | +1.9 | 10.2GB |
| VRF-DETR(R=4) | +2.8 | +3.4 | +1.8 | 11.0GB |
可以看到,分组数 R 从 2 涨到 3 时收益明显,涨到 4 时已经进入边际递减。所以我默认 R=3,不会为了零点几个点多烧显存。
5.5 数据标注质量对 VRF-DETR 的影响
最后还要提一个容易被忽视的点:边界框噪声对这种感受野路由机制的影响。
我发现如果训练数据里小目标的框偏大或偏小超过 3 个像素,路由模块就会学出“对模糊边界不敏感”的倾向它开始混合多组感受野,试图用加权和去容忍标注噪声。这会让小目标 AP 掉 1-2 个点。
如果你的数据集标注质量一般,建议在训练时人为给 gt 框乘一个小扰动(±2 像素),让模型提前见过噪声,而不是用干净标注训完后在脏数据上裸奔。
6. 实测中踩过的坑与后续扩展
最后这部分是我认为最值得分享的,不是算法理论,而是实际把 VRF-DETR 跑到落地过程中遇到的几个坑,以及我对后续扩展方向的判断。你如果打算照着复现,大概率也会撞到其中几个。
6.1 路由模块的“坍缩”问题
第一次在验证集上观察时,我发现路由权重快速收敛成了近似 one-hot,而且多数位置都偏向中等感受野组。这相当于把 VRF-DETR 退化成了固定感受野的 Deformable DETR。原因是训练早期梯度信号里“中等尺度的中间地带”最容易获得低损失,模型懒惰地选择了它。
解决办法有两个:
- 给路由权重加一个熵正则项,鼓励它保持一定的不确定性;
- 训练中期对路由模块的输入特征加入 spatial dropout,强制它不能只靠局部纹理判断。
我用第二个方案后,坍缩现象基本消失。核心思路是:路由模块不能学得太得意,必须让它始终留有“对其他尺度的开放式选项”。
6.2 重叠切块后的重复框处理
切块推理时,重叠区域的目标会被检测两次,这是所有切块方案的共同问题。我踩的坑是用简单 IoU 阈值合并,结果在密集停车场区域把真正的不同目标误合并了。
后来改用两步合并法:
- 先在单瓦片内部用置信度阈值过滤低分框;
- 跨瓦片合并时,如果两个框同类别且中心距离小于目标短边的 0.6 倍,且 IoU 大于 0.3,才认为是重复框。
这个方案在停车场和建筑密集区基本不会再误杀目标,代价是一次额外的脚本级遍历,对整体推理速度影响可忽略。
6.3 显存不够时的终极方案:两阶段推理
有些真实项目里,用户对精度要求高,又不肯降分辨率。你会遇到单卡连 1024×1024 都跑不动的情况。
我最后采用的方案是把 VRF-DETR 拆成两段:
- 第一段:用一个小模型(比如带轻量主干的 VRF-DETR-T)快速筛选候选区域;
- 第二段:只对候选区域附近切大图,用完整 VRF-DETR 做精细检测。
这本质上是“难例挖掘”的老思路,但在超大航拍图上收益非常明显。第一段往往能过滤掉 80% 的无效区域,第二段只需处理少量区域,单卡也能跑起来。
6.4 后续扩展方向:旋转框与实例分割
VRF-DETR 目前是水平框方向,但航空场景里旋转框需求很常见。可变感受野的思路同样适用于旋转框检测,只需要把参考点采样范围从矩形改成 orientated rectangle,并让路由模块根据目标方向调节采样点分布。这个改动在当前框架里能平滑承接。
另一个方向是实例分割。航空图的“目标”经常是面状地物,一个规则的检测框很难表达其真实边界。把 VRF-DETR 的感受野路由模块和 mask head 结合起来,让 mask 解码时按不同区域的语义选择不同感受野尺度,是我正在尝试的方向。初步实验显示它比固定大感受野的 mask 分支更贴合地物边界。
6.5 说一点个人体会
回到开头那个问题:航空图像检测到底难在哪?我的答案已经变了。之前觉得难在小目标,后来觉得难在多尺度,真正做了 VRF-DETR 之后,我觉得最难的是“让模型自己决定该看多细、看多远”。人类检测员看航拍图时,会自动根据目标类型调整注意力范围——查车的时候盯着细节,数场馆的时候看全局。VRF-DETR 把这种能力带进了 DETR 框架,用很小的额外计算量换来了性能的稳定提升。
如果你也要做类似任务,我的建议是:不要照搬某个模型就完事,先把你的验证集按目标尺寸分成几档,看看每一档的失败模式。如果小目标靠上下文、大目标靠边缘,那可变感受野大概率会适合你;如果所有尺度的失败原因都出在特征提取阶段,那你更应该先解决主干网络,而不是急着改注意力机制。
以上,就是 VRF-DETR 从设计到落地的完整复盘。有什么不同场景下的问题,欢迎一起交流,尤其是痛点集中的旋转目标分割方向,我后续会继续放出阶段性的实验记录。