ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

YOLO人体关键点检测:Android端上部署YOLOv8-Pose YOLO11-Pose YOLO26-Pose(含源码,支持CPU和GPU)

YOLO人体关键点检测:Android端上部署YOLOv8-Pose YOLO11-Pose YOLO26-Pose(含源码,支持CPU和GPU)

YOLO人体关键点检测:Android端上部署YOLOv8-Pose YOLO11-Pose YOLO26-Pose(含源码,支持CPU和GPU)

目录

YOLO人体关键点检测:Android端上部署YOLOv8-Pose YOLO11-Pose YOLO26-Pose(含源码,支持CPU和GPU)

1. 前言

2. 部署框架MNN

3. 导出MNN模型

4. Android端上部署模型

(1) 版本说明

(2) JNI接口实现

(3) 性能测试

(4) 一些异常错误解决方法

5. Android测试效果

6. MNN C++ 部署模型

7.项目源码下载


1. 前言

在边缘计算场景中,模型部署的灵活性和性能是开发者最关注的两个核心问题。Ultralytics 系列模型凭借其出色的精度与速度平衡,已成为目标检测领域的事实标准。而 MNN(Mobile Neural Network)作为阿里巴巴开源的轻量级推理引擎 ,凭借其极小的体积和跨平台能力,成为了移动端和嵌入式设备部署 YOLO 系列模型的理想选择。

本文将深入探讨如何使用 MNN 的 C++ API 在Android手机上部署人体关键点检测模型,如YOLOv8n-pose、YOLO11n-pose 以及最新的 YOLO26n-pose 模型,并覆盖 CPU 与 GPU(OpenCL)两种推理后端。Android版本的YOLO模型推理支持CPU和GPU加速,在GPU(OpenCL)加速下,可以达到实时的检测效果,CPU(4线程)约120ms左右,GPU约45ms左右 ,基本满足业务的性能需求。

下表给出人体关键点检测模型YOLOv8n-pose、YOLO11n-pose和YOLO26n-pose模型,在Android端上使用MNN部署的性能测试(含图像预处理+模型推理+后处理等),开启GPU(OpenCL)加速可以达到准实时的检测效果。如果你想进一步提升性能,可以将模型输入分辨率640×640改为416×416。

模型input-sizeparams(M)CPU(4线程)GPU(OpenCL)
YOLOv8n-pose640×6403.15M88ms51ms
YOLO11n-pose640×6402.62M85ms50ms
YOLO26n-pose640×6402.41M82ms45ms

先展示一下Android Demo检测的效果

Android APP Demo体验:https://download.csdn.net/download/guyuealian/93484113

【尊重原创,转载请注明出处】https://blog.csdn.net/guyuealian/article/details/166251241


2. 部署框架MNN

GitHub:https://github.com/alibaba/MNN

MNN 是阿里巴巴集团开源的轻量级深度学习推理框架,旨在为移动端、嵌入式设备提供高效的模型部署能力。它已在**宝、**猫、钉钉等 30 多个阿里系应用中大规模使用,每天运行数百万次推理。MNN 支持 TensorFlow、Caffe、ONNX 等主流模型格式转换,兼容 CNN、RNN、GAN、Transformer 等常见网络结构,并针对 CPU、GPU、NPU 等硬件后端进行了深度优化。 在 CPU 端,MNN 不依赖第三方计算库,通过手写汇编、Winograd 卷积、多线程调度和内存复用等方式充分发挥 ARM CPU 算力;在 GPU 端,它支持 OpenCL、Vulkan、Metal、CUDA 等多种加速后端,其中 Android 平台可使用 OpenCL/Vulkan,iOS/macOS 平台可使用 Metal,PC/服务器端还可使用 CUDA。 对于需要更高性能的场景,开启 GPU 加速后推理速度通常可提升数倍,部分机型甚至可获得更明显的加速效果。

此外,MNN 还支持 INT4/INT8/FP16 等低精度量化、算子融合、图优化和异构计算,能够在保持模型精度的同时显著降低推理延迟和内存占用。 结合其轻量的库体积、完善的 Python/C++ API 以及跨平台部署能力,MNN 非常适合作为本项目 Android 端推理后端。


3. 导出MNN模型

在开始 C++ 部署之前,首先需要将训练好的 PyTorch 模型导出为 MNN 格式。Ultralytics 提供了便捷的导出接口,支持 FP32、FP16 和 INT8 三种精度。

以 YOLO26n-pose 为例,导出命令如下:

需要安装依赖库: pip install onnx onnxsim onnxruntime mnn

from ultralytics import YOLO # 加载模型 model = YOLO("yolo26n-pose.pt") # 导出为 MNN 格式(默认 FP32) model.export(format="mnn") # 或者导出 FP16 量化版本 model.export(format="mnn", half=True) # 或者导出 INT8 量化版本 model.export(format="mnn", int8=True)

对于 YOLOv8 和 YOLO11,导出方式完全一致,只需替换对应的.pt模型文件即可导出的*.mnn文件包含了模型结构和权重。


4. Android端上部署模型

(1) 版本说明

Android Studio开发版本

​​

请参考:Android项目常见问题解决办法

(2) JNI接口实现

Android Demo源码支持YOLOv8n-pose、 YOLO11n-pose以及YOLO26n-pose等模型。部署框架采用MNN,支持多线程CPU和GPU加速推理,在普通手机上可以实时处理。Android源码核心算法部分均采用C++实现,上层通过JNI接口调用。

package com.cv.dl.model; import android.graphics.Bitmap; public class Detector { static { System.loadLibrary("cvdl-lib"); } /*** * 初始化检测模型 * @param root:模型文件的根目录,放在assets文件夹下 * @param det_model: 检测模型 * @param rec_model: 识别模型(可选) * @param model_type:模型类型 * @param num_thread:开启线程数 * @param useGPU:是否开启GPU进行加速 */ public static native void init(String root, String det_model, String rec_model, int model_type, int num_thread, boolean useGPU); /*** * 进行检测(用于静态图) * @param bitmap 图像(bitmap),ARGB_8888格式 * @param score_thresh:置信度阈值 * @param iou_thresh: IOU阈值 * @return */ public static native FrameInfo[] detect(Bitmap bitmap, float score_thresh, float iou_thresh); }

如果你想在这个Android Demo部署你自己训练的YOLO模型,你可将训练好的Pytorch模型转换成MNN模型,然后把MNN模型代替你模型即可。

(3) 性能测试

下表给出人体关键点检测模型YOLOv8n-pose、YOLO11n-pose和YOLO26n-pose模型,在Android端上使用MNN部署的性能测试(含图像预处理+模型推理+后处理等),开启GPU(OpenCL)加速可以达到准实时的检测效果。如果你想进一步提升性能,可以将模型输入分辨率640×640改为416×416。

模型input-sizeparams(M)CPU(4线程)GPU(OpenCL)
YOLOv8n-pose640×6403.15M88ms51ms
YOLO11n-pose640×6402.62M85ms50ms
YOLO26n-pose640×6402.41M82ms45ms

(4) 一些异常错误解决方法

项目开发常见的问题,请参考:Android项目常见问题解决办法


5. Android测试效果

Android APP Demo体验:https://download.csdn.net/download/guyuealian/93484113

APP在普通Android手机上可以达到实时的效果,CPU(4线程)约120ms左右,GPU约50ms左右 ,基本满足业务的性能需求。如果你想进一步提升性能,可以将模型输入分辨率640×640改为416×416。


6. MNN C++ 部署模型

如果你需要使用MNN C++部署YOLOv8n-pose、YOLO11n-pose和YOLO26n-pose等模型,请参考:https://panjinquan.blog.csdn.net/article/details/166247855


7.项目源码下载

【Android APP体验】https://download.csdn.net/download/guyuealian/93441570

如需下载项目源码,WX请关注【AI吃大瓜】,回复【yolopose】即可下载

Android项目源码内容包含:

  1. 项目MNN Android源码支持人体关键点检测模型,如YOLOv8n-pose / YOLO11n-pose / YOLO26n-pose模型推理。你可以根据自己需要更改模型文件(model_file)和修改模型参数配置(YOLOParam)
  2. Android Demo源码支持CPU和GPU运行,CPU(4线程)YOLO26n 约120ms左右,GPU OpenCL约45ms左右。如果你想进一步提升性能,可以将模型输入分辨率640×640改为416×416。
  3. Android Demo支持图片,视频,摄像头测试
  4. OpenCV+base-utils+MNN所有依赖库都已经配置好,可直接build构建APP运行
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进