Ubuntu 18.04 LTS环境下 MNN 的编译与使用

环境 Ubuntu 18.04 LTS

本文主要介绍从github上下载 MNN 后,如何快速的进行编译

1.安装C/C++编译器 gcc 与 NDK

#首先安装好gcc, 用来编译 MNN 中的工具等内容
sudo apt install build-essential
gcc --version

#其次, 安装NDK或者安装Android Studio, 然后安装NDK插件,
#在https://developer.android.com/ndk/downloads/下载安装NDK,建议使用最新稳定版本
#NDK用来编译Android版本的 libmnn.so

  1. 安装protobuf(3.0以上) (Protocol Buffers - Google’s data interchange format)

#安装依赖工具
sudo apt-get install autoconf automake libtool curl make g++ unzip

#编译安装protobuf
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh

./configure
make
make check
sudo make install
sudo ldconfig
  1. 编译 Linux 工具
    cd /path/to/MNN/

#编译flatbuffer(pc平台编译器)等三方工具以及其他内容
./schema/genrate.sh
./tools/script/get_model.sh (可选, 模型仅demo工程需要)
mkdir build && cd build

#编译 MNN 的各种benchmark, converter, quantools, demo, ealuation, test, demo等内容
cmake … -DMNN_BUILD_CONVERTER=true -DMNN_BUILD_BENCHMARK=true -DMNN_BUILD_QUANTOOLS=true -DMNN_EVALUATION=true -DMNN_BUILD_TEST=true -DMNN_BUILD_TRAIN=true -DMNN_BUILD_TOOLS=true -DMNN_BUILD_DEMO=true
make -j4

  1. 编译Android 库
    #属于交叉编译, 原理是cmake 的 CMAKE_TOOLCHAIN_FILE指定交叉编译文件 $ANDROID_NDK/build/cmake/android.toolchain.cmake (Android Studio 使用 cmake 也是这个原理)
    #所以事先需要在 ~/.bashrc 或者 ~/.bash_profile 中设置Android NDK 环境变量, 比如 export ANDROID_NDK=/opt/Android/Sdk/ndk/21.1.6352462

cd project/android

#编译armv7动态库:
mkdir build_32 && cd build_32 && …/build_32.sh

#编译armv8动态库:
mkdir build_64 && cd build_64 && …/build_64.sh

  1. 编译 iOS 库
    在 macOS下, 用xcode打开 project/ios/MNN.xcodeproj, 点击编译即可

  2. 查看内容

#查看 /MNN/build 目录内容
root@hemmingway-YangTianM4000e-06:/home/hemmingway/workspace_mnn/MNN/build# ls

backendTest.out cmake_install.cmake MNNConvert pictureRotate.out testModel.out
benchmarkExprModels.out dataTransformer.out MNNDump2Json quantized.out testModelWithDescrisbe.out
benchmark.out express MNNV2Basic.out rawDataTransform.out timeProfile.out
checkInvalidValue.out expressDemo.out mobilenetTest.out run_test.out tools
classficationTopkEval.out getPerformance.out multiPose.out runTrainDemo.out train.out
CMakeCache.txt libMNN.so OnnxClip segment.out transformer.out
CMakeFiles Makefile pictureRecognition.out TestConvertResult

#查看 MNN 的模型转换工具 MNNConvert 的使用
root@hemmingway-YangTianM4000e-06:/home/hemmingway/workspace_mnn/MNN/build# ./MNNConvert -h

Usage:
MNNConvert [OPTION…]

-h, --help Convert Other Model Format To MNN Model

-v, --version show current version
-f, --framework arg model type, ex: [TF,CAFFE,ONNX,TFLITE,MNN]
–modelFile arg tensorflow Pb or caffeModel, ex: *.pb,*caffemodel
–prototxt arg only used for caffe, ex: *.prototxt
–MNNModel arg MNN model, ex: *.mnn
–fp16 save Conv’s weight/bias in half_float data type
–benchmarkModel Do NOT save big size data, such as Conv’s weight,BN’s
gamma,beta,mean and variance etc. Only used to test
the cost of the model
–bizCode arg MNN Model Flag, ex: MNN
–debug Enable debugging mode.
–forTraining whether or not to save training ops BN and Dropout,
default: false

root@hemmingway-YangTianM4000e-06:/home/hemmingway/workspace_mnn/MNN/build#

#查看 /MNN/project/android 目录内容
root@hemmingway-YangTianM4000e-06:/home/hemmingway/workspace_mnn/MNN/project/android# ls
build_32_ndk14.sh build_32_vulkan.sh build.gradle gradlew rTest.sh src
build_32.sh build_64 build_vulkan.sh Hmacro.py run.sh testBasic.sh
build_32_shared.sh build_64.sh CMakeExports.txt nativepub.gradle settings.gradle testCommon.sh
build_32_stl_shared.sh build_gnu_32.sh gradle pullResult.sh speedTest.sh updateTest.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳多管齐下破解“融资难”

来源:深圳特区报 2018年01月09日 版次:A13■ 深圳特区报记者 沈勇 文/图“原来只能贷款850万元,后来却顺利地贷到1100万,而且利息并不高。”深圳一家高新技术企业的丁先生对自己在深圳某贷款服务公司的融资体验赞不绝口&#xff0…

建立时间和保持时间的模型分析

建立时间和保持时间的模型分析 起点是源触发器D1的采样时刻,终点是目的触发器D2的采样时刻,假设起点已经满足了建立时间和保持时间要求,现在分析终点采样时刻是否同样满足要求。 其中 Tco:数据正确采样后从D端到达Q端的延时,触发器固有属性,不可改变。TDelay:D1输出端…

虚拟机Ubuntu18.04 root下 连接 windows 中 winScp

Windows 下通过 WinSCP 和 Ubuntu 18.04 连接传输文件 基本原理是Windows下使用 ssh/scp 协议客户端软件WinSCP, Linux/Ubuntu 系统开启ssh/scp协议server服务. 先查看自己Linux/Ubuntu中是否有 ssh服务 如果没有的话先安装 apt-get install openssh-server安装完之后 先手…

年关节点,小心这9大贷款骗局

准备过年了,骗子也出来活动了,作为骗钱的高发区,贷款诈骗就是诈骗团伙重点盯住的肥肉。大家近段是否会经常接收到这样的短信:“银行贷款快速办理”、“无需抵押”、“当天放款”……岁末年初,此类推荐贷款的骚扰电话与…

全民熬夜的时代,如何做到早睡?

-1-2018,给自己定了一个小目标:坚持早睡。翻看2017年早睡的打卡记录,坏消息是有近一半的时间都超过11点入睡,而好消息就是,我每月早睡的完成率在稳步提升。改变要从暑假说起,那段时间自己状态很差&#xff…

电机的简介

电机的简介 通电导体在磁场中受到力的作用–安培力 洛仑磁力的合力。

编译Android版本TensorFlow

在Ubuntu 18.04 LTS 下编译Tensorflow的Android库的步骤: 安装Android Studio/Android sdk安装Android NDK(Android NDK可以单独安装也可以通过Android Studio的SDK插件安装, 怎么安装略)安装 能够编译Tensorflow的对应版本的Bazel, TensorFlow和 Bazel 有对应关系…

银监会周末突发4号文件,18年贷款比想象的要难

2018年1月13日,星期六,当大家都还在过周末的时候,银监会突然印发了《关于进一步深化整治银行业市场乱象的通知》(以下简称《通知》),通知要求在全国范围内进一步深化整治银行业市场乱象,切实巩固…

FPGA内部硬件结构与代码的关系

FPGA内部硬件结构与代码的关系 I/O的映射 给一个输入信号,然后不进行任何逻辑运算直接输出。 module line(input wire in,output wire out);assign out = in; endmodule组合逻辑的映射 module line(input wire in1,input wire in2,output wire out);assign out = in1 &a…

消费金融资金断流,银行抽贷、通道暂停,P2P离场

最近消费金融发展可谓焦躁不安,监管加压,资金断流,客户流失、逾期飙升,来自各方面的压力,让消费金融,特别是现金贷的出路前途未卜。01消费金融在中国有点水土不服消费金融在我国的发展是最近几年才兴起的&a…

SKF密码设备研究

密码设备 mToken GM3000 国密身份认证锁是龙脉科技自主研发设计支持国密算法、完全遵照国家密码管理局颁布的《智能IC卡及智能密码钥匙密码应用接口规范》要求设计的USB Key,采用国产高性能智能卡芯片,内置SSF33、SM1、SM2、SM3、SM4等国产算法&#xf…

微信礼仪测试,你能及格吗?

插图:annie.Z“群主,我可以打个广告吗?”还没等我回复,对方已经把自己产品的介绍丢在了微信群。提醒他撤回,刚刚还在发信息的他突然不见了。2分钟后又出现,“不好意思啊群主,超过2分钟不能撤回了…

AMBA总线介绍

AMBA总线介绍 系统总线简介 系统芯片中各个模块之间需要要有接口来连接 总线作为子系统之间共享的通信链路 优点:低成本,方便易用 缺点:会造成性能颈瓶 AMBA:Advanced Microcontroller Bus Architecture。片总线的标准 定义了三…

gradle之gradlew最全指令攻略

Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建,除此之外我们可…

去杠杆高歌猛进,借呗会倒闭吗?

最近马云烦心事貌似挺多的,从收购美国大型汇款公司MoneyGram(速汇金)被否,到支付宝年度账单默认勾选协议“惹祸”被监管约谈,再到消费金融业务因高杠杆或触及监管红线引发关注,蚂蚁金服的2018年开年看起来不…

能过好每一天的人,都不会混得太差

-1-朋友发来一张很有意思的图片。计划2018年坚持写日记,算了,还是坚持发朋友圈吧。计划读10本书,算了,9本吧,要不干脆8本?不行就7本?好了好了,只读1本。……如果没有猜错的话&#x…

贷款杠杆为什么非去不可?危险比你想象的要恐怖

最近金融监管势头很猛,一浪高过一浪,去杠杆,降风险已经成为了当前监管的主调。近日,银监会主席郭树清向媒体透露2018年的监管风向:监管部门要着力抑制居民杠杆率,并提出要坚决打好防范化解重大风险。那为什…

AMBA AHB介绍

AMBA AHB介绍 AHB是为提出高性能可综合设计的要求而产生的新一代AMBA总线。它是一种支持多总线主机和提供高带宽操作的高性能总线。 AMBA AHB实现了高性能,高时钟频率系统的以下特征要求: 突发传输分块处理单周期总线主机移交非三态执行更宽的数据总线…

春节期间,哪些信用卡取现不用手续费?

马上要过年了,用钱的地方多了去,一不小心口袋就变得空空了,如果过年没钱了怎么办呢?借亲戚?能拉下那个脸吗?借贷款?过年期间贷款机构关门歇业!打牌赢钱?你想多了&#xf…

碎片化学习的三大障碍及破解之道

-1-周末参加线下活动,因为一直专注时间管理文章的分享,有幸作为嘉宾讲了一点自己的感悟。主办方给的主题叫做:如何规划你的2018年。接触时间管理越久,越清楚地认识到自我的局限,明白做计划也是一项非常重要的能力&…