Apple Silicon 칩(M1)에 미디어파이프(Mediapipe) 설치하기
안녕하세요. 타이키모스입니다. 미디어파이프를 파이썬에서 간단하게 테스트해보려면 코랩이나 파이썬 가상환경에서 설치해도 되지만, 모바일 기기나 데스크탑 용으로 어플리케이션을 개발하려면 설치 및 빌드까지 해야합니다. 미디어파이프 공식페이지에 아래처럼 macOS 설치법이 있으나, Apple Silicon칩 기반 M1 유저인 경우에는 제대로 설치가 안됩니다. 여러가지 방법이 있을 수 있겠으나 제가 설치에 성공한 버전으로 정리해봤습니다.
Homebrew 설치
터미널에서 아래 명령으로 설치합니다.
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Xcode 설치
터미널에서 아래 명령으로 설치합니다.
$ xcode-select --install
만약 제대로 설치가 안되고 아래와 같은 오류를 만나셨나요?
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
그럼 이미 설치되어서 나오는 에러이므로 삭제하고 다시 설치합니다.
$ sudo rm -rf /Library/Developer/CommandLineTools
$ sudo xcode-select --install
승인 팝업 창이 뜨면 확인 버튼을 클릭하여 설치를 완료합니다.
미디어파이프 다운로드
깃 클론을 통해서 미디어파이프를 다운로드 합니다.
$ git clone https://github.com/google/mediapipe.git
$ cd mediapipe
미디어파이프에 설정된 바젤(bazel) 버전 확인
mediapipe 폴더 내에 “.bazelversion” 파일을 열어 바젤 버전을 확인합니다. 저의 경우에는 5.2.0으로 표기되어 있습니다.
5.2.0
바젤 설치
위에서 확인한 바젤 버전으로 설치합니다. “5.2.0”으로 확인되었으니 이 버전으로 설치합니다. 먼저 바젤 설치 파일을 다운로드 합니다.
$ export BAZEL_VERSION=5.2.0
$ curl -fLO "https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-darwin-x86_64.sh"
바젤 설치를 시작합니다.
$ chmod +x "bazel-$BAZEL_VERSION-installer-darwin-x86_64.sh"
$ ./bazel-$BAZEL_VERSION-installer-darwin-x86_64.sh --user
바젤 실행 파일 경로를 추가합니다.
$ export PATH="$PATH:$HOME/bin"
바젤 버전을 확인합니다. “5.2.0”으로 설정했으니, “5.2.0”가 나오면 정상입니다.
bazel --version
OpenCV와 FFmpeg를 설치합니다.
$ brew install opencv@3
$ brew uninstall --ignore-dependencies glog
파이썬을 설치합니다.
$ brew install python
$ sudo ln -s -f /usr/local/bin/python3.7 /usr/local/bin/python
$ python --version
$ pip3 install --user six
링크 옵션 추가
mediapipe/framework/port/BUILD 파일에 아래와 같이 링크옵션을 추가합니다.
변경전
cc_library(
name = "status",
hdrs = [
"canonical_errors.h",
"status.h",
"status_builder.h",
"status_macros.h",
],
visibility = ["//visibility:public"],
deps = [
":source_location",
"//mediapipe/framework:port",
"//mediapipe/framework/deps:status",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
변경후
cc_library(
name = "status",
hdrs = [
"canonical_errors.h",
"status.h",
"status_builder.h",
"status_macros.h",
],
visibility = ["//visibility:public"],
deps = [
":source_location",
"//mediapipe/framework:port",
"//mediapipe/framework/deps:status",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
linkopts = select({
"//mediapipe:macos": [
"-framework CoreFoundation",
],
"//conditions:default": [],
}),
)
위 과정을 수행하지 않으면 아래 에러가 발생합니다.
dyld[99566]: symbol not found in flat namespace '_CFRelease'
“Hello World!” 실행
“Hello World!”의 C++ 예제를 실행합니다.
$ export GLOG_logtostderr=1
$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world
출력 확인
아래와 같이 터미널에 출력되면 정상적으로 설치된 것입니다.
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
설치과정은 늘 녹록지 않고 삽질하는 기분이네요. 설치가 잘 안되면 스트레칭 한 번 하고 다시 시작해봅시다!
책 소개
[추천사]
- 하용호님, 카카오 데이터사이언티스트 - 뜬구름같은 딥러닝 이론을 블록이라는 손에 잡히는 실체로 만져가며 알 수 있게 하고, 구현의 어려움은 케라스라는 시를 읽듯이 읽어내려 갈 수 있는 라이브러리로 풀어준다.
- 이부일님, (주)인사아트마이닝 대표 - 여행에서도 좋은 가이드가 있으면 여행지에 대한 깊은 이해로 여행이 풍성해지듯이 이 책은 딥러닝이라는 분야를 여행할 사람들에 가장 훌륭한 가이드가 되리라고 자부할 수 있다. 이 책을 통하여 딥러닝에 대해 보지 못했던 것들이 보이고, 듣지 못했던 것들이 들리고, 말하지 못했던 것들이 말해지는 경험을 하게 될 것이다.
- 이활석님, 네이버 클로바팀 - 레고 블럭에 비유하여 누구나 이해할 수 있게 쉽게 설명해 놓은 이 책은 딥러닝의 입문 도서로서 제 역할을 다 하리라 믿습니다.
- 김진중님, 야놀자 Head of STL - 복잡했던 머릿속이 맑고 깨끗해지는 효과가 있습니다.
- 이태영님, 신한은행 디지털 전략부 AI LAB - 기존의 텐서플로우를 활용했던 분들에게 바라볼 수 있는 관점의 전환점을 줄 수 있는 Mild Stone과 같은 책이다.
- 전태균님, 쎄트렉아이 - 케라스의 특징인 단순함, 확장성, 재사용성을 눈으로 쉽게 보여주기 위해 친절하게 정리된 내용이라 생각합니다.
- 유재준님, 카이스트 - 바로 적용해보고 싶지만 어디부터 시작할지 모를 때 최선의 선택입니다.