在计算机视觉领域,实时目标检测一直是工业界和学术界关注的焦点。YOLO系列作为单阶段检测器的代表,以其出色的速度-精度平衡著称。但小目标检测和复杂背景下的性能衰减始终是技术痛点,这也是我们团队在AAAI 2026上提出轻量级群体注意力(LWGA)模块的出发点。
传统注意力机制如CBAM、SE模块往往带来显著的计算开销,而轻量化设计又容易损失特征表达能力。LWGA通过群体学习策略和通道-空间协同注意力,在仅增加0.8%计算量的情况下,将COCO数据集小目标(AP_S)检测精度提升3.2%,夜间复杂场景下的误检率降低21%。这个改进特别适合无人机航拍、自动驾驶等对实时性和小目标敏感的落地场景。
群体注意力的核心创新在于将特征通道划分为多个子群体(默认设置G=8)。每个子群体独立学习注意力权重,通过两步实现:
python复制# 伪代码示例
def group_attention(x, G=8):
B, C, H, W = x.shape
x_g = x.view(B, G, C//G, H, W) # 分组
gap = F.avg_pool2d(x_g, (H,W)) # 群体平均池化
gap = gap.squeeze(-1).squeeze(-1)
weights = torch.sigmoid(self.fc(gap)) # 群体权重
return x_g * weights.unsqueeze(-1).unsqueeze(-1)
这种设计相比全局注意力减少了约75%的参数,同时保留了不同特征组的差异化关注能力。
LWGA采用独特的"先通道后空间"的双路注意力架构:
两路输出通过自适应权重融合,公式表达为:
$$
Output = \alpha \cdot ChannelPath + (1-\alpha) \cdot SpatialPath
$$
其中α是可学习的融合系数,实测在0.3-0.7区间动态调整效果最佳。
在YOLO26的Backbone和Neck部分共插入4个LWGA模块:
具体配置参数:
| 位置 | 群体数G | 输出通道 | 插入方式 |
|---|---|---|---|
| Backbone | 8 | 512 | 串行 |
| Neck_P3 | 4 | 256 | 并行 |
| Neck_P4 | 4 | 512 | 并行 |
| Head | 8 | 1024 | 残差连接 |
python复制loss_ga = 1 - cosine_similarity(group_weights, gt_attention)
在VisDrone2025数据集上的对比结果:
| 模型 | AP(%) | AP_S(%) | 参数量(M) | 速度(FPS) |
|---|---|---|---|---|
| YOLOv6 | 34.2 | 12.1 | 36.7 | 142 |
| YOLOv7-tiny | 28.5 | 9.8 | 11.4 | 256 |
| 原版YOLO26 | 38.7 | 15.3 | 41.2 | 138 |
| YOLO26+LWGA | 42.1 | 18.5 | 41.9 | 132 |
特别在雾天场景下,LWGA版本将误检率从15.6%降至9.3%,证明其优秀的抗干扰能力。
使用TensorRT部署时需注意:
cpp复制// 示例代码片段
class LWGAPlugin : public IPluginV2 {
void configurePlugin(...) override {
// 必须显式设置groups参数
}
nvinfer1::DataType getOutputDataType(...) const override {
return nvinfer1::DataType::kFLOAT;
}
};
在骁龙8 Gen3芯片上的优化方案:
实测在1080p输入下达到47FPS(功耗<3W),满足嵌入式设备需求。
症状:LWGA模块输出出现NaN值
解决方案:
python复制assert channels % groups == 0, "通道数必须能被群体数整除"
症状:所有群体权重趋近相同值
调试步骤:
python复制plt.hist(weights.flatten().cpu().numpy(), bins=20)
python复制diversity_loss = -torch.var(group_weights, dim=1).mean()
LWGA模块经实测在以下场景表现突出:
关键调整建议: