끊임없이 부단히

[mmrotate] mmrotate로 rotated RetinaNet 학습하기 본문

인공지능

[mmrotate] mmrotate로 rotated RetinaNet 학습하기

허구의 2022. 10. 13. 09:58

지난 포스팅에 이어서 mmrotate를 이용하여 rotated RetinaNet을 학습하려 합니다.

 

마찬가지로 아래의 DOTA 홈페이지에서 학습용 데이터를 다운받아 줍니다.

참고로, 버전 1, 1.5, 2가 있는데 버전 1을 다운받아야 합니다.

(1.5이상을 쓸 경우 'container crane'이 없다는 오류가 납니다)

다운받은 데이터를 각각 data/DOTA/train & val 폴더 내의 images & labelTxt 폴더에 정리해줍니다.

https://captain-whu.github.io/DOTA/dataset.html

 

DOTA

DOTA 2 --> DOTA A Large-Scale Benchmark and Challenges for Object Detection in Aerial Images

captain-whu.github.io

 

다운받은 데이터들을 tools/data/dota/splitimg_split.py를 이용하여 1024x1024 영상으로 만들어 줍니다.

configs/_base_/datasets/dotav1.py에 폴더 위치를 trainval/images & annfiles로 설정되어 있기 때문에 ss_train.jsonss_val.json 대신 ss_trainval.json을 사용합니다.

python tools/data/dota/split/img_split.py --base-json \
  tools/data/dota/split/split_configs/ss_trainval.json

 

또한, ss_trainval.json의 출력 위치와 data_root(configs/_base_/datasets/dotav1.py에서 설정) 위치가 다르기 때문에,

데이터 폴더 이름을 'split_1024_dota1_0'로 수정하였습니다.

 

 

 

 

학습을 위한 데이터 준비가 완료되었다면 이제 아래와 같이 학습을 시켜줍니다.

python tools/train.py \
  configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90.py

위 명령에서 --work_dir ${myWorkDir} 설정으로 checkpoint 저장 위치를 설정할 수 있습니다.

아무 설정을 안해준다면 'work_dirs'라는 폴더가 자동으로 만들어 집니다.

또한, --resume-from--load-from으로 저장된 checkpoint에서 추가 학습이 가능하며, 그 외의 설정들도 tools/train.py에서 확인 가능합니다.

(여기서 resume은 epoch까지 이어서 학습하는 것이며, load는 모델의 가중치만 사용하고 epoch은 0에서 새로 학습을 시작합니다.)

 

 

학습이 완료되면(사실 학습중에도) work_dirs/rotated_retinanet_obb_r50_fpn_1x_dota_le90 폴더에 checkpoint들이 저장됩니다.

제가 학습시킨 checkpoint를 이용하여 이전 포스팅과 같은 방식으로 테스트 해보겠습니다.

python tools/test.py \
  configs/rotated_retinanet/rotated_retinanet_obb_r50_fpn_1x_dota_le90.py \
  work_dirs/rotated_retinanet_obb_r50_fpn_1x_dota_le90/latest.pth \
  --show-dir myDir/vis

 

출력:

 

이전 포스팅 결과와 비교해서 harbor의 결과는 다르지만 대부분의 배들이 잘 인식되는 것을 알 수 있습니다.

 

 

 

감사합니다.

Comments