开放神经网络交换(ONNX)工具
开放神经网络交换(ONNX)工具
开放神经网络交换(ONNX)是一个开放的生态系统,它使人工智能开发人员能够在项目发展过程中选择正确的工具。ONNX为人工智能模型提供了一种开源格式,包括深度学习和传统ML,它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型的定义。目前我们关注的是推断(评分)所需的能力。
ONNX受到广泛支持,可以在许多框架、工具和硬件中找到。实现不同框架之间的互操作性和简化从研究到生产的路径有助于提高人工智能社区的创新速度。
参考链接:https://github.com/onnx/onnx
Use ONNX
Learn about the ONNX spec
- Overview
- ONNX intermediate representation spec
- Versioning principles of the spec
- Operators documentation
- Python API Overview
Programming utilities for working with ONNX Graphs
- Stay up to date with the latest ONNX news. [Facebook] [Twitter]
- A binary build of ONNX is available from Conda, in conda-forge:
- You will need an install of Protobuf and NumPy to build ONNX. One easy way to get these dependencies is via Anaconda:
- You can then install ONNX from PyPi (Note: Set environment variable
ONNX_ML=1for onnx-ml): - Alternatively, you can also build and install ONNX locally from source code:
- Note: When installing in a non-Anaconda environment, make sure to install the Protobuf compiler before running the pip installation of onnx. For example, on Ubuntu:
- Step 1: Build Protobuf locally
- Step 2: Build ONNX
- If you would prefer to use Protobuf from conda-forge instead of building Protobuf from source, you can use the following instructions.
- If you are building ONNX on an ARM 64 device, please make sure to install the dependencies appropriately.
- After installation, run
- to verify it works.
- Environment variables:
USE_MSVC_STATIC_RUNTIME(should be 1 or 0, not ON or OFF) - CMake variables:
ONNX_USE_PROTOBUF_SHARED_LIBS,Protobuf_USE_STATIC_LIBS - If
ONNX_USE_PROTOBUF_SHARED_LIBSis ON thenProtobuf_USE_STATIC_LIBSmust be OFF andUSE_MSVC_STATIC_RUNTIMEmust be 0.
IfONNX_USE_PROTOBUF_SHARED_LIBSis OFF then
Protobuf_USE_STATIC_LIBSmust be ON andUSE_MSVC_STATIC_RUNTIMEcan be 1 or 0. - Note that
theimport onnxcommand
does not work from the source checkout directory; in this case you'll seeModuleNotFoundError: No module named. Change into another directory to fix
'onnx.onnx_cpp2py_export'
this error. - Building
ONNX on Ubuntu works well, but on CentOS/RHEL and other ManyLinux systems, you
might need to open the CMakeLists
file and replace all instances of/libwith/lib64. - If you want
to build ONNX on Debug mode, remember to set the environment variableDEBUG=1. For debug versions of the dependencies,
you need to open the CMakeLists
file and append a letterdat the end
of the package name lines. For example,NAMESwould become
protobuf-liteNAMES.
protobuf-lited - You can also use the onnx-dev docker image
for a Linux-based installation without having to worry about dependency
versioning. - ONNX uses pytest as test
driver. In order to run tests, you will first need to install pytest: - After installing pytest, use the following command to run tests.
- Check out the contributor
guide for instructions.
· Installation
·
Binaries
·conda install -c conda-forge onnx
· Source
· Linux and MacOS
·# Use conda-forge protobuf, as default doesn't come with protoc
·conda install -c conda-forge protobuf numpy
·pip install onnx
·git clone https://github.com/onnx/onnx.git
·cd onnx
·git submodule update --init --recursive
·python setup.py install
·sudo apt-get install protobuf-compiler libprotoc-dev
·pip install onnx
· Windows
· 如果在Windows上从源代码构建ONNX,建议也将Protobuf作为静态库在本地构建。与conda-forge一起发布的版本是一个DLL,这是一个冲突,因为ONNX希望它是一个静态库。
·git clone https://github.com/protocolbuffers/protobuf.git
·cd protobuf
·git checkout 3.9.x
·cd cmake
·# Explicitly set -Dprotobuf_MSVC_STATIC_RUNTIME=OFF to make sure protobuf does not statically link to runtime library
·cmake -G "Visual Studio 15 2017 Win64" -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=<protobuf_install_dir>
·msbuild protobuf.sln /m /p:Configuration=Release
·msbuild INSTALL.vcxproj /p:Configuration=Release
·# Get ONNX
·git clone https://github.com/onnx/onnx.git
·cd onnx
·git submodule update --init --recursive
·
·# Set environment variables to find protobuf and turn off static linking of ONNX to runtime library.
·# Even better option is to add it to user\system PATH so this step can be performed only once.
·# For more details check https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2017
·set PATH=<protobuf_install_dir>\bin;%PATH%
·set USE_MSVC_STATIC_RUNTIME=0
·
·# Optional: Set environment variable `ONNX_ML=1` for onnx-ml
·
·# Build ONNX
·python setup.py install
· Build ONNX on Windows with Anaconda
·# Use conda-forge protobuf
·conda install -c conda-forge numpy libprotobuf=3.11.3 protobuf
·
·# Get ONNX
·git clone https://github.com/onnx/onnx.git
·cd onnx
·git submodule update --init --recursive
·
·# Set environment variable for ONNX to use protobuf shared lib
·set USE_MSVC_STATIC_RUNTIME=0
·set CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=ON -DProtobuf_USE_STATIC_LIBS=OFF -DONNX_USE_LITE_PROTO=ON"
·
·# Build ONNX
·# Optional: Set environment variable `ONNX_ML=1` for onnx-ml
·
·python setup.py install
· Build ONNX on ARM 64
·pip install cython protobuf numpy
·sudo apt-get install libprotobuf-dev protobuf-compiler
·pip install onnx
· Verify Installation
·python -c "import onnx"
· Common Errors
· Testing
·pip install pytest nbval
·pytest
· Development
开放神经网络交换(ONNX)工具的更多相关文章
- 开放式神经网络交换-ONNX(下)
开放式神经网络交换-ONNX(下) 计算节点由名称.它调用的算子operator的名称.命名输入的列表.命名输出的列表和属性列表组成. 输入和输出在位置上与算子operator输入和输出相关联.属性通 ...
- 开放式神经网络交换-ONNX(上)
目的 本文档包含ONNX语义的规范性规范. "onnx"文件夹下的.proto和.proto3文件构成了用协议缓冲区定义语言编写的语法规范..proto和.proto3文件中的注释 ...
- LabVIEW开放神经网络交互工具包【ONNX】,大幅降低人工智能开发门槛,实现飞速推理
前言 前面给大家介绍了自己开发的LabVIEW AI视觉工具包,后来发现有一些onnx模型无法使用opencv dnn加载,且速度也偏慢,所以就有了今天的onnx工具包,如果你想要加载更多模型,追求更 ...
- CentOS7 开放端口 通过 firewall-cmd 工具来操作防火墙
CentOS7 提供了 firewall-cmd 工具来操作防火墙. firewall-cmd --permanent:表示设置为持久,配置被写入配置文件,跨重启,不会立即生效,重新加载配置后生效.不 ...
- [.NET6]使用ML.NET+ONNX预训练模型整活B站经典《华强买瓜》
最近在看微软开源的机器学习框架ML.NET使用别人的预训练模型(开放神经网络交换格式.onnx)来识别图像,然后逛github发现一个好玩的repo.决定整活一期博客. 首先还是稍微科普一下机器学习相 ...
- ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四
[导读]Kears作者François Chollet刚刚在Twitter贴出最近三个月在arXiv提到的深度学习框架,TensorFlow不出意外排名第一,Keras排名第二.随后是Caffe.Py ...
- 机器学习框架ML.NET学习笔记【8】目标检测(采用YOLO2模型)
一.概述 本篇文章介绍通过YOLO模型进行目标识别的应用,原始代码来源于:https://github.com/dotnet/machinelearning-samples 实现的功能是输入一张图片, ...
- ApacheCon 首次亚洲大会 —— Incubator 专场介绍
Apache 孵化器即为想要进入 Apache 软件基金会(ASF)的项目提供相关帮助和服务.它帮助进入的项目(称为"podling")采用 Apache 的治理风格,并引导使用 ...
- 由微软打造的深度学习开放联盟ONNX成立
导读 如今的微软已经一跃成为全球市值最高的高科技公司之一.2018年11月底,微软公司市值曾两次超越了苹果,成为全球市值最高的公司,之后也一直处于与苹果胶着的状态.市场惊叹微软是一家有能力改造自己并取 ...
随机推荐
- 【Vue】Vue学习(四)-状态管理中心Vuex的简单使用
一.vuex的简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.Vuex背后的基本思想,就是前面所说的单向数据流.图4就是Vuex实现单向数据流的示意图. Store ...
- UVA11292杀怪
题意: 一个怪物有N个头,每个头都有半径,然后有M个骑士,每个骑士能砍掉半径小于等于 X[i]的头,花费为X[i],并且一个骑士只能用一次,问砍掉怪物所有头的最小花费. 思路: ...
- hdu4907 水dp 或者set
题意: 给你一些被占用的时间点,然后有一些询问,每次输出大于等于询问时间的没被占用的最小的那个时间. 思路: 直接把所有用过的时间标记上,然后倒着更新一遍当前最小空余时间,或者 ...
- 前端不得不了解的TCP协议
背景 早期的网络是基于OSI(开放式系统互联网,一般叫OSI参考模型)模型,该模型是由ISO国际标准组织制定的,包含了七层(应用层.表示层.会话层.传输层.网络层.数据链路层.物理层),即复杂又不实用 ...
- FlinkSQL使用自定义UDTF函数行转列-IK分词器
一.背景说明 本文基于IK分词器,自定义一个UDTF(Table Functions),实现类似Hive的explode行转列的效果,以此来简明开发过程. 如下图Flink三层API接口中,Table ...
- 【maven】理论知识
Maven是跨平台的项目管理工具,主要服务于Java平台的项目构建.依赖管理. 项目构建 项目构建过程包括[清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目]这几个步 ...
- layui中的分页laypage
1.html部分 <div id="test1"></div> 2.js部分: <script src="/static/build/lay ...
- Pytest自动化测试-简易入门教程(03)
今天分享内容的重点,和大家来讲一下我们的测试框架--Pytest 讲到这个框架的话呢,可能有伙伴就会问老师,我在学习自动化测试过程中,我们要去学一些什么东西? 第一个肯定要学会的是一门编程语言,比如说 ...
- Eclipse的安装及相关配置
一.Eclipse的下载 二.Eclipse的安装 三.Eclipse中相关配置 一.Eclipse的下载 Eclipse各版本下载地址 1.选择要下载的版本(我这里选择的4.14版) 2.选择与自己 ...
- 520特辑丨码神VS爱神:盘点程序员的四大男友力,你偏爱哪一种?
摘要:写卡路里计数器带女友减肥,抢票不忘分析系统bug,打造独家游戏只为成为你的另一半,程序员男友"浪漫"起来,谁能招架得住? 本文分享自华为云社区<520特辑丨码神VS爱神 ...