LSKNet快速上手:3步跑通你的第一个遥感旋转目标检测
【免费下载链接】LSKNet(IJCV2024 & ICCV2023) LSKNet: A Foundation Lightweight Backbone for Remote Sensing项目地址: https://gitcode.com/gh_mirrors/ls/LSKNet
遥感图像中的目标检测一直是计算机视觉的难点:目标小、方向任意、背景复杂,传统水平框检测方法往往"力不从心"。LSKNet 正是为解决这一问题而生的轻量级骨干网络,它在 ICCV 2023 和 IJCV 2024 连续发表,凭借"大卷积核 + 空间选择机制"在 DOTA、FAIR1M、HRSC2016 等遥感旋转目标检测数据集上刷新了多项 SOTA 纪录。本文带你用 3 步快速上手 LSKNet,从环境搭建到训练测试,跑通你的第一个遥感旋转目标检测模型。
LSKNet 是什么:为遥感场景而生的轻量级骨干网络
遥感场景有一个独特先验:很多目标(如车辆、舰船、飞机)非常小,如果没有足够大的上下文信息很容易被误检或漏检;而且不同类型的物体所需的上下文范围差异很大——检测停车场里的车辆需要参考整个停车场,而检测单独的建筑可能只需局部信息。
LSKNet(Large Selective Kernel Network,大选择性卷积核网络)抓住了这一点:它让网络能够动态调整大范围的感受野,根据输入内容"选择性"地关注不同尺度的空间上下文。这也是"大卷积核 + 选择机制"首次被引入遥感目标检测领域。
从上图可以看到 LSKNet 的核心设计:通过大卷积核分解(Larger Kernel Decomposition)将大感受野拆分为两个并行分支,再通过空间选择(Spatial Selection)机制动态融合不同分支的特征,让模型自动决定"该看多远"。
LSKNet 的 3 大核心优势
- ⚡轻量高效:提供 LSKNet-T / LSKNet-S 两种规格,参数量和计算量远低于传统骨干,却能在 DOTA-v1.0 上把 mAP 提升到 81+。
- 🎯动态感受野:
LSKblock用 5×5 卷积 + 7×7 膨胀卷积(dilation=3)分解大卷积核,再通过空间注意力自动选择关键上下文,兼顾精度与速度。 - 🏆即插即用:LSKNet 是通用骨干网络,可直接替换 MMRotate 中 Oriented R-CNN、R3Det、S2ANet、RoI Transformer 等检测器的 backbone,改一行配置即可。
核心实现位于mmrotate/models/backbones/lsknet.py,其中LSKblock就是上面架构图中空间选择机制的关键代码。
第 1 步:LSKNet 环境搭建(最快配置方法)
LSKNet 官方实现基于 MMRotate,依赖 PyTorch、MMCV 和 MMDetection。整个安装过程只需几分钟:
conda create --name openmmlab python=3.8 -y conda activate openmmlab conda install pytorch==1.8.0 torchvision==0.9.0 cudatoolkit=10.2 -c pytorch pip install -U openmim mim install mmcv-full mim install mmdet然后克隆 LSKNet 仓库并安装:
git clone https://gitcode.com/gh_mirrors/ls/LSKNet cd LSKNet pip install -v -e .第 2 步:准备数据与选择 LSKNet 训练配置
训练前需要准备遥感数据集(如 DOTA-v1.0),官方提供了完整的数据切分脚本,位于tools/data/dota/目录,可参考其中的说明完成数据准备。
LSKNet 的所有训练配置都集中在configs/lsknet/目录下,官方已经为你准备好了一系列开箱即用的配置:
| 配置文件 | 检测器 | 数据集 |
|---|---|---|
| lsk_s_fpn_1x_dota_le90.py | Oriented R-CNN | DOTA-v1.0 |
| lsk_s_r3det_fpn_1x_dota.py | R3Det | DOTA-v1.0 |
| lsk_s_s2anet_fpn_1x_dota.py | S2ANet | DOTA-v1.0 |
| lsk_s_fpn_3x_hrsc_le90.py | Oriented R-CNN | HRSC2016 |
| lsk_s_fpn_1x_fair_le90.py | Oriented R-CNN | FAIR1M-1.0 |
以主力配置configs/lsknet/lsk_s_fpn_1x_dota_le90.py为例,它的核心结构是:
- 骨干网络:
LSKNet,embed_dims=[64, 128, 320, 512],depths=[2,2,4,2],可加载 ImageNet 预训练权重; - 颈部网络:FPN,输出 256 通道多尺度特征;
- 检测头:OrientedRPNHead + OrientedStandardRoIHead,输出 15 类 DOTA 目标。
第 3 步:训练、测试与可视化(跑通你的第一个模型)
训练 LSKNet 模型
单卡训练:
python tools/train.py configs/lsknet/lsk_s_fpn_1x_dota_le90.py多卡训练(官方实验使用 8 卡):
./tools/dist_train.sh configs/lsknet/lsk_s_fpn_1x_dota_le90.py 8测试与评估
python tools/test.py configs/lsknet/lsk_s_fpn_1x_dota_le90.py checkpoints/lsk_s_fpn_1x_dota_le90.pth --eval mAP单张图片推理演示
仓库提供了演示脚本demo/image_demo.py,可以快速对单张遥感图像进行旋转目标检测:
python demo/image_demo.py demo/dota_demo.jpg configs/lsknet/lsk_s_fpn_1x_dota_le90.py checkpoints/lsk_s_fpn_1x_dota_le90.pth --out-file work_dirs/demo_result.jpg上面这张图是典型的停车场遥感场景,黄色校车、小型车辆、大型建筑等目标排列密集且方向各异,正是 LSKNet 这类旋转目标检测模型的"主场"。再看一个类似场景的检测结果:
LSKNet 在主流遥感数据集上的表现
LSKNet 用"轻量"换来了"全面领先":
| 数据集 | 模型 | mAP | 备注 |
|---|---|---|---|
| DOTA-v1.0 | LSKNet_T + Oriented R-CNN | 81.37 | 超越此前最强 RTMDet-l |
| DOTA-v1.0 | LSKNet_S + Oriented R-CNN | 81.64 | |
| DOTA-v1.0 | LSKNet_S* (EMA) | 81.85 | 指数滑动平均微调 |
| FAIR1M-1.0 | LSKNet_S | 47.87 | 此前最优 O-RCNN 为 45.60 |
| HRSC2016 | LSKNet_S | 98.46 (mAP12) |
进阶玩法:从 LSKNet 还能得到什么
- 换检测器:同样的 LSKNet 骨干可以搭配 R3Det、S2ANet、RoI Transformer 等不同检测头,配置都在
configs/lsknet/下,可以比较哪种组合最适合你的业务场景。 - 换数据集:除了 DOTA,仓库还提供了 HRSC2016、FAIR1M、HRSID、SSDD 等数据集的配置与切分工具。
- 自定义骨干:如果想改造 LSKNet,核心实现就在
mmrotate/models/backbones/lsknet.py,从LSKblock入手即可理解整个空间选择机制,进而设计自己的遥感骨干网络。
小结
3 步就能跑通 LSKNet:搭建环境、选择配置、训练测试。作为遥感旋转目标检测领域的轻量级骨干网络,LSKNet 用极小的代价换来了 DOTA、FAIR1M、HRSC2016 上的全面 SOTA,非常适合作为遥感任务的基线模型。赶紧动手,跑出你的第一个旋转目标检测结果吧!🚀
【免费下载链接】LSKNet(IJCV2024 & ICCV2023) LSKNet: A Foundation Lightweight Backbone for Remote Sensing项目地址: https://gitcode.com/gh_mirrors/ls/LSKNet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考