复现 Oriented R-CNN for Object Detection

一、一些链接

论文:2108.05699v1.pdf (arxiv.org)

github代码地址:https://github.com/jbwang1997/OBBDetection.git

或者使用:https://github.com/open-mmlab/mmrotate.git 

我使用的是原作者的代码进行的复现(即上方第二个链接),目前 OrientedRCNN已经添加到mmrotate中了,所以也可以使用mmrotate中的模型进行复现(即上方第三个链接)。

二、新建环境 

首先一定是linux,windows嘛,自己体会。

我是在恒源云平台上租用的gpu,恒源云平台上的镜像比较丰富并且价格实惠,对学生党很友好,这里贴一个恒源云平台的链接:

恒源云_GPUSHARE-恒源智享云https://gpushare.com/center/console选择镜像:python3.8+pytorch1.7.0+cu110

这里镜像的选择需要尤为注意,因为后面需要安装作者写的两个包(一个是BboxToolkit,一个是作者修改过的mmdet),这两个包对python和pytorch的版本都有些要求。

建议python版本>=3.8,原因如下:

这是我在安装BboxToolkit时报的错,当时选用的python版本为3.6

以及建议pytorch版本不要太高,原因如下:

这是我在安装mmdet时报的错,当时选用的pytorch版本为1.11,安装时运行到这一步会卡住,后面会报错。

三、安装包

首先从github上clone下来作者的代码:

git clone https://github.com/jbwang1997/OBBDetection.git --recursive

该项目中文件数量很多,所以需要耐心等待一段时间

有一定的几率BboxToolkit文件夹下的内容是clone不下来的,这时可以cd到OBBDetection/BboxToolkit文件夹下继续clone:

git clone https://github.com/jbwang1997/BboxToolkit.git --recursive

下面开始正式安装包

1. 安装BboxToolkit

cd BboxToolkit
pip install -v -e .  # or "python setup.py develop"
cd ..

安装成功的话使用pip list查看,里面会有bboxtoolkit这一项

2. 安装mmcv

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

我安装的是1.7.0版本的,后面cuda和torch的版本注意根据自己的实际情况修改

另外,这一步需要注意的一点是只安装mmcv-full就行,不要安装mmdet,因为作者使用的mmdet是经过他添加修改后的mmdet,而不是官方的mmdet模块,如果这里同时执行了命令pip install mmdet,那么后面会出现重名问题。

同样,是否安装成功请使用pip list查看。

3. 安装mmdet

pip install -r requirements/build.txt
pip install mmpycocotools
pip install -v -e .  # or "python setup.py develop"

最后一步耗时比较长,中途如果卡住不走要耐心等待一段时间,不要急着ctrl+z。

四、解决ModuleNotFound问题

 一般而言,出现ModuleNotFound问题有如下几点原因:

  1. 没有安装module包:建议使用pip list核对
  2. 没有import
  3. __init.py__文件中没有写
  4. 安装的module包版本不匹配
  5. 没有设置pythonpath环境变量:这一点非常关键,建议在出现了import报错时先运行命令
    python3 -c 'import sys;print(sys.path)'

    查看import指令真实的搜索路径,如果没有你想查找的路径,可以通过如下语句添加:

    export PYTHONPATH=path:$PYTHONPATH

五、运行demo

首先去github下载作者训练好的.pth文件

在这个目录里面找:OBBDetection/configs/obb/oriented_rcnn/README.md

下图中表格最后一栏的model里面放的就是.pth文件的下载链接。

下载完成后上传代码文件里面去。

然后在OBBDetection/mmdet/apis/inference.py文件的最后一行加入一段代码:

 cv2.imwrite("demo.jpg", img)

最后运行命令:

python demo/huge_image_demo.py demo/dota_demo.jpg configs/obb/oriented_rcnn/<选一个想跑的网络>	 <.pth文件的路径>

得到结果。

六、训练模型

1. HRSC2016

首先上传数据集,然后在OBBDetection/configs/obb/base/datasets/hrsc.py里面修改数据集的路径,然后运行一下代码:

python tools/train.py configs/obb/oriented_rcnn/faster_rcnn_orpn_r101_fpn_3x_hrsc.py --work-dir work_dirs 

2. DOTA

和上方一样,先上传数据集,然后在OBBDetection/configs/obb/base/datasets/dota.py里面修改数据集的路径。

但是DOTA数据集不太一样的地方在于由于它是一个大型的遥感影像数据集,所以在训练前需要先执行一遍split操作,具体操作方式在作者的github中有说明,请查看OBBDetection/BboxToolkit/USAGE.md文件

进行完split操作之后,修改路径名称,执行指令:

python tools/train.py configs/obb/oriented_rcnn/faster_rcnn_orpn_r50_fpn_1x_dota10.py  --work-dir work_dirs 

 一切正常的话会开始训练。

八、测试

输入指令:

python tools/test.py configs/obb/oriented_rcnn/faster_rcnn_orpn_r50_fpn_3x_hrsc.py /root/OBBDetection/work_dirs/epoch_36.pth --eval mAP

可以得到mAP以及recall等参数。

另外可以参考知乎这一篇mmdetection入门文档中分析日志部分的内容绘制loss曲线以及输出训练时间。

MMDetection中文文档—2.入门 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/101212969

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值