[Mediapipe] 라즈베리파이 4B에서의 Mediapipe 설치 및 실행
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
공식 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
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을 시도해보겠습니다.