설치환경
- OS: Ubuntu-22.04 LTS
- CPU: Intel(R) Core(TM) i7-1355U
- RAM: 16G
- 날짜: 2024.05.07.
CVAT 설치 및 실행
docker 및 docker compose 를 사전 설치 후 진행
git에서 CVAT 내려받기
git clone https://github.com/cvat-ai/cvat
cd cvat
기본 server 버전 실행
# 서버 실행
docker compose up -d
# 서버 다운
docker compose down
>> 서버 실행 후 localhost:8080 으로 접속
SAM 모델 탑재
설치된 CVAT에 serverless 기반의 deep-learning based model 을 추가하여 자동 어노테이션 기능을 사용할 수 있음
SAM(Segment Anything Model)은 Meta에서 개발한 semantic segmentation 사전 학습 모델
추가 모델은 nuclio 기능을 통해 제공됨
nuclio 다운로드
CVAT가 설치된 디렉토리의 components/serverless/docker-compose.serverless.yml
파일에 작성된 버전과 동일한 버전으로 다운로드
https://github.com/nuclio/nuclio/releases 에서 알맞은 버전을 찾아 다운로드
다운로드 경로에서 아래 명령어를 실행하여 nuctl을 사용가능하게함
sudo chmod +x nuctl-<version>-linux-amd64
sudo ln -sf $(pwd)/nuctl-<version>-linux-amd64 /usr/local/bin/nuctl
SAM 빌드 및 탑재
-
CPU 버전과 GPU 버전을 제공함. CVAT가 설치된 디렉토리에서 아래 명령어를 실행하여 빌드
-
GPU 버전의 경우 Nvidia Container Toolkit 설치 필요
-
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.15.0 documentation
-
CPU:
./serverless/deploy_cpu.sh serverless/pytorch/facebookresearch/sam/nuclio/
-
GPU:
./serverless/deploy_gpu.sh serverless/pytorch/facebookresearch/sam/nuclio/
(Optional) Nvidia Container Toolkit 설치
- nvidia-driver가 사전에 설치되어 있어야함
- (Ubuntu) Nvidia 그래픽 드라이버 설치 참고
apt repository에서 설치
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
컨테이너 설정 및 도커 재시작
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
설치확인
docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
- Nvidia Container Tookit 설치 상세 링크
- Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.15.0 documentation
Nuclio 상태 확인
SAM 모델이 정상 준비 되었는지 확인함
nuctl get functions
# 아래와 같이 ready 상태가 되어 있어야함
>>
NAMESPACE | NAME | PROJECT | STATE | REPLICAS | NODE PORT
nuclio | pth-facebookresearch-sam-vit-h | cvat | ready | 1/1 | 32769
+ (Optional) 추가로 사용할 수 있는 모델은 serverless
폴더에서 확인할 수 있음
# ex)
./serverless/deploy_cpu.sh serverless/openvino/dextr
./serverless/deploy_cpu.sh serverless/openvino/omz/public/yolo-v3-tf
모델이 탑재된 CVAT 실행
메인 CVAT와 nuclio로 연동된 모델을 실행
CVAT가 설치된 디렉토리에서 아래 명령어를 통해 실행
# 서버 실행
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d
# 서버 다운
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml down
모델 동작 확인
- localhost:8070에서 nuclio 기능 상태를 확인할 수 있음
- localhost:8080에서 CVAT 상단 메뉴의 model에서 사용가능한 모델을 확인할 수 있음
- CVAT 작업에서 SAM 기능이 정상작동하는지 확인
- SAM 활용 어노테이션
배포 및 외부접속
IP 설정
CVAT_HOST
변수를 통해 외부접속 ip를 설정
# 서버 다운
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml down
# IP 세팅
export CVAT_HOST={ip_address}
# 서버 실행
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d
관리자 계정 생성
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
참고
- Installation Guide | CVAT
- Setup additional components in development environment | CVAT
- Semi-automatic and Automatic Annotation | CVAT
- Nuclio 개념과 아키텍처 | JWHer Tech Blog