실험환경 재현하기
실험 소스코드 다운로드
아래 url을 통해 실험한 소스코드들을 다운받을 수 있다.
이동하기
해당 깃허브 레포지토리에는 Ground_Truth txt파일과 DB영상 데이터는 없다.
데이터를 받아서 cvpr22, neurVPS 디렉토리에 각각 넣어주어야 한다.
도커 설치
아래 순서대로 설치를 진행하면 된다.
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl start docker
도커 권한 획득
이 설정을 해주면 매번 도커명령어를 사용할 때마다 sudo를 사용하지 않아도 된다.
sudo usermod -aG docker $USER
newgrp docker
설정을 해주면 터미널을 다시 켜주어야 한다.
nvidia toolkit 설치
도커에서 gpu를 사용하기 위해서는 nvidia toolkit 컨테이너가 필요하다.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
도커 실행
cvpr22 디렉토리로 들어오면 Dockerfile 과 docker_run.sh 파일이 있다.
sh파일을 실행하기 전에 Dockerfile로 들어가서 FROM부분을 수정해주어야 하는데, 자신의 cuda버전과 cudnn버전을 확인하고 수정해주면 된다.
cuda와 cudnn 버전 확인법
//cuda
nvidia-smi
//cudnn
sudo ldconfig
ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn
도커 이미지 버전 확인
pytorch 도커허브로 이동
위의 url로 이동하여 버전을 찾고 DockerFile의 FROM부분을 수정해주면 된다.
그 뒤, docker login을 통해 로그인을 먼저 진행해주어야한다.
로그인에 성공하면 docker_run.sh를 권한을 올려주고 실행하면 된다.
chmod +x docker_run.sh
./docker_run.sh
이 sh 스크립트는 도커파일을 빌드하고 컨테이너 실행과 컨테이너접속까지 한번에 이루어지는 코드이다.
처음 한번만 이 스크립트를 실행해주고 다음부터는
docker exec -it cvpr /bin/bash
이 명령어를 통해 접속하면 된다.
sh스크립트 설명
docker build --tag vpenv:1.0 . //Dockerfile의 내용에 맞게 빌드를 함 이미지이름은 vpenv 버전은 1.0 이다.
docker run -d -it --name cvpr --gpus all -v .:/data --restart=always vpenv:1.0 //도커 컨테이너를 실행함 컨테이너명은 cvpr이다
docker exec -it cvpr /bin/bash //해당 도커 컨테이너로 접속
모델 다운로드
모델은 각각 다운받아 각 디렉토리에 넣어주면 된다.
cvpr인 경우 직선검출이 된 파라미터도 필요하기때문에 추가로 다운받고 넣어줘야 한다.
모델 다운로드
소스코드 실행
분석코드 실행파일은 video_predict.py 파일이다.
실행할 때 데이터셋을 선택해야하는데, python video_predict.py 뒤에 데이터셋이름을 작성하면 된다.(기본값 nyu)
(ex)python video_predict.py su3
결과 데이터는 saved_results 디렉토리내에 데이터셋별로 저장이 된다.
(주의) neurVPS 디렉토리 내에는 Dockerfile이 없다.
이유는 cvpr과 neur 환경 둘 다 동일한 환경에서 돌아가는 것이 확인되었기 때문에,
만일 첫 실행이라면 cvpr디렉토리에서 docker_run.sh를 한번 실행하고 neurVPS 디렉토리의 docker_run.sh를 실행해주면 된다.
이 docker_run.sh도 맨처음 한번만 실행하면 되고 다음부터는
docker exec -it neur /bin/bash
이 명령어만 써도 된다.
추가 도움말
재부팅 시 docker 서비스가 꺼져있을 경우
sudo service docker start
실험코드 수정
이 도커환경은 컨테이너와 호스트 디렉토리와 마운트(연결)되어있기 때문에 호스트에서 직접 코드를 수정해도 바로 적용된다.
볼륨 마운트에대한 설명
도커 명령어들
docker ps -a //모든 도커 컨테이너 상황을 확인 EXITED: 종료됨, UP: 정상실행, Restarting: 문제가 생겨 재시작중
docker images //빌드된 이미지들 확인
docker login //도커 로그인
//docker 컨테이너와 이미지 삭제하기 (모두 삭제를 원할경우 아래를 순서대로 진행할것)
docker stop <컨테이너명 혹은 컨테이너 ID>
docker rm <컨테이너명 혹은 컨테이너 ID>
docker rmi <이미지명:버전 혹은 이미지 ID>
//도커를 빌드했는데 문제가 생겨 다시 빌드할 경우 캐시에 저장된 데이터를 이용해서 다시 빌드하게된다.
//캐시데이터 없이 새로운 환경으로 재빌드하고 싶으면 다음 명령어로 캐시를 삭제할 수 있다.
docker builder prune