CenterNet 코드 실행 할때 생겼던 에러 모음집

Kevin Lee·2020년 7월 16일
2

스트라드비젼 인턴

목록 보기
10/12

우선 Centernet 깃헙 주소

첫번째 에러

anaconda로 가상 환경을 사용하는데 condapackagelist.txt 를 살펴보면 CUDA version이 8.0으로 되어있으니 꼭 서버의 CUDA version을 확인하자.

난 nvidia-docker를 사용해서 cuda8.0-devel을 사용했다.

이걸로 이틀 삽질.

두번째 에러

annotation을 Centernet/data/coco/ 에 저장하라고 하는데, 막상 train을 시키면 얘가 annotation의 위치를 못찾는다;;
이건 Centernet/config 안에 있는 Centernet-104.json 또는 Centernet-52.json file에 들어가서 경로를 절대 경로로 바꿔줘야한다.
아마 data-dir: '../data' 라고 되있는 경로를 절대경로로 바꾸면 된다.

세번째 에러

_cpool 컴파일 할때 gcc 4.9 버젼으로 컴파일해야지 온갖 warning이나 error가 안뜬다.

apt-get install gcc-4.9 g++-4.9 cpp-4.9

gcc symbolic link 바꾸는 방법

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 --slave /usr/bin/cpp cpp-bin /usr/bin/cpp-4.9

네번째 에러

train을 돌릴때

Traceback (most recent call last): File "train.py", line 43, in prefetch_data data, ind = sample_data(db, ind, data_aug=data_aug) File "/media/disk/wudi/CenterNet/sample/coco.py", line 200, in sample_data return globals()[system_configs.sampling_function](db, k_ind, data_aug, debug) File "/media/disk/wudi/CenterNet/sample/coco.py", line 100, in kp_detection image, detections = random_crop(image, detections, rand_scales, input_size, border=border) File "/media/disk/wudi/CenterNet/sample/utils.py", line 57, in random_crop image_height, image_width = image.shape[0:2] AttributeError: 'NoneType' object has no attribute 'shape'

이런 에러 메시가 나올 수 있다. 알고 보니, 이미지가 들어 있는 trainval2014 디렉토리에, train2014.zip과 val2014.zip 이미지가 다 들어 있어야 했던것.... annotation에 있는 이미지를 못 찾을때 뜨는 에러

다섯번째 에러

train을 돌릴때
RuntimeError:unable to write to file </torch>.....
이런 에러가 나오는 경우는 docker를 쓸때 나올 수 있는데 파이토치가 쓴는 default shared memory size가 작아서 나오는 경우라고 한다. docker를 run 할때 --ipc=host--shm-size 커맨드를 줘서 메모리 사이즈를 늘려주자.

여섯번째 에러

RuntimeError: CUDA error (10): invalid device ordinal (check_status at /pytorch/aten/src/ATen/cuda/detail/CUDAHooks.cpp:36)

이 에러랑 CUDA 메모리가 부족하다는 에러는 다 batch size랑 chunk size를 조절해야되는 부분이다. 이것 역시 config 디렉토리안에 104나 52 json 파일을 수정 해주면되는데, chunksize의 갯수는 gpu갯수 만큼 하면된다.

참고로 논문 저자는 nvidia Tesla 100 (32GB) 8개를 달아서 학습을 했다고 한다 ㄷㄷㄷㄷ.

이 6개의 에러 관문을 통과해서 드디어 깃헙에 있는 코드 트레이닝을 시작했다.

회사 데이터로 트레이닝은 과연 어떨지.. 어떤 삽질이 기다리고 있을지 기대된다.

profile
🧠🦾❤ https://github.com/to2915ny

1개의 댓글

comment-user-thumbnail
2022년 4월 28일

안녕하세요 ~ 스트라드비전에 관심 있는데 혹시 g메일 드려도 될까요?

답글 달기