"풍미박산 기절초풍 설치과정" 시리즈는 말투가 다소 경박할 수 있다는 점 유의 바랍니다.
서론
글 쓰는 시점, 그러니까 내가 QTNet을 클론해서 사용해보려하는 시점은 2024년 8월 중순이다.
그리고 QTNet의 전신은 TransFusion으로 마지막 커밋이 2022년 8월이므로 2년 차이가 난다.
이걸 왜 언급하냐면, 2년의 차이가 내 7일을 박살내버렸기 때문이다.
결국 내가 살아남았다.
개발환경 맞추기
내가 가진 환경은 다음과 같았다.
OS | GPU | Python |
Linux Ubuntu 22.04 | RTX 3090 | 3.8.10 |
참고로 python은 꼭 3.8.x로 맞추자 이후 과정에 영향을 준다.
Pytorch 설치
pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 -f https://download.pytorch.org/whl/torch_stable.html
결론으로 실행해야할 커멘드는 위와 같다.
TransFusion의 줄기가 되는 라이브러리는 다음과 같다.
1. MMDetection3D
2. MMDetection
3. MMCV
이 중 MMDetection3D는 직접 빌드할 예정이므로 제외한다.
MMCV는 1.2.4, MMDetection은 2.10.0 을 다운받아야한다.
이때 위에서 참고라고 링크한 블로그에 의하면 mmcv 1.2.4를 받기 위해서는 pytorch 1.7.0를 설치해야한다.
그리고 pytorch 1.7.0은 cuda 11.0을 사용하며, 내가 사용하는 GPU(RTX 3090)가 지원하는 가장 낮은 버전과 일치한다.
torchvision의 버전이 0.8.0이면 안된다.
무조건 0.8.1 이어야한다.
이 또한 위 블로그 글에 적혀있다.
더불어 python 버전이 3.8.x 여야한다는 것도 블로그에서 말한 중국 사이트를 보면 알 수 있다.(cp38 뭐시기라고 돼있다.)
이번달 유익한 포스팅상을 드려야할 정도로 미친 포스팅이었다.
MMCV + MMDetection
pip install mmcv-full==1.2.4 -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
이거 하고 MMDetection 2.10.0 설치할라고 보면 이 에러가 발생한다.
pip install cython==0.29.33
pip install mmdet==2.10.0
따라서 이렇게 해야한다.
requirements/runtime.txt
위 과정까지 따라왔으면, requirements/readthedocs.txt 를 깨버린거다.
다음은 requirements/runtime.txt를 깨야한다.
그냥 pip install 했으면, 당연히 잘 안됐겠죠?
lyft_dataset_sdk==0.0.3
networkx>=2.2,<2.3
# we may unlock the verion of numba in the future
numba==0.48.0
numpy<1.20.0
nuscenes-devkit==1.1.2
plyfile==0.7.2
scikit-image==0.18.1
# by default we also use tensorboard to log results
tensorboard
trimesh>=2.35.39,<2.35.40
위처럼 바꿔주자.
pip install -r requirements/runtime.txt
이제 위 커멘드를 돌리자.
MMDetection3D
python setup.py develop
클론받은 그 폴더에서 위 커멘드를 돌리자.
여기서 문제가 발생할수도 있는데, nvcc 관련 문제일 수 있다.
나같은 경우에는 nvcc 버전이랑 nvidia-smi 버전이 다른것때문에 setup.py돌릴때 뭔 문제가 났었다.
이 블로그를 참고해서 혹시나맞춰보자.
위 블로그처럼 cuda 11.3에 맞췄는데, 빌드에서 문제없었다.
Data Preparation
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
여기 나온것처럼 똑같이 하면 된다.
근데 tools 모듈이 없다는 오류가 났다.
import argparse
from os import path as osp
import sys
sys.path.append(osp.dirname(osp.abspath(osp.dirname(__file__))))
...
그래서 시작 부분에 루트 디렉토리의 path를 넣어줬다.
Training
[오류] FormatCode관련 TypeError
pip install yapf==0.40.1
https://github.com/open-mmlab/mmdetection/issues/10962
[경고] "import DCN failed"
여기서 나오는 에러다.
이 레포를 루트 디렉토리에 클론받고, 브렌치를 pytorch_1.7로 바꾸자.
git checkout -t origin/pytorch_1.7
python setup.py build develop
이후 빌드해주면 DCN관련 경고는 사라진다.
Evaluation
tools/dist_test.sh configs/qtnet.py work_dirs/qtnet_4frames/latest.pth 8 --eval mAP
README에 위 처럼 되어있는데, 돌리다보면 motmetrics가 없다고 오류가 난다.
pip install motmetrics==1.2.0
위처럼 설치한 뒤에 실행해보자.