在旋转目标检测框架MMRotate下训练S2anet模型

2023-12-11 21:30

本文主要是介绍在旋转目标检测框架MMRotate下训练S2anet模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介 

       目前绝大多数的旋转检测模型都是基于经典的通用检测器,随着检测任务的发展, 水平框在一些细分领域上已经无法满足研究人员的需求。通过重新定义目标表示形式以及增加回归自由度数量 的操作来实现旋转矩形框、四边形甚至任意形状检测,我们称之为旋转目标检测。如何更加高效地进行高精度的旋转目标检测已成为当下的研究热点。MMRotate 是一个为旋转目标检测方法提供统一训练和评估框架的工具箱,包括以下部分:

  • datasets 用于数据加载和数据增强。 在这部分,我们支持了各种旋转目标检测数据集和数据增强预处理。
  • models 包括模型和损失函数。
  • core 为模型训练和评估提供工具。
  • apis 为模型训练、测试和推理提供高级 API

(摘自MMRotate官方文档)        

        作者是初接触目标检测领域的纯萌新,下面我将记录本人在对S2anet模型进行训练的全过程作为笔记,如果有幸能够帮到大家那是更好。在这过程中或许存在很多不足与缺陷,还请各位大佬不吝赐教。

二、训练过程

1、环境配置

        作者使用的是2*2080Ti的机器,在Linux系统中进行相关操作。

        参考官方文档(https://github.com/open-mmlab/mmrotate)在Ubuntu中配置MMRotate环境,具体步骤如下:

1.创建并激活虚拟环境:
(1)conda create -n open-mmlab python=3.8 pytorch==1.7.0 cudatoolkit=10.1 torchvision -c pytorch –y
注:官方文档给出的python版本为3.7,经过我的实际配置,python3.7出现问题,故此处改为python3.8.
(2)conda activate open-mmlab

2.安装相关文件:
(1)pip install openmim
(2)mim install mmcv-full
(3)mim install mmdet
注:MMRotate 和 MMCV, MMDet 部分版本兼容性如下所示,需要安装正确的版本以避免安装出现问题.可输入命令mim install mmcv-full==xxx安装对应版本的mmcv-full

3.安装mmrotate:
(1)git clone https://github.com/open-mmlab/mmrotate.git
(2)cd mmrotate
(3)pip install -r requirements/build.txt
(4)pip install -v -e .

4.测试安装的环境是否正确:
(1)mim download mmrotate --config oriented_rcnn_r50_fpn_1x_dota_le90 --dest .
(2)python demo/image_demo.py demo/demo.jpg oriented_rcnn_r50_fpn_1x_dota_le90.py oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth --out-file result.jpg
注:在输入此命令时要在mmrotate文件夹中打开终端.测试并得到如下结果,说明环境配置正确:

2、数据准备

1.数据集划分

        由于项目需要,作者使用RSDD-SAR数据集进行训练。数据集的相关链接如下:https://radars.ac.cn/web/data/getData?dataType=SDD-SAR

(1)RSDD-SAR数据集文件的结构如下,其中Imagesets文件夹中给出了训练集(5000个)和测试集(2000个)的图片和xml文件的名称。我们需要使用其中的图片和对应的xml文件(xml主要记录了旋转框的坐标、角度等信息)。利用附件中的exactImages.py和exactXml.py分别对数据集文件中的图片和xml文件进行划分,分为训练集(5000个)、测试集(1000个)和验证集(1000个)。

2.生成DOTA数据集格式的标签
        MMrotate所使用的数据集格式是DOTA类型的. 利用上一步中提到的xml标签,使用toDOTA.py进行转化.。该程序源于下文:基于MMRotate训练自定义数据集 做旋转目标检测 2022-3-30_mmrotate r3det_YD-阿三的博客-CSDN博客本文目录简述1.MMrotate下载2.环境安装3.自定义数据集制作3.1 roLabelImg 打标签3.2 生成DOTA数据集格式的标签3.3 数据集裁剪(split)4.修改配置文件5.训练并测试简述 MMRotate 是一款基于 PyTorch 的旋转框检测的开源工具箱,是 OpenMMLab 项目的成员之一。里面包含了rcnn、faster rcnn、r3det等各种旋转目标的检测模型,适合于遥感图像领域的目标检测。1.MMrotate下载MMrotate包下载:下载链接 目录结构如下_mmrotate r3dethttps://blog.csdn.net/qq_43581224/article/details/123838415
注:在使用toDOTA.py时需要修改下图中的几个路径参数,--xml-dir为xml所在的文件夹路径,--img-dir为图片所在的文件夹路径,--outputImg-dir为输出的图片的路径,而此处输出的图片带有旋转框,其目的是为了验证xml文件的有效性.
经过以上步骤后会在xml文件夹中得到txt_label文件夹,其中就是经过转化的DOTA数据集格式的标签.

3.图片裁剪及图片类型转换.
MMrotate所使用的图片为.png格式且尺寸为 n×n. RSDD-SAR数据集中的图片已经是n×n (512*512).使用mmrotate/tools/data/dota/split/ 路径下img_split.py文件(裁剪脚本) 以及 mmrotate-main/tools/data/dota/split/split_configs/ 路径下的配置文件,其文件内容就是img_split.py的配置信息,包括ss_train.json、ss_val.json、ss_test.json,我们需要修改其中的参数,让其加载上述的train、test、val中的图像及标签,并进行裁剪.以ss_train.json文件为例,具体的参数修改如下:

  • img_dirs:图片所在路径
  • ann_dirs:DOTA标签所在路径
  • save_dir:保存的ann文件和图片文件的路径
  • save_ext:保存的图片的类型
  • sizes:图片的尺寸(边长)

具体的json文件见下图所示.其他同理.


以train为例,此处设置的文件保存路径为splitFiles文件夹.该文件夹的结构为:
-splitFiles:
     --annfiles
     --images
最后运行img_split.py进行图片裁剪和类型转化.
注:经过尝试,在命令行中直接运行img_split.py可能会出错,可直接在pycharm中运行相关代码.
 

3、修改配置信息

1.修改tain.py文件
train.py在tools文件夹中.主要修改config和work-dir两个参数.config为模型文件的路径,此处使用s2anet模型.work-dir为训练得到的模型及相关日志等文件的保存路径.


2.修改模型文件
此处修改s2anet_r50_fpn_1x_dota_le135.py.主要修改的参数为模型文件中的目标类型数.因为我们使用的数据集为RSDD-SAR,目标类型为ship,所以将目标类型数修改为1.

3.修改dota.py文件
修改dota.py文件中的类别名称(CLASSES),此处改为ship,如下图所示.
注:当仅有一个CLASSES时候,需要在第一个名称后加上”,”.


4.修改dotav1.py文件
此文件位置一般在mmrotate/configs/base/datasets下.其中有数据集的路径信息.首先修改data_root,即数据集的根目录.并且在data中修改划分好的三个数据集的对应文件的路径.

5.修改迭代次数、学习率等参数.
在mmrotate/configs/_base_/schedules文件中的schedule_1x.py文件中修改max_epoch,此处使用的max_epoches为13.
 

4、训练与测试

1.训练
在终端中输入以下命令:python  /home/hfut-dl/xzh/mmrotate/tools/train.py   /home/hfut-dl/xzh/mmrotate/configs/s2anet/s2anet_r50_fpn_1x_dota_le135.py.其中,
/home/hfut-dl/xzh/mmrotate/tools/train.py 为执行训练的python文件, 
/home/hfut-dl/xzh/mmrotate/configs/s2anet/s2anet_r50_fpn_1x_dota_le135.py为模型文件.
训练结束后在output文件夹中得到训练的模型以及相关日志文件.如下图所示.

经过训练,通过数据可知在epoch为12时,recall和ap两项指标达到最高(暂时结果)

注:可以通过python tools/train.py configs/模型文件 --work-dir work_dirs/xxx --resume-from work_dirs/yyy/latest.pth继续迭代.

2.测试
通过python /home/hfut-dl/xzh/mmrotate/demo/image_demo.py   img_path   /home/hfut-dl/xzh/mmrotate/configs/s2anet/s2anet_r50_fpn_1x_dota_le135.py  /home/hfut-dl/xzh/RSDD-SAR/output/latest.pth对模型进行测试.其中,

  • img_path为测试图片的路径.
  • /home/hfut-dl/xzh/mmrotate/configs/s2anet/s2anet_r50_fpn_1x_dota_le135.py为模型文件
  • /home/hfut-dl/xzh/RSDD-SAR/output/latest.pth为训练后的模型文件

部分测试图片如下:

 三、总结

        作者在进行这次训练任务的过程中学到了很多东西,比如旋转框的定义等,但在此文中并未详细介绍,如有需要可以阅读此文章:关于旋转框定义的一些理解和感想 - 知乎 (zhihu.com),写得非常用心。

        此外,在训练之前也参阅了不少好文章,在这里贴下链接:

基于mmrotate的旋转目标检测入门详解_Orange-_-的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/xc1105921991/article/details/127357440

旋转框目标检测————关于旋转框定义和解决方案_qq_41627642的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_41627642/article/details/125201603

MMrotate自定义数据集训练与验证&&格式转换脚本_mmrotate resume_超多元全维度无上创世毁灭与再生脚本的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_51320474/article/details/124295986mmrotate学习(4):mmrotate框架训练数据集_mmrotate训练dota csdn_vitalgirl的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_34885993/article/details/127849832

【AI目标检测】MMROTATE踩坑记录_e2cnn_陈梦酱汁的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/jaz_y/article/details/123983506

这篇关于在旋转目标检测框架MMRotate下训练S2anet模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/482168

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU