IT공부

[Mediapipe] 라즈베리파이 4B에서의 Mediapipe 설치 및 실행

서용이 2020. 9. 14. 01:05
반응형

 

0. Mediapipe 란?

 

Mediapipe는 파이프라인을 구축하여 비디오 및 오디오와 같은 다양한 형식의 인지 데이터를 처리할 수 있는 오픈 소스 크로스 플랫폼 프레임 워크입니다. Mediapipe의 Hand Tracking에서는 머신러닝(machine learning)을 사용하여 한 개의 프레임에서 한 손의 21개의 3D 키 포인트를 잡아냄으로써 상당히 정확하게 손과 손가락 추적 기능을 제공합니다.

 

저는 이 기능을 사용하여 수화 번역 프로그램(Sign Language Translation Program)을 만들고자 합니다.

 

 

1. Mediapipe 설치

https://google.github.io/mediapipe/getting_started/install#installing-on-debian-and-ubuntu

 

Installation

MediaPipe is the simplest way for researchers and developers to build world-class ML solutions and applications for mobile, edge, cloud and the web.

google.github.io

공식 google 문서를 따라 설치합니다.

1-1 단계 : 아래 명령어를 따라 update와 upgrade를 한 후에 Mediapipe 레파지토리를 복제합니다.

 

$ sudo apt-get update
$ sudo apt-get upgrade

$ cd ~
$ git clone https://github.com/google/mediapipe.git

$ cd mediapipe

 

1-2 단계 : OpenCV 및 FFmpeg를 설치합니다.

 

$ cd ~/mediapipe
$ chmod +x setup_opencv.sh
$ ./setup_opencv.sh

 

수십분이 걸리므로 다음 단계를 병렬로 수행합니다.

 

1-3 단계 : bazel을 설치합니다.

https://github.com/PINTO0309/Bazel_bin

 

PINTO0309/Bazel_bin

Bazel's pre-built binaries for armv7l / aarch64 / x86_64. - PINTO0309/Bazel_bin

github.com

bazel의 설치는 위의 Git에 게시된 빌드된 바이너리를 사용합니다. 버전은 2.0.0을 사용하며 필요한 jdk8을 설치하고 레파지토리에 포함된 bazel설치를 복제하는 스크립트를 실행합니다.

 

$ sudo apt-get install -y openjdk-8-jdk

$ cd ~
$ git clone https://github.com/PINTO0309/Bazel_bin.git
$ cd Bazel_bin/2.0.0/Raspbian_Debian_Buster_armhf/openjdk-8-jdk/
$ ./install.sh

 

bazel이라는 파일이 /usr/local/bin에 추가됩니다.

다음 명령을 실행하여 bazel 메뉴가 뜬다면 정상 설치된 것입니다.

 

$ /usr/local/bin/bazel

 

1-4 단계 : GPU에 대한 EGL 드라이버를 설치합니다. 이는 GPU에서 Mediapipe를 실행하는 데 필요합니다.

 

$ sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev -y

 

 

2.  Hello World로 Mediapipe 설치 확인

 

그대로 빌드하려고 하면 다음과 유사한 오류가 발생하게 됩니다.

 

undefined reference to '__atomic_store_8'

 

mediapipe/examples/desktop/hello_world/BUILD 에 cc_binary를 추가합니다.

 

linkopts = [
    "-latomic"
]

 

Mediapipe의 Hello World를 실행합니다.

 

$ cd ~/mediapipe
$ export GLOG_logtostderr=1
$ bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \
    mediapipe/examples/desktop/hello_world:hello_world

 

bazel을 구축한 후(수십 분이 소요 됩니다) 'Hello World!'가 10번 표시되면 정상입니다.

 

I20200629 11:55:45.702250 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702352 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702378 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702397 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702419 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702440 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702461 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702484 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702507 28131 hello_world.cc:56] Hello World!
I20200629 11:55:45.702527 28131 hello_world.cc:56] Hello World!

 

 

이상으로 Mediapipe 설치가 완료 되었습니다.

다음 포스팅에서는 multi-hand tracking을 시도해보겠습니다.

반응형