LSKNet模型推理部署全流程:从单图测试到批量可视化
【免费下载链接】LSKNet(IJCV2024 & ICCV2023) LSKNet: A Foundation Lightweight Backbone for Remote Sensing项目地址: https://gitcode.com/gh_mirrors/ls/LSKNet
LSKNet(Large Selective Kernel Network)是IJCV 2024与ICCV 2023收录的轻量级遥感目标检测骨干网络,它在DOTA-v1.0上以LSKNet_S + Oriented R-CNN取得了81.64% mAP的SOTA成绩,在HRSC2016上更是达到了98.46% mAP。本文为新手整理一套完整的LSKNet模型推理与部署教程,从环境准备、权重下载,到单张图片测试、超大遥感图分块推理,再到批量测试与结果可视化,一步步带你跑通遥感目标检测的完整推理流程。
图片说明:LSKNet通过大卷积核分解(Larger Kernel Decomposition)与空间选择(Spatial Selection)机制,动态调整感受野,从而更好地建模遥感场景中不同目标的上下文信息。源码位于 mmrotate/models/backbones/lsknet.py。
一、LSKNet模型推理前准备:环境安装与权重下载
1. 克隆项目并安装依赖
LSKNet 基于 OpenMMLab 的 MMRotate 工具箱构建,需要 PyTorch、MMCV、MMDetection 等基础依赖。推荐使用 conda 创建独立环境:
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然后克隆本仓库并安装:
git clone https://gitcode.com/gh_mirrors/ls/LSKNet cd LSKNet pip install -v -e .2. 下载预训练模型权重
LSKNet 官方提供了 ImageNet 300 epoch 预训练的 LSKNet-T / LSKNet-S 骨干权重,以及 DOTA、HRSC 等数据集上训练好的完整检测器权重。建议将权重统一放入checkpoints/目录,方便后续推理时引用。模型效果对照表可参考 configs/lsknet/README.md。
3. 认识推理配置文件
LSKNet 的推理配置位于 configs/lsknet/,以最常用的 lsk_s_fpn_1x_dota_le90.py 为例,它组合了LSKNet骨干、FPN颈部、OrientedRCNN检测头,适用于 DOTA 数据集的 le90 角度定义方式。推理时只需把配置和权重路径传给脚本即可,无需修改任何代码。
二、LSKNet单图测试:一行命令跑通遥感目标检测
对新手来说,最直观的体验方式就是拿一张图片做单图推理测试。项目提供了现成的 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 results/dota_demo_result.jpg图片说明:这是 DOTA 风格的航拍场景样例(
demo/dota_demo.jpg),包含车辆、建筑等多尺度密集目标,正是 LSKNet 擅长处理的复杂遥感场景。
常用参数说明
| 参数 | 作用 | 默认值 |
|---|---|---|
--out-file | 保存可视化结果的路径 | 不保存 |
--device | 推理设备,如cuda:0或cpu | cuda:0 |
--score-thr | 置信度阈值,过滤低分检测框 | 0.3 |
--palette | 可视化配色,可选 dota/sar/hrsc/random | dota |
如果想在 CPU 上体验推理,把--device改为cpu即可(注意 RoIPool 相关模块在 CPU 上暂不支持,建议使用 GPU)。另一张示例图demo/demo.jpg也可以用来快速验证流程。
三、超大遥感图分块推理:LSKNet大图检测的终极方案
遥感影像往往是大尺寸航拍图,直接输入模型会超出显存限制。为此,项目提供了大图分块推理工具 demo/huge_image_demo.py,它通过滑动窗口把大图切成小块,逐块推理后再用 NMS 合并结果,核心逻辑见 mmrotate/apis/inference.py 中的inference_detector_by_patches。
python demo/huge_image_demo.py \ demo/dota_demo.jpg \ configs/lsknet/lsk_s_fpn_1x_dota_le90.py \ checkpoints/lsk_s_fpn_1x_dota_le90.pth关键参数:按场景调优
| 参数 | 作用 | 建议 |
|---|---|---|
--patch_sizes | 分块尺寸 | 默认 [1024],与训练尺度一致 |
--patch_steps | 滑窗步长 | 默认 [824],步长小于块尺寸可实现重叠 |
--img_ratios | 多尺度缩放系数 | 默认 [1.0],多尺度检测可传 [0.5, 1.0] |
--merge_iou_thr | 结果合并 IoU 阈值 | 默认 0.1 |
步长小于块尺寸时会产生重叠窗口,能有效避免目标被切断在边界处,是大图推理质量的关键技巧。多尺度推理(--img_ratios 0.5 1.0 1.5)则能显著提升小目标的召回率。
四、LSKNet批量测试与结果评估:数据集的推理部署
当需要对整个测试集做批量推理并评估精度时,使用 tools/test.py 脚本。它支持单 GPU、多 GPU 以及分布式推理,还能一键输出 mAP 评估指标。
单卡批量测试
python tools/test.py \ configs/lsknet/lsk_s_fpn_1x_dota_le90.py \ checkpoints/lsk_s_fpn_1x_dota_le90.pth \ --eval mAP多卡分布式加速测试
多卡环境下推荐使用官方提供的 tools/dist_test.sh 脚本,速度成倍提升:
bash tools/dist_test.sh \ configs/lsknet/lsk_s_fpn_1x_dota_le90.py \ checkpoints/lsk_s_fpn_1x_dota_le90.pth \ 8 \ --eval mAP常用参数速查
--out:以 pickle 格式保存原始检测结果,便于后续分析--show-dir:批量测试时把每张图的检测结果可视化保存到指定目录--show-score-thr:可视化时的置信度阈值,默认 0.3--format-only:只格式化输出结果而不评估,用于提交到测试服务器--fuse-conv-bn:融合卷积与 BN 层,轻微提升推理速度
从测试结果到批量可视化
批量测试配合--show-dir即可实现批量可视化:脚本会为测试集中的每张图片生成带旋转框标注的结果图并保存。若需要自定义可视化风格(如修改调色板、线宽),可以参考 mmrotate/core/visualization/image.py 的实现。
五、LSKNet推理性能优化技巧
1. 开启 Conv-BN 融合加速
在 tools/test.py 中加上--fuse-conv-bn参数,可以在不影响精度的前提下略微提升推理速度,适合对延迟敏感的部署场景。
2. 使用 EMA 微调权重提升精度
项目提供了 EMA 微调后的模型配置 lsk_s_ema_fpn_1x_dota_le90.py,在 DOTA 上可将 mAP 从 81.64 提升至 81.85,推理时直接替换权重即可。
3. 按任务选择合适的检测头
LSKNet 骨干非常灵活,官方在 configs/lsknet/ 下提供了 Oriented R-CNN、R3Det、S2ANet、RoI Transformer 等多种检测头的组合配置,可按精度与速度需求自由搭配。
六、常见问题排查清单
| 问题 | 排查方向 |
|---|---|
| 显存不足(OOM) | 使用huge_image_demo.py分块推理,或调小--patch_sizes |
| 检测框过多、过密 | 调高--score-thr(如 0.5)过滤低置信度框 |
| 小目标漏检严重 | 开启多尺度推理--img_ratios 0.5 1.0 1.5,或缩小滑窗步长 |
| 精度与论文不符 | 确认使用的配置、权重与角度定义(le90/oc/le135)一致 |
| 结果文件为空 | 检查测试集目录结构与数据集配置文件是否匹配 |
七、总结:LSKNet推理部署路线图
回顾整个流程:环境安装 → 权重下载 → 单图测试 → 大图分块推理 → 批量测试评估 → 结果可视化,这就是一套完整可复用的 LSKNet 遥感目标检测推理部署链路。无论你是想快速验证模型效果、处理单张航拍大图,还是对整批测试集做精度评估,本文给出的命令都能直接上手。LSKNet 凭借轻量高效的大选择性卷积核设计,已成为遥感目标检测领域极具性价比的基础骨干网络,值得每一位遥感与 CV 开发者深入学习与实践。
【免费下载链接】LSKNet(IJCV2024 & ICCV2023) LSKNet: A Foundation Lightweight Backbone for Remote Sensing项目地址: https://gitcode.com/gh_mirrors/ls/LSKNet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考