概述

官方文档:yuque.com/mnn/cn

官方文档:python-api   Python API 使用文档 · 语雀

限制:2021/12/14

当前支持Python2.7、3.5、3.6、3.7,但Windows下不支持2.7。

Tips:

3.8测试可用,numpy需要升级到1.2.0,

否则调用时可能遇到:xception: initMNN: init numpy failed

https://github.com/alibaba/MNN/issues/1500

安装

apt-get install graphviz # 可视化用的,不需要可以不安装
pip install  MNN

(1)mnn命令

(2)mnnconvert命令

模型转换:onnx2mnn

mnnconvert -f ONNX --modelFile mobilenet_v2-b0353104.onnx --MNNModel mobilenet_v2-b0353104.mnn --bizCode MNN

结果验证:验证mnn推理与onnx推理结果

import MNN
import onnx
import onnxruntime
import cv2
import numpy as np
import timedef process(img_roi):img = cv2.cvtColor(img_roi,cv2.COLOR_BGR2RGB)img = cv2.resize(img,(96,96))img = np.float32(img) / 255.0means = np.array([0.5, 0.5, 0.5])stds  = np.array([0.5, 0.5, 0.5])img  -= meansimg  /= stdsimg = np.ascontiguousarray(np.transpose(img, (2, 0, 1)))img = img[np.newaxis, ...]return imgdef inference_mnn(input_data):model_path = './mask.mnn'interpreter = MNN.Interpreter(model_path)session = interpreter.createSession()input_tensor = interpreter.getSessionInput(session)# 获取输入维度#print(input_tensor.getShape())start_time = time.time()tmp_input = MNN.Tensor((1, 3, 96, 96), MNN.Halide_Type_Float, input_data, MNN.Tensor_DimensionType_Caffe)input_tensor.copyFrom(tmp_input)interpreter.runSession(session)infer_result = interpreter.getSessionOutput(session, 'output0')end_time = time.time()print("infer time %s ms " % str((end_time - start_time) * 1000))# 获取输出维度#print(infer_result.getShape())output_data = infer_result.getData()print(output_data)return output_datadef inference_onnx(input_data):model_path = r'./mask_no_module_49_kd.onnx'onnx_session = onnxruntime.InferenceSession(model_path)input_name = []for node in onnx_session.get_inputs():input_name.append(node.name)output_name = []for node in onnx_session.get_outputs():output_name.append(node.name)input_node = 'input0'start_time = time.time()input_feed = {}input_feed[input_node] = input_dataoutput = onnx_session.run(output_name, input_feed)end_time = time.time()print("infer time %s ms " % str((end_time - start_time) * 1000))print(output)return outputif __name__ == "__main__":image_path = './a.jpg'image_data = cv2.imread(image_path)input_data = process(image_data)# mnnoutput_data = inference_mnn(input_data)# onnxoutput_data = inference_onnx(input_data)print("Done!")

20211216:onnx2mnn相关推荐

  1. CRM项目第一天(2021-12-16)1

    CRM项目第一天(2021-12-16)1 1.CRM项目介绍: 从0到1的项目开发. 涉及到的技术点: 1.前后端交互. 2.UI 3.jQuery 4.Ajax 5.Spring 6.Spring ...

  2. 日语笔记20211216

    日语笔记20211216 N5 第二课 ごめんください. 有人在么,有人在家么 ごめんなさい (御免)对不起,抱歉 ください与なさい 都有请的意思 -なさい 命令的语气较强 -ください 命令的语气较弱 ...

  3. ustc小道消息20211216

    关于2022年寒假研究生证补办和火车票优惠卡事宜的通知 各研究生同学: 为方便研究生寒假购买火车票出行,研究生院即日起至2022年1月21日的每个工作日均可办理研究生证.火车票优惠卡相关事宜.请有补办 ...

  4. 今天的一点感悟-20211216

    这是学习笔记的第 2392篇文章 早上在和老妈打电话的时候,她问起了我的体检情况,我才突然想起来我体检的事情,我的体检报告早就出来了,也打印出来了,但是没有认真的看过,而老爸老妈的体检报告早就打印出来 ...

  5. 2021-12-16 统计学-基于R(第四版)第十章课后习题记录及总结

    先声明,本博客为个人作业不一定为标准答案,仅供参考 10.1 题目如下 (1) > example10_1<-read.csv("D:/作业/统计学R/<统计学-基于R&g ...

  6. 【STP生成树】(桥ID、根桥、cost、RPC、接口ID、BPDU报文格式、端口选举举例)-20211216.20211217

    目录 一.生成树STP技术背景 1.前言 2.二层交换机的冗余性与环路 二.生成树协议 1.生成树协议​​ 2.生成树能动态感知网络拓扑的变化,调整阻塞或放行端口 生成树: 通过交互报文感知网络拓扑的 ...

  7. 2021-12-16 vue移动端卖座电影项目(十三) 使用vuex的getter筛选comingSoon的显示电影数

    1.Getter:把Store中数据处理形成新数据 Getter 可以对 Store 中已有的数据加工处理之后形成新的数据,类似 Vue 中的计算属性. Store 中数据发生变化,Getter 的数 ...

  8. 2021-12-16 《聪明的投资者》学习笔记-13.对四家上市公司的比较--普通了解,不必强求

    摘自<聪明的投资者>The Intelligent Investor(第4版) 本杰明.格雷厄姆 第13章 对四家上市公司的比较 1-盈利能力 2-稳定性 3-增长 4-财务状况 5-股息 ...

  9. 2021-12-16 混沌性检测微弱特征信号

    Duffing振子检测微弱特征信号原理 回顾 之前我们说过对于不同的待测信号,基于不同的策动力幅值,系统运动的相轨会发生不同的变化.当 γ \gamma γ处于阈值附近,很轻微的变化会使系统状态发生巨 ...

最新文章

  1. NGINX(一)内存结构
  2. 云服务器apache mysql php_服务器配置教程:阿里云服务器安装PHP环境(附PHP+MySQL+Apache后台小Demo)...
  3. Go游戏服务器开发的一些思考(九):Docker桥接网络及固定IP (二)
  4. oracle 重建em失败,11gr2 EM重建出现问题,求高人指点
  5. jsp中${}解析不了
  6. ChipKill内存技术
  7. ConfigurableListableBeanFactory
  8. 用JavaFX编写图块引擎
  9. 中央处理器属于计算机外部设备吗,不属于计算机外部设备的是
  10. “大数据与精准营销沙龙”成功在京召开
  11. 运行了9年的QQ邮箱经典功能 终于还是迎来了终止服务
  12. mysql不同的类的个数_Mysql-SQL优化-统计某种类型的个数_MySQL
  13. Luogu4495 [HAOI2018] 奇怪的背包 【扩展欧几里得算法】
  14. 这种一毛钱值多少钱?
  15. oracle数据库数据消失,,保存在数据库里的数据莫名其妙的消失
  16. 怎样保证linux内核安全性,技术|如何做好 Linux 内核安全处理
  17. 爱看小说网源码全站带数据打包ThinkPHP内核小说网站源码
  18. python中fn是什么意思_Python fn
  19. django orm 重点大全
  20. CAN bus的移植

热门文章

  1. 2021星空实施在线认证初级班(3)
  2. Opencv 学习---8种常用图像增强算法
  3. 走出大数据分析误区 寄云多行业工业案例树标杆
  4. python读取浮点数和读取文本文件
  5. TIPTOPWEB登录方式界面优化
  6. 突破垄断,打造自主核心技术,国产光纤涂覆机的崛起
  7. python 当当京东比价
  8. 用matlab求上三角矩阵的逆,现代科学运算—MATLAB语言与应用-中国大学mooc-题库零氪...
  9. 【源码分享】ASP.NET大型快运(快递)管理系统带完整文档
  10. javaMail的使用以及trying to connect to host “1xxx@163.com“, port 25, isSSL false异常