想象一下,你所在的小区新开了一家“社区小食堂”——厨房只有几平方米,灶台就两口,请不起大厨,但街坊们不想每次都跑去五公里外的五星级大饭店排队吃饭。这家小食堂就是树莓派(Raspberry Pi),而五星级大饭店就是云端服务器。边缘AI推理,就是让这间小食堂在自家灶台上,用有限的食材和工具,现场炒出一盘盘热乎的菜——也就是在设备本地完成AI模型的“做判断”过程,不用把每张照片都传回云端等结果。树莓派价格便宜、接口丰富、社区生态庞大,成了边缘AI最接地气的“掌勺人”。本文会带你逛一遍这间小食堂的厨房:看看怎么挑选最趁手的灶具(硬件选型),怎么把大饭店的豪华菜谱改写成家常快手菜(模型部署),怎么请一位“切片机器人”来帮忙(Coral加速器),以及怎么查出菜慢的瓶颈并优化出餐流程(性能优化)。

岗位关联

学会在树莓派上部署AI模型,是边缘AI工程师的基本功。掌握TFLite部署、Coral加速和管线调优,你就能把“云上智能”真正落进工厂车间、田间地头和社区门禁,成为打通AI落地“最后一公里”的关键角色。

目录
  1. 可视化演示
  2. 边缘硬件选型
  3. 推理框架对比
  4. 模型转换部署
  5. 加速器集成
  6. 实时推理管线
  7. 性能瓶颈分析
  8. 优化策略
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示摄像头推理管线数据流、Coral USB加速器集成与性能瓶颈分析,切换模式观察边缘AI部署优化。

本节配有交互动效(进入视口后自动加载,约 3KB)。

摄像头推理管线数据流 采集→预处理→推理→后处理四阶段管线 帧数据在各阶段间异步流转 FPS = 1 / (t_cap + t_pre + t_infer + t_post) 管线并行化提升端侧吞吐量。

边缘硬件选型

小区要开小食堂,第一件事不是买菜,而是选灶台。树莓派就像一台皮实耐用、价格亲民的多功能电磁炉:$35 美元起步,信用卡大小的主板上集成了CPU、GPU、内存和USB接口,还伸出了40根GPIO引脚,能接摄像头、传感器、小屏幕。跟动辄几万元、还要装空调机房的云端服务器相比,它把“算力成本”拉到了几百元人民币的档位。这正是边缘AI最看重的特质——在很多场景下,为了识别一个零件是否合格,不值得把视频传回数据中心的“大饭店”,在小食堂门口把菜炒了更快。

技术选型时,树莓派4B(4GB/8GB内存)和树莓派5(性能更强,发热也更猛)是当前主流。4B的CPU算力约 13 GFLOPS,跑MobileNet这类轻量模型每帧耗时约 100~150ms;5的性能提升约50%,但需要加装散热片。除了算力,还要考虑接口:CSI摄像头接口、USB 3.0、Type-C供电口,以及GPIO扩展能力。做门禁识别、果园虫情监测、工厂质检终端的工程师,通常会把树莓派板子、摄像头模块和电源装进一个防水盒,就是一台“边缘AI迷你工作站”。

实时视频应用里,最重要的指标是每秒能处理多少帧(FPS)。假设采集、预处理、推理、后处理各阶段耗时分别为 \(T_{cap}\)、\(T_{pre}\)、\(T_{infer}\)、\(T_{post}\),那么:

所以,选硬件先算一笔账:目标FPS是多少?每个阶段大概花多长时间?算不清账,灶台再贵也可能出餐慢。树莓派的价值不是“算得快”,而是“在预算和功耗内刚好把菜做好”。

FPS=1Tcap+Tpre+Tinfer+Tpost\displaystyle FPS = \frac{1}{T_{cap} + T_{pre} + T_{infer} + T_{post}}
  1. 分子1表示一帧每一张图像是一帧,分子约定为“1帧”的工作量。
    FPS=1 帧总耗时\displaystyle FPS = \frac{1 \text{ 帧}}{总耗时}
  2. 分母四个耗时项依次相加图像必须依次走完采集、预处理、推理、后处理四道工序,才能输出一个结果。
    Ttotal=Tcap+Tpre+Tinfer+Tpost\displaystyle T_{total} = T_{cap} + T_{pre} + T_{infer} + T_{post}
  3. 总耗时越小,FPS越大像小食堂出餐越快,单位时间能端出的菜越多。
    FPS=1Ttotal\displaystyle FPS = \frac{1}{T_{total}}

推理框架对比

定了灶台,下一步是选菜谱。PyTorch是在云端大饭店里研发新菜的豪华菜谱,食材讲究、摆盘精致,但它体积大、依赖重,没法直接塞进小食堂的调料柜。TensorFlow Lite(简称TFLite)就是Google专门为手机、树莓派这类“小厨房”编写的家常快手菜谱:模型文件小、占用内存低、在CPU上就能跑,还支持量化加速。PyTorch Mobile则是PyTorch官方推出的“便携版菜谱装订本”,也能在移动端运行,但转换和裁剪相对麻烦。ONNX Runtime更像一本通用的“翻译手册”,它定义了一套中间格式,让菜谱可以互相转换。

选框架的核心原则是“看后厨条件”。如果你的模型来自PyTorch生态,且需要频繁自定义算子,可以走 PyTorch → ONNX → TFLite 的转换路线;如果团队主要用TensorFlow,直接导出TFLite最省事。TFLite之所以成为边缘主流,是因为它把模型权重从32位浮点数压缩成8位整数,体积直接缩到原来的四分之一,推理速度也提升2~4倍。量化的数学本质是给浮点数找一个“刻度尺”和“偏移量”:

选框架时别迷信“哪个火就用哪个”,小食堂的菜谱再精美,炒不出来也是白搭。TFLite像一把趁手的中式炒锅,PyTorch Mobile像一套西餐刀具,ONNX Runtime则像一张灵活的折叠桌——把工具和菜式配好,才能出菜快、味道稳。

q=round(rscale)+zero_point\displaystyle q = round\left(\frac{r}{scale}\right) + zero\_point
  1. 浮点数 \(r\)原始模型权重/激活值,是连续的实数。
    r∈R\displaystyle r \in \mathbb{R}
  2. 缩放系数 \(scale\)相当于“刻度尺”的单位长度,决定浮点到整数的映射精度。
    scale=rmax−rmin28−1\displaystyle scale = \frac{r_{max} - r_{min}}{2^8 - 1}
  3. 零点 \(zero\_point\)浮点0对应到整数域的位置,保证0能被精确表示。
    q=round(rscale)+zero_point\displaystyle q = round\left(\frac{r}{scale}\right) + zero\_point

模型转换部署

小食堂想把大饭店的招牌菜“移植”过来,不能照搬原谱,得改写成自己灶台能执行的家常做法。模型转换部署,就是这道改写工序。以PyTorch模型为例,标准流程是:先导出为ONNX通用中间格式,再用TFLite Converter把ONNX文件转换为.tflite格式。转换过程中还可以写入“量化”这一步——相当于把菜谱里的“盐少许”替换成精确的“2克”,把复杂的计量单位统一简化。

转换之后,原来动辄几百MB的FP32模型,INT8量化后通常只有原来的四分之一大小。比如一个80MB的检测模型量化后变成20MB,树莓派读入内存快多了。部署到树莓派上,只需安装 tflite-runtime 包,用 Interpreter 加载模型,调用 get_input_details() / set_tensor() / invoke() 即可完成推理。需要注意的是,并非所有算子都支持量化,少数不兼容的层可以保留浮点,或在转换时指定 supported_ops。

量化后模型大小的关系简单直接:

部署的关键是“转换—验证—回退”三步走:转换后先在PC上跑一遍,对比输出差异;若精度掉得太多,就改用部分量化。小食堂改菜谱也一样,改完要自己先尝一口,咸了淡了再调整。

Sint8=Sfloat324\displaystyle S_{int8} = \frac{S_{float32}}{4}
  1. \(S_{float32}\) 原模型大小32位浮点,每个权重占4字节。
    Sfloat32=4×Nweights B\displaystyle S_{float32} = 4 \times N_{weights} \text{ B}
  2. \(S_{int8}\) 量化后大小8位整数,每个权重占1字节。
    Sint8=1×Nweights B\displaystyle S_{int8} = 1 \times N_{weights} \text{ B}
  3. 两者比值权重数量相同,但单权重字节数从4降到1,体积变为四分之一。
    Sint8Sfloat32=14\displaystyle \frac{S_{int8}}{S_{float32}} = \frac{1}{4}

加速器集成

灶台只有两口,高峰时段实在忙不过来。小食堂决定请来一位“切片机器人”——Google Coral USB Accelerator。它巴掌大小,USB 3.0一插,内置的Edge TPU专用芯片能以约4 TOPS(每秒4万亿次操作)的算力帮树莓派分担AI推理中最重的“切配”工作。树莓派CPU跑MobileNet单帧约需150ms,接入Coral后可以降到30ms以下,FPS从个位数飙升到20+。

但这位机器人有脾气:它只认识经过 edgetpu_compiler 编译过的TFLite模型,并不是任意.tflite都能插上就跑。集成时需要安装 libedgetpu1 驱动,并在代码中通过 EdgeTpuDelegate 指定使用Coral。整个流程像给新帮厨配一套专属刀具:先让厨具打上他的专属标签,他才能上手干活。

加速比是最直观的评价指标:

要注意,Coral对输入分辨率、算子支持都有限制,模型太大或算子太复杂会编译失败。小食堂请帮厨前得先看看菜单:如果全是快炒,机器人能顶三个厨师;如果全是需要小火慢炖的菜,机器人也只能干瞪眼。

S=TcpuTtpu\displaystyle S = \frac{T_{cpu}}{T_{tpu}}
  1. \(T_{cpu}\) CPU推理耗时树莓派CPU独自完成一次推理所需时间。
    Tcpu=150 ms\displaystyle T_{cpu} = 150 \text{ ms}
  2. \(T_{tpu}\) Edge TPU推理耗时Coral完成同一模型推理所需时间。
    Ttpu=30 ms\displaystyle T_{tpu} = 30 \text{ ms}
  3. 加速比 \(S\)两者相除,S=5代表速度提升到5倍。
    S=15030=5\displaystyle S = \frac{150}{30} = 5

实时推理管线

真正营业时,小食堂的出餐流程是一条流水线:顾客点餐(摄像头采集)、洗菜切菜(预处理)、下锅爆炒(模型推理)、装盘上桌(后处理)。边缘AI的实时推理管线同样由四段衔接而成。树莓派用摄像头以30fps采集视频流,每帧图像先被缩放到模型要求的尺寸(如224×224),再归一化像素值到[-1,1];然后交给TFLite解释器执行推理;最后对输出概率做Softmax或对检测框做NMS(非极大值抑制),拿到类别和坐标。

管线的端到端延迟取决于最慢那个环节,而不是所有环节并行。比如预处理如果逐像素用Python循环写,可能比推理还慢;后处理若处理大量候选框,也会吃掉时间。实际工程中,可以用 time.time() 打点,把每段耗时记录下来:

这条管线告诉我们:不能只盯着模型推理。小食堂的服务员如果点桌慢、传菜慢,后厨炒得再快,顾客还是觉得慢。每段都要测量,才能找到真正的“卡口”。

Ttotal=Tcap+Tpre+Tinfer+Tpost\displaystyle T_{total} = T_{cap} + T_{pre} + T_{infer} + T_{post}
  1. \(T_{cap}\) 图像采集耗时从摄像头读出一帧的时间,受曝光、帧缓冲影响。
    Tcap=tread−trequest\displaystyle T_{cap} = t_{read} - t_{request}
  2. \(T_{pre}\) 预处理耗时resize、归一化、通道变换等。
    Tpre=tafterPre−tbeforePre\displaystyle T_{pre} = t_{afterPre} - t_{beforePre}
  3. \(T_{infer}\) 推理耗时模型在CPU或TPU上的执行时间。
    Tinfer=tafterInvoke−tbeforeInvoke\displaystyle T_{infer} = t_{afterInvoke} - t_{beforeInvoke}
  4. \(T_{post}\) 后处理耗时Softmax/NMS等输出解析。
    Tpost=tresult−tafterPre\displaystyle T_{post} = t_{result} - t_{afterPre}

性能瓶颈分析

出餐慢了,老板不能拍脑袋说“再买口锅”,得先站到流水线旁边观察:是不是点菜队伍排到了门口?是不是洗菜阿姨一蹲就是半天?性能瓶颈分析就是这套“观察法”。树莓派上的常用工具是 htop 看CPU使用率,用 top 看哪个进程占CPU,用 perf stat 看IPC(每周期指令数),用 vcgencmd measure_temp 监控温度。如果某个阶段CPU单核100%而其余核空闲,说明该阶段是计算密集瓶颈;如果CPU整体不高但帧率上不去,可能是I/O等待或内存带宽受限。

具体测量方法是:给每个阶段加时间戳,跑100帧算平均耗时;再算每个阶段占总延迟的百分比。占比例最高的阶段就是瓶颈。比如上节例子中,推理占155ms中的120ms,占比77%,显然推理是瓶颈。而如果预处理占40%以上,即使推理很快,整体也快不了。占空比公式为:

瓶颈分析的另一个注意点是“温度降频”。树莓派没有主动散热时,CPU超过80℃会自动降频,导致推理速度骤降。就像小食堂厨房太热,厨师中暑手抖,出菜自然慢了。先散热、再优化代码,往往立竿见影。

U=TbusyTtotal\displaystyle U = \frac{T_{busy}}{T_{total}}
  1. \(T_{busy}\) 某阶段忙碌时间一个阶段在一帧处理中的实际耗时。
    Tbusy=∑i=1nti−ti−1\displaystyle T_{busy} = \sum_{i=1}^{n} t_i - t_{i-1}
  2. \(T_{total}\) 端到端总耗时整条管线处理一帧的时间。
    Ttotal=∑阶段Tbusy_stage\displaystyle T_{total} = \sum_{阶段} T_{busy\_stage}
  3. 利用率 \(U\)某阶段耗时占比,越接近1表示瓶颈越集中在此。
    U=TbusyTtotal≈77%\displaystyle U = \frac{T_{busy}}{T_{total}} \approx 77\%

优化策略

找到瓶颈后就可以动手优化,思路像极了小食堂的“降本增效”四板斧。第一斧是量化压缩:把菜谱里的高档配料换成平价替代品,模型从FP32压到INT8,体积降为1/4,速度翻倍。第二斧是模型剪枝:把不重要的“配菜”(接近零的权重)去掉,让模型更稀疏、计算量更小。第三斧是多线程并行:树莓派4B有4个CPU核心,可以把预处理、推理、后处理分配到不同线程,让四口灶同时开火。第四斧是硬件加速:Coral把最重的推理交出去,CPU专心做采集和装盘。

优化时有一个理论上限:推理延迟不可能低于“计算量÷算力”和“访存量÷带宽”两者中的较大者。就像小食堂做菜再快,也不能超过切菜刀的物理极限。设模型计算量为 \(C\),算力为 \(A\),访存量为 \(M\),内存带宽为 \(B\),则:

优化不是把每口灶都开满火,而是把钱花在瓶颈环节。如果瓶颈是推理,上Coral或量化最值;如果瓶颈是预处理,试试用OpenCV的加速函数或多线程。小食堂的经验是:先测、再改、再测,一次只动一个变量。这样,树莓派这间社区小食堂,也能在忙碌的饭点稳住阵脚,端出一道道实时AI的“热菜”。

Tlower=max⁡(CA,MB)\displaystyle T_{lower} = \max\left(\frac{C}{A}, \frac{M}{B}\right)
  1. 计算时间上限执行 \(C\) 次单位运算,每秒能算 \(A\) 次,最少需要 \(C/A\) 秒。
    Tcompute=CA\displaystyle T_{compute} = \frac{C}{A}
  2. 访存时间上限模型权重和中间结果需要从内存搬 \(M\) 字节,每秒能搬 \(B\) 字节,最少需要 \(M/B\) 秒。
    Tmemory=MB\displaystyle T_{memory} = \frac{M}{B}
  3. 取两者最大哪个环节的物理上限更高,延迟就受它约束。
    Tlower=max⁡(Tcompute,Tmemory)\displaystyle T_{lower} = \max(T_{compute}, T_{memory})

AI 应用场景

果园害虫监测

阶段:实时推理管线 + 性能优化

解决的问题:传统人工巡查果园耗时长、发现晚,云上识别又有网络延迟和流量费用。果农在果园部署树莓派+太阳能供电+高清摄像头,本地点亮TFLite轻量目标检测模型,实时识别害虫种类并计数,只在异常时上传照片给农技站。这样既免去了拖网线的麻烦,又能在害虫刚出现时立刻告警。

具体案例:某柑橘园在每3亩地布设一个树莓派节点,内置轻量化YOLO模型(INT8量化后15MB),配合Coral加速器实现20fps实时识别,识别到果蝇超过阈值就自动打开诱捕灯并微信推送告警。处理延迟从云端的800ms降到35ms,每月流量费几乎为零。

社区门禁人脸识别

阶段:模型转换部署 + 加速器集成

解决的问题:传统门禁依赖中心服务器,网络抖动会导致业主在门口等三秒才开门,隐私数据也全部外传。树莓派+摄像头+FaceNet量化模型完全本地运行,人脸特征提取和比对都在设备内完成,响应时间低于100ms,即使断网也能正常工作。

具体案例:某老旧小区改造智慧门禁,每个单元门装一套树莓派4B + Coral USB,管理员通过VIP手机录入业主照片,模型经TFLite转换并编译为Edge TPU格式后,识别精度达到98.7%,从刷脸到开门平均耗时0.4秒。

工厂传送带缺陷检测

阶段:性能瓶颈分析 + 优化策略

解决的问题:质检工人在流水线前连续盯屏容易疲劳漏检,而工厂车间没有稳定联网信号,无法依赖云端。树莓派通过GigE工业相机抓拍,预处理用OpenCV的 resize + 归一化,推理用TFLite MobileNetV3-SSD,后处理NMS,实现了每小时检测1200个零件的目标。

具体案例:某电子元件厂在传送带两侧对称部署两台树莓派,分别检测焊点和外壳划痕。经过 perf 分析发现预处理耗时占比过高,改用多线程并行处理两个摄像头后,整线检测FPS从8提升到14,误检率稳定在0.5%以内。

Python 演示

python52 行
import timeimport randomfrom collections import OrderedDict  class EdgeInferPipeline:    def __init__(self, stages):        self.stages = OrderedDict(stages)  # name: base_time in seconds        self.bottleneck_map = {}     def run_stage(self, name, base_time):        # simulate real load with cpu jitter        load = base_time * random.uniform(0.8, 1.2)        time.sleep(load)        return load     def process_one_frame(self):        records = {}        for name, base_time in self.stages.items():            records[name] = self.run_stage(name, base_time)        return records     def profile(self, rounds=30):        samples = []        for _ in range(rounds):            samples.append(self.process_one_frame())        avg = {name: sum(r[name] for r in samples) / rounds for name in self.stages}        total = sum(avg.values())        for name, part in avg.items():            self.bottleneck_map[name] = (part / total > 0.4)        return avg, total  def main():    random.seed(42)    pipeline = EdgeInferPipeline([        ("capture", 0.020),        ("preprocess", 0.010),        ("inference", 0.120),        ("postprocess", 0.005)    ])    avg, total = pipeline.profile()    fps = 1.0 / total    print("avg stage times:", avg)    print("end-to-end latency: {:.3f} s".format(total))    print("fps: {:.2f}".format(fps))    bottlenecks = [k for k, v in pipeline.bottleneck_map.items() if v]    print("bottlenecks:", bottlenecks)  if __name__ == "__main__":    main()
目的:模拟树莓派实时推理管线四个阶段的耗时,统计端到端延迟与FPS,并自动识别耗时占比超过40%的瓶颈阶段。
  1. self.stages = OrderedDict(stages)用有序字典保存阶段名和基准耗时,保证遍历顺序和实际流水线一致。
  2. load = base_time * random.uniform(0.8, 1.2)给每个阶段添加±20%的随机抖动,模拟真实运行中的CPU负载波动。
  3. time.sleep(load)让程序真实等待这段耗时,使测量结果贴近树莓派上的时间特性。
  4. records[name] = self.run_stage(name, base_time)调用每个阶段并记录单次耗时,类似用 time.time() 打点。
  5. avg = {name: sum(...) / rounds for name in self.stages}对多次运行求平均,消除随机抖动对判断的影响。
  6. total = sum(avg.values())端到端总延迟等于四个阶段的平均耗时之和,对应文中公式。
  7. self.bottleneck_map[name] = (part / total > 0.4)若某阶段占比超过40%,标记为瓶颈,指导下一步优化重点。

常见误区

误区我把自己训练的PyTorch模型直接拷贝到树莓派上,应该也能跑吧?反正都是Python。

正解PyTorch运行时依赖体积大且性能未针对CPU优化,直接跑不仅慢还容易内存不足。需要先导出ONNX再转成TFLite,进行量化后的轻量模型才能在树莓派上流畅推理。就像大饭店的整只烤全羊,不可能直接塞进小食堂的微波炉,必须拆解成小份快炒。

为何常见:PC端Python开发环境成熟,“能跑”的假象让小白忽略了移动端与桌面端的差异化需求。

误区买一个Coral USB加速器,插到树莓派上,任何模型突然就变快十倍。

正解Coral只支持经过 edgetpu_compiler 编译的特定TFLite模型,且算子必须在Edge TPU支持列表内。需要先安装 libedgetpu1,再用 EdgeTpuDelegate 加载。否则插上后模型还是跑在CPU上,毫无加速效果。这相当于请了一位只认识英文菜谱的帮厨,你得先把菜谱翻译好。

为何常见:厂商宣传强调“即插即用”,容易让人忽略底层编译和驱动的具体条件。

误区模型推理FPS从10提到30,整个应用就快了3倍。

正解用户的响应时间是采集、预处理、推理、后处理四段之和。如果摄像头采集卡顿或后处理NMS低效,推理再快也是白搭。应按公式 \(T_{total} = T_{cap} + T_{pre} + T_{infer} + T_{post}\) 逐段测量,找到实际瓶颈再优化。小食堂炒菜再快,点单排队太长,顾客依然觉得慢。

为何常见:人们天然关注“模型推理”这个AI核心环节,忽略了周边I/O和程序逻辑的时间开销。

误区INT8量化后精度肯定掉得没法用,除非万不得已不要量化。

正解对大多数检测、分类模型,采用感知量化(与校准数据配合)后精度损失通常小于0.5%~1%。量化反而带来体积缩小4倍、速度提升2~4倍的巨大收益。只有在极微小目标或边界要求极高的场景,才需要部分层保留浮点。这就像用普通盐代替高档海盐,绝大多数菜的味道几乎不受影响。

为何常见:网上部分极端案例放大了量化损失,使得初学者因噎废食,放弃了边缘部署最有效的手段。

面试题

Q1. 树莓派适合做边缘AI推理的主要原因是什么?

单选题 · easy

  • A.成本低、生态丰富、接口齐全← 正确答案
  • B.算力比云端GPU更强
  • C.不需要连接摄像头和传感器
  • D.体积大方便散热

答案:A。树莓派以几十美元的价格提供完善的计算与I/O能力,社区资料多,是边缘AI典型硬件。它算力远不及云端GPU,反而需要连接摄像头等外设,体积也并非优势。选A。

Q2. 下列哪个框架是为移动端和边缘设备轻量化推理而设计的?

单选题 · easy

  • A.TensorFlow Lite← 正确答案
  • B.PyTorch全量版
  • C.CUDA深度学习框架
  • D.Hadoop大数据框架

答案:A。TFLite专门压缩模型大小、优化CPU和NPU推理。PyTorch全量版依赖重,CUDA是NVIDIA的并行计算平台,Hadoop是分布式存储,都不是轻量推理框架。

Q3. 将PyTorch模型部署到树莓派TFLite的标准转换链是?

单选题 · mid

  • A.PyTorch → ONNX → TFLite← 正确答案
  • B.PyTorch → C++ → 汇编
  • C.PyTorch → Java → TFLite
  • D.PyTorch → TFLite直接转换

答案:A。PyTorch没有官方直接导出TFLite的通道,通常先导出ONNX中间格式,再用TFLite Converter转换。用C++或Java中间转换并不能生成TFLite模型。

Q4. 树莓派实时推理管线通常包含哪些阶段?

多选题 · mid

  • A.摄像头图像采集← 正确答案
  • B.图像缩放与归一化← 正确答案
  • C.模型推理← 正确答案
  • D.模型离线训练

答案:ABC。推理管线是数据流入到结果流出的过程,包含采集、预处理、推理、后处理。离线训练发生在模型部署之前,不属于实时推理管线阶段。

Q5. Coral USB加速器内置的专用芯片是什么?

单选题 · mid

  • A.Edge TPU专用芯片← 正确答案
  • B.普通显卡GPU
  • C.现场可编程门阵列FPGA
  • D.ARM单片机MCU

答案:A。Coral Accelerator内置Google Edge TPU芯片,专门加速TFLite模型。GPU是树莓派自带图形单元,FPGA和MCU不是Coral的核心方案。

Q6. 一个FP32模型为20MB,INT8量化后约多大?

单选题 · hard

  • A.5MB← 正确答案
  • B.10MB
  • C.20MB
  • D.40MB

答案:A。FP32每权重4字节,INT8每权重1字节,权重数相同,体积变为原来的四分之一,20MB÷4=5MB。选项中的10MB是减半,20MB是没变,40MB是翻倍。

Q7. 下列哪些做法能有效提升树莓派推理FPS?

多选题 · hard

  • A.对模型做INT8量化← 正确答案
  • B.移除无关紧要的权重进行剪枝← 正确答案
  • C.把摄像头分辨率无限调高
  • D.使用多线程并行处理多个阶段← 正确答案

答案:ABD。量化减小计算量和访存量,剪枝减少无效计算,多线程让采集/预处理/后处理与推理重叠。调高分辨率反而增加预处理和推理耗时,会降低FPS。

Q8. 树莓派CPU长时间高负载且无散热时会发生什么?

单选题 · extreme

  • A.温度超限自动降频← 正确答案
  • B.系统自动重启
  • C.推理速度越来越快
  • D.直接烧毁主板

答案:A。树莓派有温度保护机制,超过80℃左右会主动降频以降温,导致推理变慢。系统重启和烧毁不是正常保护行为,降频后速度不会变快。

Q9. 边缘AI相比云端AI最突出的优势是?

单选题 · easy

  • A.本地推理延迟低、隐私好← 正确答案
  • B.算力无穷大
  • C.不需要任何硬件
  • D.模型训练更快

答案:A。边缘设备在本地完成推理,无需网络传输,延迟低且数据不出本地。边缘算力远小于云端,训练通常仍在云端完成,因此选A。

Q10. 在树莓派上集成Coral加速器需要哪些步骤?

多选题 · mid

  • A.安装libedgetpu驱动← 正确答案
  • B.用edgetpu_compiler编译模型← 正确答案
  • C.在代码中加载EdgeTpuDelegate← 正确答案
  • D.必须更换树莓派主板

答案:ABC。Coral集成三要素是驱动、编译模型、运行时委托。它通过USB连接,无需改主板,因此D错误。