复现 gliding-vertex

在RTX3080ti主机上使用mmrotate复现gliding-vertex


前言

论文:https://arxiv.org/abs/1911.09358

论文源代码:GitHub - MingtaoFu/gliding_vertex: The implementation of paper "Gliding vertex on the horizontal bounding box for multi-oriented object detection".

mmrotate:https://github.com/open-mmlab/mmrotate

一、创建环境

conda create -n mmrotate python=3.7 -y
conda activate mmrotate
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch

官方要求大于1.6,但torch版本太高也会出问题,所以选择支持cuda11的1.7.1版本。

二、配置mmrotate

下载代码文件:

git clone https://github.com/open-mmlab/mmrotate.git
cd mmrotate/

下载依赖:

pip install mmcv-full==1.5.3 -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html --no-cache-dir
pip install mmdet

这里我一开始尝试用1.4.0版本的mmcv,但是会报错,重装1.5.0以后还是会报错,换成1.5.3以后就没问题了,建议还是不要直接“pip install mmcv-full”因为现在最新的版本已经超过1.6.0了,用最新的版本可能导致mmrotate中某些函数不兼容,但版本太低又会出现某些函数或module没有的情况,发现1.5.3刚刚好。

安装MMRotate:

pip install -r requirements.txt
pip install mmpycocotools
pip install -v -e .  

等它显示安装成功,剩下的就缺什么装什么了 

预处理数据集:

如果使用的是DOTA这种大图像数据集,需要提前进行split操作,详情可以查看官方指导

找到tools/data/dota/split文件夹,再进入split_configs,里面有进行数据集分割的配置文件,ms代表多尺度,ss代表单尺度,更改json文件中的本地数据路径已经分割后的保存路径。这里以单尺度为例:

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

三、运行代码

验证:

pip install -U openmim
mim download mmrotate --config oriented_rcnn_r50_fpn_1x_dota_le90 --dest .
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

这里会下载一个权重文件到当前文件夹下,然后运行demo程序,如果运行成功会在当前文件夹下生成图片:result.jpg,如下:

说明可以正常运行了,接下来进行训练:

先到configs/ _base_/datasets/文件夹下找到dotav1.py文件,修改里面的data路径和train、val、test路径,如果有兴趣可以更改gliding-vertex的配置文件。接下来开始训练:

python tools/train.py configs/gliding_vertex/gliding_vertex_r50_fpn_1x_dota_le90.py

 最后的结果如下所示:

+--------------------+-------+--------+--------+-------+
| class              | gts   | dets   | recall | ap    |
+--------------------+-------+--------+--------+-------+
| plane              | 18788 | 21513  | 0.955  | 0.906 |
| baseball-diamond   | 1087  | 1943   | 0.918  | 0.878 |
| bridge             | 4181  | 10414  | 0.806  | 0.683 |
| ground-track-field | 733   | 1845   | 0.924  | 0.868 |
| small-vehicle      | 58868 | 104643 | 0.883  | 0.778 |
| large-vehicle      | 43075 | 69705  | 0.929  | 0.870 |
| ship               | 76153 | 89430  | 0.904  | 0.882 |
| tennis-court       | 5923  | 6942   | 0.985  | 0.908 |
| basketball-court   | 1180  | 1972   | 0.982  | 0.903 |
| storage-tank       | 13670 | 16468  | 0.793  | 0.721 |
| soccer-ball-field  | 827   | 2316   | 0.907  | 0.827 |
| roundabout         | 973   | 2228   | 0.903  | 0.839 |
| harbor             | 15468 | 24403  | 0.848  | 0.773 |
| swimming-pool      | 3836  | 6233   | 0.919  | 0.841 |
| helicopter         | 1189  | 1656   | 0.924  | 0.881 |
+--------------------+-------+--------+--------+-------+
| mAP                |       |        |        | 0.837 |
+--------------------+-------+--------+--------+-------+

 这里我使用trainval训练再用trainval测试


总结

熟悉使用mmcv系列以后一定会觉得mmrotate上手很容易,再加上gliding-vertex的源码复现太麻烦了(源码torch版本太低,但为了cuda11最低也只能支持1.7,而且源码还要装一堆其他依赖,这些依赖里也有可能跟torch或Python版本不兼容,反正各种报错),openmmlab yyds!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值