0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何为TensorFlow Lite Micro添加多输入多输出支持(一)

恩智浦MCU加油站 来源:恩智浦MCU加油站 2026-03-14 15:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在边缘AI迅速普及的今天,越来越多的应用开始依赖复杂的神经网络模型来完成多模态识别、多任务处理等能力。然而,由于嵌入式设备资源受限,开发者常常希望在极小的内存占用下同时处理多路数据、生成多路输出。

但现实是什么呢?
大部分TensorFlow Lite Micro(TFLM)的示例,包括很多MCU SDK(例如NXP eIQ examples),默认都只支持“单输入+单输出”模型。
这不仅限制了模型选择,也让开发者在面对多模态模型、检测模型时十分受限。

因此,本系列文章将带你从架构到实现,一步步为TFLM添加真正完善的多输入、多输出(Multi-Input Multi-Output, MIMO)支持

真的需要多输入多输出吗?

你可能会疑惑:
“我平时的项目都是单输入单输出模型,也够用了呀,还需要这么折腾吗?”

下面我们从典型场景来看:

1.多模态融合模型

图像 +IMU融合姿态识别

声音 +图像的情绪识别模型

2.检测类复杂模型

YOLO:输出分类概率、边界框、置信度

人脸识别:输出特征向量 +人脸关键点

3.多任务学习模型

同时进行分类与回归

语音识别 +情感分析的联合模型

这些模型本质上都需要从多个输入源获取数据,并产生多个输出结果
而若代码层只能访问第一个输入、只取第一个输出,那么其余张量就完全“废掉”了。

以下是我们在SDK中常见的典型“单输入”实现:

uint8_t*MODEL_GetInputTensorData(tensor_dims_t* dims,tensor_type_t* type)
{
TfLiteTensor* inputTensor = s_interpreter->input(0);// 只支持第一个输入
returnGetTensorData(inputTensor, dims, type);
}

这显然无法满足现代边缘AI模型需求。下面就让我们以此为基础,开始设计支持多输入多输出的软件架构:

一. 架构思路设计

为了让TFLM具备完整的多输入多输出能力,同时保持现有项目可平滑过渡,我们从四个原则出发:

1.核心设计原则

向后兼容:原有单输入接口不做破坏

类型安全:强检查避免运行期崩溃

轻量高效:尽量减少内存和额外运算消耗

易于使用:API简洁,开发者上手快

二.系统整体架构

f3b97b3c-1dad-11f1-90a1-92fbcf53809c.png

该结构主要解决三个问题:

统一管理所有输入输出张量

抽象元数据(维度、类型、指针)

提供友好的API给应用层调用

三.关键数据结构设计

为了支持多张量信息管理,我们需要设计三个核心结构:这些结构将作为“输入管理器”“输出管理器”的基础能力。

(1)张量维度结构

typedefstruct{

intsize;
             
//
维度数量

intdata[MAX_TENSOR_DIMS];
    
//
各维度大小
}tensor_dims_t;

2)张量类型

typedefenum{
kTensorType_FLOAT32,

kTensorType_UINT8,

kTensorType_INT8
}tensor_type_t;

3)多张量信息结构(核心)

typedefstruct{

intcount;
                 
//
张量数量

tensor_dims_tdims[MAX_INPUT_TENSORS];
   
//
维度信息数组

tensor_type_ttypes[MAX_INPUT_TENSORS];
  
//
类型信息数组

uint8_t* data[MAX_INPUT_TENSORS];
     
//
数据指针数组
}multi_tensor_info_t;
四. API接口设计(预览)

下面展示的是应用层会使用到的主要接口。

(1)基础查询

//获取输入/输出张量数量

intMODEL_GetInputTensorCount(void);
intMODEL_GetOutputTensorCount(void);

2)单张量访问

//按索引获取张量数据

uint8_t*MODEL_GetInputTensorData(intindex,tensor_dims_t* dims,tensor_type_t* type);
uint8_t*MODEL_GetOutputTensorData(intindex,tensor_dims_t* dims,tensor_type_t* type);

3)批量获取所有张量信息

//一次性获取所有张量信息

status_tMODEL_GetAllInputTensors(multi_tensor_info_t* input_info);
status_tMODEL_GetAllOutputTensors(multi_tensor_info_t* output_info);

4)差异化预处理

//支持按张量索引的差异化预处理

voidMODEL_ConvertInput(uint8_t* data,tensor_dims_t* dims,
tensor_type_ttype,inttensor_index);

让开发者可以针对不同的输入,有不同的量化、归一化策略。

五.结语与预告

在本篇文章中,我们从“为什么需要MIMO支持”讲起,到支持多输入多输出的架构设计、数据结构设计与API规划,构建了一套清晰完整的解决方案。

通过这样的设计,我们不仅能够保持现有代码兼容,也能让TFLM顺利支持更复杂的边缘AI模型,从而大幅提升应用可扩展性、减少重复开发工作,并显著提高项目的工程效率。

在下一篇《如何为TensorFlow Lite Micro添加多输入多输出支持(二)》中,我们将正式进入代码实现,包括:头文件设计;完整的类型定义和接口声明以及核心函数实现;张量管理和数据访问的具体实现

欢迎持续关注,如果您在实际开发中遇到相关问题,欢迎在评论区讨论交流。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Micro
    +关注

    关注

    2

    文章

    274

    浏览量

    36801
  • 模型
    +关注

    关注

    1

    文章

    3873

    浏览量

    52337
  • tensorflow
    +关注

    关注

    13

    文章

    336

    浏览量

    62444

原文标题:突破限制!为TensorFlow Lite Micro添加多输入多输出的完整方案解析(一)

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    多输入多输出收发器系统的无线通信设计

    经过多年作为理论方法和学术主题,多输入多输出(MIMO)收发器系统正在获得重要的设计注意力和支持组件。该技术已被用于些最新的4G代和下
    的头像 发表于 03-13 08:26 4154次阅读
    <b class='flag-5'>多输入</b><b class='flag-5'>多输出</b>收发器系统的无线通信设计

    如何在TensorFlow Lite Micro添加自定义操作符(1)

    支持各种神经网络层的计算。也就是说,我们不仅可以使用内嵌的算子运算,还可以自己注册个新的算子,更加的灵活。本期就将用两期的文章以 `reshape.cpp` 为例,详细说明如何在 TensorFlow
    的头像 发表于 12-26 10:34 5879次阅读

    请问simulink的s-function模块如何添加多输入输出接口

    像图里这种,我直找不到添加多输入输出的设置页面,默认只有单输入输出
    发表于 12-30 21:38

    multisim中多输入多输出变压器

    老哥们求教这种多输出的三相变压器在multisim里该怎么仿真出来啊?
    发表于 04-06 14:27

    支持不同的输出轨的多输出电源参考设计

    描述PMP3061 是多输出电源,支持各种不同的输出轨。此设计的输入为 12V,相应器件和输出
    发表于 11-05 16:30

    多输入多输出系统中有限反馈预编码的自适应跟踪测度

    该文提出种新的适用于无线相关信道中有限反馈预编码多输入多输出系统的预编码矩阵自适应跟踪测度。由于该测度在统计意义下对信道的相关性与预编码矩阵变化的关系具有
    发表于 11-18 15:00 13次下载

    存在信道估计误差的有限反馈多用户多输入多输出传输性能分析

    该文针对存在信道估计误差的有限反馈多用户多输入多输出(MIMO)传输性能进行分析。基于量化微元逼近理论得出了多用户迫零波束赋型系统容量的下界;该下界表明:存在信道估计
    发表于 11-24 14:34 9次下载

    多输入-多输出线性系统有限时间观测器设计方法

    摘要:基于有限时间稳定理论,给出了完全能观测的多输入多输出线性系统的有限时间观测器的设计方法.所设计的观测器在有限时间后实现了对系统状态的精确重构.数值仿
    发表于 03-05 09:28 16次下载

    8发8收多输入多输出正交频分多址系统平台

    8发8收多输入多输出正交频分多址系统平台       都科摩(北京)通信技术研究中心有限公司 (DOCOMO Beijing Communications Laboratories
    发表于 03-25 14:15 1144次阅读

    多输入多输出天线系统MIMO分析

    多输入多输出(MIMO)天线系统是发送端和接收端同时采用多个天线单元的分集接收系统。具有T M 副发送天线、R M 副接收天线的MIMO 系统模型。 对于多输入多输出(MIMO)系统,
    发表于 01-18 15:06 81次下载
    <b class='flag-5'>多输入</b><b class='flag-5'>多输出</b>天线系统MIMO分析

    基于LSSVM的多输入多输出开关磁阻电机建模_徐宇柘

    基于LSSVM的多输入多输出开关磁阻电机建模_徐宇柘
    发表于 01-08 11:51 0次下载

    简介多输入多输出(Multiple-input Multiple-output)雷达

    多输入多输出(Multiple-input Multiple-output)雷达的概念由Fishie于2004年首次提出。并不是说MIMO技术是从2004年才开始,而是FIshie第次将MIMO通信的空间分集观点引入到了雷达中
    发表于 03-06 17:08 4189次阅读
    简介<b class='flag-5'>多输入</b><b class='flag-5'>多输出</b>(Multiple-input Multiple-output)雷达

    多输入多输出雷达信号与目标干扰优化

    针对实际杂波环境中多输入多输出( MIMO)雷达与目标间检测与隐身的博弈问题,提出种新的两步注水算法。首先建立时空编码模型;然后基于互信息量准则,用注水法分配目标干扰功率,用通用注水法分配雷达信号
    发表于 01-13 11:45 0次下载

    多输入多输出无线终端的在空中无线测试方法

    多输入多输出(Multiple Input Multiple Output: MIMO)天线技术在当前高速无线通信领域(LTE,WIFI,WIMAX),高性能雷达技术(MIMO radar)等得
    发表于 01-25 14:48 3次下载
    <b class='flag-5'>多输入</b><b class='flag-5'>多输出</b>无线终端的在空中无线测试方法

    何为TensorFlow Lite Micro添加多输入多输出支持(二)

    在上篇文章中,我们已经带大家了解了多输入多输出(MIMO)能力的架构设计思路。
    的头像 发表于 03-19 16:58 1065次阅读