第2章:开发环境搭建
说实话,环境搭建这事儿,看着简单,但坑是真不少。我见过太多人卡在这一步,一卡就是好几天。所以这一章,咱们把每个工具怎么装、装完怎么验证,都捋一遍。
2.1 安装Python
Python是咱们整个开发流程的基石。我建议直接用Python 3.8或3.9,这两个版本对TensorFlow Lite和ONNX Runtime的支持最稳定。
为什么选3.8/3.9? 我在项目里试过Python 3.10,结果某些依赖库死活装不上。后来查了半天,发现是兼容性问题。所以,别追新,稳定第一。
安装步骤很简单:
- 去Python官网下载对应版本
- 安装时记得勾选「Add Python to PATH」
- 打开终端,输入
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("环境搭建完成!")
如果这三行都能正常输出,恭喜你,环境搭建成功了。
最后说一句: 环境搭建这事儿,一次配好,后面就省心了。我建议你把安装步骤记下来,或者写个脚本,下次换设备时一键安装。别像我一样,每次重装系统都得重新查一遍文档。
好了,环境搭好了,下一章咱们就开始真正动手了——把第一个模型部署到开发板上。