MMDeploy项目Android平台构建指南

MMDeploy项目Android平台构建指南

mmdeploy OpenMMLab Model Deployment Framework mmdeploy 项目地址: https://gitcode.com/gh_mirrors/mm/mmdeploy

前言

本文将详细介绍如何在Linux环境下为Android平台交叉编译构建MMDeploy SDK。MMDeploy是一个开源的模型部署工具链,支持将训练好的深度学习模型高效部署到多种硬件平台。对于移动端部署而言,Android平台的支持尤为重要。

构建流程概述

MMDeploy的Android平台构建采用交叉编译方式,主要分为两个阶段:

  1. 在Linux平台上构建模型转换工具(Converter)
  2. 使用Android工具链构建运行在Android设备上的推理SDK

本文重点介绍第二阶段:Android SDK的构建过程。

环境准备

基础工具链安装

CMake安装

CMake是跨平台的构建工具,我们需要安装3.14.0或更高版本。推荐安装3.20.0版本:

wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz
tar -xzvf cmake-3.20.0-linux-x86_64.tar.gz
sudo ln -sf $(pwd)/cmake-3.20.0-linux-x86_64/bin/* /usr/bin/
Android NDK安装

Android NDK(Native Development Kit)是构建原生Android应用的工具集。我们需要安装19.0或更高版本:

wget https://dl.google.com/android/repository/android-ndk-r23c-linux.zip
unzip android-ndk-r23c-linux.zip
cd android-ndk-r23c
export NDK_PATH=${PWD}

依赖库安装

OpenCV for Android

OpenCV是计算机视觉基础库,Android版本需要单独安装:

export OPENCV_VERSION=4.6.0
wget https://github.com/opencv/opencv/releases/download/${OPENCV_VERSION}/opencv-${OPENCV_VERSION}-android-sdk.zip
unzip opencv-${OPENCV_VERSION}-android-sdk.zip
export OPENCV_ANDROID_SDK_DIR=${PWD}/OpenCV-android-sdk

NCNN推理引擎

NCNN是一个高效的神经网络推理框架,特别适合移动端部署。我们需要从源码构建:

git clone -b 20220721 https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init
export NCNN_DIR=${PWD}

export ANDROID_ABI=arm64-v8a

mkdir -p build_${ANDROID_ABI}
cd build_${ANDROID_ABI}

cmake -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \
      -DANDROID_ABI="${ANDROID_ABI}" \
      -DANDROID_PLATFORM=android-30 \
      -DNCNN_VULKAN=ON \
      -DNCNN_DISABLE_EXCEPTION=OFF \
      -DNCNN_DISABLE_RTTI=OFF \
      -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False ..
make -j$(nproc) install

OpenJDK(可选)

如果需要使用Java API,还需要安装OpenJDK开发环境。

MMDeploy SDK构建

下面以NCNN作为推理后端,展示如何构建Android平台的SDK和示例程序:

export ANDROID_ABI=arm64-v8a
cd ${MMDEPLOY_DIR}
mkdir -p build_${ANDROID_ABI} && cd build_${ANDROID_ABI}

cmake .. \
    -DMMDEPLOY_BUILD_SDK=ON \
    -DMMDEPLOY_BUILD_EXAMPLES=ON \
    -DMMDEPLOY_BUILD_SDK_JAVA_API=ON \
    -DOpenCV_DIR=${OPENCV_ANDROID_SDK_DIR}/sdk/native/jni/abi-${ANDROID_ABI} \
    -Dncnn_DIR=${NCNN_DIR}/build_${ANDROID_ABI}/install/lib/cmake/ncnn \
    -DMMDEPLOY_TARGET_BACKENDS=ncnn \
    -DMMDEPLOY_SHARED_LIBS=OFF \
    -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \
    -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
    -DANDROID_ABI=${ANDROID_ABI} \
    -DANDROID_PLATFORM=android-30 \
    -DANDROID_CPP_FEATURES="rtti exceptions"

make -j$(nproc) && make install

构建选项说明

  1. DMMDEPLOY_BUILD_SDK:是否构建SDK
  2. DMMDEPLOY_BUILD_EXAMPLES:是否构建示例程序
  3. DMMDEPLOY_TARGET_BACKENDS:指定推理后端,如ncnn
  4. DANDROID_ABI:指定目标架构,如arm64-v8a
  5. DANDROID_PLATFORM:指定目标Android API级别

常见问题

  1. 版本兼容性问题:确保所有依赖库的版本与MMDeploy要求的版本一致
  2. 构建失败:检查NDK路径和环境变量设置是否正确
  3. 性能问题:可以尝试启用Vulkan支持以获得更好的性能

结语

通过本文的指导,开发者可以成功构建适用于Android平台的MMDeploy SDK。构建完成后,可以将生成的库文件和示例程序集成到Android应用中,实现高效的模型推理功能。对于不同的应用场景,可以灵活调整构建选项以满足特定需求。

mmdeploy OpenMMLab Model Deployment Framework mmdeploy 项目地址: https://gitcode.com/gh_mirrors/mm/mmdeploy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶淑菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值