
065 TensorFlow Lite Micro的Real-time Inference项目:实时推理从一次现场崩溃说起去年冬天,我在一个工业视觉分拣项目上栽了个大跟头。客户要求摄像头每50ms抓取一次图像,TinyML模型必须在20ms内完成推理,否则传送带上的零件就会错过抓拍窗口。我在实验室用STM32H743跑TensorFlow Lite Micro,单次推理稳定在12ms,信心满满地交付了。结果现场一上电,前30秒一切正常,第31秒开始推理时间突然跳到45ms,然后系统看门狗复位,循环重启。排查了三天,最后发现是DMA传输和模型推理抢了同一块SRAM的带宽——我天真地以为“实时推理”就是模型跑得快,完全没考虑外设中断、内存带宽、电源纹波这些“看不见的敌人”。今天这篇笔记,就把那次翻车现场的血泪教训拆开揉碎,聊聊TFLM实时推理到底该怎么落地。实时推理不是“快”,是“可预测”很多初学者把实时推理等同于“推理延迟低”,这是第一个大坑。真正的实时系统要求的是确定性延迟——最坏情况下的推理时间必须小于硬实时截止时间。你的模型平均跑5ms,但偶尔一次跑到30ms,在工业场景里就是灾难。TFLM的推理延迟抖动主要来自三个地方:内存分配、算子调度、外设抢占。先说内存。TFLM默认使用arena分配器,如果你在每次推理时都调用tflite::MicroInterpreter::AllocateTensors(),那每次分配