180bpm

리눅스에서 MediaPipeUnityPlugin 빌드하기 본문

Develop/Unity

리눅스에서 MediaPipeUnityPlugin 빌드하기

powdersnow 2021. 4. 12. 11:27

github.com/homuler/MediaPipeUnityPlugin

 

homuler/MediaPipeUnityPlugin

Unity plugin to run MediaPipe graphs. Contribute to homuler/MediaPipeUnityPlugin development by creating an account on GitHub.

github.com

 

핸드트래킹이 가능한 유니티 프로젝트가 있어서 실행해보려는데 처음 접해보는 빌드방식이라 리마인드차 남김

중요 *안드로이드용 aar은 리눅스에서만 빌드됨*

이 문서 작성중에 docker를 이용한 빌드가 추가되었다. docker 써본적이 없어서 잘 안되길래 나는 그냥 wsl에서 빌드해주는 스크립트를 작성했다.

 

#########################################################

210928 wsl과 docker를 이용한 빌드 설명 추가

문서 작성시점에서는 정말 잘 안되기도 했고, wsl 2 쓰려면 hyper-v를 켜야 하는데 이게 켜지면 안드로이드 에뮬레이터가 안돌아가서..

오늘 그냥 다른 머신에서 테스트 해봤는데 잘 되더라.

도커 스크립트를 보니 결국 내가 주먹구구식으로 했던 내용이 더 이쁘게 들어가있었다. 

 

1. 도커 윈도우 버전을 설치한다

https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe

2. wsl을 2로 설치해야 한다

https://docs.microsoft.com/ko-kr/windows/wsl/install-manual

 

이전 버전 WSL의 수동 설치 단계

wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다.

docs.microsoft.com

wsl2 커널을 설치하고

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

wsl --set-default-version 2 을 주고 배포판을 설치하던가

설치된 배포판의 버전을 2로 바꾸던가 ex. wsl --set-version Ubuntu-20.04 2

 

3. 설치가 되었으면 

cd $home && git clone https://github.com/homuler/MediaPipeUnityPlugin.git && cd MediaPipeUnityPlugin
해서 저장소 복제한 뒤,

 

4. 1번 이미지 빌드랑 2번 컨테이너 실행하는 명령어는 그대로 터미널에 붙여주고

빌드를 GPU로 할지 CPU로 할지에 따라 명령어만 구분해서 입력해주면 쉽게 끝난다.

https://github.com/homuler/MediaPipeUnityPlugin#docker-for-linux-experimental

 

GitHub - homuler/MediaPipeUnityPlugin: Unity plugin to run MediaPipe graphs

Unity plugin to run MediaPipe graphs. Contribute to homuler/MediaPipeUnityPlugin development by creating an account on GitHub.

github.com

5. 빌드가 다 되었으면 exit로 도커에서 빠져나온뒤

explorer.exe .

를 입력하면 현재 작업 디렉토리를 탐색기에서 확인 할 수 있다.

wsl 1때는 바로 접근이 되었는데 wsl 2는 가상디스크에서 동작하기때문에 바로 접근 할 수가 없었다.

 

#########################################################

 

github.com/Leuconoe/MediaPipeUnityPluginLinuxInstaller

 

Leuconoe/MediaPipeUnityPluginLinuxInstaller

Contribute to Leuconoe/MediaPipeUnityPluginLinuxInstaller development by creating an account on GitHub.

github.com

WSL1을 써야 하거나 docker를 쓸 수 없는 경우가 있으니 wsl1에서 돌아가게 하는 스크립트.

 

1. WSL

ubuntu 20.04 LTS에서 작업함.

모든 작업은 $home에서 진행하는것을 가정

 

2. 사전 설치할 것들

nodejs와 pip, 컴파일러들과 빌드시스템, jdk등 설치할것이 상당히 많다.

특히 GPU 빌드를 하려면 python 3.9 이상에서 빌드해야하는데 ubuntu에서는 아직 3.9를 설치 할 수가 없다.

그래서 수동으로 받아서 make 해줘야 함. 이때 기존 python3을 덮어쓰지 않게 altinstall

Anaconda 3을 쓰고 있는 windows 환경도 마찬가지라서 Anaconda Navigator에서 가상환경 하나 만들고 파이썬만 3.9로 업데이트 해서 잘 되는거 확인했다. 생각해보니 win10은 CPU only라고 했는데 왜 된거지..?

 

2. opencv

패키지 매니저 통해서 설치하면 version.hpp가 없다는 오류가 계속 뜬다.

그래서 소스 받아서 빌드하는것으로 진행. 문서대로 설치하면 opencv4가 설치되는데 프로젝트에선 3기준으로 되어있다. third_party:opencv_linux.BUILD에서 경로를 바꿔도 되는데 나는 자동화가 목적이니 명시적으로 3으로 진행.

wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/3.4.10.zip

ninja가 더 빠르게 빌드된다고 하니 ninja로 빌드.

docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

 

OpenCV: Installation in Linux

Next Tutorial: Using OpenCV with gcc and CMake Original author Ana Huamán Compatibility OpenCV >= 3.0 Quick start Build core modules # Install minimal prerequisites (Ubuntu 18.04 as reference) sudo apt update && sudo apt install -y cmake g++ wget unzip #

docs.opencv.org

3 ADK, NDK

프로젝트에서 mediapipe를 쓰니까 설치 스크립트도 호출될줄 알았더니 안되서 빌드 오류가 나서..

따로 받아서 호출함. 근데 이거도 환경변수 기입하는 부분에서 문제가 있는데 해결하지 못해서 스크립트에서 임시로 추가시키는것으로 우회

raw.githubusercontent.com/google/mediapipe/master/setup_android_sdk_and_ndk.sh

 

4.numpy가 꼬이는경우가 있어서

sudo pip3 install -U numpy

askubuntu.com/questions/748929/no-module-named-numpy

 

No module named 'numpy'

Actually I am shifting from Windows to Linux. Using pycharm on Windows I have a python 3 script that requires numpy and matplotlib to run, so I installed them on my Linux system using sudo apt-get

askubuntu.com

 

5. 레파지토리 복사

이건 문제 없었음.

 

 

6. argparse

기본 설치된 argparse에는 BooleanOptionalAction이 없어서 계속 오류가 난다.

raw.githubusercontent.com/python/cpython/master/Lib/argparse.py

 

7 그리고 빌드.

그러면 editor linux/macos, android aar 라이브러리가 빌드된다.

윈도우 환경은 추가 작업 필요.

 

################################

#win10 환경에서 빌드 했던거, 데스크톱 플랫폼에선 잘 되는거 확인.

 

1. opencv

받아서 프로젝트가 요구하는 폴더에 해제 (보통 c:\opencv)

3.4.10을 쓰라고 명시됨.

github.com/opencv/opencv/releases/download/3.4.10/opencv-3.4.10-vc14_vc15.exe

 

2. nuget

vs에서 쓰는거랑 별개로 cli 를 받아야 한다.

받아서 환경변수에 경로를 넣어줬다.

 

3. mediapipe
google.github.io/mediapipe/getting_started/install.html

msys2는 이미 설치되었어서 문서에 나오는대로 진행함. 

bazel은 빌드하는데 쓰는거락했고..

5번까지만 따라했다.

 

4. numpy

python3는 Anaconda로 설치했었다.

 

 

7. 빌드

뭐가 빌드가 스무스하게 잘 되지 않는다.

중간에 한참을 대기걸려서 껐다켜고 강종하길 여러번했다.

- 한번 스무스하게 빌드되면 이후에는 잘 된다

 

트러블 슈팅

bazel이 먹통이어서 껐다가 다시 켰는데 안된다면

server pid를 메시지에서 알려줄텐데 그에 맞는 프로세스를 종료하면 됨. 이름은 OpenJDK Platform binary

################

 

Comments