Jetson Orin NX部署FastMOT

前置环境

设备:Jetson Orin NX 16GB
系统:Ubuntu20.04
Jetpack:5.1.1
CUDA:11.4

准备FastMOT源代码

git clone https://github.com/GeekAlexis/FastMOT.git

创建虚拟环境

conda create -n fastmot python=3.8
conda activate fastmot

问题汇总

问题1:安装TensorFlow报错

执行./scripts/install_jetson.sh
报错信息:
ERROR: Could not find a version that satisfies the requirement tensorflow ==1.15.5+nv21.6 (from versions: 2.10.0rc0, 2.10.0rc1, 2.10.0rc2, 2.10.0rc3, 2.10.0, 2.10.1, 2.11.0rc0, 2.11.0rc1, 2.11.0rc2, 2.11.0, 2.11.1, 2.12.0rc0, 2.12.0rc1, 2.12.0, 2.12.1, 2.13.0rc0, 2.13.0rc1, 2.13.0rc2, 2.13.0, 2.13.1)
ERROR: No matching distribution found for tensorflow ==1.15.5+nv21.6
解决方法:
link下载Jetpack对应版本的whl包
然后执行:

pip install tensorflow-2.12.0+nv23.04-cp38-cp38-linux_aarch64.whl

问题2:RuntimeError: Unable to read video stream

将videoio.py的WITH_GSTREAMER = True修改为WITH_GSTREAMER = False

问题3:No module named ‘tensorrt’

参考链接:link
确保已正确安装cuda

# This takes a a while.`
pip install pycuda
export PYTHONPATH=/usr/lib/python3.6/dist-packages:$PYTHONPATH
# 通过切换到您的virtualenv并导入来测试此更改tensorrt。
> import tensorrt as trt
>  # This import should succeed

问题4:安装cupy

参考链接:link
报错信息:
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
× Encountered error while trying to install package.
╰─> cupy
解决方法:
从conda-forge安装

conda install -c conda-forge cupy

问题5:ImportError: /lib/aarch64-linux-gnu/libp11-kit.so.0

参考链接:link
报错信息:
ImportError: /lib/aarch64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0
解决方法:
打开至conda虚拟环境下lib文件夹中,路径为/home/anaconda3/envs/xxx/lib,在文件夹内启动终端,输入命令ls -l

sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7
sudo ldconfig

问题原因:
Python 3.8.16版本在安装过程中,就会默认安装libffi-3.4.2,在该库中,就会出现旧版本兼容老版本问题,即出现libffi.so.7链接至libffi.so.8.1.0,进而产生报错。而在python3.8.10中,默认安装libffi-3.3版本,在该版本内,libffi.so.7链接至libffi.so.7.1.0,就不会产生上述问题。因此,另一种解决方式即为安装python 3.8.10,同样能解决该问题。

问题6:version `GLIBCXX_3.4.29‘ not found

参考链接:link
解决方法:
(1)使用指令先看下系统目前都有哪些版本的,确定是缺少GLIBCXX_3.4.29。

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

(2)来查看当前系统中其它的同类型文件,找到一个版本比较高的

sudo find / -name "libstdc++.so.6*"

版本比较多,就选了一个版本较高的,我这里是3.4.29,使用之前的指令看看其是否包含需要的版本:

strings /home/unitree/anaconda3/envs/PaddleOCR/lib/libstdc++.so.6.0.29 | grep GLIBCXX

可以看到有需要的版本,接下来就是建立新的链接到这个文件上
(3)复制到指定目录并建立新的链接

# 复制
sudo cp /home/wuye/anaconda3/envs/tf2/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/
# 删除之前链接
sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
# 创建新的链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

总结

  1. 激活conda虚拟环境后,sudo pip xxx、pip xxx、sudo python xxx.py、python.py会有不同的效果,有无sudo两者的作用范围是不同的,在虚拟环境中一般不推荐使用sudo,除非需要在全局环境中安装。
  2. Nvidia厂商的GPU也分为不同的计算架构,版本号有Turing架构(compute_75)、Volta架构(compute_70)和Ampere架构(compute_86或compute_80),相同的代码,不同的架构容易造成代码库版本兼容性问题。
  3. github上的README.md要仔细看,能少踩很多坑,一些问题的解决方案就写在里面。
### 如何在 Jetson Orin NX部署 DeepSeek DeepSeek 的部署涉及多个方面,包括环境配置、模型转换以及优化。为了确保最佳性能,在 Jetson Orin NX部署 DeepSeek 需要遵循一系列特定的操作。 #### 环境准备 Jetson Orin NX 提供强大的计算能力,适合运行复杂的神经网络模型。安装必要的软件包和依赖项是第一步: - 安装 NVIDIA CUDA 和 cuDNN 库以支持 GPU 加速。 - 设置 Python 虚拟环境并安装所需的 Python 包,如 PyTorch 或 TensorFlow 及其相关工具[^1]。 ```bash sudo apt-get update && sudo apt-get install -y \ python3-pip \ libopencv-dev \ protobuf-compiler \ libprotoc-dev pip3 install --upgrade pip setuptools wheel ``` #### 模型转换与优化 对于 DeepSeek 这样的复杂模型,建议将其转化为 ONNX 格式以便更好地利用 TensorRT 进行推理加速。具体操作如下: - 使用官方提供的脚本或自定义代码将训练好的模型导出为 ONNX 文件。 - 利用 ONNX Runtime 工具链进一步优化该文件,特别是针对 Jetson 平台做了专门适配的工作。 ```python import torch.onnx as onnx from deepseek import DeepSeekModel # 假设这是 DeepSeek 的模型类 model = DeepSeekModel() dummy_input = torch.randn(1, 3, 224, 224) onnx.export(model, dummy_input, "deepseek_model.onnx", opset_version=11) ``` #### TensorRT 推理引擎集成 TensorRT 是 NVIDIA 开发的一个高性能深度学习推理库,特别适用于嵌入式设备上的高效执行。通过 TensorRT 对 ONNX 模型进行量化处理可以显著提升效率,尤其是在资源受限的情况下[^3]。 - 将 ONNX 模型导入到 TensorRT 中,并应用 INT8 或混合精度技术来减少内存占用同时保持较高的准确性。 - 编译后的 TensorRT 引擎可以直接加载用于实时预测任务。 ```cpp #include <NvInfer.h> // ... 初始化 TensorRT ... nvinfer1::IBuilder* builder = nvinfer1::createInferBuilder(logger); builder->setMaxBatchSize(batch_size); auto network = builder->createNetworkV2(0U); // 导入 ONNX 模型... parser->parseFromFile(onnx_file_path.c_str(), static_cast<int>(verbosity)); // 构建 TensorRT 引擎... ICudaEngine* engine = builder->buildCudaEngine(*network); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值