当前位置: 首页 > news >正文

旋转目标检测对照实验-mmrotate基础教程

环境安装和测试可以参考mmrotate旋转目标检测实战指南_validate mmrotate-CSDN博客

使用自定义数据集训练

如果需要使用自己的数据集进行训练,首先需要把自己数据的标签格式转换为dota数据集的格式,形如(前八个数为坐标值,第九个为类别名,第十为识别困难程度)

475.0 982.0 456.0 982.0 461.0 841.0 481.0 842.0 large-vehicle 0

我这里使用另一个公开数据集MSRA-TD500作为例子,目录结构也模仿dota数据集

MSRA-TD500
├── train
│   ├── images
│   ├── labelTxt
├── val
│   ├── images
│   ├── labelTxt
├── test
│   ├── images

在configs/_base_/datasets中创建一个新的数据集脚本msra-td500.py,参照同级目录下的dotav1.py修改

# dataset settings
dataset_type = 'DOTADataset'
classes = ('words', ) # 注意如果是单类别,要在类别后加一个逗号,否则会报错
data_root = 'data/MSRA-TD500/'
img_norm_cfg = dict(mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [dict(type='LoadImageFromFile'),dict(type='LoadAnnotations', with_bbox=True),dict(type='RResize', img_scale=(1024, 1024)),dict(type='RRandomFlip', flip_ratio=0.5),dict(type='Normalize', **img_norm_cfg),dict(type='Pad', size_divisor=32),dict(type='DefaultFormatBundle'),dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]
test_pipeline = [dict(type='LoadImageFromFile'),dict(type='MultiScaleFlipAug',img_scale=(1024, 1024),flip=False,transforms=[dict(type='RResize'),dict(type='Normalize', **img_norm_cfg),dict(type='Pad', size_divisor=32),dict(type='DefaultFormatBundle'),dict(type='Collect', keys=['img'])])
]
data = dict(samples_per_gpu=2,workers_per_gpu=2,train=dict(type=dataset_type,classes=classes,ann_file=data_root + 'train/labelTxt/',img_prefix=data_root + 'train/images/',pipeline=train_pipeline),val=dict(type=dataset_type,classes=classes,ann_file=data_root + 'val/labelTxt/',img_prefix=data_root + 'val/images/',pipeline=test_pipeline),test=dict(type=dataset_type,classes=classes,ann_file=data_root + 'test/images/',img_prefix=data_root + 'test/images/',pipeline=test_pipeline))

同时,超参数可以在configs/_base_/schedules目录下选择参考文件修改,最后还要修改模型文件,我这里选择configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90.py,在文件的一开始选择数据集脚本和超参数脚本

_base_ = ['../_base_/datasets/MSRA-TD500.py', '../_base_/schedules/schedule_1x.py','../_base_/default_runtime.py'
]

还需要注意,在检测头中要将num_classes改为实际数据集的数量,否则训练还会报错

bbox_head=dict(type='RotatedRetinaHead',num_classes=1,...

运行训练脚本,添加指定参数即可开始训练。

# 单GPU,如果要在命令中指定工作目录,可以添加参数。--work_dir ${YOUR_WORK_DIR}
python tools/train.py configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90.py 

训练完成后会在保存权重的文件夹里同时保存一个记录训练过程的json文件,通过tools/analysis_tools下的脚本可以画出loss和mAP的曲线图

python tools/analysis_tools/analyze_logs.py plot_curve log.json --keys loss_cls loss_bbox
python tools/analysis_tools/analyze_logs.py plot_curve log.json --keys mAP

可以用test.py验证不同的验证集

python ./tools/test.py configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90.py checkpoints/SOME_CHECKPOINT.pth --eval mAP


http://www.mrgr.cn/news/23656.html

相关文章:

  • 全球视频云创新挑战赛算法赛道第一名比赛攻略
  • 智慧农业小型气象站
  • Java类和对象(详解)
  • Android - NDK: 在jni层生成java层对象,并调用java层的方法
  • 视频号黄金时间
  • JMeter做接口测试,如何提取登录Cookie
  • Unity Apple Vision Pro 开发(七):UI 交互 + 虚拟键盘
  • 数据结构应用实例(六)——最短路径
  • 2023下半年软考网络规划
  • Vue实现自定义进度条占比功能 Vue自定义进度条功能
  • excel无法保存文件
  • chapter08 面向对象编程高级 知识点总结Note
  • 源代码加密软件有哪些?10款常用的源代码加密软件分享!
  • 批发订货系统源码怎么弄 门店订货系统小程序价格
  • NX二次开发—实体名称工具
  • 数组的常用算法
  • 【Petri网导论学习笔记】Petri网导论入门学习(一)
  • Linux常见操作指令
  • 农业小气候观测站
  • 第67期 | GPTSecurity周报