第2章:开发环境搭建

说实话,环境搭建这事儿,看着简单,但坑是真不少。我见过太多人卡在这一步,一卡就是好几天。所以这一章,咱们把每个工具怎么装、装完怎么验证,都捋一遍。

2.1 安装Python

Python是咱们整个开发流程的基石。我建议直接用Python 3.8或3.9,这两个版本对TensorFlow Lite和ONNX Runtime的支持最稳定。

为什么选3.8/3.9? 我在项目里试过Python 3.10,结果某些依赖库死活装不上。后来查了半天,发现是兼容性问题。所以,别追新,稳定第一。

安装步骤很简单:

  1. 去Python官网下载对应版本
  2. 安装时记得勾选「Add Python to PATH」
  3. 打开终端,输入 python --version 验证

嗯,这里有个小细节:如果你用的是Linux,系统自带的Python版本可能比较老。我习惯用 pyenv 来管理多个Python版本,这样切换起来特别方便。

我的小技巧: 装完Python后,顺手把pip源换成国内镜像。不然下载包的时候,那个速度...你懂的。

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2.2 安装OpenCV

OpenCV是图像处理的老大哥。咱们做嵌入式AI,免不了要跟摄像头、图片打交道。

安装命令就一行:

pip install opencv-python==4.5.5.64

为什么指定版本?我曾经踩过一个坑:最新版的OpenCV在某些ARM开发板上会报错,回退到4.5.x就稳了。所以,我建议你也用这个版本。

装完后,跑个简单的测试:

import cv2
print(cv2.__version__)
# 输出应该是 4.5.5

注意: 如果你用的是树莓派或Jetson Nano,建议从源码编译OpenCV。虽然编译过程要等很久(我那次等了快两个小时),但性能确实比pip安装的好不少。

2.3 安装TensorFlow Lite

TensorFlow Lite是专门为移动端和嵌入式设备设计的。说白了,就是把大模型压缩一下,让它在小芯片上也能跑。

安装命令:

pip install tflite-runtime==2.9.0

注意,这里装的是 tflite-runtime,不是完整的TensorFlow。完整的TensorFlow太大了,咱们嵌入式设备根本用不上。

验证安装:

import tflite_runtime.interpreter as tflite
interpreter = tflite.Interpreter(model_path="your_model.tflite")
print("TFLite 加载成功")

避坑指南: 我曾经在ARM64的开发板上装过TensorFlow Lite,结果发现官方预编译的whl包不支持。后来我改用 pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite-runtime 才搞定。如果你也遇到类似问题,可以试试这个。

2.4 安装ONNX Runtime

ONNX Runtime是微软开源的推理引擎。它的好处是支持多种硬件加速,比如CPU、GPU、甚至NPU。

安装命令:

pip install onnxruntime==1.12.1

如果你用的是ARM开发板,可能需要装这个:

pip install onnxruntime-extensions

验证安装:

import onnxruntime as ort
print(ort.get_device())
# 输出应该是 CPU 或 GPU

我的经验: ONNX Runtime在CPU上的优化做得特别好。我测试过,同样的模型,用ONNX Runtime比用原始PyTorch推理快了将近一倍。所以,如果你对性能有要求,强烈推荐用ONNX Runtime。

2.5 配置交叉编译工具链

交叉编译,说白了就是在PC上编译出能在开发板上运行的程序。这一步是嵌入式开发的核心,也是最容易出问题的地方。

我以ARM64架构为例,常用的工具链是 aarch64-linux-gnu-gcc

安装命令(Ubuntu):

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

验证安装:

aarch64-linux-gnu-gcc --version

然后,写一个简单的C程序测试:

// hello.c
#include <stdio.h>
int main() {
    printf("Hello from ARM64!\n");
    return 0;
}

编译命令:

aarch64-linux-gnu-gcc hello.c -o hello_arm64

编译出来的 hello_arm64 文件,直接拷贝到开发板上就能运行。

注意: 交叉编译时,一定要确保目标板的架构和工具链匹配。我见过有人用ARMv7的工具链去编译ARMv8的程序,结果跑起来直接段错误。所以,先搞清楚你的开发板是什么架构,再选对应的工具链。

2.6 环境验证

所有工具装完后,咱们来个综合测试:

import cv2
import tflite_runtime.interpreter as tflite
import onnxruntime as ort

print("OpenCV 版本:", cv2.__version__)
print("TFLite 版本:", tflite.__version__)
print("ONNX Runtime 版本:", ort.__version__)
print("环境搭建完成!")

如果这三行都能正常输出,恭喜你,环境搭建成功了。

最后说一句: 环境搭建这事儿,一次配好,后面就省心了。我建议你把安装步骤记下来,或者写个脚本,下次换设备时一键安装。别像我一样,每次重装系统都得重新查一遍文档。

好了,环境搭好了,下一章咱们就开始真正动手了——把第一个模型部署到开发板上。