当前位置: 首页 > 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 

http://www.lryc.cn/news/434100.html

相关文章:

  • Spring常见的面试问答题(一)
  • STM32 之 SDRAM 详解
  • 基于图神经网络的最大独立集问题的目标分支
  • 【Qt】事件过滤器
  • 字符串转换为整数、整数转换为字符串
  • 解决samba无权限创建文件问题
  • Ribbon快速了解
  • SpringBoot闲一品交易平台
  • 基于SpringBoot的物流管理系统
  • uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined
  • 负载均衡调度器--LVS
  • TinyWebSever源码逐行注释(五)_ http_conn.cpp
  • windows手工杀毒-寻找可疑进程之句柄
  • java开发后端
  • Redis 的标准使用规范之数据类型使用规范
  • 人工智能技术导论——基于产生式规则的机器推理
  • Apache Guacamole 安装及配置VNC远程桌面控制
  • 在Linux中从视频流截取图片帧(ffmpeg )
  • 使用脚手架来创建 express 项目
  • 单片机常用的软件架构
  • 服务器模型 Reactor 和 Proactor
  • 使用 Grype 检查 .jar 包中的漏洞
  • IDEA 常用插件推荐,美观又实用!
  • 浮点数精度问题
  • RK3576芯片在智能家居里中型智慧屏产品的应用方案分析
  • 什么是生成式 AI?
  • 计算机网络期末试题及答案
  • MySQL中DML操作(一)
  • Django 模板继承
  • 黑马点评17——多级缓存-Lua语法