复现Oriented RCNN在HRSC2016数据集L3任务
源码下载
Oriented RCNN 论文地址
Oriented RCNN 源码下载
环境配置
1.创建conda虚拟环境
我比较习惯于复现一个模型就创建一个新的虚拟环境,并用模型名来命名虚拟环境名,不容易混乱。
conda create -n OBBDetection python==3.8
conda activate OBBDetection
2.安装pytorch
我比较习惯安装v1.7.1版本的pytorch,如果要安装其他版本的可以在pytorch官网找相应的安装命令。
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
3.下载OBBDetection和BboxToolKit源码
我比较习惯于直接在github上下载,再传输到服务器上。下载OBBDetection后BboxToolKit文件夹为空,需要下载BboxToolKit源码放到BboxToolKit空文件夹下。OBBDetection下载链接和BboxToolKit下载链接
4.安装BboxToolkit
一定要进入setup.py所在的BboxToolkit目录里,不然会报错:找不到setup.py文件
cd BboxToolkit # 进入BboxToolkit目录
pip install -v -e . # 安装BboxToolkit
cd .. # 退回OBBDetection目录
5.安装mmcv
mmcv的版本一定要和pytorch对应,不然会很麻烦。
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7/index.html
6.安装OBBDetection
时间较久,耐心等待!
pip install -r requirements/build.txt
pip install -v -e .
7.安装pycocotools
conda install -c conda-forge pycocotools
测试模型
在OBBDetection目录下创建一个子目录checkpoints,用来放置权重文件。
到model zoo里面下载训练好的权重:faster_rcnn_orpn_r101_fpn_1x_mssplit_rr_dota10_epoch12.pth
这里放置的是Google Drive链接,也可以用百度网盘下(慢)
linux没有图形界面,plot画不出图,所以需要在mmdet/apis/inference.py中
import cv2 # 第一行加入
cv2.imwrite("xxxx320.jpg", img) # 最后一行加入
保存文件,运行测试命令。
# 测试命令
python demo/huge_image_demo.py demo/dota_demo.jpg \
configs/obb/oriented_rcnn/faster_rcnn_orpn_r101_fpn_1x_ms_rr_dota10.py \
checkpoints/faster_rcnn_orpn_r101_fpn_1x_mssplit_rr_dota10_epoch12.pth \
BboxToolkit/tools/split_configs/dota1_0/ss_test.json
刷新OBBDetection,其中会出一张“xxxx320.jpg”图片,这就是我们的测试效果图。
放入HRSC2016数据集
现在OBBDetection中创建data子目录,在data目录中创建hrsc子目录,在hrsc目录中创建FullDataSet和ImageSets两个子目录,在FullDataSet目录中创建AllImages、Annotations、LandMask、Segmentations子目录,把数据传入对应的目录即可。目录结构如图:
L3任务
修改config文件
1.修改configs/obb/base/datasets/hrsc.py
# 修改一行代码
# 我比较习惯用绝对路径,也可以用相对路径
data_root = '/home/ly/OBBDetection-master/data/hrsc/'
# 可用ctrl+f查找关键字“classwise”
# 修改两行代码
classwise = True
imgset、ann_file、img_prefix路径按需更改
2.修改configs/obb/oriented_rcnn/faster_rcnn_orpn_r50_fpn_3x_hrsc.py
# 修改一行代码
num_classes=33,
训练模型
在OBBDetection下创建work_dirs子目录,用来存储.pth文件
python tools/train.py \
configs/obb/oriented_rcnn/faster_rcnn_orpn_r101_fpn_3x_hrsc.py --work-dir work_dirs/33cls
测试模型
python tools/test.py \
/home/ly/OBBDetection-master/configs/obb/oriented_rcnn/faster_rcnn_orpn_r101_fpn_3x_hrsc.py \
/home/ly/OBBDetection-master/work_dirs/33cls/epoch_36.pth --eval mAP
可视化结果