Drop Rain
[MMAction2] 커스텀 데이터셋으로 MMAction2 실행시키기(1) 본문
환경
- window11
- cuda 11.1 (GPU로 돌리는 과정입니다. CPU와 관련된 내용은 적혀있지 않습니다.)
- anaconda
목표
MMAction2의 모델들을 커스텀 데이터셋으로 사용해보자
공식 설치 사이트은 여기있으니 보면서 각자의 상황에 맞게 하면 될 것이다.
0. 가상환경 생성
무난하게 파이썬 버전은 3.8로 설정했다.
나는 보통 가상환경 이름을 지을 때 '날짜 + 내용'으로 짓는다. 이렇게 하면 덜 헷갈린다.
conda create -n 1031mmrotate python=3.8
conda activate 1031mmrotate
1. 파이토치 설치
- 파이토치
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
오류1. 타임아웃 오류
만약 타임아웃 오류가 생긴다면 pip install 뒤에 --timeout <sec>를 붙여주면 된다
pip install ~~~~~~~~~ --timeout 100
2. MM~~ 설치
- 별 다른 오류 없이 설치되었다.
pip install -U openmim
mim install mmengine
mim install mmcv
mim install mmdet
mim install mmpose
3. MMAction2 설치
- MMAction2를 설치하는 방법에는 두 가지가 있다. (a) github 코드를 clone하여 전체 MMAction2를 설치하는 것이고, (b) MMAction2의 API나 모듈을 import하기 위해 파이썬 패키지를 다운받는 것이다.
- 나는 커스텀 데이터셋을 사용해야하기 때문에 전체 코드를 clone하였다.
git clone https://github.com/open-mmlab/mmaction2.git
cd mmaction2
pip install -v -e .
X. Verify the installation
- 필수 단계는 아니다. 단지 설치가 잘 되었는지 확인하는 단계
- 그냥 한번 해봤다.
- Step 1. Download the config and checkpoint files.
- config 파일과 checkpoint 파일을 다운받자
mim download mmaction2 --config tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb --dest .
- Step 2. Verify the inference demo.
- 2가지 옵션이 있는데, (a) 소스코드로, (b) 패키지로 확인하는 것이다. 나는 이전에 이미 전체 코드를 clone했기 때문에 (a)옵션을 사용하였다.
python -u "demo/demo.py" tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb.py tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb_20220906-2692d16c.pth demo/demo.mp4 tools/data/kinetics/label_map_k400.txt
- 아래 명령어 설명
- demo.py를 실행시킬 때, 인자 3개를 넣어서 실행하는 명령어이다
- python -u "demo/demo.py"
- 코드 실행
- tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb.py
- config 파일
- tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb_20220906-2692d16c.pth
- checkpoint 파일
- demo/demo.mp4
- 입력 비디오
- tools/data/kinetics/label_map_k400.txt
- label 데이터
4. 모델 선택
- MMAction2에는 정말 다양한 모델들이 있는데 여기를 통해 살펴볼 수 있다.
- 나는 Skeleton-based Action Recognition 모델이 필요하다. (애초에 그걸 위해 MMAction2를 실행시키는 것.)
- 여러 개의 모델을 전부 해볼 생각이기에 처음 시도할 모델은 가장 최근에 나온 STGCN++ (ArXiv'2022)이다