Awesome
AProNet: Detecting Objects with Precise Orientation from Aerial Images
This is the repository of paper "AProNet: Detecting Objects with Precise Orientation from Aerial Images"
Installation
Requirements
Python: 3.6
PyTorch: 1.2.0
CUDA: 9.2
CUDNN: 7.6.2
Installation
a. Create a conda virtual environment and activate it.
conda create --name AProNet python=3.6 -y
conda activate AProNet
b. Install PyTorch.
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=9.2 -c pytorch
c. Clone the geovision-AProNet repository
git clone https://github.com/ZhWL123456/geovision-AProNet.git
workdir=./geovision-AProNet
d. Compile the poly_nms
:
cd ${workdir}/maskrcnn_benchmark/utils/poly_nms
python setup.py build_ext --inplace
d. Compile the DOTA-devikit
dependency:
sudo apt-get install swig
cd ${workdir}/maskrcnn_benchmark/DOTA_devkit/polyiou
swig -c++ -python csrc/polyiou.i
python setup.py build_ext --inplace
Setting the datasets
a. Prepare your dataset as the status format.
This project use the json annotation file with COCO format.
Make your directory layout like this:
${data-dir}
└── trainset
├── images
│ ├── 1.png
│ └── 2.png
└── labelTxt
├── 1.txt
└── 2.txt
A example of the *.txt files ('1' means the object is difficult):
x1 y1 x2 y2 x3 y3 x4 y4 plane 0
x1 y1 x2 y2 x3 y3 x4 y4 harbor 1
Run the following Python snippet, and it will generate the json annotation file:
from txt2json import collect_unaug_dataset, convert
img_dic = collect_unaug_dataset( os.path.join( "trainset", "labelTxt" ) )
convert( img_dic, "trainset", os.path.join( "trainset", "train.json" ) )
b. Edit the file maskrcnn_benchmark/config/paths_catalog.py
(from line7 to 17) to set the dir of datasets.
DATA_DIR = "datasets" #need to change
DATASETS = {
"dota_trainval_cut": {
"img_dir": "${dataset}/trainval_cut/images", #need to change
"ann_file": "${dataset}/trainval_cut/trainval_cut.json" #need to change
},
"dota_test_cut": {
"img_dir": "${dataset}/test_cut/images", #need to change
"ann_file": "${dataset}/test_cut/test_cut.json" #need to change
},
}
c. If your dataset is DOTA(options):
For DOTA, you need to run the scripts XX
to split the original images into chip images (e.g., 1024*1024), and convert annotations to mmdet's format.