第一章 开发环境配置:系统烧录、Python环境、OpenCV编译与TensorRT/PyTorch安装

做仿生眼项目,第一步就是搭环境。说实话,这一步劝退了很多人。

我记得刚开始带团队时,有个小伙子拿着新买的 Jetson 开发板,兴冲冲地跑来说:「老师,我系统装好了,咱们直接写代码吧?」结果一查,OpenCV 没装 GPU 版本,TensorRT 版本和 PyTorch 对不上,折腾了两天。嗯,从那以后,我要求所有新人必须按这套流程走一遍。

1.1 系统烧录:Ubuntu 20.04 vs 22.04 怎么选?

我个人习惯用 Ubuntu 20.04。为什么?因为稳定。TensorRT 8.x 对 20.04 的支持最成熟,PyTorch 的预编译包也最全。22.04 当然也能用,但有些底层库(比如 libc 版本)会跟老设备驱动打架。

⚠️ 避坑指南: 我曾经在 Jetson Xavier 上烧录 22.04,结果 CSI 摄像头驱动死活不认。后来发现是内核版本太高,V4L2 接口变了。所以,如果你用的是 NVIDIA 嵌入式平台,老老实实选 20.04

烧录步骤其实很简单,但有几个细节要注意:

  1. 下载镜像:去 NVIDIA 官网下载 JetPack 5.0+,里面自带 Ubuntu 20.04。
  2. 制作启动盘:用 Rufus(Windows)或 dd 命令(Linux)。我建议用 Rufus,图形化界面不容易出错。
  3. 烧录:插上 SD 卡或 NVMe 硬盘,开机进入 BIOS 设置启动顺序。嗯,这里要注意——有些开发板默认从 eMMC 启动,你得手动切到 SD 卡。
  4. 验证:进系统后跑 uname -a,确认内核版本是 5.10 以上。
💡 小技巧: 烧录完成后,第一时间装 sshvim。别问为什么,等你需要远程调试时就知道了。

1.2 Python 环境:Anaconda 还是 Miniconda?

我建议用 Miniconda。Anaconda 预装了一堆你用不到的包,占空间不说,还容易跟系统 Python 冲突。仿生眼项目里,我们只需要 Python 3.8 或 3.10,外加几个核心库。

安装命令很简单:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh

装完后记得跑 conda init,然后重启终端。我个人习惯创建一个独立环境:

conda create -n bionic_eye python=3.8
conda activate bionic_eye

为什么用 Python 3.8? 因为 TensorRT 的 Python 绑定在 3.8 上最稳定。3.10 也能用,但有些老版本的 ONNX 解析器会报错。我在项目中踩过这个坑,后来统一用 3.8 了。

1.3 OpenCV 编译与安装:从源码开始

很多人喜欢 pip install opencv-python,但这样装的是 CPU 版本。做仿生眼,摄像头实时处理、图像金字塔、光流跟踪……这些都需要 GPU 加速。所以,必须从源码编译。

编译 OpenCV 其实不复杂,但有几个关键点:

  1. 下载源码:从 GitHub 拉取 OpenCV 4.8.0 和 opencv_contrib(里面有 SIFT、SURF 等专利算法)。
  2. 安装依赖sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  3. 配置 CMake:这是最关键的步骤。一定要开启 WITH_CUDAWITH_CUDNN

我常用的 CMake 配置如下:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D WITH_CUDA=ON \
      -D WITH_CUDNN=ON \
      -D OPENCV_DNN_CUDA=ON \
      -D ENABLE_FAST_MATH=1 \
      -D CUDA_FAST_MATH=1 \
      -D WITH_CUBLAS=1 \
      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
      ..
⚠️ 注意: 编译时内存不够怎么办?我曾在 Jetson Nano(4GB 内存)上编译,直接卡死。解决方案是加 -j2 限制并行任务数:make -j2。或者用 swap 分区,但速度会慢很多。

编译完成后,验证一下:

python -c "import cv2; print(cv2.getBuildInformation())"

看到 CUDA: YESCUDNN: YES 就对了。

1.4 TensorRT 与 PyTorch 安装:版本匹配是核心

TensorRT 和 PyTorch 的版本必须严格对应。你想想看,如果 TensorRT 8.5 配 PyTorch 1.12,那 ONNX 导出时算子映射就会出错。我整理了一个版本对照表:

TensorRT 版本 PyTorch 版本 CUDA 版本 cuDNN 版本
8.4.x 1.12.x 11.6 8.3
8.5.x 1.13.x 11.7 8.5
8.6.x 2.0.x 11.8 8.6

我个人推荐用 TensorRT 8.5 + PyTorch 1.13。这个组合经过大量项目验证,稳定性最好。

安装 TensorRT 有两种方式:

  • Deb 包安装:从 NVIDIA 官网下载,sudo dpkg -i 即可。适合新手。
  • Tar 包安装:解压后配置环境变量。我习惯用这种方式,方便多版本切换。

PyTorch 安装直接用 pip:

pip install torch==1.13.0 torchvision==0.14.0 --index-url https://download.pytorch.org/whl/cu117
💡 验证安装: 跑一段简单代码,确认 TensorRT 能调用 PyTorch 模型:
import torch
import tensorrt as trt
print("PyTorch version:", torch.__version__)
print("TensorRT version:", trt.__version__)
如果两个版本都正常输出,恭喜你,环境搭好了。

1.5 本章知识体系

下面这张图总结了整个开发环境的配置流程。说白了,就是一条主线:系统 → Python → OpenCV → 深度学习框架。每一步都有坑,但按这个顺序走,基本不会出大问题。

仿生眼开发环境配置流程 系统烧录 Ubuntu 20.04/22.04 Python环境 Miniconda + Python 3.8 OpenCV编译 CUDA + cuDNN 加速 TensorRT + PyTorch 版本匹配是关键 关键注意事项: • 系统烧录后先装 ssh 和 vim,方便远程调试 • OpenCV 编译时加 -j2 防止内存溢出 • TensorRT 和 PyTorch 版本必须严格对应 • 每个步骤完成后都要验证,不要一次性装完再查错

总结一下: 开发环境配置是仿生眼项目的地基。地基不稳,后面所有算法都是空中楼阁。我见过太多人因为环境问题浪费几周时间,最后发现只是 OpenCV 没开 CUDA 支持。所以,按这个流程一步步来,每一步都验证通过再往下走。


公众号:蓝海资料掘金营,微信deep3321