三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

LSKNet快速上手:3步跑通你的第一个遥感旋转目标检测

LSKNet快速上手:3步跑通你的第一个遥感旋转目标检测

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.pyOriented R-CNNDOTA-v1.0
lsk_s_r3det_fpn_1x_dota.pyR3DetDOTA-v1.0
lsk_s_s2anet_fpn_1x_dota.pyS2ANetDOTA-v1.0
lsk_s_fpn_3x_hrsc_le90.pyOriented R-CNNHRSC2016
lsk_s_fpn_1x_fair_le90.pyOriented R-CNNFAIR1M-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.0LSKNet_T + Oriented R-CNN81.37超越此前最强 RTMDet-l
DOTA-v1.0LSKNet_S + Oriented R-CNN81.64
DOTA-v1.0LSKNet_S* (EMA)81.85指数滑动平均微调
FAIR1M-1.0LSKNet_S47.87此前最优 O-RCNN 为 45.60
HRSC2016LSKNet_S98.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),仅供参考

← 返回列表