<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[专注嵌入式AI教育]]></description><link>https://blog.youkuaiyun.com/hezengfu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hezengfu]]></copyright><item><title><![CDATA[深入浅出TinyML 25：一个.tflite模型文件内部保存了什么？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164400813</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164400813</guid><author>hezengfu</author><pubDate>Sat, 05 Sep 2026 15:38:52 +0800</pubDate><description><![CDATA[&lt;think&gt;我们根据要求生成≤150字的文章摘要。内容核心：.tflite是FlatBuffer二进制，保存结构描述而非可执行代码；运行时解析并调用算子内核；模型文件与固件需兼容；检查构建门禁。摘要需简洁。&lt;/think&gt;.tflite是FlatBuffer二进制模型，保存计算图、张量、算子、权重及量化参数，而非可执行代码。运行时解析结构并调用固件算子内核，需确保Schema版本与算子集合兼容。部署前应自动检查输入输出契约、算子类型、量化参数和模型哈希，作为构建门禁。理解Model]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 24：剪枝、聚类、蒸馏和算子替换是否真正适合MCU？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164400779</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164400779</guid><author>hezengfu</author><pubDate>Sat, 05 Sep 2026 15:36:44 +0800</pubDate><description><![CDATA[&lt;think&gt;我们只需要根据给定内容生成摘要，不超过150字。内容主要讲剪枝、聚类、蒸馏、算子替换在MCU部署中的实际收益取决于目标链支持，强调以Flash/RAM/延迟/能量等统一指标验收。需简洁概括核心观点。&lt;/think&gt;剪枝、聚类、蒸馏和算子替换须经目标部署链才能转化为MCU收益。非结构化剪枝需稀疏内核支持；聚类常只优化压缩文件；蒸馏与算子替换更易直接减小模型结构。应用Flash、RAM、推理时间、能量和效果统一验收，压缩率仅为中间指标，避免误判。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 23：代表性数据集和量化感知训练分别解决什么问题？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175609</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175609</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:10:53 +0800</pubDate><description><![CDATA[训练后量化需要一批代表性样本估计中间激活范围。样本只覆盖安静、正常或单一设备时，现场极端输入可能大量饱和。代表性数据集解决范围校准，无法自动修复模型对量化噪声敏感的问题。量化感知训练在训练过程中模拟量化，让权重适应整数误差。它增加训练复杂度，应在PTQ结果经过误差定位后再使用。PTQ在训练完成后选择整数尺度。代表性数据不需要标签，但必须像部署输入一样经过相同预处理并覆盖真实工况。图1：PTQ优先，量化误差超出目标时再进入QAT。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 22：Scale、Zero Point和Per-Channel量化如何工作？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175531</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175531</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:08:07 +0800</pubDate><description><![CDATA[INT8只有256个整数码，模型需要用Scale说明相邻整数代表多大实数间隔，用Zero Point说明实数0对应哪个整数码。量化与反量化都依赖这两个参数。权重的不同输出通道可能具有不同数值范围。Per-Channel量化为每个通道设置独立Scale，通常能减少大范围通道对小范围通道的精度挤压。scale表示相邻整数码之间隔多远，zero point表示实数0落在哪个整数码。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 21：INT8量化改变了模型中的哪些数据？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175507</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175507</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:07:21 +0800</pubDate><description><![CDATA[把模型文件标记为INT8并不能证明整个推理链都在执行整数计算。权重、输入、输出和中间激活可能采用不同数据类型，某些量化方式仍需要浮点输入或浮点内核。MCU部署最常关注全整数量化：权重和激活使用整数表示，输入输出也具有明确Scale与Zero Point。是否获得速度收益还取决于运行时和目标处理器的优化内核。INT8用-128到127共256个整数格子近似一段浮点范围。模型仍在做同类数学运算，但数值表示和内核发生改变。图1：全整数量化涉及输入、权重、中间激活和输出映射。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 20：如何在准确率、延迟、内存和功耗之间选择模型？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175476</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175476</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:06:14 +0800</pubDate><description><![CDATA[TinyML模型很少在所有指标上同时最好。更深网络可能提高少量识别效果，却让Arena、推理时间和能量超过系统预算。模型选择应先淘汰不满足硬约束的方案，再比较剩余候选的业务收益。Pareto前沿提供一种清晰方法：当一个模型在效果不低于另一个模型的同时占用更少资源，后者就没有继续保留的理由。模型选择没有单一最高分。先淘汰超过Flash、RAM或截止时间的方案，再在合格方案中比较效果和余量。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 19：一维卷积和深度可分离卷积为什么适合时间序列？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175441</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175441</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:05:08 +0800</pubDate><description><![CDATA[振动、动作、电流和声音都包含局部时间模式。相同冲击或周期片段可能出现在窗口不同位置，一维卷积使用同一组卷积核沿时间移动，能够复用参数提取这些局部特征。深度可分离卷积进一步把时间滤波与通道组合拆开。在输入输出通道较多时，它能够显著减少参数和MACC，但真实速度仍取决于MCU优化内核。卷积核像一个短模板，沿时间轴滑动寻找局部模式。同一个模板在每个位置重复使用，因此参数不随窗口长度增长。图1：深度可分离卷积将时间滤波和通道混合拆成两个阶段。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 18：全连接网络适合解决哪些TinyML问题？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175423</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175423</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:04:33 +0800</pubDate><description><![CDATA[24维时域或频带特征连接16个隐藏单元，只需要24×16+16=400个参数；再连接5类输出需要16×5+5=85个参数。这样的小网络便于训练、转换和调试。若把100×6原始窗口展平为600维再连接128个单元，第一层已有600×128+128=76928个参数，还丢失了模型利用局部共享的机会。窗口加长会继续线性增加参数。Dense也是比较基线。它效果不足时，通过错误分析判断缺少时序局部模式、频率信息还是数据覆盖，再选择卷积或新特征。直接从复杂网络开始会失去一个可解释参照。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 17：参数量、模型大小、MACC和激活内存有什么区别？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164175403</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164175403</guid><author>hezengfu</author><pubDate>Sun, 30 Aug 2026 02:03:54 +0800</pubDate><description><![CDATA[参数少的模型可能计算很多次，模型文件小的模型也可能产生很大的中间激活。把参数量、模型大小、MACC和激活内存混为一谈，会在部署阶段遇到Flash够用但RAM不足，或模型很小但推理超时的情况。这四个指标需要分别计算，再与最终固件和目标MCU实测对应。静态分析帮助筛选候选模型，链接报告与板端测试负责最终验收。参数是训练后保存的权重，激活是推理过程中产生的中间结果。前者多影响Flash，后者多影响运行时RAM。图1：参数量、模型文件、MACC和激活内存对应不同资源问题。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 16：FFT、频带能量和MFCC分别适合什么任务？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164004760</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164004760</guid><author>hezengfu</author><pubDate>Mon, 24 Aug 2026 00:17:34 +0800</pubDate><description><![CDATA[FFT把时间序列转换为频率分量，适合识别周期、谐波和频带能量变化。MFCC在频谱基础上压缩出更接近听觉尺度的表示，常用于关键词和设备声音。频域方法依赖窗口长度、采样率、窗函数和幅值标定。频谱图清晰并不自动带来更好模型，仍要用独立数据和目标MCU验证。FFT是一种快速计算离散傅里叶变换的方法。它把时间序列换成各个频率分量的幅度和相位。图1：FFT、频带能量与MFCC位于同一频域处理链的不同阶段。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 15：时域特征能够描述信号的哪些属性？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164004754</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164004754</guid><author>hezengfu</author><pubDate>Mon, 24 Aug 2026 00:17:02 +0800</pubDate><description><![CDATA[时域特征把一段波形压缩成少量数字。均值描述基线，RMS描述总体能量，峰峰值描述幅度范围，峭度对尖锐冲击更敏感。特征名称熟悉并不代表它一定适合当前任务。有效特征应在类别之间形成稳定差异，并在设备、温度和时间变化下保持可重复。计算量、数值稳定性和PC/MCU一致性也要进入选择。时域特征直接在采样值上计算，不需要FFT。它们适合幅值、能量、冲击和通道关系能够区分类别的任务。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 14：归一化、标准化和滤波为什么必须保持一致？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164004741</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164004741</guid><author>hezengfu</author><pubDate>Mon, 24 Aug 2026 00:16:17 +0800</pubDate><description><![CDATA[模型在PC上输出正确、移植到MCU后类别混乱，最常见的根因之一是预处理不一致。缩放系数、均值方差、滤波状态、通道顺序或量化公式只要有一项不同，模型接收的张量就发生了变化。解决方法是把预处理视为模型的一部分，使用版本化参数和黄金样本，从原始数据开始逐级比较PC与MCU中间结果。模型输入前的每一步数学变换都属于模型接口。训练时减了均值，固件也必须减同一个均值。图1：PC与MCU预处理一致性应按处理阶段逐级验证。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 13：原始波形和人工特征应该如何选择？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164004737</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164004737</guid><author>hezengfu</author><pubDate>Mon, 24 Aug 2026 00:15:47 +0800</pubDate><description><![CDATA[原始波形把特征学习交给模型，能够保留完整局部形状；人工特征先压缩数据，常能用更小模型完成任务。两种方案的优劣取决于数据规模、任务复杂度和MCU预算。选择输入形式时，应把预处理计算也计入系统成本。一个很小的特征模型，如果每个窗口需要昂贵FFT和大量浮点统计，整体资源未必更低。特征是从一段波形计算出的摘要，例如均值、RMS或某个频带的能量。模型可以接收波形，也可以接收这些摘要。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 12：如何划分数据集并正确评价模型？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164004730</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164004730</guid><author>hezengfu</author><pubDate>Mon, 24 Aug 2026 00:15:09 +0800</pubDate><description><![CDATA[时间序列切窗后，相邻样本高度相似。把所有窗口随机打散，训练集与测试集可能来自同一设备、同一次采集甚至共享大部分数据，测试准确率会明显高估现场效果。可靠评价从划分单位开始。测试集应模拟真正的部署变化，例如新设备、新人员、新时间段或新工况；指标则根据误报与漏报成本选择。训练集用于学习，验证集用于选参数，测试集只用于最终评价。三者共享同一设备或同一连续片段时，测试结论会过于乐观。图1：时间序列项目应优先使用会话、设备或人员级分组划分。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 11：标签应该如何定义和检查？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/164004727</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/164004727</guid><author>hezengfu</author><pubDate>Mon, 24 Aug 2026 00:14:27 +0800</pubDate><description><![CDATA[标签把传感器数据连接到业务目标。标签名称相同，并不保证标注者理解相同；“异常晃动”如果没有幅值、持续时间或现场条件说明，会在数据集中形成互相冲突的样本。标签规范应先于大规模采集完成。规范不仅列出类别名称，还要定义开始与结束、过渡段处理、未知状态、证据来源和版本。标签是模型要学习的答案。答案本身含糊时，网络只能拟合标注矛盾，增加层数不会解决定义问题。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 10：窗口长度、步长和重叠率如何确定？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/163975707</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/163975707</guid><author>hezengfu</author><pubDate>Sat, 22 Aug 2026 15:57:28 +0800</pubDate><description><![CDATA[窗口太短可能截断一个完整事件，窗口太长会增加输入尺寸并把多个状态混在一起。步长决定多久产生一次新判断，重叠率则决定相邻样本共享多少数据。这三个参数应通过事件时间尺度、业务响应要求和MCU资源共同确定。只按模型准确率选窗口，容易得到延迟过长或推理频率过高的系统。窗口长度决定模型一次能看多长时间，步长决定多久给出一次新判断。两个参数共同决定体验和资源。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 09：连续传感器数据如何变成模型样本？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/163975701</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/163975701</guid><author>hezengfu</author><pubDate>Sat, 22 Aug 2026 15:56:52 +0800</pubDate><description><![CDATA[传感器持续输出数据，神经网络通常要求固定形状的输入张量。工程中的关键工作是从连续流中截取时间窗口，同时保持采样间隔、通道顺序和标签时间范围一致。数据点、数据帧、样本和批次代表不同层级。混淆这些概念会造成样本数量计算错误、通道错位或训练与MCU输入形状不一致。连续传感器流没有天然的第1个样本和第2个样本。切窗规则负责把时间流转换成模型能够接收的固定形状。图1：采样点、数据帧、时间窗口和输入张量的层级关系。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 08：噪声、漂移、毛刺和校准应该如何处理？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/163975592</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/163975592</guid><author>hezengfu</author><pubDate>Sat, 22 Aug 2026 15:50:57 +0800</pubDate><description><![CDATA[噪声、漂移和毛刺在波形上都可能表现为“数据不稳定”，处理方法却不同。低通滤波能抑制高频噪声，无法纠正缓慢零偏；减去均值可以修正偏置，却可能删除任务需要的直流成分。数据清洗的目标是修复采集链路问题，同时保留真实异常。若冲击正是待识别事件，把所有尖峰当作毛刺删除，会直接破坏标签与输入之间的关系。本篇先处理最常见的四类数据异常。每种问题的来源和处理不同，不能用一个低通滤波器包办。图1：噪声、漂移、周期干扰与真实事件的时间尺度不同。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 07：采样频率如何决定模型能够看到什么？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/163975575</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/163975575</guid><author>hezengfu</author><pubDate>Sat, 22 Aug 2026 15:50:20 +0800</pubDate><description><![CDATA[采样频率定义了相邻数据点的时间间隔，也限制了可区分的最高频率。目标振动成分超过奈奎斯特频率时会折叠到低频，模型看到的是混叠后的伪信号。提高采样率会增加窗口点数、存储、预处理和推理负载。合理采样率应覆盖任务频段、给抗混叠滤波留出过渡带，并与模型输入和实时预算一起确定。只要会看正弦波即可完成本篇实验。频率表示每秒重复次数，采样率表示每秒记录多少个点。]]></description><category></category></item><item><title><![CDATA[深入浅出TinyML 06：传感器和采样链路如何决定数据上限？]]></title><link>https://blog.youkuaiyun.com/hezengfu/article/details/163975390</link><guid>https://blog.youkuaiyun.com/hezengfu/article/details/163975390</guid><author>hezengfu</author><pubDate>Sat, 22 Aug 2026 15:40:12 +0800</pubDate><description><![CDATA[模型只能处理已经进入数字数据的信息。传感器饱和后被截掉的峰值、带宽不足时被滤除的高频成分，以及安装松动造成的随机响应，都无法通过增加网络层数恢复。传感器选型应与任务频段、动态范围和现场安装共同评估。规格表提供边界，实采数据验证这些边界在目标设备上是否成立。传感器输出的数字不是物理量本身。先学会读量程和灵敏度，才能知道模型输入代表多少g、多少度每秒或多少伏。]]></description><category></category></item></channel></rss>