想象一家开在街角的小餐厅:后厨只有三平方米,灶台火力有限,可每天饭点都要同时应对几十桌客人。每一道菜端上来,厨师要在一两秒内判断这是在切菜、翻炒还是装盘;更棘手的是,客人点的从来不是一张静态菜单图片,而是一整套“连续动作”——炒菜的过程本身必须被看懂。这正是视频理解要做的事:让机器看懂一段连续动态画面里的“动作故事”。而传统做法是把所有画面送到云端的大机房慢慢处理,就像把食材全部运回中央厨房——成本高、耗时长、隐私还容易泄露。 于是,越来越多视频理解任务要落到“端侧”:街边移动餐车、社区小厨房——也就是手机、安防摄像头、边缘计算盒子这些资源受限的设备上。要让模型在这些“小厨房”里快速出餐,我们需要一套完整的“省火省人省时间”的思路:看得少而准(时序段采样)、分工配合(双流网络)、轻装上阵(轻量化模型)、优化流程(推理加速)、因地制宜(端侧部署)。本文就沿着这条小厨房的进化之路,带你从原理到实战,完整掌握视频理解推理加速与端侧部署的方案设计。

岗位关联

掌握视频理解推理加速与端侧部署,是视频AI工程师从“能跑通”迈向“能商用”的分水岭——它决定了你的模型能否在真实设备上以低延迟、低功耗持续稳定地工作。

目录
  1. 可视化演示
  2. 视频理解基础:看懂“动态故事”
  3. 双流网络架构:外观与动作的分工
  4. 3D卷积方法:时空一体的代价
  5. 轻量化模型:瘦身不减智
  6. 推理加速技术:小厨房的效率革命
  7. 端侧部署方案:小厨房的因地制宜
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示视频理解推理加速端侧部署方案的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。

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

视频理解推理加速端侧部署方案:视频模型 视频模型推理加速必要性 模型压缩技术(剪枝量化蒸馏) 核心机制可视化 视频理解推理加速端侧部署方案整体架构与关键组件

视频理解基础:看懂“动态故事”

厨房里,判断一道菜好不好,不只看装盘那一下,还要看切、炒、翻、颠的整套过程。视频理解中的“动作识别”(Action Recognition)也是如此:机器要从一段视频中判断人在做什么动作,既需要“看清每一帧里有什么”(空间信息),也需要“明白帧与帧之间发生了什么变化”(时间信息)。前者靠单帧的图像特征,后者靠“时序建模”(Temporal Modeling)——在时间维度上建立帧与帧之间的依赖关系。

早期做法是每一帧都送进模型,就像厨师一秒不落地盯着锅——信息冗余,还累得不行。研究者发现相邻帧之间高度相似,连续的全部帧送进去,大部分计算都在重复“看同样的画面”。于是 TSN(Temporal Segment Network,时序段网络)提出了一种聪明的策略:把整段视频平均切成 N 个片段,每个片段只取一帧(或一个短视频段)送入模型,最后把 N 个片段的判断聚合起来。这样既覆盖了完整的动作周期,又把计算量直接降为原来的 N/总帧数。

Saction=1N∑i=1NF(Vi∗)\displaystyle S_{action} = \frac{1}{N} \sum_{i=1}^{N} \mathcal{F}\left( V_i^{*} \right)

1. 切片总数 N:把整段视频在时间上均匀分成 N 个片段,每个片段覆盖约 1/N 的时间长度。

Nsegments=NN_{\text{segments}} = N

2. 代表帧 V_i\*:从第 i 个片段中均匀采样一帧(或一个短视频段),当作这个片段的“内容代表”。

Vi∗=sample(Segmenti)V_i^{*} = \text{sample}\left( \text{Segment}_i \right)

3. 模型打分 F:把代表帧送入同一个视频理解模型,提取特征并输出该帧属于各类动作的得分向量。

F(Vi∗)∈RC\mathcal{F}\left( V_i^{*} \right) \in \mathbb{R}^{C}

4. 平均聚合:把 N 个片段的得分逐类相加再除以 N,得到整段视频的动作类别得分,取最大值为预测结果。

Saction=1N∑i=1NF(Vi∗)S_{action} = \frac{1}{N}\sum_{i=1}^{N} \mathcal{F}\left( V_i^{*} \right)

回到厨房:一位聪明的厨师不会每 0.1 秒盯一次锅,而是隔几秒瞥一眼——看到“起锅烧油→下料→翻炒→装盘”这几个关键瞬间,就能判断整道菜做得对不对。TSN 的时序段采样正是这种“关键瞬间瞥一眼”的智慧:信息损耗极小,出餐效率却翻了几倍。

双流网络架构:外观与动作的分工

小厨房里忙不过来时,老板会请两位厨师分工:一位眼力好,专门看菜品的颜色、摆盘、食材搭配(外观);一位手上有感觉,专门感受颠锅、翻炒的节奏(动作)。双流网络(Two-Stream Network)正是这个思路——把“看懂画面”和“看懂运动”拆成两条独立的流。

空间流(Spatial Stream)输入单张 RGB 帧,负责提取外观特征:画面里的人是谁、拿着什么、场景长什么样。时间流(Temporal Stream)则输入连续帧之间的光流(Optical Flow)或帧差堆叠,负责捕捉运动模式:手在往哪个方向挥、身体是否在倒地、脚步是在走还是跑。两条流各自独立训练和推理,最后在末端融合——就像两位厨师分别写下自己的判断,再由老板综合定夺。

Paction=softmax(α⋅zRGB+β⋅zflow+b)\displaystyle P_{action} = \text{softmax}\left( \alpha \cdot z_{RGB} + \beta \cdot z_{flow} + b \right)

1. 空间流得分 z_RGB:把单帧 RGB 图像输入空间流卷积网络,得到外观特征的类别得分。

zRGB=fspatial(It)z_{RGB} = f_{spatial}\left( I_t \right)

2. 时间流得分 z_flow:把堆叠的光流图输入时间流网络,得到运动特征的类别得分。

zflow=ftemporal(Flowt)z_{flow} = f_{temporal}\left( \text{Flow}_{t} \right)

3. 加权求和:α、β 是两个流的融合权重,可训练也可固定,结果再加上偏置 b。

α⋅zRGB+β⋅zflow+b\alpha \cdot z_{RGB} + \beta \cdot z_{flow} + b

4. softmax 概率化:将加权后的分数转换为各类动作的概率,最大概率对应的类别即为最终动作。

Paction=softmax(⋅)P_{action} = \text{softmax}\left( \cdot \right)

双流让两位厨师各司其职,避免了“一肩挑”的混乱;更重要的是,时间流专注运动、空间流专注外观,各自都能用 ImageNet 预训练模型“热启动”,训练更稳定。这在数据量不足的视频任务里,往往比强行训练一个“全能模型”更可靠。

3D卷积方法:时空一体的代价

既然既要空间又要时间,能不能干脆请一位“超人厨师”,同时看三张连续照片、在时空立方体里一起感知?3D 卷积(3D Convolution)就是这个思路:把 2D 卷积核扩展成 3D,让卷积核同时滑过高度、宽度和时间三个维度。C3D(Convolutional 3D)最早验证了这一做法,把 16 帧的连续视频块整体送进网络学习时空特征;I3D(Inflated 3D)则进一步把成熟的 2D 卷积核“膨胀”成 3D 核,利用 ImageNet 预训练权重降低训练难度。

但超人厨师工资可不便宜。3D 卷积的计算量相比 2D 卷积几乎呈立方级增长:多了一个时间维度的滑窗,卷积核也从 k×k 变成 k×k×k。

FLOPs3D=T×H×W×Cin×Cout×k3\displaystyle \text{FLOPs}_{3D} = T \times H \times W \times C_{in} \times C_{out} \times k^3

1. 时空扫描范围 T×H×W:3D 卷积在“时间×高×宽”的三维体上滑动,T 是输入视频片段包含的帧数。

T=video_depth,H×W=spatial_sizeT = \text{video\_depth},\quad H \times W = \text{spatial\_size}

2. 卷积核体积 k³:3D 卷积核是 k×k×k 的立方体,同时覆盖空间邻域和时间邻域。

k3=k×k×kk^3 = k \times k \times k

3. 通道组合 C_in × C_out:每一个输出位置,都要把输入的所有 C_in 个通道与输出的 C_out 个通道逐对做卷积组合。

Cin×CoutC_{in} \times C_{out}

4. 总计算量:把上述三项相乘,即得到一次 3D 卷积的乘加运算总量——这就是 3D 模型“贵”的根源。

FLOPs3D=THWCinCoutk3\text{FLOPs}_{3D} = T H W C_{in} C_{out} k^3

超人厨师虽然“一眼看穿时空”,但小厨房根本养不起:16 帧 × 112×112 × 512 通道的 I3D 单次前向就需要数十 GFLOPs。这也是为什么 3D 模型在真实端侧场景往往需要搭配轻量化技术一起使用,否则只能“看看就好”。

轻量化模型:瘦身不减智

小厨房雇不起大厨团队,就得想办法“花小钱办大事”。模型轻量化主要有四招:裁员、传帮带、简化工具、重新设计菜单。对应到技术上,分别是:模型剪枝(Pruning)、知识蒸馏(Knowledge Distillation)、量化压缩(Quantization)和神经架构搜索(NAS)。

剪枝把网络中贡献小的权重或通道直接裁掉,就像裁掉帮厨里那些总在闲逛的人;蒸馏让一位“大厨师长”(教师模型)把经验传授给“小学徒”(学生模型),小学徒最终能学到八九成功力,但身材小、动作快;量化则把模型从 float32 的“精确称量”换成 int8 的“约莫一勺”——速度与体积大幅改善,精度仅有轻微损失。

xq=round(xs)+z,s=xmax⁡−xmin⁡2b−1\displaystyle x_q = \text{round}\left( \frac{x}{s} \right) + z, \quad s = \frac{x_{\max} - x_{\min}}{2^b - 1}

1. 缩放系数 s:把浮点数值范围 [x_min, x_max] 均匀映射到 b 位整数(2^b 个刻度)的步长。

s=xmax⁡−xmin⁡2b−1s = \frac{x_{\max} - x_{\min}}{2^b - 1}

2. 零点 z:浮点 0 在整数域中的对应偏移量,保证 0 值(如 padding 填充)量化后仍表示 0。

z=−round(xmin⁡s)z = -\text{round}\left( \frac{x_{\min}}{s} \right)

3. 取整量化:浮点值除以 s,四舍五入到最近整数,再平移零点,得到该浮点值在整数域的表示。

xq=round(xs)+zx_q = \text{round}\left( \frac{x}{s} \right) + z

4. 位宽 b:b=8 时模型权重与激活从 4 字节缩为 1 字节,体积缩至约 1/4,计算速度也可提升数倍。

小厨房用“约莫一勺”代替“精确克称”,菜的味道没有明显变化,出餐速度却快了几倍。同理,量化后的模型在端侧 NPU 上往往能达到 2~4 倍的推理加速——这正是端侧部署最常用的一板斧。

推理加速技术:小厨房的效率革命

厨师再能干,如果流程混乱——洗菜要去隔壁借水、切菜和炒菜抢同一个灶台——照样出不了餐。推理加速的本质,就是优化“流程”本身。四板斧分别是:算子融合(Operator Fusion)、内存优化(Memory Optimization)、批处理调度(Batch Scheduling)和零拷贝推理(Zero-copy Inference)。

算子融合把“卷积→批归一化→激活”这类连续操作合并成一个算子,减少中间结果的读写——就像把“洗菜→切菜→下锅”合并成一条流水线,菜不用每步都端到另一个台面;内存优化通过内存池复用中间缓冲区,避免频繁申请释放;批处理调度把多路视频帧拼成一个 batch 一起算,充分发挥算力;零拷贝推理则绕过 CPU 与 NPU 之间的重复拷贝,数据“出锅即上桌”。

Tinfer=FLOPsTOPS+MioBW\displaystyle T_{\text{infer}} = \frac{\text{FLOPs}}{\text{TOPS}} + \frac{M_{\text{io}}}{\text{BW}}

1. 计算时间项:模型的总乘加次数除以芯片的峰值算力,得到纯计算需要的时间。

Tcompute=FLOPsTOPST_{compute} = \frac{\text{FLOPs}}{\text{TOPS}}

2. 访存时间项:推理过程中需要搬运的参数与中间特征总量除以内存带宽,得到数据搬运的时间。

Tio=MioBWT_{io} = \frac{M_{\text{io}}}{\text{BW}}

3. 延迟相加:总延迟约等于计算时间与访存时间之和;两者若能流水线重叠,实际延迟还会更低。

Tinfer=Tcompute+TioT_{\text{infer}} = T_{compute} + T_{io}

小厨房最怕的不是厨师慢,而是“人等菜、菜等台、台等水”。推理加速的每一项技术,都是在消灭流程中的等待:融合消灭中间搬运,批处理让灶台满负荷运转,零拷贝让菜出锅直接进客人嘴里。一顿操作下来,翻台率(吞吐量)轻松翻倍。

端侧部署方案:小厨房的因地制宜

最后一步,是把这套“省火省人”的视频理解方案真正搬进街边小餐车。端侧部署不是把模型文件复制到设备那么简单,而是一次“选址—配灶—试菜—调火候”的系统工程。第一步硬件选型:根据目标帧率和算力预算挑选具备 NPU/DSP 的芯片(如高通、海思、瑞芯微、Jetson),算力要够、功耗要低、内存要装得下模型;第二步框架转换:把 PyTorch/TensorFlow 模型导出为 ONNX,再转换成 TFLite、NCNN、RKNN 等端侧推理框架的格式,并逐一核对算子是否被 NPU 支持;第三步性能调优:用 Profiler 定位瓶颈算子,结合算子上板、多线程、算子融合逐项优化;第四步动态分辨率:在低峰期自动降低输入分辨率以省电,高峰期恢复全分辨率保精度。

TOPSneed=FLOPsmodel×FPStarget1012\displaystyle \text{TOPS}_{\text{need}} = \frac{\text{FLOPs}_{\text{model}} \times \text{FPS}_{\text{target}}}{10^{12}}

1. 单帧计算量:模型处理一帧视频所需的乘加运算次数,决定算力需求的“单价”。

FLOPsmodel\text{FLOPs}_{\text{model}}

2. 目标帧率:端侧实时推理要求每秒处理的帧数,如 25FPS 意味着每秒要完成 25 次前向。

FPStarget\text{FPS}_{\text{target}}

3. 每秒总运算量:单帧运算量乘以帧率,即模型在目标帧率下每秒需要的总运算次数。

FLOPsmodel×FPStarget\text{FLOPs}_{\text{model}} \times \text{FPS}_{\text{target}}

4. 换算成 TOPS:除以 10¹² 得到芯片必须达到的最低算力数值,低于它则无法实时运行。

TOPSneed=FLOPsmodel×FPStarget1012\text{TOPS}_{\text{need}} = \frac{\text{FLOPs}_{\text{model}} \times \text{FPS}_{\text{target}}}{10^{12}}

街边小餐车虽然面积小、电源紧,但只要选对了灶(NPU 芯片)、改对了菜谱(框架转换)、调对了火候(性能调优),照样能做出让人排队买的招牌菜。视频理解端侧部署的最终目标,不是把“大餐厅”硬塞进“小厨房”,而是在每一平方米的算力里,榨出最流畅、最省电、最稳定的实时 AI 体验。

AI 应用场景

智慧园区跌倒检测

阶段:端侧部署与推理加速

解决的问题:传统做法是把摄像头视频流全部上传云端识别,带宽成本高、隐私风险大、网络抖动还会导致告警延迟。AI 方案在园区的边缘计算盒(如 Jetson 或海思芯片)内部署轻量化跌倒识别模型,视频在端侧实时推理,只有触发告警时才上传片段。

具体案例:某养老园区部署 12 路摄像头,边缘盒子搭载经过剪枝 + int8 量化的时序段采样模型,运行时功耗低于 8W,跌倒检测延迟小于 200ms,相比云端方案带宽消耗下降 90%。

手机端健身动作计数

阶段:轻量化模型 + 时序建模

解决的问题:健身 App 需要实时识别深蹲、俯卧撑等动作并计数纠错,但把大模型装进手机不现实。知识蒸馏加时序段采样可以大幅压缩模型规模,同时保留动作识别的准确率。

具体案例:使用知识蒸馏把大型双流模型压缩成 3MB 的移动端模型,配合 16 段时序采样与零拷贝推理,在骁龙 8 系列手机上达到 30FPS 实时识别;云端教师模型负责离线迭代优化。

工业劳保用品穿戴检测

阶段:批处理调度 + 算子融合

解决的问题:工厂流水线需要 24 小时检测工人是否佩戴安全帽,多路视频并发要求高吞吐,单路逐帧处理会浪费算力。

具体案例:在产线部署 4 路 1080p 摄像头,通过批处理调度把多路帧合并为 batch=8 的输入,算子融合后单块边缘板卡完成 4 路 15FPS 的实时检测,并利用动态分辨率在低峰期自动降低功耗。

Python 演示

python62 行
"""视频理解推理加速演示: 全帧密集推理 vs 时序段采样推理"""import numpy as npimport time  class TinyVideoModel:    """迷你视频理解模型: 平均池化 + 线性分类头"""     def __init__(self, num_classes=4, feat_dim=64):        np.random.seed(42)        self.classifier = np.random.randn(num_classes, feat_dim) * 0.1     def forward(self, frame):        """单帧前向: 32x32 灰度图 -> 8x8 特征 -> 4 类动作得分"""        pool = np.mean(frame.reshape(8, 4, 8, 4), axis=(1, 3))        feature = pool.flatten()        return self.classifier @ feature  def sample_segments(total_frames, num_segments):    """均匀切段, 每段取中间帧作为代表帧"""    seg_size = total_frames // num_segments    indices = []    for s in range(num_segments):        mid = s * seg_size + seg_size // 2        indices.append(min(mid, total_frames - 1))    return indices  def main():    model = TinyVideoModel()    total_frames = 32    video = np.random.randn(total_frames, 32, 32).astype(np.float32)     def run_style(frame_list):        """对给定帧列表执行推理, 返回最短耗时(ms)与得分"""        best = float("inf")        scores = None        for _ in range(3):            t0 = time.perf_counter()            scores = [model.forward(f) for f in frame_list]            best = min(best, (time.perf_counter() - t0) * 1000)        return best, scores     # 方式一: 全帧密集推理    dense_time, _ = run_style(video)     # 方式二: 8 段采样稀疏推理    idx = sample_segments(total_frames, 8)    sparse_time, sparse_scores = run_style([video[i] for i in idx])    avg_score = np.mean(sparse_scores, axis=0)     print(f"全帧密集推理: {total_frames} 帧, 耗时 {dense_time:.2f} ms")    print(f"8 段采样推理: {len(idx)} 帧, 耗时 {sparse_time:.2f} ms")    print(f"加速比: {dense_time / sparse_time:.1f}x")    print(f"采样帧索引: {idx}")    print(f"聚合动作得分: {np.round(avg_score, 3)}")    print(f"预测动作类别: {int(np.argmax(avg_score))}")  if __name__ == "__main__":    main()
目的:用极简模型模拟视频理解推理,对比“全帧密集处理”与“8 段采样稀疏处理”的运行耗时,直观展示时序段采样带来的加速收益。
  1. pool = np.mean(frame.reshape(8, 4, 8, 4), axis=(1, 3))把 32×32 的一帧压缩成 8×8 特征图,模拟“空间特征提取”。
  2. return self.classifier @ feature用线性分类头输出 4 类动作得分,代表模型对单帧的判断。
  3. indices.append(min(mid, total_frames - 1))取每个片段中间帧作为代表帧,并做边界保护防止越界。
  4. dense_time, _ = run_style(video)全帧密集推理:32 帧全部送入模型。
  5. sparse_time, sparse_scores = run_style([video[i] for i in idx])稀疏推理:只把 8 个代表帧送入模型。
  6. avg_score = np.mean(sparse_scores, axis=0)对 8 个片段得分取平均,这对应 TSN 公式中的平均聚合。
  7. print(f"加速比: {dense_time / sparse_time:.1f}x")输出采样带来的推理加速倍数。

常见误区

误区以为把训练好的 .pth 或 .h5 文件复制到手机或摄像头里,模型就能直接跑起来。

正解模型上板要经过格式转换(ONNX→TFLite/NCNN/NPU IR)、算子映射、内存规划、多核调度与功耗控制。就像把餐厅的大菜谱搬到小餐车前,需要按小灶的脾气改写菜谱,而不是直接塞进一本厚书。

为何常见:训练侧“保存即完成”的习惯,让工程师严重低估了部署链路的复杂度。

误区觉得 3D 卷积把时空一起看了,信息更全,效果必然更好。

正解3D 模型参数量和计算量巨大,在中小规模数据集上很容易过拟合,训练也难以收敛;双流的时空分离结构参数更少,配合预训练往往更稳。选型要看数据规模与算力预算,不能只看论文榜单。

为何常见:论文里 I3D 等 3D 模型分数高,但那是大数据加大算力堆出来的结果,普通项目很难复现。

误区认为把更多帧送入模型就能捕捉更多时序信息,准确率一定更高。

正解相邻帧高度冗余,全帧送入只会放大计算量并引入重复特征的噪声;均匀稀疏采样(如 TSN 的 8 段)已经能覆盖完整动作周期,准确率与效率俱佳。

为何常见:直觉上“看得越多知道越多”,却忽略了视频帧之间的强相关性与计算开销的线性增长。

误区以为调用一行 cast 就能把模型从 float32 变成 int8,精度损失完全是玄学、不可控。

正解量化需要确定缩放系数 s 和零点 z,还要用校准集统计激活分布、做 clip 截断,必要时采用逐通道量化或混合量化,否则精度可能断崖式下跌。

为何常见:很多框架 API 把量化封装得过于简单,掩盖了内部校准与映射的复杂细节。

误区认为端侧优化目标就是把 FPS 拉到极限,跑分越高越厉害。

正解端侧还要同时满足准确率、延迟、功耗、散热和内存上限。一味追 FPS 可能把功耗推到设备无法承受,或把精度掉到不可用。正确做法是根据产品需求定目标帧率,再反推模型与芯片预算。

为何常见:实验室常见的“跑分文化”让工程师只盯着帧率数字,忽略了真实场景的多重约束。

面试题

Q1. 视频理解中“时序建模”主要解决什么问题?

单选题 · easy

  • A.提高单帧图像的画质清晰度
  • B.捕捉帧间动作变化规律← 正确答案
  • C.压缩视频文件的存储体积
  • D.增强视频画面的色彩对比度

答案:B。时序建模关注的是帧与帧之间的动态依赖,旨在捕捉“动作变化规律”,而不是处理画质、压缩或色彩。就像厨师判断“翻炒”这个动作,靠的是连续画面之间的变化,而非某一帧的精美程度。

Q2. 双流网络中“时间流”的典型输入是什么?

单选题 · easy

  • A.单张 RGB 彩色图像
  • B.堆叠的光流图或帧差图← 正确答案
  • C.视频的音频频谱数据
  • D.模型的梯度参数矩阵

答案:B。时间流专门负责捕捉运动模式,其典型输入是堆叠的光流图(或帧差图),而不是单张 RGB、音频或梯度。相当于厨师“感受颠锅节奏”用的是手部运动信息,而不是菜品的静态照片。

Q3. 与 2D 卷积相比,3D 卷积的主要代价是什么?

单选题 · mid

  • A.无法识别静态图像内容
  • B.计算量随卷积核立方增长← 正确答案
  • C.需要更多的视频标注数据
  • D.只能处理黑白视频画面

答案:B。3D 卷积核从 k×k 变成 k×k×k,计算量按立方级增长,这是它“贵”的根本原因。它依然能识别静态内容、支持彩色输入,标注数据的需求也不是其固有代价。

Q4. 知识蒸馏中“教师模型”的作用是什么?

单选题 · mid

  • A.为训练数据做数据增强
  • B.指导小模型学习知识← 正确答案
  • C.加速大模型的训练过程
  • D.替代小模型做端侧推理

答案:B。教师模型(大模型)负责输出软标签或中间特征来指导学生模型(小模型)学习,相当于“大厨师长传帮带”,而不是做增强、加速训练或替代推理。

Q5. 模型量化到 int8 后,模型体积大约缩小到原来的多少?

单选题 · easy

  • A.缩小为原来一半
  • B.缩小为原来四分之一← 正确答案
  • C.缩小为原来十分之一
  • D.缩小为原来八分之一

答案:B。float32 占 4 字节,int8 占 1 字节,因此体积缩小为原来的 1/4,即“四分之一”。好比把精确克称换成约莫一勺,工具占的地方自然小得多。

Q6. 以下哪些属于推理加速技术?

多选题 · mid

  • A.算子融合← 正确答案
  • B.零拷贝推理← 正确答案
  • C.数据增强
  • D.批处理调度← 正确答案

答案:ABD。算子融合、零拷贝推理、批处理调度都是推理阶段的流程优化技术;数据增强属于训练阶段,与推理加速无关。

Q7. 算子融合主要缓解的是哪类瓶颈?

单选题 · hard

  • A.内存带宽瓶颈← 正确答案
  • B.网络过拟合瓶颈
  • C.数据标注瓶颈
  • D.模型收敛瓶颈

答案:A。算子融合把 Conv、BN、ReLU 等连续算子合并,减少中间结果写回内存再读出的次数,直击“访存瓶颈”。好比把洗菜切菜下锅合并成流水线,省去每步之间端盘子的时间。

Q8. 端侧部署方案设计中需要考虑哪些因素?

多选题 · mid

  • A.芯片算力大小← 正确答案
  • B.内存带宽与容量← 正确答案
  • C.算子支持与模型大小← 正确答案
  • D.训练集标注的数量

答案:ABC。端侧部署要评估芯片算力(TOPS)、内存带宽与容量、推理框架对算子的支持程度以及模型体积;训练集标注数量影响的是模型训练阶段,与部署选型无关。

Q9. 视频流推理中,批处理调度带来的主要收益是什么?

单选题 · extreme

  • A.提高设备算力利用率← 正确答案
  • B.降低视频压缩码率
  • C.提升单帧图像分辨率
  • D.减少训练迭代次数

答案:A。批处理调度把多路视频帧拼成 batch 一起计算,让芯片的矩阵运算单元满负荷运转,提高算力利用率。它不改变码率、分辨率和训练过程,只优化推理阶段的吞吐。

Q10. 下列哪些是时序段采样(TSN)带来的优势?

多选题 · hard

  • A.大幅减少送入模型的帧数← 正确答案
  • B.提高对长视频的覆盖能力← 正确答案
  • C.消除所有光流计算开销
  • D.降低推理延迟与算力需求← 正确答案

答案:ABD。TSN 把视频切成 N 段并各取代表帧,帧数大为减少(A),均匀分段还能覆盖完整动作周期(B),从而降低延迟与算力需求(D)。但 TSN 本身并不消除光流计算,若使用双流变体仍需计算光流(C 错)。