第一章:课程导论与开发环境搭建
各位同学,欢迎来到《嵌入式Linux上部署TensorFlow Lite实战课程》。我是你们的讲师,一个在嵌入式AI领域摸爬滚打多年的老工程师。
今天咱们聊第一章——课程导论与环境搭建。说实话,这部分内容看起来基础,但恰恰是决定你后续学习是否顺利的关键。我见过太多人一上来就急着跑模型,结果环境没配好,折腾两天连个demo都跑不起来。嗯,咱们别走那个弯路。
1.1 TFLite在嵌入式领域的价值
先说说为什么选TensorFlow Lite。说白了,它就是Google为移动端和嵌入式设备量身定做的轻量级推理框架。你想想看,一个完整的TensorFlow模型动辄几百MB,树莓派那点内存根本扛不住。TFLite做了三件事:模型量化、算子优化、运行时精简。
我在项目中遇到过这样一个场景:客户要求在RK3399上跑一个目标检测模型,原模型大小是120MB,推理一次要3秒。用TFLite做INT8量化后,模型压缩到15MB,推理时间降到200毫秒。效果虽然损失了3%的mAP,但客户非常满意。这就是TFLite的价值——在资源受限的硬件上,把AI能力真正落地。
核心价值总结:
- 模型体积缩小4-10倍(量化后)
- 推理速度提升2-5倍(针对ARM架构优化)
- 支持硬件加速(GPU/NPU/TPU)
- 功耗更低,适合电池供电设备
1.2 硬件选型建议
选硬件这事儿,我个人的经验是:别盲目追求性能,得看你的应用场景。我给大家梳理了三类主流方案:
| 芯片方案 | 代表板卡 | 算力 | 适合场景 | 我的评价 |
|---|---|---|---|---|
| 树莓派 | Pi 4B / Pi 5 | 0.5-1 TOPS | 入门学习、原型验证 | 社区资源最丰富,但算力有限 |
| 瑞芯微 | RK3588 / RK3568 | 6-12 TOPS | 工业级产品、边缘计算 | NPU性能强劲,我最近项目就在用 |
| 全志 | V853 / A133 | 1-2 TOPS | 智能家居、低功耗设备 | 性价比高,但生态稍弱 |
我个人建议:如果你是初学者,先搞一块树莓派4B,成本低、资料多。等把流程跑通了,再考虑瑞芯微的方案做产品化。我曾经帮一个客户从树莓派迁移到RK3588,性能提升了8倍,但代价是驱动和算子适配花了两周。所以,选硬件时一定要考虑开发周期。
避坑指南: 别买树莓派Zero跑TFLite,内存太小,跑个MobileNet都费劲。我试过,结果卡成PPT。
1.3 交叉编译工具链安装
接下来是环境搭建的重头戏——交叉编译。为什么需要交叉编译?因为你的开发机是x86架构,目标板是ARM架构。在x86上编译ARM的可执行文件,这就是交叉编译。
我习惯用Linaro提供的工具链,稳定且更新及时。以树莓派4B为例,目标架构是aarch64(ARMv8)。
安装步骤:
- 下载工具链:
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz - 解压到指定目录:
tar -xvf gcc-linaro-*.tar.xz -C /opt/ - 配置环境变量:
export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin - 验证安装:
aarch64-linux-gnu-gcc --version
这里有个坑,我踩过好几次:工具链版本必须与目标板的内核版本匹配。比如树莓派4B的官方系统是Debian 11,内核5.10,用gcc 7.5没问题。但如果你用gcc 10编译出来的程序,可能会因为glibc版本不兼容而报错。嗯,这个一定要注意。
警告: 不要用Ubuntu自带的交叉编译工具链(apt install gcc-aarch64-linux-gnu),版本太老,编译TFLite时会报一堆莫名其妙的错误。我吃过这个亏,折腾了两天才发现是工具链的问题。
1.4 目标板SSH连接与文件传输
环境搭好了,怎么跟目标板通信?SSH是标配。我一般这么操作:
首先,确保目标板和开发机在同一个局域网。树莓派插电联网后,通过路由器后台找到它的IP地址。或者用 nmap -sn 192.168.1.0/24 扫描一下。
SSH连接命令:
ssh pi@192.168.1.100
# 默认密码:raspberry
连上之后,第一件事我建议你改密码,然后配置静态IP,不然每次重启IP变了很麻烦。
文件传输我常用两种方式:
- scp:适合传单个文件或小目录。
scp local_file pi@192.168.1.100:/home/pi/ - rsync:适合传大项目或增量更新。
rsync -avz --progress ./project/ pi@192.168.1.100:/home/pi/project/
我个人更推荐rsync,尤其是你频繁修改代码时。它只传输变化的部分,速度比scp快很多。我曾经传一个包含几百个小文件的模型库,scp用了3分钟,rsync只用了20秒。
小技巧: 配置SSH免密登录,省去每次输密码的麻烦。执行 ssh-copy-id pi@192.168.1.100 即可。我所有开发板都配了免密,调试效率翻倍。
好了,第一章的内容就到这里。环境搭建是基础,但基础不牢,地动山摇。我建议你花一天时间,把交叉编译工具链和SSH连接都跑通。下一章咱们开始编译TFLite的C++库,那才是真正的实战环节。
记住:别急着跑模型,先把路铺好。有问题随时在群里交流,我看到就会回复。