一、数据集构建
1.数据集文件结构
2.裁剪数据集
原因:DOTA数据集图片尺寸过大
运行命令:
python tools/data/dota/split/img_split.py --base-json \
tools/data/dota/split/split_configs/ss_trainval.json
python tools/data/dota/split/img_split.py --base-json \
tools/data/dota/split/split_configs/ss_test.json
(单独分别使用train.json\test.json\val.json)
总结:修改json文件中路径参数,使用命令时只需修改 - -base_json参数为对应的配置文件即可
3.更改数据集基础路径及训练、验证和测试路径
change data_root in configs/_base_/datasets/dotav1.py to split DOTA dataset.
(如下:)
二、训练模型
以使用模型:rotated_faster_rcnn_r50_fpn_x1_dota_le90.py为例
1.最终命令:
python tools/train.py configs/redet/redet_re50_refpn_1x_dota_le90.py --work-dir work_dirs/runs/redet/
- -work-dir:训练得到的模型及配置信息保存的路径
2.修改配置
在模型文件中实现了:训练相关参数的配置,数据集信息的配置,以及网络架构的搭建;
①修改其中的目标类别数为自己数据集的类别数(由于我训练DOTAv1数据集可以不改)
②同时修改/mmrotate/datasets/dota.py 文件中类别名字
③最后,修改训练使用的数据集路径:找到并打开 mmrotate-main/configs/base/datasets/dotav1.py 文件,修改其中的 data_root 路径为自己裁剪的数据集路径,该路径包含了上述划分的train、test、val数据集 (同第1点)
3.如果需要修改模型(如修改Backbone)
关于单GPU和多GPU:ICCV 2023 | LSKNet【保姆级】训练自己的目标检测模型_目标检测iccv-CSDN博客
三、测试模型
以DOTA数据集为例,你可以选择如下三种主要用法:
①离线评估,注意:由于DOTA数据集中的测试集只有images没有annfiles,所以使用--eval map进行离线评估时必须将测试集路径改为val集或者trainval等带有annfiles的。
②生成压缩文件,用于在线提交
DOTA数据集提供在线评估服务器,参考:DOTA
python ./tools/test.py \
configs/lsknet/lsk_s_fpn_1x_dota_le90.py \
work_dirs/runs/LSKNET_s/latest.pth \
--format-only --eval-options submission_dir=work_dirs/Task1_results
注意:会将分割的图片进行标注然后融合
③可视化(但没有评估指标)
python ./tools/test.py \
configs/lsknet/lsk_s_fpn_1x_dota_le90.py \
work_dirs/runs/LSKNET_s/latest.pth \
--show-dir work_dirs/vis