当前位置: 首页 > article >正文

yolov11模型在Android设备上运行【踩坑记录】

 0) 参考资料: 

https://github.com/Tencent/ncnn?tab=readme-ov-file 
https://github.com/pnnx/pnnx
https://github.com/nihui/ncnn-android-yolov5
https://github.com/Tencent/ncnn?tab=readme-ov-file

1) :将xxx.pt模型转化成 xxx.onnx

ONNX(Open Neural Network Exchange)是一种开放格式,可以让你在不同深度学习框架之间转换和共享模型 ; ONNX 适用于边缘设备和移动端,部署到 移动设备(如 Android / iOS); Android 不能直接使用 ONNX 模型,但可以通过 ONNX Runtime 或 转换为 NCNN / TFLite /

在Linux环境下执行:
    pip install ultralytics 'onnx>=1.12.0', 'onnxslim', 'onnxruntime'
    python convert_pt2onnx() 得到 xxx.onnx 模型
def convert_pt2onnx():
    OreModelPath = 'E:\code_py_workspace\mainApp\\v8n-pt_oreDusty320Cls1_imgsz640.pt'
    model = YOLO(OreModelPath)

    model.eval()

    # first way of convertion
    path = model.export(format="onnx", opset=14, dynamic=True)
    print(path)

2) 将onnx模型转换成ncnn格式 ;

下载工具 https://github.com/pnnx/pnnx/releases

解压执行:pnnx your_model.torchscript.onnx inputshape=[1,3,224,224]

# 进入pnxx目录执行:
> pnnx E:\code_py_workspace\mainApp\\v8n-pt_oreDusty320Cls1_imgsz640.onnx inputshape=[1,3,224,224]

# 或者直接在windows cmd 窗口当中写绝对路径
> E:\code_arm_workspace\pnnx-20241223-windows>pnnx E:\code_py_workspace\mainApp\\v8n-pt_oreDusty320Cls1_imgsz640.onnx inputshape=[1,3,224,224]

(*)模型执行完成后,获得xxx.bin文件(可以在Android设备上运行)

3)在Android Studio编译项目的时候遇到的问题

# 在local.properties当中写(提前准备好sdk和ndk)
# sdk,ndk可以在AS当中的SDK Manager当中下载
sdk.dir=E\:\\android-sdk-windows
ndk.dir=E\:\\android-sdk-windows/ndk/26.1.10909125
# gradle-wapper properties文件当中指定gradle版本(distributionUrl=)
# 可以提前下载好放在本地

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=file\:///E:/android_software/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

 


http://www.kler.cn/a/537031.html

相关文章:

  • 【leetcode100】岛屿的最大面积
  • npm安装electron安装报错
  • PHP PDO 教程
  • 使用Python的Tabulate库优雅地格式化表格数据
  • react-native-swiper active dot无法更新解决方案
  • ubuntu20使用tigervnc远程桌面配置记录
  • 【面试】Java高频面试题(2023最新版)
  • e2studio开发RA2E1(9)----定时器GPT配置输入捕获
  • 5.2Internet及其作用
  • EasyExcel 导出合并层级单元格
  • 技术选型对比:Redis 与 MySQL、Dubbo 与 Spring Cloud
  • Baumer工业相机堡盟相机的相机传感器芯片清洁指南
  • QT全局所有QSS样式实时切换
  • 《机器学习数学基础》补充资料:秩-零化度定理
  • 【AI应用】免费的文本转语音工具:微软 Edge TTS 和 开源版 ChatTTS 对比
  • FPGA实现SDI视频缩放转UltraScale GTH光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
  • flutter安卓打包签名
  • 客户端脚本安全设置:如何保障您的Web应用免受攻击?
  • DeepSeek与人工智能的结合:探索搜索技术的未来
  • 理解 Linux 文件结构:一份简单易懂的入门教程
  • 为什么要设计DTO类/什么时候设置DTO类?
  • 网络安全 纵向是什么意思 网络安全维度
  • qt部分核心机制
  • C#中的Dump:解锁程序调试新姿势
  • DeepSeek vs. ChatGPT:不同的诞生时间,对人工智能发展的不同影响
  • LabVIEW铅酸蓄电池测试系统