想象你是一位大饭店的行政主厨,能用几十种调料做出米其林级别的菜肴。有一天老板说:“给你一辆街头餐车,去夜市卖吃的。”餐车只有一个小灶台、一方案板、一罐煤气,电费还得省着花。你当然不可能把整本 300 页的菜谱背过去,也不能在客人面前同时开三口锅。你需要的,是把最拿手的几道菜浓缩成“口袋菜谱”,用最小的灶台做出来。 这就是 TinyML 的处境。ESP32 是一颗只有拇指指甲盖大小的芯片,内存比一张高清照片还小,却要在水表旁、工地上、农田里做 AI 推理。它空间有限、电力有限,但好处是便宜、省电、能靠近现场。这篇文章,就是带你把“AI 大厨”的智慧,一步步装进这辆“餐车”——从认识硬件、选择框架、压缩模型,到接上传感器、部署推理、精打细算功耗。
学习 ESP32+TinyML 的意义:让 AI 从业者掌握把模型“瘦身迁移”到微控制器的完整链路,开拓物联网、可穿戴、工业监测等万亿级的边缘智能市场。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
ESP32硬件能力
老周第一次掀开餐车的台面板,心里有点凉:灶台只有巴掌大,案板比围裙还小,冰箱倒是有一个,但里面放不了多少货。不过仔细一看,这套装备其实很能打——两个灶眼同时开工(双核处理器),自带能和总店对讲的对讲机(Wi-Fi 和蓝牙),案板下还藏着几个能分区冷藏的收纳盒(Flash 存储器)。这就是 ESP32:一颗为“小空间、低功耗”而生的微控制器。
把目光从厨房挪回芯片。ESP32 最常用的型号内置两个 Xtensa 32 位处理器核心,主频最高 240MHz。听着和电脑几个 GHz 差很远,但它的任务只是读取传感器、跑一个几十 KB 的模型,完全够用。它还有 520KB 的 SRAM 和 4MB 的 Flash,类比过来就是:案板虽小,但足够放得下当天要用的食材;冰箱不大,却能存下所有菜谱和半成品。板载 Wi-Fi 和蓝牙让它能定时把结果递回总店,而不用一直连线。
既然是餐车,就绕不开“省电”二字。ESP32 的芯片制造工艺和电路设计决定了它的动态功耗大致遵循一个规律:时钟翻得越快、电压抬得越高,耗电就越快。这就像灶火开得越大、锅底越薄,煤气烧得越猛。想要控住功耗,就得在“火力”和“菜量”之间找平衡。
回到餐车比喻:ESP32 的硬件底子就是一个“能开火的迷你厨房”。认识它的双核、无线、存储和外设能力,等于摸清了灶眼、对讲机和冰箱的位置。接下来要做的,就是准备一份适合这个小厨房的菜谱——也就是 TinyML 框架。
- P(动态功耗)芯片每秒因电路翻转而消耗的电能,就是我们常说的“运行功耗”。
- α(翻转率)电路里平均每拍真正翻转变态的晶体管占比,负载越重翻得越多。
- C(等效电容)芯片内部的寄生电容,可理解成需要反复充放电的微小“水杯”。
- V²(电压平方)电压以平方出现,因此降低一点点电压,省电效果会非常明显。
- f(时钟频率)每个秒翻转多少次。频率越高,单位时间做功越多,功耗线性上升。
TinyML框架
老周的“口袋菜谱”不能直接照着大酒店的原版使用,因为一张卡片写不下十步工序,餐车也备不了几十种配料。TinyML 的思路完全一样:把训练好的 AI 模型,经由一套专门适合单片机的小型化框架重新打包。对于 ESP32 世界来说,这套框架目前的主流选择叫 TensorFlow Lite Micro——TensorFlow 官方推出的“微缩版”推理引擎。
TinyML 的典型流程是:先用 TensorFlow 或 Keras 在电脑上训练模型,再把模型导出成一种更紧凑的交换格式(.tflite),接着用转换工具把它裁剪成适合微控制器的版本。最关键的一步,是让这个模型变身成 C 语言源代码里的一个数组。为什么要变成 C 数组?因为 ESP32 上运行的是 C/C++ 固件,没有 Python 解释器,更装不下完整的深度学习框架。模型一旦变成 unsigned char 数组,就能和普通 C 代码一起编译进固件,在设备里被“解释器”逐个算子地执行。
解释器就像一个阅读菜谱的帮厨:它读一行菜谱,做一步操作。TensorFlow Lite Micro 内置了一组精简算子(conv2d、fully_connected、softmax 等),对应菜谱里的“切、炒、蒸、焖”。模型里的每一层,都会被翻译成这些基础动作。理解算子的计算量很重要,因为餐车灶眼小、火力有限,太复杂的动作会拖慢出餐速度。下面这个式子用来估算一个卷积层要做多少次乘加计算。
TinyML 框架就像一本为餐车定制的“口袋菜谱集”,它不会让模型去做什么高端分子料理,而是把复杂的模型变成一张张能照做的流程卡。当这套流程足够简洁,模型就具备了被装进 ESP32 的前提。而接下来,我们要让菜谱再瘦身一圈——这就是模型量化。
- FLOPs(浮点计算量)指推理一次该卷积层需要的乘加运算总数,是衡量模型“费不费火”的重要指标。
- C_out(输出通道数)这一层输出多少个“特征图”,好比一道菜要做几份不同口味。
- H_out × W_out(输出尺寸)每个输出特征图的长和宽,代表每份菜要切的块数。
- C_in(输入通道数)上一层提供的特征数量,相当于备菜时要用到的食材种类。
- K × K(卷积核边长平方)卷积核的大小,K=3 表示每次关注 3×3 邻域,相当于“一眼看九块料”。
模型量化
大酒店菜谱写“高汤 350 克、盐 2 克”,餐车没时间也没必要称到克级,改成“高汤一勺、盐一小撮”完全不影响味道。模型量化做的就是这件事:把训练时常用的 32 位浮点数(float32)权重,转换成 8 位整数(int8)存储。数字越小,占用的内存越少,电脑和单片机搬运起来也越轻松。
量化不是简单地四舍五入,而是需要一个聪明的“度量衡转换”。首先,要拿一批有代表性的数据,即校准数据集,喂给模型,观察每一层权重的数值范围(最小值到最大值)。然后把这个范围映射到 int8 能表达的整数区间 [-128, 127],得到缩放系数 scale 和零点 zero_point。有了这两个参数,任何浮点值都能转成整数,推理时再按同一套比例还原近似值。这个过程叫动态范围量化——它按每层数据的实际分布来定“刻度”,因此能在体积骤减的同时,把精度损失压到很小。
有些初学者以为量化后精度会崩盘,实际并不尽然。比如一个简单的分类模型,量化后准确率往往只下降 1% 到 3%,但模型体积缩小到原来的四分之一、推理速度也会提升。因为在嵌入式设备上,整数运算比浮点运算更快、更省电。下面就是量化的核心换算公式。
量化,相当于把“米其林菜谱”改编成“餐车速成版”:步骤没少、味道相近,但写起来短了一大截。当模型从 FP32 变成 INT8,它终于能钻进 ESP32 那所小房子了。不过,光有菜谱还不够,得先知道客人想吃什么——也就是数据从哪来。传感器采集,就是给餐车安上“眼睛鼻子”。
- r(原始浮点值)模型权重或激活值中需要转换的原始数据,类似菜谱里的“精确克数”。
- scale(缩放系数)由校准数据集算出,反映“一格整数代表多少浮点范围”,相当于“一勺”等于“5克”。
- round()(四舍五入)把除法得到的小数结果凑成最近整数,保证 q 始终落在 int8 范围内。
- zero_point(零点偏置)修正浮点零映射到整数坐标后的偏移,确保 0 在转换后仍是“左右对称的刻度原点”。
传感器采集
老周在夜市摆摊,得先知道今天热不热、人流量大不大、有没有人靠近摊位。他靠眼睛扫、耳朵听、皮肤感受。ESP32 也是一样,靠各类传感器感知世界:加速度计知道设备有没有在晃动,温度传感器知道环境是不是过热,湿度传感器判断空气干湿,光敏电阻感知光照变化。这些传感器就是大厨的“眼耳鼻”。
传感器采集的第一个要点是采样频率。采样频率太高,就像厨师每隔一秒就看一眼温度计,累且没必要;太低又会漏掉关键变化。比如跌倒检测一般用 50Hz 到 100Hz 采集加速度计数据,既能捕捉到跌倒瞬间的冲击,又不至于让 MCU 忙于搬运数据。采集来的原始数据通常不能直接进模型,需要先做预处理。
预处理里最常用的一招是数据归一化:把数值拉到一个统一的尺度,比如 [0, 1] 或 [-1, 1]。为什么?模型训练时见过的数据范围是固定的,如果现场数值突然大十倍,模型就会“懵”。同时,由于传感器数据是一串连续的时间序列,工程师还会用滑动窗口把它们切成一段一段的,每次取窗口内若干样本送给模型,并在窗口内提取均值、方差、斜率等特征。这样模型看到的不是一帧孤立的点,而是一小段“故事”。
传感器采集让餐车“活”了起来:它能感知客人靠近、天气变化、设备跌落。不过,采集到的数据最终要在 ESP32 里跑一遍模型才能变成判断。下一步,就是把菜谱正式摆上灶台——部署与推理。
- x(原始采样值)传感器读到的原始数值,可能是一个很大的电压或加速度读数。
- x_min(窗口内最小值)当前时间窗口内样本的最小值,相当于这一段数据里的“地板”。
- x_max(窗口内最大值)当前窗口内样本的最大值,相当于这一段数据里的“天花板”。
- x'(归一化结果)所有数据被压缩进 [0,1] 区间,保证每个特征对模型的贡献大小一致。
部署与推理
夜市开张前,老周会把口袋菜谱贴在灶台边,把食材按顺序摆好。部署到 ESP32 就是类似的过程:把量化好的模型文件(C 数组)连同 TensorFlow Lite Micro 解释器一起,用编译器烧录进固件。当芯片上电,解释器就会在内存里“铺开”一张推理流程表,等待数据输入。
部署时最担心的是“桌子不够大”——ESP32 只有 520KB 内存,模型、中间激活值、解释器本身都要挤在这块小地方。所以工程师要做内存预算:模型权重占一块,运行时需要的中间张量(激活值)占一块,解释器的固定开销再占一块。一个 80KB 的量化模型,在 ESP32 上跑起来通常只占用 200KB 左右内存,余量充足。这个预算可以提前用公式估算,避免烧录后才发现内存溢出。
推理是指模型真正“出菜”的时刻:CPU 把传感器数据送进输入张量,调用解释器的 Invoke() 方法,逐层执行算子,最后从输出张量读出结果。整个过程常常只需要几毫秒到几十毫秒。相比把数据传到云端、等服务器返回,本地推理几乎没有网络延迟,这就像熟客在摊前说“老规矩”,你转身 30 秒就能把菜端出来。
部署与推理让 ESP32 从“仓储状态”进入“营业状态”。模型跑起来了,结论也能当场出来了。但夜市一开就是四五个小时,燃气罐却只有一个——下一节,我们得好好算算这门“经济账”。
- M_total(总内存占用)模型部署到 MCU 上占用的全部 RAM 和 Flash,是评估“装不装得下”的关键数字。
- P(参数量)模型所有权重与偏置的数量总和,好比菜谱里所有配料条目数。
- b(每参数字节数)int8 量化后每个参数只占 1 字节,fp32 则占 4 字节,这正是量化省内存的原因。
- A(激活缓冲区)模型在推理过程中临时存放中间层输出的空间,相当于“操作台面上摆开的半成品”。
- R(运行时开销)解释器自身的栈空间、算子调度器和固定结构体占用的内存。
功耗优化
老周最怕的不是没客人,而是晚上八点煤气烧完了。ESP32 也一样,很多设备用电池供电,可能是农田里的一颗传感器,要撑几个月甚至一年。所以功耗优化不是可选项,而是生存问题。
ESP32 最强大的省电武器是深度睡眠模式。正常工作电流可能达到 20~50mA,但进入深度睡眠后电流能降到 10µA 左右——差了上千倍。这就像餐车收摊后把灶火全关、冰箱也调成最低档,只留一盏小夜灯防止小偷。深度睡眠不等于罢工,ESP32 可以被定时器或外部 GPIO 事件唤醒,这种方式叫事件驱动唤醒:平时睡大觉,有人来了或者定时器到了,猛然醒来工作几毫秒,干完继续睡。
进一步优化,还要统筹传感器调度。每个传感器都在工作就会持续耗电,所以工程师会让传感器分时采样:比如温度传感器每 5 分钟开一次,加速度计只在被判定“疑似移动”时才全速工作。配合功耗预算估算,就能在设计阶段算出“一块电池能用多久”。如果发现撑不到目标时间,就得回头降低采样频率、精简模型、减少唤醒次数。
功耗优化的本质,是把有限的“煤气”精准花在刀刃上:睡得多、醒得短、干活快。到了这个时候,餐车已经从“能做出菜的硬件”变成“能长久经营的摊位”。硬件、框架、量化、采集、部署、功耗,六块拼图全部就位,一个完整的边缘 AI 应用也就成型了。
- E_total(总耗能)设备在一个完整工作周期内消耗的电量,好比餐车一晚上烧掉的煤气总量。
- P_active(活跃功耗)处理传感器数据、执行推理时的电流功耗,相当于“大火爆炒”时的耗气量。
- T_active(活跃时长)每个周期设备保持活跃的时间,通常只有几十到几百毫秒。
- P_sleep(睡眠功耗)深度睡眠时的守夜功耗,ESP32 可低至 10µA 左右。
- T_sleep(睡眠时长)周期中剩余的时间都处于睡眠,占据整个周期的大部分,因此平均功耗能压得很低。
AI 应用场景
工业电机预测性维护
阶段:传感器采集 + 模型推理
解决的问题:传统工厂依赖人工定期巡检电机,故障往往发现太晚,停机损失巨大。ESP32 通过加速度计采集振动数据,在本地运行量化后的 TinyML 分类模型,实时判断电机处于“正常”“磨损”还是“即将故障”状态,异常时立刻通过 Wi-Fi 报警。
具体案例:某工厂在 50 台水泵电机旁部署 ESP32 振动监测节点,模型用 8bit 量化后仅 40KB,以 20Hz 采样振动特征。运行三个月后,系统提前 6 天预测了一台轴承磨损故障,避免了一次连续生产线的意外停产。
可穿戴跌倒检测手环
阶段:滑动窗口特征 → 边缘推理 → 低功耗部署
解决的问题:老年人跌倒后若无人发现,后果严重。传统方案依赖云端判断,延迟高且需要持续联网。ESP32 手环用加速度计以 50Hz 采样,滑动窗口取 2 秒数据,量化模型直接在手腕上判断“跌倒”并触发蜂鸣器和短信告警。
具体案例:一款养老院试用方案中,研发团队用 TensorFlow Lite Micro 将 2 层 LSTM 蒸馏为小型全连接网络,int8 量化后仅 28KB。设备平时深度睡眠,检测到疑似冲击才唤醒完整推理,一颗 200mAh 电池可坚持 45 天。
农业大棚环境决策
阶段:多传感器融合 + 本地推理
解决的问题:大棚管理需要同时监测温度、湿度、光照和 CO₂ 浓度,传统方案把所有数据传上云端再决策,网络差时会失灵。ESP32 采集多路传感器数据,归一化后喂入量化模型,在本地直接判断“是否需要开窗”“是否需要灌溉”。
具体案例:一个蔬菜大棚试点部署了 8 个 ESP32 节点,每个节点每 5 分钟采样一次,模型推理耗时仅 12ms。结果只在有变化时通过 LoRa 上报,整季运行下来,每颗节点平均功耗仅为 0.15mW。
Python 演示
import numpy as np def sigmoid(x): return 1.0 / (1.0 + np.exp(-x)) # 已训练好的一个 2->3->1 小型网络(模拟 TinyML 模型的浮点版本)w1 = np.array([[1.2, -0.4, 0.8], [0.7, 0.6, -0.9]], dtype=np.float32)b1 = np.array([0.1, -0.2, 0.0], dtype=np.float32)w2 = np.array([[1.5], [-0.8], [0.6]], dtype=np.float32)b2 = np.array([0.05], dtype=np.float32) def predict_float(x): h = sigmoid(x @ w1 + b1) return sigmoid(h @ w2 + b2)[0] def quantize_tensor(arr, bits=8): """对称量化:将浮点权重映射到 [-128, 127] 的整数范围""" qmax = 2 ** (bits - 1) - 1 scale = np.abs(arr).max() / qmax q_arr = np.round(arr / scale).astype(np.int8) return q_arr, scale w1_q, s1 = quantize_tensor(w1)b1_q, sb1 = quantize_tensor(b1)w2_q, s2 = quantize_tensor(w2)b2_q, sb2 = quantize_tensor(b2) def predict_quantized(x): """用缩放系数还原整数权重,近似 INT8 推理效果""" h = sigmoid(x @ (w1_q * s1) + b1_q * sb1) y = sigmoid(h @ (w2_q * s2) + b2_q * sb2) return y[0] if __name__ == "__main__": samples = np.array([[0.1, 0.2], [0.9, 0.8], [0.5, 0.5], [0.2, 0.9]]) print("输入\t\t浮点输出\t量化输出\t误差") for xs in samples: y_f = predict_float(xs) y_q = predict_quantized(xs) print(f"{xs}\t{y_f:.4f}\t{y_q:.4f}\t{abs(y_f - y_q):.4f}") float_size = sum(x.nbytes for x in [w1, b1, w2, b2]) quant_size = sum(x.nbytes for x in [w1_q, b1_q, w2_q, b2_q]) print(f"\n浮点模型: {float_size} 字节") print(f"量化模型: {quant_size} 字节") print(f"压缩比: {float_size / quant_size:.2f}x")
qmax = 2 ** (bits - 1) - 1定义 int8 的最大整数值 127,作为量化区间的上限。scale = np.abs(arr).max() / qmax用权重绝对值的最大值定出“一格整数代表多少浮点范围”。q_arr = np.round(arr / scale).astype(np.int8)核心量化语句:浮点值除以缩放系数后四舍五入并转成 int8。h = sigmoid(x @ (w1_q * s1) + b1_q * sb1)推理时把整数权重乘回缩放系数,得到近似的浮点计算结果。float_size = sum(x.nbytes for x in [w1, b1, w2, b2])统计原始模型的全部参数字节数。quant_size = sum(x.nbytes for x in [w1_q, b1_q, w2_q, b2_q])统计量化后模型的字节数。abs(y_f - y_q)计算量化前后输出差异,验证量化误差通常很小。
常见误区
误区“既然 TensorFlow 是开源的,我把 Python 模型往 ESP32 上一放,应该就能跑吧?最多就是慢一点。”
正解完整版 TensorFlow 运行时非常庞大,包含数 MB 的算子库和 Python 解释器,ESP32 既没有足够 Flash,也没有操作系统去承载它。真正可行的是 TensorFlow Lite Micro——一个专门为微控制器设计的 C++ 精简运行时,只保留最基础的算子解析和张量管理。就好比你不能让一辆餐车背上整套中央厨房的设备,只能带上一本精简过的口袋菜谱。
为何常见:因为“TensorFlow”这个名字太响亮了,初学者容易忽略它其实是一个分层的生态,误以为所有子项目都能在任意设备上运行。
误区“浮点数那么精确,变成整数之后肯定丢得不像样,我的分类器会直接废掉。”
正解int8 量化通过校准数据集找到每层的最优缩放系数,相当于用“精确到小勺”的刻度去替代“精确到克”的刻度。大部分任务在经过充分校准后,准确率损失通常在 1% 到 3% 以内,而模型体积缩至四分之一。只有极小型模型或分布很极端的权重才需要额外做量化感知训练来兜底。
为何常见:人们凭直觉认为“小数变整数”就是粗暴截断,所以高估了精度损失,看不到 scale 和 zero_point 这两个“度量衡换算器”的保护作用。
误区“我训练好了一个 .h5 模型文件,想办法把它传进 ESP32,芯片自己就能跑起来。”
正解.h5 或 .tflite 都是数据格式,微控制器无法直接执行。真正的流程是:将模型转换成 C 语言数组,写进 C/C++ 工程里和 TensorFlow Lite Micro 解释器一起编译成固件,然后在代码里手动创建解释器、分配张量、调用推理函数。这个过程相当于把菜谱“抄写”成餐车厨师能看懂的手写卡,再贴在灶台边。
为何常见:平时在电脑上调用 Keras 的 model.predict() 已经封装好了所有底层细节,让人误以为部署也只是换个地方执行同样代码。
误区“数据越密,捕捉到的细节越多,模型肯定越准,那就用 1000Hz 采样好了。”
正解高频采样会让 CPU 频繁搬运数据、内存缓冲快速膨胀、功耗急剧上升。很多振动或运动事件的有效频率只有几十赫兹,50Hz 到 100Hz 已经足够;更高频的信息往往是噪声。应该按场景物理特性选择采样频率,再用滑动窗口和特征提取把信息浓缩成模型需要的形状。这就像厨师不需要每秒看一次油温,隔几秒看一眼就够了。
为何常见:来自“更多数据 = 更好效果”的惯性思维,忽略了嵌入式设备的内存和能耗边界。
面试题
Q1. TinyML 技术主要面向哪一类计算设备?
- A.云服务器← 正确答案
- B.GPU 工作站
- C.微控制器
- D.大型机
答案:A。TinyML 的核心目标是把机器学习推理搬到微控制器级别的设备上。云服务器、GPU 工作站和大型机都资源充足,不属于 TinyML 的范畴。类似给街头餐车准备菜谱,而不是给中央厨房装系统。
Q2. ESP32 最常见的两种无线通信能力是?
- A.Wi-Fi 与蓝牙← 正确答案
- B.红外与 NFC
- C.4G 与卫星
- D.以太网与光纤
答案:A。ESP32 芯片集成 Wi-Fi 和蓝牙,这是它相比普通单片机最突出的卖点之一。它不支持 4G、卫星、光纤这类高功耗通信,适合在局域网内做边缘设备通信。
Q3. TensorFlow Lite Micro 的作用是?
- A.在 GPU 上训练大模型← 正确答案
- B.在微控制器上运行推理
- C.生成训练数据
- D.绘制神经网络结构图
答案:A。TensorFlow Lite Micro 是 TensorFlow 为微控制器推出的轻量级推理运行时。它不做训练,也不负责数据生成,只负责用尽量小的内存把已有模型跑起来。
Q4. 模型量化可以带来哪些好处?
- A.模型体积缩小← 正确答案
- B.推理速度提升← 正确答案
- C.不再需要校准数据
- D.内存占用降低← 正确答案
答案:ABD。量化把 float32 变成 int8,体积变为四分之一,内存占用同步下降,整数运算在 MCU 上也更快。但量化前仍需要校准数据集来确定每层数值范围,所以 C 选项错误。
Q5. 校准数据集的主要用途是?
- A.确定模型每层的数值范围← 正确答案
- B.重新训练一个新模型
- C.删除模型中的冗余参数
- D.提高传感器采样频率
答案:A。校准数据集让转换工具观察模型在真实输入下的激活值分布,从而计算出 scale 和 zero_point。它不是训练数据,也不负责删参数或调采样频率。
Q6. 在 ESP32 上部署 TFLite Micro 模型前,模型最终要转换成什么?
- A.C 语言数组← 正确答案
- B.Python 字典
- C.JSON 文件
- D.BMP 图片
答案:A。ESP32 的固件是 C/C++ 编译出的二进制,模型必须以 C 数组形式嵌入工程,再和解释器一起编译烧录。JSON 和图片都无法被 MCU 直接执行。
Q7. 以下哪些措施可以降低 ESP32 应用的平均功耗?
- A.使用深度睡眠模式← 正确答案
- B.降低传感器采样频率← 正确答案
- C.对模型做 int8 量化← 正确答案
- D.持续提高 CPU 主频
答案:ABC。深度睡眠大幅拉长低功耗时间,降低采样频率减少活跃时长,模型量化让推理更快、节省运算功耗。提高 CPU 主频会显著增加动态功耗,方向相反。
Q8. 一个 2→3→1 的全连接网络,包含所有偏置在内,参数量是多少?
- A.13← 正确答案
- B.6
- C.9
- D.20
答案:A。第一层权重 2×3=6 个、偏置 3 个;第二层权重 3×1=3 个、偏置 1 个,总计 13 个参数。这也解释了为什么全连接网络参数量可以快速估算:每层“输入×输出 + 输出”。
Q9. int8 量化后模型体积约为 float32 版本的多少?
- A.四分之一← 正确答案
- B.二分之一
- C.八分之一
- D.保持不变
答案:A。每个参数从 32 bit 降为 8 bit,占用存储降为原来的 8/32 = 1/4。量化让原本放不进 ESP32 的模型成功“挤”进有限 Flash 空间。
Q10. 关于 ESP32 深度睡眠与推理功耗,下列说法正确的是?
- A.深度睡眠电流可低至约 10µA← 正确答案
- B.推理时电流可能达到几十毫安← 正确答案
- C.深度睡眠模式下无法被唤醒
- D.事件驱动唤醒能降低平均功耗← 正确答案
答案:ABD。ESP32 深度睡眠确实可降至 10µA 级别,而推理和无线通信时电流可达几十毫安;设备可通过定时器或外部 GPIO 唤醒,所以 C 错误。平时睡、有事干的“事件驱动”模式能极大压低平均功耗,是续航设计的核心思路。