Cài đặt trên Debian và Ubuntu
Cài đặt Bazelisk.
Làm theo tài liệu chính thức về Bazel để cài đặt Bazelisk.
Kiểm tra kho lưu trữ MediaPipe.
$ cd $HOME $ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
Cài đặt OpenCV và FFmpeg.
Cách 1. Sử dụng công cụ trình quản lý gói để cài đặt các thư viện OpenCV được biên dịch trước. FFmpeg sẽ được cài đặt thông qua
libopencv-video-dev
.Hệ điều hành OpenCV Debian 9 (stretch) 2.4 Debian 10 (buster) 3.2 Debian 11 (bullseye) 4,5 Ubuntu 16.04 LTS 2.4 Ubuntu 18.04 LTS 3.2 Ubuntu 20.04 LTS 4,2 Ubuntu 20.04 LTS 4,2 Ubuntu 21.04 4,5 $ sudo apt-get install -y \ libopencv-core-dev \ libopencv-highgui-dev \ libopencv-calib3d-dev \ libopencv-features2d-dev \ libopencv-imgproc-dev \ libopencv-video-dev
Lưu ý. Trên Debian 11/Ubuntu 21.04, khi cài đặt OpenCV 4.5 bằng
libopencv-video-dev
, bạn cũng nên cài đặtlibopencv-contrib-dev
.$ sudo apt-get install -y libopencv-contrib-dev
opencv_linux.BUILD
vàWORKSPACE
của MediaPipe đã được định cấu hình cho OpenCV 2/3 và sẽ hoạt động chính xác trên mọi cấu trúc:# WORKSPACE new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr", ) # opencv_linux.BUILD for OpenCV 2/3 installed from Debian package cc_library( name = "opencv", linkopts = [ "-l:libopencv_core.so", "-l:libopencv_calib3d.so", "-l:libopencv_features2d.so", "-l:libopencv_highgui.so", "-l:libopencv_imgcodecs.so", "-l:libopencv_imgproc.so", "-l:libopencv_video.so", "-l:libopencv_videoio.so", ], )
Đối với OpenCV 4, bạn cần sửa đổi
opencv_linux.BUILD
có tính đến cấu trúc hiện tại:# WORKSPACE new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr", ) # opencv_linux.BUILD for OpenCV 4 installed from Debian package cc_library( name = "opencv", hdrs = glob([ # Uncomment according to your multiarch value (gcc -print-multiarch): # "include/aarch64-linux-gnu/opencv4/opencv2/cvconfig.h", # "include/arm-linux-gnueabihf/opencv4/opencv2/cvconfig.h", # "include/x86_64-linux-gnu/opencv4/opencv2/cvconfig.h", "include/opencv4/opencv2/**/*.h*", ]), includes = [ # Uncomment according to your multiarch value (gcc -print-multiarch): # "include/aarch64-linux-gnu/opencv4/", # "include/arm-linux-gnueabihf/opencv4/", # "include/x86_64-linux-gnu/opencv4/", "include/opencv4/", ], linkopts = [ "-l:libopencv_core.so", "-l:libopencv_calib3d.so", "-l:libopencv_features2d.so", "-l:libopencv_highgui.so", "-l:libopencv_imgcodecs.so", "-l:libopencv_imgproc.so", "-l:libopencv_video.so", "-l:libopencv_videoio.so", ], )
Cách 2. Chạy
setup_opencv.sh
để tự động tạo OpenCV từ nguồn và sửa đổi cấu hình OpenCV của MediaPipe. Tuỳ chọn này sẽ tự động thực hiện tất cả các bước được xác định trong Tuỳ chọn 3.Cách 3. Làm theo tài liệu của OpenCV để tạo OpenCV theo cách thủ công từ mã nguồn.
Bạn có thể cần sửa đổi
WORKSPACE
vàopencv_linux.BUILD
để trỏ MediaPipe đến thư viện OpenCV của riêng bạn. Giả sử OpenCV sẽ được cài đặt vào/usr/local/
theo đề xuất mặc định.Thiết lập OpenCV 2/3:
# WORKSPACE new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) # opencv_linux.BUILD for OpenCV 2/3 installed to /usr/local cc_library( name = "opencv", linkopts = [ "-L/usr/local/lib", "-l:libopencv_core.so", "-l:libopencv_calib3d.so", "-l:libopencv_features2d.so", "-l:libopencv_highgui.so", "-l:libopencv_imgcodecs.so", "-l:libopencv_imgproc.so", "-l:libopencv_video.so", "-l:libopencv_videoio.so", ], )
Thiết lập OpenCV 4:
# WORKSPACE new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) # opencv_linux.BUILD for OpenCV 4 installed to /usr/local cc_library( name = "opencv", hdrs = glob([ "include/opencv4/opencv2/**/*.h*", ]), includes = [ "include/opencv4/", ], linkopts = [ "-L/usr/local/lib", "-l:libopencv_core.so", "-l:libopencv_calib3d.so", "-l:libopencv_features2d.so", "-l:libopencv_highgui.so", "-l:libopencv_imgcodecs.so", "-l:libopencv_imgproc.so", "-l:libopencv_video.so", "-l:libopencv_videoio.so", ], )
Cấu hình FFmpeg hiện tại được xác định trong
ffmpeg_linux.BUILD
và sẽ hoạt động cho mọi cấu trúc:# WORKSPACE new_local_repository( name = "linux_ffmpeg", build_file = "@//third_party:ffmpeg_linux.BUILD", path = "/usr" ) # ffmpeg_linux.BUILD for FFmpeg installed from Debian package cc_library( name = "libffmpeg", linkopts = [ "-l:libavcodec.so", "-l:libavformat.so", "-l:libavutil.so", ], )
Chỉ để chạy các ví dụ trên máy tính trên Linux (không phải trên OS X) với tính năng tăng tốc GPU.
# Requires a GPU with EGL driver support. # Can use mesa GPU libraries for desktop, (or Nvidia/AMD equivalent). sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev # To compile with GPU support, replace --define MEDIAPIPE_DISABLE_GPU=1 # with --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 # when building GPU examples.
Chạy Ví dụ về Hello World! trong C++.
$ export GLOG_logtostderr=1 # if you are running on Linux desktop with CPU only $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # If you are running on Linux desktop with GPU support enabled (via mesa drivers) $ bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Nếu bạn gặp lỗi bản dựng, vui lòng đọc phần Khắc phục sự cố để tìm giải pháp cho một số vấn đề thường gặp về bản dựng.
Cài đặt trên CentOS
Tuyên bố từ chối trách nhiệm: Việc chạy MediaPipe trên CentOS đang ở giai đoạn thử nghiệm.
Cài đặt Bazelisk.
Làm theo tài liệu chính thức về Bazel để cài đặt Bazelisk.
Kiểm tra kho lưu trữ MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
Cài đặt OpenCV.
Tùy chọn 1. Sử dụng công cụ trình quản lý gói để cài đặt phiên bản được biên dịch trước.
$ sudo yum install opencv-devel
Tùy chọn 2. Tạo OpenCV từ mã nguồn.
new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) new_local_repository( name = "linux_ffmpeg", build_file = "@//third_party:ffmpeg_linux.BUILD", path = "/usr/local", ) cc_library( name = "opencv", srcs = glob( [ "lib/libopencv_core.so", "lib/libopencv_highgui.so", "lib/libopencv_imgcodecs.so", "lib/libopencv_imgproc.so", "lib/libopencv_video.so", "lib/libopencv_videoio.so", ], ), hdrs = glob([ # For OpenCV 3.x "include/opencv2/**/*.h*", # For OpenCV 4.x # "include/opencv4/opencv2/**/*.h*", ]), includes = [ # For OpenCV 3.x "include/", # For OpenCV 4.x # "include/opencv4/", ], linkstatic = 1, visibility = ["//visibility:public"], ) cc_library( name = "libffmpeg", srcs = glob( [ "lib/libav*.so", ], ), hdrs = glob(["include/libav*/*.h"]), includes = ["include"], linkopts = [ "-lavcodec", "-lavformat", "-lavutil", ], linkstatic = 1, visibility = ["//visibility:public"], )
Chạy Ví dụ về Hello World! trong C++.
$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' if you are running on Linux desktop with CPU only $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Nếu bạn gặp lỗi bản dựng, vui lòng đọc phần Khắc phục sự cố để tìm giải pháp cho một số vấn đề thường gặp về bản dựng.
Cài đặt trên macOS
Công việc chuẩn bị:
Cài đặt Bazelisk.
Làm theo tài liệu chính thức về Bazel để cài đặt Bazelisk.
Kiểm tra kho lưu trữ MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git $ cd mediapipe
Cài đặt OpenCV và FFmpeg.
Tùy chọn 1. Sử dụng công cụ trình quản lý gói HomeBrew để cài đặt các thư viện OpenCV 3 được biên dịch trước. FFmpeg sẽ được cài đặt thông qua OpenCV.
$ brew install opencv@3 # There is a known issue caused by the glog dependency. Uninstall glog. $ brew uninstall --ignore-dependencies glog
Tùy chọn 2. Sử dụng công cụ trình quản lý gói MacPorts để cài đặt thư viện OpenCV.
$ port install opencv
new_local_repository( name = "macos_opencv", build_file = "@//third_party:opencv_macos.BUILD", path = "/opt", ) new_local_repository( name = "macos_ffmpeg", build_file = "@//third_party:ffmpeg_macos.BUILD", path = "/opt", ) cc_library( name = "opencv", srcs = glob( [ "local/lib/libopencv_core.dylib", "local/lib/libopencv_highgui.dylib", "local/lib/libopencv_imgcodecs.dylib", "local/lib/libopencv_imgproc.dylib", "local/lib/libopencv_video.dylib", "local/lib/libopencv_videoio.dylib", ], ), hdrs = glob(["local/include/opencv2/**/*.h*"]), includes = ["local/include/"], linkstatic = 1, visibility = ["//visibility:public"], ) cc_library( name = "libffmpeg", srcs = glob( [ "local/lib/libav*.dylib", ], ), hdrs = glob(["local/include/libav*/*.h"]), includes = ["local/include/"], linkopts = [ "-lavcodec", "-lavformat", "-lavutil", ], linkstatic = 1, visibility = ["//visibility:public"], )
Đảm bảo rằng bạn đã cài đặt Python 3 và thư viện Python "six".
$ brew install python $ sudo ln -s -f /usr/local/bin/python3.7 /usr/local/bin/python $ python --version Python 3.7.4 $ pip3 install --user six
Chạy Ví dụ về Hello World! trong C++.
$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Nếu bạn gặp lỗi bản dựng, vui lòng đọc phần Khắc phục sự cố để tìm giải pháp cho một số vấn đề thường gặp về bản dựng.
Cài đặt trên Windows
Tuyên bố từ chối trách nhiệm: Việc chạy MediaPipe trên Windows đang ở giai đoạn thử nghiệm.
Cài đặt MSYS2 và chỉnh sửa biến môi trường
%PATH%
.Nếu MSYS2 được cài đặt vào
C:\msys64
, hãy thêmC:\msys64\usr\bin
vào biến môi trường%PATH%
.Cài đặt các gói cần thiết.
C:\> pacman -S git patch unzip
Cài đặt Python và cho phép tệp thực thi chỉnh sửa biến môi trường
%PATH%
.Tải tệp thực thi Python cho Windows từ https://www.python.org/downloads và cài đặt.
Cài đặt Công cụ xây dựng Visual C++ và WinSDK
Truy cập vào trang web VisualStudio, tải các công cụ xây dựng xuống và cài đặt Microsoft Visual C++ 2022 có thể phân phối lại và Microsoft Build Tools 2022.
Tải WinSDK xuống từ trang web chính thức của MicroSoft rồi cài đặt.
Cài đặt Bazel hoặc Bazelisk và thêm vị trí của tệp thực thi Bazel vào biến môi trường
%PATH%
.Tùy chọn 1. Làm theo tài liệu chính thức về Bazel để cài đặt Bazel 6.5.0 trở lên.
Tùy chọn 2. Làm theo tài liệu chính thức về Bazel để cài đặt Bazelisk.
Đặt các biến Bazel. Tìm hiểu thêm thông tin chi tiết về "Tạo trên Windows" trong tài liệu chính thức của Bazel.
# Please find the exact paths and version numbers from your local version. C:\> set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio\<version>\BuildTools C:\> set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\<version>\BuildTools\VC C:\> set BAZEL_VC_FULL_VERSION=<Your local VC version> C:\> set BAZEL_WINSDK_FULL_VERSION=<Your local WinSDK version>
Kiểm tra kho lưu trữ MediaPipe.
C:\Users\Username\mediapipe_repo> git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory C:\Users\Username\mediapipe_repo> cd mediapipe
Cài đặt OpenCV.
Tải tệp thực thi Windows xuống từ https://opencv.org/releases/ và cài đặt. MediaPipe 0.10.x hỗ trợ OpenCV 3.4.10. Hãy nhớ chỉnh sửa tệp
WORKSPACE
nếu bạn chưa cài đặt OpenCV tạiC:\opencv
.new_local_repository( name = "windows_opencv", build_file = "@//third_party:opencv_windows.BUILD", path = "C:\\<path to opencv>\\build", )
Chạy Ví dụ về Hello World! trong C++.
C:\Users\Username\mediapipe_repo>bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://python_36//python.exe" mediapipe/examples/desktop/hello_world C:\Users\Username\mediapipe_repo>set GLOG_logtostderr=1 C:\Users\Username\mediapipe_repo>bazel-bin\mediapipe\examples\desktop\hello_world\hello_world.exe # should print: # I20200514 20:43:12.277598 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.278597 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World! # I20200514 20:43:12.280613 1200 hello_world.cc:56] Hello World!
Nếu bạn gặp lỗi bản dựng, vui lòng đọc phần Khắc phục sự cố để tìm giải pháp cho một số vấn đề thường gặp về bản dựng.
Cài đặt trên Hệ thống con Windows dành cho Linux (WSL)
Làm theo hướng dẫn để cài đặt Hệ thống con Windows cho Linux (Ubuntu).
Cài đặt Windows ADB và khởi động máy chủ ADB trong Windows.
Khởi chạy WSL.
Cài đặt các gói cần thiết.
username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
Cài đặt Bazelisk.
Làm theo tài liệu chính thức về Bazel để cài đặt Bazelisk.
Kiểm tra kho lưu trữ MediaPipe.
username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git username@DESKTOP-TMVLBJ1:~$ cd mediapipe
Cài đặt OpenCV và FFmpeg.
Tùy chọn 1. Sử dụng công cụ trình quản lý gói để cài đặt các thư viện OpenCV được biên dịch trước. FFmpeg sẽ được cài đặt thông qua libopencv-video-dev.
username@DESKTOP-TMVLBJ1:~/mediapipe$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \ libopencv-calib3d-dev libopencv-features2d-dev \ libopencv-imgproc-dev libopencv-video-dev
Tùy chọn 2. Chạy
setup_opencv.sh
để tự động tạo OpenCV từ nguồn và sửa đổi cấu hình OpenCV của MediaPipe.Cách 3. Làm theo tài liệu của OpenCV để tạo OpenCV theo cách thủ công từ mã nguồn.
new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) cc_library( name = "opencv", srcs = glob( [ "lib/libopencv_core.so", "lib/libopencv_highgui.so", "lib/libopencv_imgcodecs.so", "lib/libopencv_imgproc.so", "lib/libopencv_video.so", "lib/libopencv_videoio.so", ], ), hdrs = glob(["include/opencv4/**/*.h*"]), includes = ["include/opencv4/"], linkstatic = 1, visibility = ["//visibility:public"], )
Chạy Ví dụ về Hello World! trong C++.
username@DESKTOP-TMVLBJ1:~/mediapipe$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported username@DESKTOP-TMVLBJ1:~/mediapipe$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Nếu bạn gặp lỗi bản dựng, vui lòng đọc phần Khắc phục sự cố để tìm giải pháp cho một số vấn đề thường gặp về bản dựng.
Cài đặt bằng Docker
Thao tác này sẽ sử dụng một hình ảnh Docker để tách biệt quá trình cài đặt mediapipe với phần còn lại của hệ thống.
Cài đặt Docker trên hệ thống máy chủ.
Tạo hình ảnh docker có thẻ "mediapipe".
$ git clone --depth 1 https://github.com/google/mediapipe.git $ cd mediapipe $ docker build --tag=mediapipe . # Should print: # Sending build context to Docker daemon 147.8MB # Step 1/9 : FROM ubuntu:latest # latest: Pulling from library/ubuntu # 6abc03819f3e: Pull complete # 05731e63f211: Pull complete # ........ # See http://bazel.build/docs/getting-started.html to start a new project! # Removing intermediate container 82901b5e79fa # ---> f5d5f402071b # Step 9/9 : COPY . /edge/mediapipe/ # ---> a95c212089c5 # Successfully built a95c212089c5 # Successfully tagged mediapipe:latest
Chạy Ví dụ về Hello World! trong C++.
$ docker run -it --name mediapipe mediapipe:latest root@bca08b91ff63:/mediapipe# GLOG_logtostderr=1 bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Nếu bạn gặp lỗi bản dựng, vui lòng đọc phần Khắc phục sự cố để tìm giải pháp cho một số vấn đề thường gặp về bản dựng.
Tạo ví dụ về MediaPipe cho Android.
$ docker run -it --name mediapipe mediapipe:latest root@bca08b91ff63:/mediapipe# bash ./setup_android_sdk_and_ndk.sh # Should print: # Android NDK is now installed. Consider setting $ANDROID_NDK_HOME environment variable to be /root/Android/Sdk/ndk-bundle/android-ndk-r19c # Set android_ndk_repository and android_sdk_repository in WORKSPACE # Done root@bca08b91ff63:/mediapipe# bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu:objectdetectiongpu # Should print: # Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu:objectdetectiongpu up-to-date: # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu_deploy.jar # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu_unsigned.apk # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu.apk # INFO: Elapsed time: 144.462s, Critical Path: 79.47s # INFO: 1958 processes: 1 local, 1863 processwrapper-sandbox, 94 worker. # INFO: Build completed successfully, 2028 total actions