资讯动态

TFLM_day5

发布时间:2026/9/29 7:31:39 来源:尧图企业网站定制
轻松学习 TFLM Day 5:找出当前模型需要注册哪些 op摘要:本文解决 TFLM 开发中的一个实际问题——拿到.tflite模型后,如何在MicroOpResolver里注册所需的 op。文章先给出常用模型的 op 注册结论,再讲解.tflite中 op 信息的存储结构(operator_codes与operators[].opcode_index),并提供了两种解析脚本(基于flatbuffers官方库和纯标准库手写解析)。最后总结了 builtin/custom op 的区别、MicroMutableOpResolverN中 N 的选取规则,以及排查Missing registration的完整流程,帮助读者快速定位并解决 op 注册问题。Day 2 我们知道 TFLM 执行模型时,会通过MicroOpResolver找到每个算子的 kernel。Day 3 和 Day 4 又讲了怎么写和组织自定义优化 kernel。今天解决一个非常实际的问题:我手里有一个 .tflite 模型,到底要在 resolver 里 Add 哪些 op?这件事很重要。注册少了,运行时报错;注册多了,固件变大。TFLM 的风格是“模型用什么,我就注册什么”。1. 结论先行:常用模型需要注册哪些 op我对当前仓库里的主要.tflite模型做了本地解析。下面是常用模型结果。1.1 hello_world模型:tensorflow/lite/micro/examples/hello_world/models/hello_world_float.tflite tensorflow/lite/micro/examples/hello_world/models/hello_world_int8.tflite python/tflite_micro/sine_float.tflite需要的 op:FULLY_CONNECTED最小 resolver:tflite::MicroMutableOpResolver1resolver;resolver.AddFullyConnected();说明:虽然模型里有 3 个 operator,但都是同一种 op,所以只注册一次FULLY_CONNECTED。1.2 simple_add_model模型:tensorflow/lite/micro/examples/memory_footprint/models/simple_add_model.tflite tensorflow/lite/micro/python/tflite_size/tests/simple_add_model.tflite需要的 op:ADD最小 resolver:tflite::MicroMutableOpResolver1resolver;resolver.AddAdd();1.3 micro_speech_quantized模型:tensorflow/lite/micro/examples/micro_speech/models/micro_speech_quantized.tflite需要的 op:DEPTHWISE_CONV_2D FULLY_CONNECTED RESHAPE SOFTMAX最小 resolver:tflite::MicroMutableOpResolver4resolver;resolver.AddDepthwiseConv2D();resolver.AddFullyConnected();resolver.AddReshape();resolver.AddSoftmax();1.4 micro_speech audio_preprocessor_float模型:tensorflow/lite/micro/examples/micro_speech/models/audio_preprocessor_float.tflite需要的 op:CAST CONCATENATION CUSTOM:SignalEnergy CUSTOM:SignalFftAutoScale CUSTOM:SignalFilterBank CUSTOM:SignalFilterBankLog CUSTOM:SignalFilterBankSpectralSubtraction CUSTOM:SignalFilterBankSquareRoot CUSTOM:SignalPCAN CUSTOM:SignalRfft CUSTOM:SignalWindow MUL RESHAPE STRIDED_SLICE最小 resolver:tflite::MicroMutableOpResolver14resolver;resolver.AddCast();resolver.AddConcatenation();resolver.AddEnergy();resolver.AddFftAutoScale();resolver.AddFilterBank();resolver.AddFilterBankLog();resolver.AddFilterBankSpectralSubtraction();resolver.AddFilterBankSquareRoot();resolver.AddPCAN();resolver.AddRfft();resolver.AddWindow();resolver.AddMul();resolver.AddReshape();resolver.AddStridedSlice();这些Signal*都是 TFLM signal custom op,注册函数在:tensorflow/lite/micro/micro_mutable_op_resolver.h signal/micro/kernels/1.5 micro_speech audio_preprocessor_int8模型:tensorflow/lite/micro/examples/micro_speech/models/audio_preprocessor_int8.tflite需要的 op:ADD CAST CONCATENATION CUSTOM:SignalEnergy CUSTOM:SignalFftAutoScale CUSTOM:SignalFilterBank CUSTOM:SignalFilterBankLog CUSTOM:SignalFilterBankSpectralSubtraction CUSTOM:SignalFilterBankSquareRoot CUSTOM:SignalPCAN CUSTOM:SignalRfft CUSTOM:SignalWindow DIV MAXIMUM MINIMUM MUL RESHAPE STRIDED_SLICE最小 resolver:tflite::MicroMutableOpResolver18resolver;resolver.AddAdd();resolver.AddCast();resolver.AddConcatenation();resolver.AddEnergy();resolver.AddFftAutoScale();resolver.AddFilterBank();resolver.AddFilterBankLog();resolver.AddFilterBankSpectralSubtraction();resolver.AddFilterBankSquareRoot();resolver.AddPCAN();resolver.AddRfft();resolver.AddWindow();resolver.AddDiv();resolver.AddMaximum();resolver.AddMinimum();resolver.AddMul();resolver.AddReshape();resolver.AddStridedSlice();1.6 keyword_scrambled模型:tensorflow/lite/micro/models/keyword_scrambled.tflite tensorflow/lite/micro/models/keyword_scrambled_8bit.tflite需要的 op:FULLY_CONNECTED QUANTIZE SOFTMAX SVDF最小 resolver:tflite::MicroMutableOpResolver4resolver;resolver.AddFullyConnected();resolver.AddQuantize();resolver.AddSoftmax();resolver.AddSvdf();1.7 person_detect模型:tensorflow/lite/micro/models/person_detect.tflite需要的 op:AVERAGE_POOL_2D CONV_2D DEPTHWISE_CONV_2D RESHAPE SOFTMAX最小 resolver:tflite::MicroMutableOpResolver5resolver;resolver.AddAveragePool2D();resolver.AddConv2D();resolver.AddDepthwiseConv2D();resolver.AddReshape();resolver.AddSoftmax();这个模型很适合 AI 芯片后端验证,因为CONV_2D和DEPTHWISE_CONV_2D是常见加速重点。1.8 person_detect_vela模型:tensorflow/lite/micro/models/person_detect_vela.tflite需要的 op:CUSTOM:ethos-u最小 resolver:tflite::MicroMutableOpResolver1resolver;resolver.AddEthosU();说明:这个模型已经被 Vela 处理成 Ethos-U custom op,TFLM 看到的是一个 custom op,而不是普通的CONV_2D、DEPTHWISE_CONV_2D列表。1.9 mnist_lstm模型:tensorflow/lite/micro/examples/mnist_lstm/trained_lstm.tflite tensorflow/lite/micro/examples/mnist_lstm/trained_lstm_int8.tflite需要的 op:FULLY_CONNECTED RESHAPE SOFTMAX UNIDIRECTIONAL_SEQUENCE_LSTM最小 resolver:tflite::MicroMutableOpResolver4resolver;resolver.AddFullyConnected();resolver.AddReshape();resolver.AddSoftmax();resolver.AddUnidirectionalSequenceLSTM();1.10 dtln_noise_suppression模型:tensorflow/lite/micro/examples/dtln/dtln_noise_suppression.tflite需要的 op:FULLY_CONNECTED LOGISTIC UNIDIRECTIONAL_SEQUENCE_LSTM最小 resolver:tflite::MicroMutableOpResolver3res

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑