yongyong-e

[DensePose] How to use DensePose 본문

머신러닝/컴퓨터비전

[DensePose] How to use DensePose

Yonghan Kim 2019. 3. 5. 10:58

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 설치

- CUDA9.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 설치

- cuDNN7.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


Comments