MMrotate框架使用小技巧

文章介绍了如何在MMrotate框架中保存最佳模型权重,使用get_flops.py工具计算模型的FLOPs和参数量,通过benchmark.py工具测量单图推理时间,以及如何利用test.py进行结果可视化,并指出可以修改可视化图片中的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

保存最佳权重

进入到./configs/schedules里,将evaluation = dict(interval=1, metric='mAP')更改为evaluation = dict(interval=1, metric='mAP', save_best='auto')

查看模型复杂度

利用tools/analysis_tools/get_flops.py
本工具用于统计模型的参数量,可以通过 --shape 参数指定输入图片的尺寸
例如:

python tools/analysis_tools/get_flops.py configs/redet/redet_re50_refpn_3x_hrsc_le90.py --shape 800 512

讲述出为:

==============================
Input shape: (3, 800, 512)
Flops: 48.24 GFLOPs
Params: 35.25 M
==============================

计算单图推理时间

利用tools/analysis_tools/benchmark.py
此工具是用来测试模型在当前环境下的推理速度的,模型会跑一遍配置文件中指定的测试集,计算单图推理时间(FPS)。
例如:

python -m torch.distributed.launch --nproc_per_node=1 --master_port=29500 tools/analysis_tools/benchmark.py configs/redet/redet_re50_refpn_3x_hrsc_le90.py work_dirs/redet_re50_refpn_3x_hrsc_le90/epoch_1.pth --launcher pytorch

则输出为:

Done image [50 / 2000], fps: 7.1 img / s, times per image: 140.9 ms / img
Done image [100/ 2000], fps: 7.1 img / s, times per image: 141.1 ms / img
Done image [150/ 2000], fps: 7.1 img / s, times per image: 141.1 ms / img
Done image [200/ 2000], fps: 7.1 img / s, times per image: 140.8 ms / img
Done image [250/ 2000], fps: 7.2 img / s, times per image: 139.7 ms / img
Done image [300/ 2000], fps: 7.2 img / s, times per image: 139.0 ms / img
Done image [350/ 2000], fps: 7.2 img / s, times per image: 138.7 ms / img
Done image [400/ 2000], fps: 7.2 img / s, times per image: 138.4 ms / img
Done image [450/ 2000], fps: 7.2 img / s, times per image: 138.0 ms / img

将测试结果可视化

利用./tools/test.py加上参数--show-dir
例如:

python ./tools/test.py configs/redet/redet_
re50_refpn_1x_dota_le90.py work_dirs/redet_re50_refpn_1x_dota_le90/latest.pth --show-dir work_dirs/vis

更改可视化图片中显示的内容

在文件mmrotate/core/visualization/image.py
有代码:

draw_labels(
                ax,
                labels[num_bboxes:],
                positions,
                class_names=class_names,
                color=text_colors,
                font_size=font_size,
                scales=scales,
                horizontal_alignment=horizontal_alignment)

可以修改显示的内容。

<think>嗯,用户让我介绍一下遥感光SA目标检测项目的智能算法系统的代码实现。首先,我需要理解用户的需求。他们可能是一个研究人员或者开发者,对遥感图像处理和目标检测感兴趣。用户提到的是“光SA”,可能是指合成孔径雷达(SAR)?或者可能是光学遥感图像中的特定任务,比如目标检测中的某种方法? 接下来,我需要确定项目的具体内容。遥感目标检测通常涉及从卫星或无人机图像中检测建筑物、车辆、船舶等。智能算法可能包括深度学习模型,比如YOLO、Faster R-CNN或者一些针对遥感优化的模型,比如旋转框检测的算法。 用户可能想知道代码实现的结构,比如数据预处理、模型架构、训练流程、后处理等。或者他们可能需要具体的代码示例。不过用户没有明确说明是概述还是详细代码,所以可能需要先给出一个总体框架,再结合部分关键代码。 另外,考虑到遥感图像的特点,比如大尺寸、多光谱、目标方向多变等,可能需要特殊的处理,比如图像分块、数据增强、旋转增强等。同时,数据集方面,常用的有DOTA、HRSC2016等,可能需要提到数据加载的部分。 用户可能还关心模型的评估指标,比如mAP,以及部署的考虑,比如使用ONNX或TensorRT进行加速。此外,是否要提到分布式训练或者模型优化技巧? 需要确保回答结构清晰,分点说明,可能包括数据预处理、模型选择、损失函数、训练策略、后处理、评估和部署等部分。同时,给出代码框架示例,比如使用PyTorch或MMDetection库,这样用户更容易理解。 可能还需要注意术语的正确性,比如“光SA”是否有其他含义,如果不确定,可以假设是光学遥感图像的目标检测,并适当提及SAR的情况作为补充。另外,用户可能希望了解最新的算法,比如基于Transformer的模型,或者注意力机制的应用。 最后,确保语言简洁,技术细节准确,并提供参考GitHub仓库或文档,帮助用户进一步学习。需要避免过于冗长,但又要覆盖关键点。检查是否有常见的错误,比如模型选择是否适合遥感任务,数据增强方法是否合适等。</think>遥感光学/SAR(合成孔径雷达)目标检测的智能算法系统是计算机视觉在遥感领域的重要应用,其核心是通过深度学习算法自动识别遥感图像中的目标(如建筑物、车辆、船舶等)。以下是此类项目的代码实现框架及关键技术点: --- ### **1. 系统核心模块** #### **(1) 数据预处理** - **图像分块**:遥感图像尺寸大(如10k×10k像素),需切割为小图(如512×512)。 - **数据增强**:旋转、翻转、亮度调整,适应遥感目标多方向特性。 - **格式转换**:COCO或PASCAL VOC格式标注(支持MMDetection/YOLO等框架)。 ```python # 示例:分块处理 from skimage.util import view_as_blocks image_blocks = view_as_blocks(image, block_shape=(512, 512, 3)) ``` #### **(2) 模型架构** - **主流算法**: - **两阶段模型**:Faster R-CNN(适合小目标)、Mask R-CNN(实例分割)。 - **单阶段模型**:YOLOv8、RetinaNet(速度优先)。 - **遥感优化模型**:RoI Transformer(处理旋转目标)、Oriented R- **注意力机制**:CBAM、SENet,提升复杂背景下的目标区分度。 #### **(3) 损失函数优化** - **分类损失**:Focal Loss(解决类别不平衡)。 - **回归损失**:Smooth L1 Loss或旋转框损失(如KLD Loss for rotated boxes)。 #### **(4) 后处理** - **NMS过滤**:剔除冗余检测框,支持旋转框NMS。 - **分块结果融合**:将小图检测结果拼接回原始大图坐标。 --- ### **2. 代码实现示例(基于PyTorch/MMDetection)** #### **(1) 环境配置** ```bash pip install mmdet mmrotate # 安装支持旋转框检测的MMDetection扩展 ``` #### **(2) 模型定义(MMDetection Config)** ```python # 示例:选择旋转框检测模型 model = dict( type='OrientedRCNN', backbone=dict(type='ResNet', depth=50), rpn_head=dict(type='OrientedRPNHead'), roi_head=dict(type='OrientedStandardRoIHead')) ``` #### **(3) 训练流程** ```python # 数据加载与训练 dataset_type = 'DOTADataset' # 使用遥感数据集DOTA data = dict( train=dict( type=dataset_type, ann_file='annotations/train_labels/', img_prefix='images/train/')) optimizer = dict(type='SGD', lr=0.005, momentum=0.9) ``` --- ### **3. 关键技术挑战** 1. **小目标检测**:通过FPN(特征金字塔)或注意力机制增强特征提取。 2. **旋转目标处理**:使用旋转框参数化(5参数表示法:x,y,w,h,θ)。 3. **复杂背景干扰**:结合SAR/光学多模态数据融合提升鲁棒性。 -- ### **4. 评估与部署** - **评估指标**:mAP(Mean Average Precision),DOTA数据集常采用IoU=0.5。 - **部署加速**:模型转换为ONNX/TensorRT格式,适配边缘计算设备。 ```python # 模型导出为ONNX torch.onnx.export(model, input_tensor, "model.onnx") ``` -- ### **5. 开源资源推荐** - **代码库**: - [MMDetection](https://github.com/open-mmlab/mmdetection) - [MMRotate](https://github.com/open-mmlab/mmrotate)(旋转目标专用) - **数据集**: - [DOTA](https://captain-whu.github.io/DOTA/)(2800+遥感图像,15类目标) - [HRSC2016](https://www.sciencedirect.com/science/article/pii/S1077314216300750)(船舶检测) --- 通过以上架构,可实现遥感图像中多角度目标的精准检测。实际项目中需根据硬件条件(如GPU显存)调整输入分辨率与Batch Size,并针对具体场景优化数据增强策略。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值