CUDA 버전은 설치할 라이브러리의 호환성에 맞추어 잘 선택.(pytorch prebuild 버전이 홈페이지 올라와있는 11.1로 설치했다면 더 간편했을 것. 이 게시글에서는 11.0로 설치했음.)
그래픽 드라이버 체크 해제 설치
$ sudo sh cuda_11.0.2_450.51.05_linux.run
CUDA 환경변수 설정
$ sudo gedit ~/.bashrc
export PATH=/usr/local/cuda-11.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-11.0
export FORCE_CUDA="1"
$ source ~/.bashrc
$ sudo reboot
cudnn 설치 후
$ tar xvf cudnn-11.2-linux-x64-v8.1.1.33.tgz
$ cd cuda
$ sudo cp include/cudnn* /usr/local/cuda-11.0/include
$ sudo cp lib64/libcudnn* /usr/local/cuda-11.0/lib64/
$ sudo chmod a+r /usr/local/cuda-11.0/lib64/libcudnn*
$ cat /usr/local/cuda-11.0/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
cudnn8 버전에서는 cudnn_version.h 로 확인!
설치한 cudnn 버전이 출력되면 정상적으로 설정된 것이고, 아무런 메시지가 출력되지 않으면 환경변수/경로 등을 확인해야함.
Swin-Object Detection 코드 내려받기
$ git colon https://github.com/SwinTransformer/Swin-Transformer-Object-Detection.git
mmdet 종속성 설치
$ pip install mmdet
cuda 버전에 맞는 의존성 패키지 설치
$ pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 -f https://download.pytorch.org/whl/cu110/torch_stable.html
mmcv-full 설치 (반드시 수동설치 해야함)
$ pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
mmdet(swin-custom) / mmcv-custom 덮어쓰기
1번 방법) install로 mmdet swin버전 덮어쓰기
이렇게 하면 swin 디렉토리 하위의 mmdet/mmcv_custom 등이 site-packages에 연결되서
코드 수정사항이 mmdet 패키지에 반영된다.
#swin clone 디렉토리안에서
pip install -v -e .
2번 방법) 폐기
#conda env의 site-packages 경로 확인!
$ cd ~/workspace/Swin-Transformer-Object-Detection/mmdet
$ sudo cp -R core/ ~/anaconda3/envs/swin/lib/python3.7/site-packages/mmdet/
$ sudo cp -R datasets/ ~/anaconda3/envs/swin/lib/python3.7/site-packages/mmdet/
$ sudo cp -R models/ ~/anaconda3/envs/swin/lib/python3.7/site-packages/mmdet/
$ sudo cp -R utils/ ~/anaconda3/envs/swin/lib/python3.7/site-packages/mmdet/
$ cd ..
$ sudo cp -R mmcv_custom/ ~/anaconda3/envs/swin/lib/python3.7/site-packages/
$ python demo/image_demo2.py demo/demo.jpg configs/swin/cascade_mask_rcnn_swin_base_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.py checkpoint/cascade_mask_rcnn_swin_base_patch4_window7.pth
데모 실행 시 mmcv maximum version(1.4.0)을 초과했다는 에러발생 시, "Swin root/mmdet/init.py" 파일의 20 line mmcv_maximum_version 을 1.5.0으로 변경해 준다.
(site-packages의 mmdet버전과, swin 로컬 mmdet 버전 차이로 인해 발생하는 에러)
Apex 미설치 시 데모 및 트레이닝 중 Apex is not installed 라고 계속 출력된다
$ cd ~/workspace/
$ git clone https://github.com/NVIDIA/apex
$ cd apex
$ sudo apt-get install build-essential
$ pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
$ cd ~/workspace/Swin-Transformer-Object-Detection/
$ python
$ >>> import apex
$ >>> quit()
apex 동작 확인(경고 문구가 안나오면 apex 설치된 것)
$ python demo/image_demo2.py demo/demo.jpg configs/swin/cascade_mask_rcnn_swin_base_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.py checkpoint/cascade_mask_rcnn_swin_base_patch4_window7.pth