프로그래밍

우분투 openpose 설치 및 실행

robo999 2024. 6. 21. 22:34

#ubuntu2204 #openpose #vision #우분투2204 #오픈포즈 #설치 #실행 #컴퓨터비전

ubuntu22.04에서 GPU를 이용해 openpose 설치 방법 및 예제 실행한 내용을 정리.

# 설치환경

OS
Ubuntu 22.04 LTS
GPU
GeForce-GTX-1050
NVIDIA-SMI
535.86.05
CUDA
12.2.2
CUDNN
8.9.3
PYTHON

openpose란?

이미지에서 사람들의 몸, 손, 그리고 얼굴의 특장점을 추출할 수 있는 라이브러리


# 설치방법

1. openpose GitHub(CMU-Perceptual-Computing-Lab/openpose)에서 깃 클론으로 다운로드.

 

openpose 사이트

※ git 없을 시 설치

  • $ sudo apt-get install git

2. (GPU 세팅) NVIDIA-Driver, CUDA, CUDNN 설치.

  • (CPU 사용시 설치 불필요 -> 3. 으로 이동 )

### nvidia 드라이버 설치

    • 컴퓨터에 장착된 GPU와 호환이 되는 그래픽 드라이버가 필요.
    • 자동설치로 알아서 호환 맞춰서 그래픽드라이버를 설치했다. (최신버전으로 설치되는것 같음)
    • $ sudo ubuntu-drivers autoinstall
    • 설치 후 재시작해 $ nvidia-smi 입력.

nvidia-smi

    • 노트북에서 확인해 보니 아래와 같이 나왔다.
      • 노트북 그래픽카드: GTX-1050
      • 엔비디아 그래픽 드라이버: Driver Version 535.86.05
      • 호환가능한 CUDA Version: 12.2 (아직 설치는 안되있음)
    • NVIDIA 드라이버와 CUDA 호환은 아래 사이트에서도 확인 할 수 있다.

nvidia driver 와 cuda 호환

### cuda 설치

    • 위의 표를 참고하여 CUDA 를 설치한다. (제일 최신 버전 12.2.2 선택 (2023.09.10기준))
      • 본 글에서는 그래픽 드라이버가 535.86.05 이므로 모든 CUDA 버전이 가능했고, 최신 버전인 CUDA 12.2.2 를 설치했다.
      • https://developer.nvidia.com/cuda-toolkit-archive
      • 자신의 컴퓨터 사양에 맞게 선택하면, 명령어 및 설치 방법이 나온다.

CUDA Toolkit 12.2.2 선택함 (맨위에 최신 버전)(2023.09.10 기준)

cuda toolkit 12.2.2

cuda toolkit 12.2.2 다운로드

    • 다운로드(wget) 후, sh로 실행.
      • 실행 후, 처음 화면에서 [continue] 선택.
      • autoinstall 명령어로 nvidia 드라이버를 설치 했기 떄문에 Driver 항목에서 '스페이스바'를 눌러 체크 해제 후, Install 로 가서 엔터.

cuda install

    • 설치가 완료되면 아래와 같이 뜬다. ( 설치위치 -> Toolkit: Installed in /usr/local/cuda-12.2/ )

cuda install OK

### cuDNN 설치

    • CUDA 뉴럴 네트워크 라이브러인 cudnn 설치한다. ( GPU 가속화 라이브러리라고 한다.)
      • 다운로드 페이지: https://developer.nvidia.com/cudnn
      • nvidia 회원가입해서 다운 본 글에서는 12.x 호환 가능한 cuDNN v8.9.3을 다운로드했다. (2023.09.10 기준)

cuDNN v8.9.3

    • Local Installer for Linux x86_64 (Tar) 선택. (아래 이미지에서 2번째)
      • 파일명: cudnn-linux-x86_64-8.9.3.28_cuda12-archive.tar.xz (2023.09.10 기준)
    • cuDNN(tar 파일)을 압축 해제해서 cuda-12.2 폴더에 넣어준다.
      • $ tar -xf cudnn-linux-x86_64-8.9.3.28_cuda12-archive.tar.xz
      • 압축해제한 파일에 들어가면 include폴더와 lib폴더가 있음. (아래 이미지 3개)
      • 처음에 설치했던 CUDA-12.2 폴더(/usr/local/cuda-12.2/)의 include, lib(lib64) 폴더에 cuDNN include, lib 파일들을 각각 넣으면 된다.

cudnn 폴더

cudnn - include 헤더

cudnn - lib 폴더

CUDA의 include, lib64 폴더

    • 다운받은 cuDNN 폴더로 이동
      • $ cd cudnn-linux-x86_64-8.9.3.28_cuda12-archive/
    • cuda-12.2 위치로 파일들 복사
      • $ sudo cp include/cudnn* /usr/local/cuda-12.2/include
      • $ sudo cp lib/libcudnn* /usr/local/cuda-12.2/lib64
    • 복사한 파일들 권한 부여
      • $ sudo chmod a+r /usr/local/cuda-12.2/include/cudnn*.h
      • $ sudo chmod a+r /usr/local/cuda-12.2/lib64/libcudnn*
    • 복사가 완료 되었다면 시스템에서 바로 사용할 수 있게 bin폴더와 lib폴더 경로를 환경변수로 넣어준다.
      • $ sudo gedit ~/.bashrc 또는 $ sudo vi ~/.bashrc
## ~/.bashrc 에 아래내용 추가
export PATH=$PATH:/usr/local/cuda-12.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.2/lib

~/.bashrc (시스템 환경변수)

    • 마지막으로 새로운 터미널창을 켜서(또는 $source ~/.bashrc 로 적용 후) $ nvcc --version 명령으로 cuDNN이 설치됨을 확인 할 수있다.

nvcc --version

3. openpose 실행에 필요한 라이브러리 설치 및 업데이트.

$ sudo apt-get install wget vim cmake cmake-qt-gui
$ sudo apt-get install python-dev python-pip python-numpy
$ sudo pip install --upgrade pip
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev
$ sudo apt-get install libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install libboost-all-dev libgoogle-glog-dev
$ sudo apt-get install liblmdb-dev libopenblas-dev libatlas-base-dev

4. openpose 폴더에서 CMakeLists.txt 파일 수정.

  • (파이썬 사용 시 변경한다. 기본 제공 예제가 파이썬임. )
  • OFF를 ON으로 변경!
$ cd openpose/
$ vi CMakeLists.txt
## CMakeLists.txt 파일
# 316 라인 (OFF → ON) 변경
"Build OpenPose python." ON)
# 796, 815 라인 (OFF → ON) 변경
-DBUILD_python=ON
-DBUILD_python=ON
첨부파일
CMakeLists.txt
파일 다운로드

CMakeList.txt의 316 라인 (OFF → ON)

CMakeList.txt의 796, 815 라인 (OFF → ON)

5. openpose 폴더에서 build 및 make 진행.

($ cd openpose/)
$ mkdir build/
$ cd build
$ cmake ..
$ make

6. build 폴더에서 예제 실행해 보기.

($ cd openpose/)
$ cd build/
$ cd examples/tutorial_api_python/
$ python3.6 01_body_from_image.py

※ cv2 라이브러리 에러시 opencv-python 설치.

pip3.6 install opencv-python

7. 실행 결과

Starting OpenPose Python Wrapper...
Auto-detecting all available GPUs... Detected 1 GPU(s), using 1 of them starting at GPU 0.
Body keypoints:
[[[3.2809854e+02 2.1974371e+02 7.5993967e-01]
......
  • 사람이 스켈레톤 막대로 나타난 것을 확인할 수 있다.

# 에러 정리

  • python 3.5 이하 버전으로 진행했을 때, 에러가 발생  => 파이썬 3.6 이상을 설치해 해결
에러 메시지 내용
uk@uk-master:~/openpose/build/examples/tutorial_api_python$ python3 01_body_from_image.py
Error: OpenPose library could not be found. Did you enable `BUILD_PYTHON` in CMake and have this Python script in the right folder?
cannot import name 'pyopenpose'
uk@uk-master:~/openpose/build/examples/tutorial_api_python$ python3.7 01_body_from_image.py
Error: OpenPose library could not be found. Did you enable `BUILD_PYTHON` in CMake and have this Python script in the right folder?
Python version mismatch: module was compiled for Python 3.6, but the interpreter version is incompatible: 3.7.0 (default, Mar 26 2020, 10:25:13)
[GCC 5.4.0 20160609].


'프로그래밍' 카테고리의 다른 글

우분투에 pycharm 설치  (0) 2024.07.07
우분투-22.04 에 아나콘다 설치  (0) 2024.06.26