如何用LSKNet训练自己的遥感数据集:从标注到部署的完整流程
如何用LSKNet训练自己的遥感数据集从标注到部署的完整流程【免费下载链接】LSKNet(IJCV2024 ICCV2023) LSKNet: A Foundation Lightweight Backbone for Remote Sensing项目地址: https://gitcode.com/gh_mirrors/ls/LSKNetLSKNetLarge Selective Kernel Network大选择性卷积核网络是发表于 ICCV 2023 与 IJCV 2024 的轻量级遥感骨干网络专为遥感目标检测而设计。本文为你梳理一份从数据集标注、环境搭建、模型训练到部署的 LSKNet 遥感数据集训练完整流程帮助新手快速跑通属于自己的遥感检测项目在 DOTA、HRSC2016 等标准数据集上刷新 SOTA 成绩DOTA-v1.0 达 81.64 mAP、HRSC2016 达 98.46% mAP。LSKNet 核心优势动态感受野如何提升遥感检测精度遥感图像中的目标往往非常小要正确识别它们模型需要结合足够大的上下文信息而不同类别目标所需的上下文范围又各不相同。LSKNet 正是针对这一痛点设计大卷积核分解将超大卷积核拆分为小卷积核与空洞卷积的组合在扩大感受野的同时控制计算量空间选择机制动态调整感受野让网络在不同空间位置自动选择不同范围的上下文⚡轻量高效作为骨干网络可直接替换进 Oriented R-CNN、RoI Transformer、R3Det、S2ANet 等主流旋转框检测框架骨干网络的完整源码位于mmrotate/models/backbones/lsknet.py全部训练配置集中在configs/lsknet/目录下开箱即用。第一步搭建 LSKNet 遥感训练环境环境搭建是 LSKNet 训练流程的第一步推荐使用 conda 创建独立环境基于 MMRotate 工具链conda create --name openmmlab python3.8 -y conda activate openmmlab conda install pytorch1.8.0 torchvision0.9.0 cudatoolkit10.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 . 小提示如果安装遇到版本冲突可先安装 MMRotate 的依赖项mmcv-full、mmdet再执行本地安装成功率更高。第二步整理遥感数据集为 DOTA 标注格式LSKNet 默认使用 DOTA 格式的旋转框标注每个目标用8 个坐标点 类别名 难易度表示每行一个目标x1 y1 x2 y2 x3 y3 x4 y4 class_name difficulty项目测试数据tests/data/labelTxt/中就有现成范例例如398.0 716.0 398.0 694.0 464.0 698.0 465.0 718.0 plane 0 513.0 542.0 514.0 524.0 613.0 529.0 613.0 548.0 plane 0你需要把自己的数据集整理成如下目录结构与configs/_base_/datasets/dotav1.py的约定一致data_root/ ├── trainval/ │ ├── images/ # 训练图片.png │ └── annfiles/ # 同名 .txt 标注文件 └── val/ ├── images/ └── annfiles/如果原始遥感图很大如 8000×8000需要先切分成 1024×1024 的小图。项目提供了切分工具tools/data/dota/split/img_split.py配合tools/data/dota/split/split_configs/下的ss_train.json单尺度或ms_train.json多尺度配置即可完成切分。第三步修改配置文件最快配置方法配置文件是 LSKNet 训练的核心以configs/lsknet/lsk_s_fpn_1x_dota_le90.py为例你只需重点修改三处数据路径把configs/_base_/datasets/dotav1.py中的data_root改为你自己的数据目录类别数量将roi_head中bbox_head的num_classes改为你的类别数默认 15 是 DOTA 的类别数预训练权重把backbone的init_cfg.checkpoint指向下载好的lsk_s_backbone-e9d2e551.pth配置文件里还内置了 RResize1024×1024 缩放、RRandomFlip随机翻转、PolyRandomRotate随机旋转等数据增强新手无需改动即可直接使用。第四步一键启动 LSKNet 训练单卡训练只需要一条命令python tools/train.py configs/lsknet/lsk_s_fpn_1x_dota_le90.py --work-dir work_dirs/lsk_s_dota多卡训练使用官方提供的分布式脚本bash tools/dist_train.sh configs/lsknet/lsk_s_fpn_1x_dota_le90.py 8训练过程中会自动保存 checkpoint 和日志到work_dirs目录你可以随时用--resume-from从断点恢复训练。官方 DOTA-v1.0 上 LSKNet-S Oriented R-CNN 以 1x 学习率调度即可达到 81.64 mAP训练成本远低于同类方案。第五步测试评估用 mAP 验证效果训练完成后用tools/test.py评估模型精度python tools/test.py configs/lsknet/lsk_s_fpn_1x_dota_le90.py work_dirs/lsk_s_dota/xxx.pth --eval mAP添加--show-dir参数还能把检测结果可视化保存下来。下图是遥感场景中的典型检测对象车辆、建筑等这也是 LSKNet 最擅长的应用场景第六步模型部署与单图推理LSKNet 训练完成后部署推理非常简单。使用项目自带的demo/image_demo.py即可对单张遥感图进行快速检测python demo/image_demo.py demo/dota_demo.jpg configs/lsknet/lsk_s_fpn_1x_dota_le90.py work_dirs/lsk_s_dota/xxx.pth --out-file result.jpg如果需要批量推理或接入服务可参考mmrotate/apis/inference.py中的init_detectorinference_detector接口将其封装为 HTTP 服务即可完成线上部署。常见问题 FAQQ1显存不足怎么办将data中的samples_per_gpu从 2 调小到 1或使用更轻量的 LSKNet-T 配置lsk_t_fpn_1x_dota_le90.py。Q2如何换用其他检测头LSKNet 作为通用骨干官方已提供 R3Det、S2ANet、RoI Transformer 等多种组合配置直接参考configs/lsknet/下的对应文件即可。Q3预训练权重从哪里获取README 中提供了 ImageNet 300 epoch 预训练的 LSKNet-T / LSKNet-S 骨干权重下载后放入本地路径并更新配置文件中的init_cfg.checkpoint即可。从标注数据、配置调参到训练部署以上六个步骤即可完整跑通 LSKNet 遥感数据集训练流程。LSKNet 凭借轻量骨干与动态感受野的优势非常适合遥感小目标检测场景快用你自己的数据集试试吧【免费下载链接】LSKNet(IJCV2024 ICCV2023) LSKNet: A Foundation Lightweight Backbone for Remote Sensing项目地址: https://gitcode.com/gh_mirrors/ls/LSKNet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考