yongyong-e
[DensePose] How to use DensePose 본문
※ DensePose 테스트 환경
- 소스코드: https://github.com/facebookresearch/DensePose
- OS: Ubuntu 16.04 64bit
- GPU: Nvidia GeForce GTX 1080Ti
1) NVIDIA 그래픽 드라이버 설치
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
$ sudo apt-get install nvidia-396
$ sudo reboot
2) CUDA 설치
- CUDA는 9.0 버전으로 설치
- https://developer.nvidia.com/cuda-downloads를 통해 CUDA Toolkit 9.0를 선택하여 아래와 같이 설치하도록 한다.
- 설치 과정 중 질문에 대해서는 아래와 같이 답하면 된다. 아래에서는 CUDA 8.0 버전이지만 동일하게 진행하면 된다.
- 추가적으로 bashrc 파일에 CUDA에 대한 환경변수를 적용하도록 한다.
1. bashrc 파일 편집
$ vim .bashrc
2. 마지막 라인에 아래의 환경변수 추가
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
3. 환경변수 적용
$ source .bashrc
3) cuDNN 설치
- cuDNN은 7.1.4 버전으로 설치
- https://developer.nvidia.com/cudnn를 통해 다운로드 가능하며 아래와 같은 버전을 받아야 한다.
- cuDNN v7.1.4 (May 16, 2018), for CUDA 9.0
- cuDNN v7.1.4 Library for Linux
- 이후 아래와 같이 /usr/local/cuda-9.2 경로에 복사한다.
$ tar xzvf cudnn-9.0-linux-x64-v7.1.tgz
$ sudo cp cuda/lib64/* /usr/local/cuda-9.0/lib64/
$ sudo cp cuda/include/* /usr/local/cuda-9.0/include/
$ sudo chmod a+r /usr/local/cuda-9.0/lib64/libcudnn*
$ sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
$ sudo apt-get install libcupti-dev
4) Anaconda2 설치
- https://www.anaconda.com/download/#linux 에서 Python 2.7 버전으로 다운로드하고, 아래 명령어를 통해 Anaconda2를 설치하도록 한다.
$ bash Anaconda2-{latest}-Linux-x86_64.sh
5) Caffe2 설치
- 먼저 caffe2가 설치 되어있을 경우 기존의 caffe2를 제거한다.
$ sudo rm -vRf /usr/local/include/caffe2
$ sudo rm -vf /usr/local/lib/libcaffe2*
$ sudo rm -vRf /usr/local/lib/python2.7/dist-packages/caffe2
- apt 패키지 설치
$ sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
- pip 패키지 설치
$ sudo pip install --upgrade pip
$ sudo pip install setuptools future numpy protobuf
$ sudo apt-get install -y --no-install-recommends libgflags-dev
- pytorch 소스코드 다운로드
$ mkdir caffe2-pytorch && cd caffe2-pytorch
$ git clone --recursive https://github.com/pytorch/pytorch.git ./
$ git submodule update --init
- caffe2 빌드
$ mkdir build && cd build
$ cmake ..
$ sudo make -j"$(nproc)" install
- caffe2에 대한 심볼릭 링크 추가
$ sudo ldconfig
- caffe2의 라이브러리와 헤더의 위치 확인
1. locate 데이터베이스를 업데이트
$ sudo updatedb
2. libcaffe2.so가 /usr/local/lib에 있는지 확인
$ locate libcaffe2.so
3. 헤더 파일이 /usr/local/include에 복사되었는지 확인
$ locate caffe2 | grep /usr/local/include/caffe2
- caffe2 라이브러리 환경변수 적용
1. bashrc 파일 편집
$ vim .bashrc
2. 마지막 라인에 아래의 환경변수 추가
export PYTHONPATH=/usr/local
export PYTHONPATH=$PYTHONPATH:/home/soosang/caffe2-pytorch/build
export PYTHONPATH=$PYTHONPATH:/home/soosang/caffe2-pytorch/caffe2
export PYTHONPATH=$PYTHONPATH:/home/soosang/caffe2-pytorch/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib
3. 환경변수 적용
$ source .bashrc
- caffe2 빌드가 성공되었는지 확인
$ python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
- caffe2의 GPU 지원 확인 (1이상의 숫자가 출력되어야함)
$ python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'
6) COCO API 설치
- 소스코드 다운로드 및 설치
$ git clone https://github.com/cocodataset/cocoapi.git
$ cd cocoapi/PythonAPI
$ make install
$ python2 setup.py install --user
7) DensePose 다운로드
- 소스코드 다운로드
$ git clone https://github.com/facebookresearch/densepose
- 파이썬 라이브러리 설치
$ pip install -r densepose/requirements.txt
- 파이썬 모듈 설정
$ cd densepose && make
- Detectron 테스트
$ python2 densepose/detectron/tests/test_spatial_narrow_as_op.py
- 사용자 정의 연산자 라이브러리 빌드
$ cd densepose && make ops
- 설치 체크
$ python2 densepose/detectron/tests/test_zero_even_op.py
8) DensePose 데이터 다운로드
$ cd densepose/DensePoseData
$ bash get_densepose_uv.sh
$ bash get_DensePose_COCO.sh
$ bash get_eval_data.sh
9) DensePose 테스트
- pre-trained 모델을 사용하여 이미지에 대한 densepose 테스트를 해보자.
python2 tools/infer_simple.py \
--cfg configs/DensePose_ResNet101_FPN_s1x-e2e.yaml \
--output-dir DensePoseData/infer_out/ \
--image-ext jpg \
--wts https://dl.fbaipublicfiles.com/densepose/DensePose_ResNet101_FPN_s1x-e2e.pkl \
DensePoseData/demo_data/demo_im.jpg
- 명령어 실행 결과로 DensePoseData/infer_out 디렉토리에 *_IUV.png 및 *_INDS.png 파일이 생성되면 성공이다.
- 또한 jupyter notebook을 실행하여 DensePose-RCNN의 결과를 확인 할 수 있다.
$ jupyter notebook
# notebooks/DensePose-RCNN-Visualize-Results.ipynb
'머신러닝 > 컴퓨터비전' 카테고리의 다른 글
[OpenPose] How to use OpenPose on ubuntu (4) | 2019.02.28 |
---|---|
[Darknet: YOLO] Test with GTX 1080ti (0) | 2017.09.21 |
[Darknet: YOLO] 3. Real-Time Object Detection on a Webcam (5) | 2017.07.25 |
[Darknet: YOLO] 2. Compiling With CUDA & OpenCV (0) | 2017.07.25 |
[Darknet: YOLO] 1. Detection Using A Pre-Trained Model (0) | 2017.07.25 |