102、Arduino TensorFlow Lite库的使用
102、Arduino TensorFlow Lite库的使用从一次半夜的崩溃说起凌晨两点,我盯着逻辑分析仪上那串诡异的波形,咖啡杯底已经结了层褐色的膜。板子上那颗STM32F4正以每秒十次的频率疯狂复位,而罪魁祸首——我刚刚移植到Arduino环境下的TensorFlow Lite推理代码——正安静地躺在Flash里,像个没事人一样。事情是这样的:我用TensorFlow训练了一个简单的关键词识别模型,打算部署到一块基于Arduino框架的ESP32开发板上。模型量化后只有48KB,理论上绰绰有余。但每次调用interpreter-Invoke(),板子就像被电击了一样重启。折腾了三个小时,最后发现是栈溢出——TensorFlow Lite的arena缓冲区分配在了全局区,而我天真地把它定义成了一个局部变量。这个坑,今天必须给你填上。别把TensorFlow Lite当“库”用很多从Python转过来的朋友,第一反应是去Arduino库管理器搜索“TensorFlow Lite”,然后点安装。这没错,但你会得到一个“阉割版”——Arduino官方维护的Arduino_TensorFlowLite库只支持有限的模型算子,而且默认只开启了INT8量化推理路径。如果你试图跑一个FLOAT32模型,编译器会报一堆“未定义引用”的错误,然后你开始怀疑人生。正确的姿势是: