지난 포스팅에 이어서 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/split의 img_split.py를 이용하여 1024x1024 영상으로 만들어 줍니다.
configs/_base_/datasets/dotav1.py에 폴더 위치를 trainval/images & annfiles로 설정되어 있기 때문에 ss_train.json 및 ss_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의 결과는 다르지만 대부분의 배들이 잘 인식되는 것을 알 수 있습니다.
감사합니다.
'인공지능' 카테고리의 다른 글
[Kakao map] Javascript API 지도 불러오기 (0) | 2022.12.11 |
---|---|
[mmrotate] 나만의 데이터 셋으로 rotated RetinaNet 학습하기 (2) | 2022.10.14 |
[mmrotate] mmrotate로 rotated RetinaNet 돌려보기 (4) | 2022.10.12 |
[mmrotate] open-mmlab의 mmrotate docker로 실행하기 (0) | 2022.07.26 |
[Dataset] PyTorch의 Dataset 활용하기 (0) | 2022.07.22 |