安装
整体步骤从参考官方github:https://github.com/yijingru/BBAVectors-Oriented-Object-Detection
step1
配置好相关环境,比如pytorch等,下载BBA代码到本地:
git clone https://github.com/yijingru/BBAVectors-Oriented-Object-Detection
step2
安装DOTA_devkit到datasets文件夹中:
cd datasets
git clone https://github.com/CAPTAIN-WHU/DOTA_devkit
安装swig
sudo apt-get install swig
编译安装
cd DOTA_devkit
swig -c++ -python polyiou.i
python setup.py build_ext --inplace
数据集准备
大致可以参考:DOTA数据集分割
但是需要删除txt前两行的尺度信息等。
准备数据集,包括以下四个部分:
data_dir/
images/*.png
labelTxt/*.txt
trainval.txt
test.txt
images里面是裁剪后的图片,默认是png格式,若是其他格式可以根据报错在代码中修改。
lableTxt文件夹里是对应的txt标注文件,与images中的图片对应,名称要相同。
其中的txt的格式为:Format: x1, y1, x2, y2, x3, y3, x4, y4, category, difficulty
例如:
275.0 463.0 411.0 587.0 312.0 600.0 222.0 532.0 tennis-court 0
341.0 376.0 487.0 487.0 434.0 556.0 287.0 444.0 tennis-court 0
428.0 6.0 519.0 66.0 492.0 108.0 405.0 50.0 bridge 0
test.txt与trainval.txt为测试集和训练集图片名称。
例如:
P0082_1600_4000
P0871_1600_0
P0044_0_0
P0020_3200_1600
P0786_911_800
P0000_2400_800
P0167_1600_800
P0769_0_72
P0008_235_143
P0235_0_800
P0436_0_0
P0731_364_0
训练
要选择合适的batch_size,模型较大,batch_size 可能比较小。
python main.py --data_dir dota_bbav --num_epoch 20 --batch_size 8 --dataset dota --phase train
DOTA_devkit中的一些py文件可能会报错找不到一些库,需要手动加入这些库的位置:
import sys
sys.path.app("")
测试
可以修改test文件,让其保存结果文件,默认是cv2.imshow。
python main.py --data_dir dota_bbav --batch_size 16 --dataset dota --phase test --resume model_last.pth
结果示例
验证
python main.py --data_dir dota_bbav --batch_size 16 --dataset dota --phase eval --resume model_last.pth --conf_thresh 0.1
由于我的数据集没有包含所有种类,在eval模式下有报错,还在修改中。。。
测试AP
修改这三个路径:
detpath = r'result_dota/Task1_{:s}.txt'
annopath = r'dota_bbav/labelTxt/{:s}.txt' # change the directory to the path of val/labelTxt, if you want to do evaluation on the valset
imagesetfile = r'dota_bbav/test.txt'
测试:
python datasets/DOTA_devkit/dota_evaluation_task1.py
输出示例:
map: 0.39124759221863975
['plane', 'baseball-diamond', 'bridge', 'ground-track-field', 'small-vehicle', 'large-vehicle', 'ship', 'tennis-court', 'basketball-court', 'storage-tank', 'soccer-ball-field', 'roundabout', 'harbor', 'swimming-pool', 'helicopter']
classaps: [86.27988669 53.03597718 0. 23.63636364 61.66793176 56.25448969
59.26257986 79.39210867 11.59874608 59.85661641 0.82644628 21.61678133
19.63037923 53.81308149 0. ]
number: [3590, 201, 0, 45, 22352, 12487, 17890, 1504, 494, 4729, 83, 1060, 2414, 2791, 0]