)
YOLO端上部署MNN Android部署YOLOv8 YOLO11 YOLO26(含源码支持CPU和GPU)目录YOLO端上部署MNN Android部署YOLOv8 YOLO11 YOLO26(含源码支持CPU和GPU)1. 前言2. 部署框架MNN3. 导出MNN模型4. Android端上部署模型1 版本说明2 JNI接口实现3 性能测试4 一些异常错误解决方法5. Android测试效果6. MNN C 部署模型7.项目源码下载1. 前言在边缘计算场景中模型部署的灵活性和性能是开发者最关注的两个核心问题。Ultralytics 系列模型凭借其出色的精度与速度平衡已成为目标检测领域的事实标准。而 MNNMobile Neural Network作为阿里巴巴开源的轻量级推理引擎 凭借其极小的体积和跨平台能力成为了移动端和嵌入式设备部署 YOLO 系列模型的理想选择。本文将深入探讨如何使用 MNN 的 C API 在Android手机上部署 YOLOv8、YOLO11 以及最新的 YOLO26 模型并覆盖 CPU 与 GPUOpenCL两种推理后端。Android版本的YOLO模型推理支持CPU和GPU加速在GPU(OpenCL)加速下可以达到实时的检测效果CPU(4线程)约120ms左右GPU约45ms左右 基本满足业务的性能需求。下表给出YOLOv8n-seg YOLO11n-seg和YOLO26n-seg实例分割模型在Android端上使用MNN部署的性能测试(含图像预处理模型推理后处理等)开启GPU(OpenCL)加速可以达到准实时的检测效果。如果你想进一步提升性能可以将模型输入分辨率640×640改为416×416。模型input-sizeparams(M)CPU(4线程)GPU(OpenCL)YOLOv8n-seg640×6403.15M88ms51msYOLO11n-seg640×6402.62M85ms50msYOLO26n-seg640×6402.41M82ms45ms先展示一下Android Demo检测的效果Android APP Demo体验https://download.csdn.net/download/guyuealian/93441570【尊重原创转载请注明出处】https://blog.csdn.net/guyuealian/article/details/1656277392. 部署框架MNNGitHubGitHub - alibaba/MNN: MNN: A blazing-fast, lightweight inference engine battle-tested by Alibaba, powering high-performance on-device LLMs and Edge AI. · GitHubMNN 是阿里巴巴集团开源的轻量级深度学习推理框架旨在为移动端、嵌入式设备提供高效的模型部署能力。它已在**宝、**猫、钉钉等 30 多个阿里系应用中大规模使用每天运行数百万次推理。对于 YOLO 系列部署而言MNN 有几个关键优势极致的轻量性。MNN 的核心库在 Android 上仅约 400 KBiOS 上约 5 MB这意味着它几乎不会增加应用的体积负担。完整的代际覆盖。Ultralytics 官方 C 示例中MNN 是唯一覆盖全部任务和全代际模型YOLOv8/YOLO11/YOLO26的轻量级后端。更关键的是MNN 示例能够自动识别YOLOv8/YOLO11 的 grid 输出格式与 YOLO26 的 end-to-endNMS-free输出格式无需手动切换。CPU 与 GPU 双支持。MNN 支持 CPU含多线程优化以及 OpenCL/Vulkan 的 GPU 加速。对于需要更高性能的场景开启 OpenCL 后推理速度可提升数倍。3. 导出MNN模型在开始 C 部署之前首先需要将训练好的 PyTorch 模型导出为 MNN 格式。Ultralytics 提供了便捷的导出接口支持 FP32、FP16 和 INT8 三种精度。以 YOLO26 为例导出命令如下需要安装依赖库 pip install onnx onnxsim onnxruntime mnnfrom ultralytics import YOLO # 加载模型 model YOLO(yolo26n.pt) # 导出为 MNN 格式默认 FP32 model.export(formatmnn) # 或者导出 FP16 量化版本 model.export(formatmnn, halfTrue) # 或者导出 INT8 量化版本 model.export(formatmnn, int8True)对于 YOLOv8 和 YOLO11导出方式完全一致只需替换对应的.pt模型文件即可导出的*.mnn文件包含了模型结构和权重。4. Android端上部署模型1 版本说明Android Studio开发版本请参考Android项目常见问题解决办法2 JNI接口实现Android Demo源码支持YOLOv8 YOLO11 YOLO26等模型支持目标检测实例分割任务。部署框架采用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 图像bitmapARGB_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-seg YOLO11n-seg和YOLO26n-seg实例分割模型在Android端上使用MNN部署的性能测试(含图像预处理模型推理后处理等)开启GPU(OpenCL)加速可以达到准实时的检测效果。如果你想进一步提升性能可以将模型输入分辨率640×640改为416×416。模型input-sizeparams(M)CPU(4线程)GPU(OpenCL)YOLOv8n-seg640×6403.15M88ms51msYOLO11n-seg640×6402.62M85ms50msYOLO26n-seg640×6402.41M82ms45ms4 一些异常错误解决方法项目开发常见的问题请参考Android项目常见问题解决办法5. Android测试效果【Android APP体验】https://download.csdn.net/download/guyuealian/93441570APP在普通Android手机上可以达到实时的效果CPU(4线程)约120ms左右GPU约50ms左右 基本满足业务的性能需求。如果你想进一步提升性能可以将模型输入分辨率640×640改为416×416。6. MNN C 部署模型如果你需要使用MNN C部署YOLO系列模型请参考https://blog.csdn.net/guyuealian/article/details/1656091457.项目源码下载【Android APP体验】https://download.csdn.net/download/guyuealian/93441570如需下载项目源码请关注【AI吃大瓜】回复【yolo】即可下载Android项目源码内容包含项目MNN Android源码支持YOLOv8n / YOLO11n / YOLO26n目标检测模型和实例分割模型推理。你可以根据自己需要更改模型文件(model_file)和修改模型参数配置(YOLOParam)Android Demo源码支持CPU和GPU运行CPU(4线程)YOLO26n 约120ms左右GPU OpenCL约45ms左右。如果你想进一步提升性能可以将模型输入分辨率640×640改为416×416。Android Demo支持图片视频摄像头测试OpenCVbase-utilsMNN所有依赖库都已经配置好可直接build构建APP运行