mmdet train

Published onesixx on

cocoset으로 변환

~/my/git/mmrotate/data/kitti_tiny$

ln -s ~/my/git/mmdetection/data/kitti_tiny/ kitti_tiny

config 파일 copy해서 준비

pretrained 에 활용할 모델의 config 를

work_dirs밑에 만들어질 폴더명으로 복사.

Shell

checkpoints 파일 준비

Model Zoo에서 pretrained Model의 네트웍을 받아옴.

Shell

무작정 tools/train.py

work_dirs에 작업할 폴더를 만들기 위해 일단 돌림.

Shell

config 수정

work_dirs/sixx_faster_rcnn_r50_fpn_1x_coco/sixx_faster_rcnn_r50_fpn_1x_coco.py

고칠 cfg 복사해서 만들기

Shell

그리고, 수정

Python
Python

다시 Training work_dirs

Shell

수정된 cfg 확인

여러 GPU사용

CUDA_VISIBLE_DEVICES로 사용할 GPU를 한정해주고,

Port를 분리한 후,

실행

CUDA_VISIBLE_DEVICES=2,3 python train.py

CUDA_VISIBLE_DEVICES=2,3 python train.py

CUDA_VISIBLE_DEVICES=2,3 python train.py
Shell

참고

Shell
sixx/dist_train.sh
Python
Shell

sixx/dist_train.sh: line 2: $’\r’: command not found

이런 에러가 날 경우, 전체 줄바꿈(Carriage return과 New Line \r\n)을 newline(\n)으로 바꿔준다.

sed -i -e ‘s/\r$//’ ./sixx/dist_train.sh

https://github.com/open-mmlab/mmdetection/issues/334

Shell

https://github.com/facebookresearch/maskrcnn-benchmark

Shell

https://artiiicy.tistory.com/61

 “CUDA_VISIBLE_DEVICES”를 통해 cuda가 볼 수 있는 GPU 제한하기

항상 cuda는 GPU 0번(torch.cuda.current_device())부터 사용을 하게 되고, CUDA_VISBLE_DEVICES= 2,3 이라면, cuda는 2,3번째만 볼수 있기때문에 GPU 0을 할당하는다는 것이 2를 사용하는것과 같다.

단, multi인 경우, nn.DataParallel()을 작성해주어야 한다.

1-2) Jupyter notebook 등의 python script “~.ipynb” file 내에서 돌리는 경우

“~.ipynb” 와 같이 python script 내에서 돌리는 경우에는 다음과 같이 os.environ[ ] code를 활용하여 environment를 설정하여 실행할 수 있다.

os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"  # Arrange GPU devices starting from 0
os.environ["CUDA_VISIBLE_DEVICES"]= "2,3"     # Set the GPUs 2 and 3 to use
Categories: vision

onesixx

Blog Owner

guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x