일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- dataset
- gstreamer
- schur complement
- OpenMMlab
- binomial distribution
- bernoulli distribution
- vision
- entropy
- rotated RetinaNet
- CoCo
- DataLorder
- measure
- matlab
- kakao map
- pytorch
- AERIAL IMAGE
- Map
- MMrotate
- RANSAC
- Poisson Distribution
- detection
- MSAC
- LDU decomposition
- 영상처리
- probability
- woodbury matrix identity
- similarity
- Today
- Total
끊임없이 부단히
[mmrotate] mmrotate로 rotated RetinaNet 학습하기 본문
지난 포스팅에 이어서 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
다운받은 데이터들을 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 |