因为MMRotate dev 1.x 新增了PSC角度编码器以及RTMDet目标检测算法,而之前从官网下载的MMRotate是main分支,没有新增的东西,所以重新搞了一下,以此记录。
环境配置
1.创建虚拟环境
注意:如果之前安装了MMRotate的其他版本,请重新创建一个虚拟环境,如果继续用原来的虚拟环境,在安装mmrotate dev 1.x的时候,会安装其他版本的mmcv和mmdet,导致原来的mmrotate环境不可用。
conda create --name mmrotate_dev1x python=3.8 -y
conda activate mmrotate_dev1x
2.安装pytorch
几个常用的pytorch版本如下:其他版本参考官网
# CUDA 11.3
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
# CUDA 11.1
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
# CUDA 10.1
pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
3.安装mmcv mmdetecion:
pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0rc2"
mim install 'mmdet>=3.0.0rc2'
4.安装mmrotate dev 1.x
git clone https://github.com/open-mmlab/mmrotate.git -b dev-1.x
# "-b dev-1.x" means checkout to the `dev-1.x` branch.
cd mmrotate
pip install -v -e .
# "-v" means verbose, or more output
# "-e" means installing a project in editable mode,
# thus any local modifications made to the code will take effect without reinstallation.
5.验证安装
import mmrotate
print(mmrotate.__version__)
# Example output: 1.x
数据集设置
1.将数据集的标注格式转换成DOTA格式,也可以参考HRSC或者其他格式,这里只做参考:
DOTA数据标签介绍
标注方式:oriented bounding box 定向边界框
x1, y1, x2, y2, x3, y3, x4, y4, category, difficult
x1, y1, x2, y2, x3, y3, x4, y4, category, difficult
...
x1, y1, x2, y2, x3, y3, x4, y4:四边形的四个顶点的坐标 顶点按顺时针顺序排列,第一个起点为左上第一个点
category:实例类别
difficult:表示该实例是否难以检测(1表示困难,0表示不困难)
2. 修改配置文件
- 复制data.py,改名为自己的数据集,修改如下:
- 复制一个dota_rr.py文件,改名为自己的数据集名称,这里我以drone数据集为例:
- 复制一个rotated_rtmdet_...dota.py 改名为....drone.py ,然后更改下面的地方,引用上面的drone_rr.py:
- 复制dota.py ,改名drone.py,修改如下:
- 在__init__.py 加上自己的数据集,和之前定义的数据集名称一致:
训练
python tools/train.py config文件
参考:
《旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA(二)》
《使用mmrotate训练 Dronevehicle 数据集》