🥭 移动端MNN部署学习笔记。支持Android与iOS。

Overview

🚀 如果有帮助,点个star!

移动端MNN部署,摄像头实时捕获视频流进行检测。

iOS:

  • Xcode 12.4
  • macOS 11.2.3
  • iPhone 6sp 13.5.1

Android:

  • Android Studio 4.1.1
  • Win10 20H2
  • CPU:Qualcomm 710 GPU:Adreno 616

安卓已经增加权限申请,但如果还是闪退请手动确认下相关权限是否允许。

Android

从界面中选择需要测试的模型。

iOS

从界面中选择需要测试的模型。

模型

model android iOS from other
NanoDet yes yes Github NCNN TNN

Android:

  • 由于手机性能、图像尺寸等因素导致FPS在不同手机上相差比较大。该项目主要测试MNN框架的使用,具体模型的转换可以去MNN官方查看转换教程。
  • 由于opencv库太大只保留 arm64-v8a/armeabi-v7a 有需要其它版本的自己去官方下载。
  • AS版本不一样可能编译会有各种问题,如果编译错误无法解决、建议使用AS4.0以上版本尝试一下。

iOS:

  • 如果缺少模型请从 "android_MNN_Demo\app\src\main\assets" 复制 .mnn 文件到 "iOS_MNN_Demo\MNNDemo\res" 下。
  • iOS如果opencv2.framework有用到也需要重新下载并替换到工程。

由于MNN不同版本可能会出现功能异常请注意版本,当前使用的是1.0版本。

懒人本地转换(不会上传模型): xxxx -> mnn

轻量级OpenCV:opencv-mobile

🎨 截图

Android iOS

Android

nanodet

iOS

NanoDet

感谢:

You might also like...
Comments
  • What is MNN version do u use in this repo

    What is MNN version do u use in this repo

    HI thanks for your great works, but I'm wondering what is MNN version do u use in this repo, I tried to load model converted using MNN 1.2.0 this repo keep crashing, thank you

    opened by kikirizki 2
  • 大佬求联系

    大佬求联系

    大佬,看了您写的MNN教程,感觉写得很不错,很有帮助。我是知识星球【CV技术指南】的编辑,想问问您能否允许我转载到知识星球中?另外,CV技术指南有上万的计算机视觉相关研究者和从业者,一直在为促进CV行业的发展贡献力量,有很多大佬都在积极参与维护这个社区或组织。目前正在计划对计算机视觉的各种技术做一个完整的技术教程系列,包括CUDA、tensorRT、TVM、openVINO、MNN、openMM、PaddlePaddle、Pytorch源码解读、caffe源码解读、libtorch、Oneflow、Detectron等,计划每个教程由一位大佬来完成,教程将声明作者,以提高您的行业影响力,期望该教程成为大家公认的只要学这个技术就来看这个教程的口碑与影响力,就像视觉SLAM十四讲那样。所以想邀请您为了我们MNN的技术教程进行投稿,当然其他教程也可以,我们也可以一起梳理下写的内容一起交流。此外,我们也有一定的稿费。如果您有兴趣的话,可以考虑一下或者了解更详细的情况。

    opened by ZZHHogan 3
  • 使用nanodet训练自己模型,移植到安卓demo中出现闪退报错

    使用nanodet训练自己模型,移植到安卓demo中出现闪退报错

    • 参照项目nanodet
    • 修改代码如下:
    // NanoDet.h  75行
        std::vector<HeadInfo> heads_info{
                // cls_pred|dis_pred|stride
    //            {"792", "795", 8},
    //            {"814", "817", 16},
    //            {"836", "839", 32},
                {"cls_pred_stride_8", "dis_pred_stride_8", 8},
                {"cls_pred_stride_16", "dis_pred_stride_16", 16},
                {"cls_pred_stride_32", "dis_pred_stride_32", 32},
        };
    
    // MainActivity 315行
        protected void initModel() {
            String path = this.getFilesDir() + File.separator;
            if (USE_MODEL == NANODET) {
    //            NanoDet.init("nanodet_320.mnn", path, USE_GPU);
                NanoDet.init("nanodet_jpq_mm.mnn", path, USE_GPU);
            }
        }
    
    // 模型输出label及num_class均有修改
    
    • 模型转换使用项目中懒人转换工具 流程为torch->onnx->mnn
    • 报错信息如下:
    I/WZT_MNN: model path:/data/user/0/com.wzt.mnn/files/nanodet_jpq_mm.mnn
    A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 9811 (com.wzt.mnn), pid 9811 (com.wzt.mnn)
    

    请问该如何解决呢?谢谢

    opened by XiongfeiQin 11
Owner
teng
Good Good Study,Day Day Up。
teng
🍉 移动端TNN部署学习笔记,支持Android与iOS。

⭐ 移动端TNN部署,摄像头实时捕获视频流进行检测。 iOS: Xcode 11.5 macOS 10.15.4 iPhone 6sp 13.5.1 Android: Android Studio 4.1.1 Win10 20H2 Meizu 16x 8.1.0 (

teng 58 Nov 10, 2022