
SuperYOLO:多模态遥感图像超分辨率目标检测的优化改进
在遥感图像处理领域,目标检测总是带着望远镜看蚂蚁的憋屈感——分辨率不够啊!这时候SuperYOL
O带着超分辨率BUFF闪亮登场,直接把YOLO家族v5到v8的战斗力拉满。这货不仅把Transformer、注意力机
制这些当红炸子鸡塞进模型,还玩起了多尺度杂技,咱们这就扒开代码看看它怎么秀操作。
先看它的核心武器——超分辨率检测二合一架构。传统做法是先超分再检测,耗时又耗内存。SuperYO
LO直接在特征金字塔里植入SRGAN的残差块,边检测边超分。举个代码例子,他们在yolov5的backbone里
插了这样的结构:
```python
class SuperResBlock(nn.Module):
def __init__(self, in_c):
super().__init__()
self.conv1 = Conv(in_c, in_c*4, k=3)
self.upsample = nn.PixelShuffle(2)
self.conv2 = Conv(in_c, in_c//2, k=1)
def forward(self, x):
x = self.conv1(x) # 通道数翻4倍
x = self.upsample(x) # 分辨率翻倍
return self.conv2(x) # 通道压缩
```
这个模块像乐高积木一样嵌进原YOLO的各层之间,特征图走着走着突然就放大两倍。注意PixelShu
ffle这个骚操作,比普通插值保留了更多纹理细节,对后续检测的头号敌人——小目标特别友好。
说到注意力机制,SuperYOLO可不是随便加个SE模块了事。他们搞了个多模态注意力融合,把红外、
多光谱等不同传感器的特征图用CBAM注意力加权后再concat。看这段魔改后的SPPF模块:
```python
class SPPF_Attn(nn.Module):
def __init__(self, c1, c2):
super().__init__()
self.sppf = SPPF(c1, c2)
self.cbam = CBAM(c2*4) # 来自不同模态的特征拼接后通道数x4
def forward(self, x_list):