mmrotate的使用以及说明(以DOTA为例)
前言
MMRotate是一个基于PyTorch的开源旋转目标检测工具箱,作为OpenMMLab项目的一部分,它提供了强大的平台用于研究和开发旋转目标检测算法。
一、环境配置
环境配置很多作者都有写我这就不赘述了可以参考链接
二、使用步骤
1.数据集的裁剪以DOTA数据集为例
因为大部分的数据集尺寸很大,所以mmrotate上有自带的裁剪工具。
我们只需要找到tools/data/split/split_configs/下的工具,这里我们使用ss,以及img_split.py
代码如下(我们以ss_train.json示例):
{
"nproc": 10,
"img_dirs": [
"填写图片地址"
],
"ann_dirs": [
"填写图片的标注信息"
],
"sizes": [
1024 #裁剪尺寸因为DOTA数据集最小为800*800所以我们使用512
],
"gaps": [
200 #图片的重叠尺寸
],
"rates": [
1.0
],
"img_rate_thr": 0.6,
"iof_thr": 0.7,
"no_padding": false,
"padding_value": [
104,
116,
124
],
"save_dir": "保存裁剪的图片地址只需要写到train/(文本会自己在train/下创建图片文件夹以及标注文件夹)",
"save_ext": ".png"
}
然后我们使用img_split.py裁剪,只需要更换红框里面的内容也就是上一步弄好的配置文件的路径
运行完后就会出现一个train文件里面会有裁剪完的数据,接下来重复以上操作把train,val,test裁剪完成即可。
切记!!!!如果运行了即使失败了也会出现文件夹,要记得到保存的路径下删掉错误的文件夹再重新运行。
2.训练自己的数据集
首先我么要先确定我们要根据什么网络(.py)训练以及对性的权重文件(.pth),根据统计以下的两个网络模型是比较准确的
上面的红框总的来讲是一个模型,只不过一个是继承另一个的,注意!!!很多是没有继承的,所以没有的话可以忽略。只需要更改被继承代码。
被继承代码如下(示例):其中标红的是需要更改的地方。
继承代码如下(示例):只需要是框内的地址改成被继承的文件路径即可
然后对继承文件的第一个红框进行解释:
先讲第一个是dotav1.py
然后滑倒最下面
data = dict(
samples_per_gpu=2,
workers_per_gpu=2,
train=dict(
type=dataset_type,
ann_file=data_root + 'trainval/annfiles/',#放裁剪图片train的路径
img_prefix=data_root + 'trainval/images/',,#放裁剪标注train的路径
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + 'trainval/annfiles/',,#放裁剪图片val的路径
img_prefix=data_root + 'trainval/images/',,#放裁剪标注val的路径
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + 'test/images/',
img_prefix=data_root + 'test/images/',
pipeline=test_pipeline))
然后讲第二个是训练策略,第三个是日志,这些基本不需要改动。
然后对继承文件的第二个红框进行解释:
该地方放的是从浏览器上下载下来对应的权重文件路径。
然后我们只需要找到tools/train.py即可在终端输入
python train.py(一定要cd到相应的位置) 网络模型(即以.py结尾的那个) --work-dir 保存路径
总结
以上就是训练模型的全过程主要参考了哔哩哔哩的YUzUY的mmrotate的视频不懂得可以去看看链接