第一章 开发环境配置:系统烧录、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 版本)会跟老设备驱动打架。
烧录步骤其实很简单,但有几个细节要注意:
- 下载镜像:去 NVIDIA 官网下载 JetPack 5.0+,里面自带 Ubuntu 20.04。
- 制作启动盘:用 Rufus(Windows)或 dd 命令(Linux)。我建议用 Rufus,图形化界面不容易出错。
- 烧录:插上 SD 卡或 NVMe 硬盘,开机进入 BIOS 设置启动顺序。嗯,这里要注意——有些开发板默认从 eMMC 启动,你得手动切到 SD 卡。
- 验证:进系统后跑
uname -a,确认内核版本是 5.10 以上。
ssh 和 vim。别问为什么,等你需要远程调试时就知道了。
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 其实不复杂,但有几个关键点:
- 下载源码:从 GitHub 拉取 OpenCV 4.8.0 和 opencv_contrib(里面有 SIFT、SURF 等专利算法)。
- 安装依赖:
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev - 配置 CMake:这是最关键的步骤。一定要开启
WITH_CUDA和WITH_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 \
..
-j2 限制并行任务数:make -j2。或者用 swap 分区,但速度会慢很多。
编译完成后,验证一下:
python -c "import cv2; print(cv2.getBuildInformation())"
看到 CUDA: YES 和 CUDNN: 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
import torch
import tensorrt as trt
print("PyTorch version:", torch.__version__)
print("TensorRT version:", trt.__version__)
如果两个版本都正常输出,恭喜你,环境搭好了。
1.5 本章知识体系
下面这张图总结了整个开发环境的配置流程。说白了,就是一条主线:系统 → Python → OpenCV → 深度学习框架。每一步都有坑,但按这个顺序走,基本不会出大问题。
总结一下: 开发环境配置是仿生眼项目的地基。地基不稳,后面所有算法都是空中楼阁。我见过太多人因为环境问题浪费几周时间,最后发现只是 OpenCV 没开 CUDA 支持。所以,按这个流程一步步来,每一步都验证通过再往下走。
公众号:蓝海资料掘金营,微信deep3321