2. 开发环境搭建:安装Python、配置虚拟环境、安装ONNX Runtime与TensorFlow Lite、串口驱动验证

好,咱们正式开始动手了。

这一章,说白了就是给你的电脑「武装」起来。我见过太多人,模型选好了、硬件买回来了,结果卡在环境配置上,一卡就是半天。嗯,咱们不干那种事。

我会带你一步步装好Python、配好虚拟环境、把ONNX Runtime和TensorFlow Lite这两个推理引擎装稳,最后再验证一下串口驱动——这是物联网终端和电脑对话的「嘴巴」。

2.1 安装Python:选对版本,少走弯路

我个人习惯用Python 3.8到3.10之间的版本。为什么?因为ONNX Runtime和TensorFlow Lite对3.11、3.12的支持有时候会出些小毛病。我在项目中遇到过,装了半天发现某个库不兼容,最后还得降版本,浪费时间。

推荐版本:Python 3.9.13(稳定,兼容性好)

下载地址:https://www.python.org/downloads/release/python-3913/

安装时注意两个细节:

  • 勾选「Add Python to PATH」——这个忘了,后面命令行里打python会报错
  • 安装路径不要有中文和空格——我见过有人装在「程序文件」目录下,后面一堆坑
小技巧:装完后打开命令行,输入 python --versionpip --version,确认一下版本号。如果显示的不是你装的版本,八成是PATH没配好。

2.2 配置虚拟环境:隔离项目,避免冲突

你想想看,你手上可能同时有好几个项目。一个用TensorFlow 2.4,一个用2.10,还有一个用ONNX Runtime 1.12。如果不隔离,它们会互相打架。

我推荐用 venv,Python自带的,轻量够用。

打开终端,进到你的项目目录,执行:

# 创建虚拟环境(名字叫 ai_env,你可以自己改)
python -m venv ai_env

# 激活虚拟环境
# Windows:
ai_env\Scripts\activate

# macOS / Linux:
source ai_env/bin/activate

激活后,命令行前面会出现 (ai_env) 字样。这时候你装的所有库,都只在这个环境里生效。

注意:每次打开新终端,都要重新激活虚拟环境。我曾经忘了激活,直接在全局环境里装了一堆库,后来项目依赖乱成一锅粥,最后只能删了重来。

2.3 安装ONNX Runtime

ONNX Runtime是微软开源的推理引擎,专门跑ONNX格式的模型。咱们后面会把训练好的模型转成ONNX,然后用它来推理。

安装很简单,一行命令:

pip install onnxruntime

如果你想用GPU加速(如果你的电脑有NVIDIA显卡),装这个:

pip install onnxruntime-gpu

装完后验证一下:

python -c "import onnxruntime; print(onnxruntime.__version__)"

如果打印出版本号,说明装好了。

我踩过的坑:有一次我装的是onnxruntime-gpu,但电脑里CUDA版本不对,结果import直接报错。后来我换成onnxruntime(CPU版),反而跑得稳稳的。所以如果你不是特别需要GPU加速,先用CPU版,省心。

2.4 安装TensorFlow Lite

TensorFlow Lite是Google为移动端和嵌入式设备准备的轻量级推理引擎。咱们的物联网终端,比如树莓派、Jetson Nano,跑的就是它。

安装命令:

pip install tflite-runtime

注意,不是 tensorflow,是 tflite-runtime。后者只有推理功能,没有训练功能,体积小很多。咱们做嵌入式部署,用这个就够了。

验证:

python -c "import tflite_runtime.interpreter as tflite; print('TFLite runtime OK')"

如果没报错,就说明装好了。

补充说明:如果你是在树莓派上装,建议用 pip install tflite-runtime==2.14.0 指定版本,因为最新版有时候对ARM架构支持不太好。

2.5 串口驱动验证:让电脑和终端「说上话」

物联网终端一般通过串口(UART)和电脑通信。比如ESP32、STM32,都是通过USB转串口连到电脑。

首先,安装串口通信库:

pip install pyserial

然后,把终端设备通过USB线连到电脑。打开设备管理器(Windows)或终端(macOS/Linux),看看串口号是什么。

  • Windows:设备管理器 → 端口(COM和LPT)→ 看到类似 USB Serial Port (COM3)
  • macOS:终端输入 ls /dev/tty.*,看到类似 /dev/tty.usbserial-XXXX
  • Linux:终端输入 ls /dev/ttyUSB*,看到类似 /dev/ttyUSB0

写一小段Python代码验证通信:

import serial

# 把 COM3 换成你的实际串口号
ser = serial.Serial('COM3', 115200, timeout=1)
print(f"串口 {ser.port} 已打开")

# 发送一条数据
ser.write(b"Hello from AI\r\n")

# 读取回应
response = ser.readline()
print(f"收到: {response}")

ser.close()

如果终端设备有回应,说明串口通信正常。如果报错 SerialException,大概率是串口号不对,或者驱动没装好。

注意:串口波特率要跟终端设备设置的一致。我常用的波特率是115200,但有些老设备用9600。不一致的话,收到的数据全是乱码。

2.6 环境验证清单

最后,咱们来个快速检查。把下面这段代码跑一遍,所有环境就都验证了:

import sys
import onnxruntime
import tflite_runtime.interpreter as tflite
import serial

print(f"Python 版本: {sys.version}")
print(f"ONNX Runtime 版本: {onnxruntime.__version__}")
print(f"TFLite Runtime: OK")
print(f"PySerial: OK")
print("所有环境搭建完成!")

如果全部打印成功,恭喜你,开发环境已经搭好了。

我的建议:把这段代码保存成 check_env.py,以后换电脑或者重装系统,跑一遍就知道缺什么。省得东查西查。

下一章,咱们开始真正接触模型——把训练好的模型转成ONNX和TFLite格式,然后部署到终端上跑。嗯,那才是真正有意思的部分。