在 Ubuntu 20.04 (C++ API) 上设置 ONNX 运行时
Setting up ONNX Runtime on Ubuntu 20.04 (C++ API)
我目前正在尝试让我的图像处理程序在 Ubuntu 上运行(来自 windows)。
我已经成功构建并链接了 OpenCV 和 Boost 库以与我的 cpp 程序一起使用,但是 我还没有找到关于在 [= 上设置 Onnx Runtime C++ 的任何说明27=] 20.04 除了将以下命令与 NuGet 包管理器一起用于特定 Visual Studio 项目:
Install-Package Microsoft.ML.OnnxRuntime -Version 1.4.0
在 Windows 时,我只需要使用 NuGet 包管理器下载给定 visual studio 项目的库。似乎可以使用 NuGet 在 Ubuntu 上执行此操作,但我想知道我是否可以像增强和 OpenCV 构建和安装那样更“手动”地执行此操作。谢谢!
对于默认的CPU版本,您可以下载tgz文件here。
对于不能作为 tgz 或 NuGet(例如 TensorRT)使用的其他版本的 ONNX 运行时,您可以在本地构建它们:
./build.sh --cudnn_home <path to cuDNN e.g. /usr/lib/x86_64-linux-gnu/> --cuda_home <path to folder for CUDA e.g. /usr/local/cuda> --use_tensorrt --tensorrt_home <path to TensorRT home>
找到更多说明
正在 Linux
安装 NuGet Onnxruntime 版本
测试于 Ubuntu 20.04
对于可通过 NuGet 获得的较新版本的 onnxruntime,我采用了以下工作流程:下载版本(此处为 1.7.0,但您可以相应地更新 link),以及将其安装到 ~/.local/
。对于全局(系统范围)安装,您可以将文件放在 /usr/local/
.
下的相应文件夹中
mkdir /tmp/onnxInstall
cd /tmp/onnxInstall
wget -O onnx_archive.nupkg https://www.nuget.org/api/v2/package/Microsoft.ML.OnnxRuntime/1.7.0
unzip onnx_archive.nupkg
cp runtimes/linux-x64/native/libonnxruntime.so ~/.local/lib/
cp -r build/native/include/ ~/.local/include/onnxruntime/
Cmake
现在,如果您希望能够从您的 Cmake 包中 find_package(onnxruntime)
,我建议您将我自己创建的 onnx cmake 文件放在 ~/.local/share/cmake/onnxruntime
中。这些文件是:
cat ~/.local/share/cmake/onnxruntime/onnxruntimeVersion.cmake
:
# Custom cmake version file by jcarius
set(PACKAGE_VERSION "1.7.0")
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
cat ~/.local/share/cmake/onnxruntime/onnxruntimeConfig.cmake
# Custom cmake config file by jcarius to enable find_package(onnxruntime) without modifying LIBRARY_PATH and LD_LIBRARY_PATH
#
# This will define the following variables:
# onnxruntime_FOUND -- True if the system has the onnxruntime library
# onnxruntime_INCLUDE_DIRS -- The include directories for onnxruntime
# onnxruntime_LIBRARIES -- Libraries to link against
# onnxruntime_CXX_FLAGS -- Additional (required) compiler flags
include(FindPackageHandleStandardArgs)
# Assume we are in <install-prefix>/share/cmake/onnxruntime/onnxruntimeConfig.cmake
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(onnxruntime_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
set(onnxruntime_INCLUDE_DIRS ${onnxruntime_INSTALL_PREFIX}/include)
set(onnxruntime_LIBRARIES onnxruntime)
set(onnxruntime_CXX_FLAGS "") # no flags needed
find_library(onnxruntime_LIBRARY onnxruntime
PATHS "${onnxruntime_INSTALL_PREFIX}/lib"
)
add_library(onnxruntime SHARED IMPORTED)
set_property(TARGET onnxruntime PROPERTY IMPORTED_LOCATION "${onnxruntime_LIBRARY}")
set_property(TARGET onnxruntime PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${onnxruntime_INCLUDE_DIRS}")
set_property(TARGET onnxruntime PROPERTY INTERFACE_COMPILE_OPTIONS "${onnxruntime_CXX_FLAGS}")
find_package_handle_standard_args(onnxruntime DEFAULT_MSG onnxruntime_LIBRARY onnxruntime_INCLUDE_DIRS)
我目前正在尝试让我的图像处理程序在 Ubuntu 上运行(来自 windows)。
我已经成功构建并链接了 OpenCV 和 Boost 库以与我的 cpp 程序一起使用,但是 我还没有找到关于在 [= 上设置 Onnx Runtime C++ 的任何说明27=] 20.04 除了将以下命令与 NuGet 包管理器一起用于特定 Visual Studio 项目:
Install-Package Microsoft.ML.OnnxRuntime -Version 1.4.0
在 Windows 时,我只需要使用 NuGet 包管理器下载给定 visual studio 项目的库。似乎可以使用 NuGet 在 Ubuntu 上执行此操作,但我想知道我是否可以像增强和 OpenCV 构建和安装那样更“手动”地执行此操作。谢谢!
对于默认的CPU版本,您可以下载tgz文件here。
对于不能作为 tgz 或 NuGet(例如 TensorRT)使用的其他版本的 ONNX 运行时,您可以在本地构建它们:
./build.sh --cudnn_home <path to cuDNN e.g. /usr/lib/x86_64-linux-gnu/> --cuda_home <path to folder for CUDA e.g. /usr/local/cuda> --use_tensorrt --tensorrt_home <path to TensorRT home>
找到更多说明
正在 Linux
安装 NuGet Onnxruntime 版本测试于 Ubuntu 20.04
对于可通过 NuGet 获得的较新版本的 onnxruntime,我采用了以下工作流程:下载版本(此处为 1.7.0,但您可以相应地更新 link),以及将其安装到 ~/.local/
。对于全局(系统范围)安装,您可以将文件放在 /usr/local/
.
mkdir /tmp/onnxInstall
cd /tmp/onnxInstall
wget -O onnx_archive.nupkg https://www.nuget.org/api/v2/package/Microsoft.ML.OnnxRuntime/1.7.0
unzip onnx_archive.nupkg
cp runtimes/linux-x64/native/libonnxruntime.so ~/.local/lib/
cp -r build/native/include/ ~/.local/include/onnxruntime/
Cmake
现在,如果您希望能够从您的 Cmake 包中 find_package(onnxruntime)
,我建议您将我自己创建的 onnx cmake 文件放在 ~/.local/share/cmake/onnxruntime
中。这些文件是:
cat ~/.local/share/cmake/onnxruntime/onnxruntimeVersion.cmake
:
# Custom cmake version file by jcarius
set(PACKAGE_VERSION "1.7.0")
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
cat ~/.local/share/cmake/onnxruntime/onnxruntimeConfig.cmake
# Custom cmake config file by jcarius to enable find_package(onnxruntime) without modifying LIBRARY_PATH and LD_LIBRARY_PATH
#
# This will define the following variables:
# onnxruntime_FOUND -- True if the system has the onnxruntime library
# onnxruntime_INCLUDE_DIRS -- The include directories for onnxruntime
# onnxruntime_LIBRARIES -- Libraries to link against
# onnxruntime_CXX_FLAGS -- Additional (required) compiler flags
include(FindPackageHandleStandardArgs)
# Assume we are in <install-prefix>/share/cmake/onnxruntime/onnxruntimeConfig.cmake
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(onnxruntime_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
set(onnxruntime_INCLUDE_DIRS ${onnxruntime_INSTALL_PREFIX}/include)
set(onnxruntime_LIBRARIES onnxruntime)
set(onnxruntime_CXX_FLAGS "") # no flags needed
find_library(onnxruntime_LIBRARY onnxruntime
PATHS "${onnxruntime_INSTALL_PREFIX}/lib"
)
add_library(onnxruntime SHARED IMPORTED)
set_property(TARGET onnxruntime PROPERTY IMPORTED_LOCATION "${onnxruntime_LIBRARY}")
set_property(TARGET onnxruntime PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${onnxruntime_INCLUDE_DIRS}")
set_property(TARGET onnxruntime PROPERTY INTERFACE_COMPILE_OPTIONS "${onnxruntime_CXX_FLAGS}")
find_package_handle_standard_args(onnxruntime DEFAULT_MSG onnxruntime_LIBRARY onnxruntime_INCLUDE_DIRS)