开放神经网络交换(ONNX)工具

开放神经网络交换(ONNX)是一个开放的生态系统,它使人工智能开发人员能够在项目发展过程中选择正确的工具。ONNX为人工智能模型提供了一种开源格式,包括深度学习和传统ML,它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型的定义。目前我们关注的是推断(评分)所需的能力。

ONNX受到广泛支持,可以在许多框架、工具和硬件中找到。实现不同框架之间的互操作性和简化从研究到生产的路径有助于提高人工智能社区的创新速度。

参考链接:https://github.com/onnx/onnx

Use ONNX

Learn about the ONNX spec

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=1 for 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_LIBS is ON then Protobuf_USE_STATIC_LIBS must be OFF and USE_MSVC_STATIC_RUNTIME must be 0.

    If ONNX_USE_PROTOBUF_SHARED_LIBS is OFF then
    Protobuf_USE_STATIC_LIBS must be ON and USE_MSVC_STATIC_RUNTIME can be 1 or 0.
  • Note that
    the import onnx command
    does not work from the source checkout directory; in this case you'll see ModuleNotFoundError: No module named
    'onnx.onnx_cpp2py_export'
    . Change into another directory to fix
    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 /lib with /lib64.
  • If you want
    to build ONNX on Debug mode, remember to set the environment variable DEBUG=1. For debug versions of the dependencies,
    you need to open the CMakeLists
    file
    and append a letter d at the end
    of the package name lines. For example, NAMES
    protobuf-lite
    would become NAMES
    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)工具的更多相关文章

  1. 开放式神经网络交换-ONNX(下)

    开放式神经网络交换-ONNX(下) 计算节点由名称.它调用的算子operator的名称.命名输入的列表.命名输出的列表和属性列表组成. 输入和输出在位置上与算子operator输入和输出相关联.属性通 ...

  2. 开放式神经网络交换-ONNX(上)

    目的 本文档包含ONNX语义的规范性规范. "onnx"文件夹下的.proto和.proto3文件构成了用协议缓冲区定义语言编写的语法规范..proto和.proto3文件中的注释 ...

  3. LabVIEW开放神经网络交互工具包【ONNX】,大幅降低人工智能开发门槛,实现飞速推理

    前言 前面给大家介绍了自己开发的LabVIEW AI视觉工具包,后来发现有一些onnx模型无法使用opencv dnn加载,且速度也偏慢,所以就有了今天的onnx工具包,如果你想要加载更多模型,追求更 ...

  4. CentOS7 开放端口 通过 firewall-cmd 工具来操作防火墙

    CentOS7 提供了 firewall-cmd 工具来操作防火墙. firewall-cmd --permanent:表示设置为持久,配置被写入配置文件,跨重启,不会立即生效,重新加载配置后生效.不 ...

  5. [.NET6]使用ML.NET+ONNX预训练模型整活B站经典《华强买瓜》

    最近在看微软开源的机器学习框架ML.NET使用别人的预训练模型(开放神经网络交换格式.onnx)来识别图像,然后逛github发现一个好玩的repo.决定整活一期博客. 首先还是稍微科普一下机器学习相 ...

  6. ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四

    [导读]Kears作者François Chollet刚刚在Twitter贴出最近三个月在arXiv提到的深度学习框架,TensorFlow不出意外排名第一,Keras排名第二.随后是Caffe.Py ...

  7. 机器学习框架ML.NET学习笔记【8】目标检测(采用YOLO2模型)

    一.概述 本篇文章介绍通过YOLO模型进行目标识别的应用,原始代码来源于:https://github.com/dotnet/machinelearning-samples 实现的功能是输入一张图片, ...

  8. ApacheCon 首次亚洲大会 —— Incubator 专场介绍

    Apache 孵化器即为想要进入 Apache 软件基金会(ASF)的项目提供相关帮助和服务.它帮助进入的项目(称为"podling")采用 Apache 的治理风格,并引导使用 ...

  9. 由微软打造的深度学习开放联盟ONNX成立

    导读 如今的微软已经一跃成为全球市值最高的高科技公司之一.2018年11月底,微软公司市值曾两次超越了苹果,成为全球市值最高的公司,之后也一直处于与苹果胶着的状态.市场惊叹微软是一家有能力改造自己并取 ...

随机推荐

  1. hdu4118

    题意:       给你一颗无向带权树,每个定点上有一个人,问所有定点都不在自己位置上的最长路径总和是多少..   思路:       其实很简单,贪心的想下,既然要求全局最大,那么对于每一条边用的次 ...

  2. 路由协议之RIP

    目录 RIP协议 RIP的路由汇总和过滤 RIP的认证 RIP的防环机制 华为/思科中的配置 RIP协议 RIP协议是一种内部网关协议(IGP),底层是贝尔曼福特算法,是一种动态路由选择协议,用于自治 ...

  3. 在网页添加 Live2D 看板娘

    只需要将以下代码粘贴到 标签中即可 <!--看板娘--> <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jqu ...

  4. 【实用小技巧】Access denied for user 'root'@'localhost' 报错解决

    到mysql安装目录修改my.ini文件,在文件末尾追加一句 skip-grant-tables 然后重启mysql服务即可

  5. 那些在GitHub能提高你的编程技能的项目

    1.免费的编程书籍 免费的开发手册 167K Repo:github.com/EbookFoundation/free-programming.. 2. 很棒的话题 包含了各种有趣的话题 148k R ...

  6. Eclipse的安装及相关配置

    一.Eclipse的下载 二.Eclipse的安装 三.Eclipse中相关配置 一.Eclipse的下载 Eclipse各版本下载地址 1.选择要下载的版本(我这里选择的4.14版) 2.选择与自己 ...

  7. IPC机制key值的各位组成

    key_t ftok(const char *_pathname, int _proj_id) key值的第31~24位为ftok()第二个参数的低8位: key值的第23~16位为ftok()第一个 ...

  8. 【近取 Key】Alpha - 项目展示

    项目与团队亮点 一.团队成员与分工简介 成员组成与分工 本团队由 6 名成员组成,其中有 3 名 PM,2 名后端开发人员与 4 名前端开发人员,由于组内成员数量有限,因此所有 PM 均需同时兼领开发 ...

  9. [MySQL数据库之记录的详细操作:增、改、删、单表查询、多表查询]

    [MySQL数据库之记录的详细操作:增.改.删.单表查询.多表查询] 记录详细操作 增.删.改 增: insert t1(字段1,字段2,字段3) values (值1,值2,值3), (值1,值2, ...

  10. 《Spring 手撸专栏》第 3 章:初显身手,运用设计模式,实现 Bean 的定义、注册、获取

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你是否能预见复杂内容的设计问题? 讲道理,无论产品功能是否复杂,都有很大一部分程序员 ...