【JetsonNano】onnxruntime-gpu 环境编译和安装,支持 Python 和 C++ 开发

1. 设备

在这里插入图片描述

2. 环境

sudo apt-get install protobuf-compiler libprotoc-dev
 
export PATH=/usr/local/cuda/bin:${PATH}
export CUDA_PATH=/usr/local/cuda
export cuDNN_PATH=/usr/lib/aarch64-linux-gnu
export CMAKE_ARGS="-DONNX_CUSTOM_PROTOC_EXECUTABLE=/usr/bin/protoc"

3.源码

mkdir /code
cd /code
git clone --recursive https://github.com/Microsoft/onnxruntime.git 
# 从 tag v1.16.0 切换分支进行编译
git checkout -b v1.16.0 v1.16.0

git submodule update --init --recursive --progress
cd /code/onnxruntime

4.编译

# --parallel 2  使用 2 个 cpu 进行编译,防止内存和CPU性能不足导致编译识别
./build.sh --config Release --update --build --parallel 2 --build_wheel \
--use_tensorrt --cuda_home /usr/local/cuda --cudnn_home /usr/lib/aarch64-linux-gnu \
--tensorrt_home /usr/lib/aarch64-linux-gnu

若编译识别,内存不足,可进行扩大交换内存

https://labelnet.blog.csdn.net/article/details/136538479

编译完成标识

...
build complate!

5. 安装

cd /build/Linux/Release
sudo make install

在这里插入图片描述

6.查看

/usr/lcoal 查看安装

7.下载

(1) 整个 build 目录,包含 build/Linux/Relase

https://download.csdn.net/download/LABLENET/88943160

(2) 仅 Python3.8 安装文件,onnxruntime-gpu-1.16.0-cp38-cp38-linux-aarch64.whl

https://download.csdn.net/download/LABLENET/88943155

8. 静态库编译安装

1)编译

添加 l --build_shared_lib

./build.sh --config Release --update --build --parallel --build_shared_lib --build_wheel \
--use_tensorrt --cuda_home /usr/local/cuda --cudnn_home /usr/lib/aarch64-linux-gnu \
--tensorrt_home /usr/lib/aarch64-linux-gnu

2)安装

sudo cmake install

在这里插入图片描述

9. 静态库下载使用

C++, 见文件 https://download.csdn.net/download/LABLENET/88943411

在这里插入图片描述

10 C++ 开发

CMakeList.txt 中配置使用

...
# onnxruntime
find_package(onnxruntime REQUIRED)
message(onnxruntime_dir: ${onnxruntime_DIR})
target_link_libraries (
    ${MODULE_NAME} PUBLIC
    onnxruntime::onnxruntime
)

C++ 代码

#include <onnxruntime_cxx_api.h>

int main()
{
    auto providers = Ort::GetAvailableProviders();
    cout << Ort::GetVersionString() << endl;
    for (auto provider : providers)
    {
        cout << provider << endl;
    }
}

在这里插入图片描述

11. Python 开发

安装依赖包

pip3 install onnxruntime_gpu-1.16.0-cp38-cp38-linux_aarch64.whl   -i https://pypi.tuna.tsinghua.edu.cn/simple/

开发

import onnxruntime

print("OnnxRuntime Provider : ", onnxruntime.get_available_providers())

输出

OnnxRuntime Provider :  ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']
灵敏度(Sensitivity 或 Recall),又称为真阳性率,是指实际为正样本中被模型正确识别的比例,公式通常是 TP / (TP + FN),其中TP表示真正例(True Positive),FN表示假阴性(False Negative)。特异性(Specificity)则是指预测为负样本中真实为负的比例,即 TN / (TN + FP),TPR = Sensitivity,TNR = Specificity。 准确率(Accuracy)计算的是所有预测正确的样本数占总样本数的比例,即 (TP + TN) / (TP + TN + FP + FN)。然而,对于类别不平衡的数据集来说,准确率可能会误导,因为它没有考虑到错误分类的重要性。 马修斯相关系数(Matthews Correlation Coefficient, MCC)是一种用于评估二分类模型性能的统计量,它的值介于-11之间,正值代表较好的分类效果,0表示随机猜测,负值则表示较差。 ROC曲线(Receiver Operating Characteristic Curve)下的面积(Area Under the Curve, AUC)是一个常用的评价指标,它衡量了模型在所有阈值下,真正例率(TPR)与假正例率(FPR)之间的权衡。AUC值越接近1,模型性能越好;0.5表示随机猜测。 以下是使用Python的sklearn库计算这些指标的简单示例: ```python from sklearn.metrics import confusion_matrix, recall_score, precision_score, accuracy_score, matthews_corrcoef, roc_auc_score # 假设y_true是真实的标签,y_pred是模型预测的结果 conf_mat = confusion_matrix(y_true, y_pred) TP = conf_mat[1, 1] # 真正例 FP = conf_mat[0, 1] # 假正例 FN = conf_mat[1, 0]
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值