想象你经营一家高档餐厅。旧后厨里有 64 位“全能厨师”,每位都要独立完成 64 道菜:从全部 64 种食材里各取一点,用 9 种刀法细细切好,再亲自下锅调味。人多、厨具多、出菜慢,订单一多就积压——这就是标准卷积的日常:每个输出通道都要混合所有输入通道。后来你引入流水线改革:第一步,给每种食材配一位“食材专员”,专员只专心用 9 种刀法处理自己负责的那一种食材,互不干涉;第二步,主厨用一勺秘制酱料把所有处理好的食材按菜谱比例调和。结果出菜速度大幅提升、厨具采购量骤减、菜色仅略打折扣。深度可分离卷积就是这套后厨哲学:把“通道间全混合”的密集劳动拆成“逐通道空间提取 + 逐点通道融合”两步,让 MobileNet 这类网络在手机芯片上也能实时跑起图像识别。接下来,我们就用这条流水线的镜头,把 CNN 轻量化最锋利的一把刀拆开看个透。
掌握深度可分离卷积,是从事模型压缩与移动端部署的必修课。理解它,你就能把大模型塞进手机和嵌入式芯片,让 AI 真正落地到千万用户的设备上。
目录
可视化演示
动态演示深度可分离卷积的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
深度可分离卷积:标准卷积 标准卷积的计算瓶颈 深度卷积与逐点卷积拆分 核心机制可视化 深度可分离卷积整体架构与关键组件
卷积基础回顾:全能厨师的忙碌后厨
在揭秘深度可分离卷积之前,先要看清标准卷积这位“全能厨师”到底有多忙。假设后厨有 3 种食材、要出 3 道菜,标准卷积的做法是:每道菜的厨师都要从 3 种食材里各取一点,用 9 种刀法切成小方块,再混在一起下锅调味。也就是说,每个输出通道(每道菜)都要把输入通道(每种食材)完整地过一遍手,一道菜都不许偷懒。
换成卷积的语言:标准卷积层有 C_out 个卷积核,每个卷积核的形状是 C_in×K×K。它在输入特征图上滑动,逐个位置地把“所有输入通道的 K×K 邻域”加权求和,得到一个输出像素。权重数量随输入通道数和输出通道数相乘增长——通道数一旦放大到几十上百,这个“全混合”动作就成了计算量的无底洞。
参数量可以用一个简洁的公式刻画:
回到后厨对比一下:64 位客人、备了 64 种食材,每人还要求 64 道菜,结果就是 64×64 套配方、64 位全能厨师。这就是标准卷积的代价——通道数一涨,人力成本就呈平方级飙升。要破除这个魔咒,就得引入流水线。
- 输出通道数 C_out决定生成多少张输出特征图,就像餐厅要出多少道菜。每道菜都配一套完整的调料配方,一套配方对应一个卷积核。
- 输入通道数 C_in输入特征图的通道数量,就像后厨备了多少种食材。每一种食材都要被每一套配方用到,所以它是连乘的第二个因子。
- 卷积核尺寸 K×K卷积核的空间窗口,3×3 就是 9 个权重的小窗口。窗口越大,单次看到的空间范围越大,参数也越多。
- 连乘含义每个输出通道的 K×K 权重都要覆盖全部输入通道,三者相乘才是标准卷积的参数总量。
两步拆分思想:食材专员与主厨的接力
聪明的老板开始改革后厨:把“每道菜从头做到尾”拆成两个工种。第一步是食材分拣:给每种食材配一位专员,蔬菜专员只管蔬菜、肉类专员只管肉类,专员之间绝不串岗;第二步是主厨调和:所有处理好的半成品端到主厨面前,主厨用一勺秘制酱料按菜谱比例把它们混合成最终菜品。每个工种只做一件事,效率自然高。
这套分工放到卷积里就是两个算子。第一个叫逐通道卷积(Depthwise Convolution):输入有几个通道,就用几个 K×K 卷积核,每个核只负责自己的通道,输出通道数恰好等于输入通道数,它负责在“空间”上提取特征。第二个叫逐点卷积(Pointwise Convolution):用 1×1 卷积核对逐通道的输出做跨通道线性组合,把“通道之间”的信息融合起来,并自由决定输出通道数。
两个算子的参数相加,就是深度可分离卷积的参数总量:
对比标准卷积的 C_out×C_in×K×K,后厨团队从“64 个全能手”换成“64 个食材专员 + 1 位主厨”:专员不用背所有菜谱,主厨只需一只勺。当输出通道只有 3 个时还不明显,一旦输出通道变成 64、128,省下的人力就是成百上千倍的差距——这就是拆分的魔力。
- 逐通道卷积参数每个输入通道 c 只有一个属于自己的 K×K 卷积核,总共 K×K×C_in 个参数。这就是“每个食材专员只背一种刀法”。
- 逐点卷积参数1×1 卷积核要覆盖所有输入通道,每个输出通道一套,参数为 C_in×C_out。这是“主厨的秘制酱料配方:每种食材来一勺”。
- 两步相加深度可分离的总参数是两步参数之和,流水线上的厨具总数一目了然。
计算流程详解:三张工作台的接力
流水线动起来要过三个工位。第一工位是“分拣台”(逐通道卷积):输入特征图 D 的 C_in 个通道被拆开,每个通道 D_c 单独送进自己的 K×K 卷积核 K_c,产出尺寸不变的中间特征图 D'_c。这一站只做“空间”处理,完全不知道其他通道长什么样。
第二工位是“融合台”(逐点卷积):所有 D'_c 叠在一起,一个 1×1 卷积核 W 扫过每个像素位置,把 C_in 个通道加权求和,生成 C_out 个输出通道。这一站只做“通道”混合,空间上不做任何扩展。两站之间通常夹着 BatchNorm 归一化和 ReLU 激活,让网络具备非线性表达能力,这是 MobileNet 系列的标准配置。
用数学语言描述这两个工位:
流水线的妙处在于两张工作台各司其职:分拣台只处理空间、融合台只处理通道。哪个环节慢了就优化哪个,而且中间产物 D' 的通道数与输入一致、空间尺寸不变,流动非常规整——整个后厨流程清晰可控,不会有任何一步“越权”。
- 逐通道算子符号 ∗ 表示卷积运算。等式说明第 c 个通道的输出 D'_c 只由第 c 个输入通道 D_c 和自己的核 K_c 决定,通道间零交流。
- 通道编号范围c 遍历 1 到 C_in,说明有多少输入通道就有多少个独立的 3×3 卷积核和中间特征图。
- 逐点融合W_1×1 是形状为 C_out×C_in×1×1 的卷积核,它对 D' 的每个空间位置做跨通道的加权求和,最终得到形状 (C_out, H, W) 的输出特征图 Y。
参数与算力:省下的真金白银
老板最关心的永远是成本账。假设输入 C_in 通道、输出 C_out 通道、使用 3×3 卷积核。标准卷积每算一个输出像素要做 C_in×9 次乘法;整个输出特征图是 H×W×C_out 个像素,所以总计算量是 C_in×C_out×9×H×W——这是旧后厨的“总工时”。
深度可分离的账要精打细算。逐通道阶段,每个输入通道只被自己的 3×3 核扫过一遍,花 C_in×9 次乘法;逐点阶段是 1×1 卷积,每个输出像素花 C_in×C_out 次乘法。总计算量是 (C_in×9 + C_in×C_out)×H×W——这是流水线的“总工时”。
两笔账一除,得到压缩比公式:
成本账一目了然:客人越多(通道越多),流水线比全能厨师省得越狠。这也解释了为什么深度可分离卷积的收益集中在网络深层——那里通道数动辄几百,正是人力成本最夸张的地方。
- 分子(流水线工时)逐通道计算量 C_in×9 加上逐点计算量 C_in×C_out,两部分都还要乘以 H×W 才是总次数,但我们只关心比例所以约掉了。
- 分母(全能厨师工时)标准卷积每个输出像素要累加全部输入通道的 9 个窗口权重,即 C_in×C_out×9。
- 约分结果分子分母同除以 C_in×9,得到两项之和 1/C_out + 1/9。第一项来自逐点卷积的共享,第二项来自逐通道卷积的空间处理。
- 代入实际值当 C_out=64 时 η≈0.127,约 1/8;C_out=256 时 η≈0.115,约 1/9。输出通道越多,省得越狠。
轻量化优势:小厨房也能做大宴席
流水线给后厨带来的第一个好处是“厨具骤减”——模型体积小。参数从 C_in×C_out×9 降到 C_in×9 + C_in×C_out,在典型网络里是几十倍的差距。MobileNetV1 的参数量只有 VGG16 的约三十分之一,存储空间从几百 MB 降到十几 MB,手机 App 的安装包立刻瘦身。
第二个好处是“出菜飞快”——推理延迟低。计算量降到约 1/8 到 1/9,这在手机、摄像头这些“小厨房”里意味着质变:同一块芯片上,图像识别从“卡成幻灯片”变成“实时预览”,视频流检测由此成为可能。端侧 AI 产品最看重这个指标,因为用户忍受不了按下快门还要等三秒。
第三个好处必须清醒认识:精度权衡。流水线的每个专员只做一种食材,少了全能厨师对整个菜品的通盘拿捏,网络表达能力略有下降。MobileNetV1 在 ImageNet 上 top-1 准确率约 70.6%,相比 VGG16 的 71.5% 低不到 1 个百分点,但换来的是体积缩小 30 倍、速度提升近 8 倍。工程上完全可以用知识蒸馏、更大的训练轮次把这 1% 的差距补回来。
这就是“小厨房也能做大宴席”的底气——精度的小让步换来了体积、速度的大跨越。移动端硬件资源有限,却也想跑通人脸识别、物体检测这些“硬菜”,深度可分离卷积正是那把最锋利的刀。
经典网络代表:流水线的最佳实践
流水线从理论走向工程,最著名的落地是 Google 的 MobileNet。MobileNetV1 把网络几乎每一层卷积都替换为深度可分离卷积,只保留第一层标准卷积提取原始 RGB 图像的底层细节,其余层全部交给“食材专员 + 主厨”的组合。
MobileNet 还提供了两个调节旋钮。宽度系数 α 把每层通道数整体缩放:α=0.5 表示所有通道减半;分辨率系数 ρ 把输入图像按比例缩小。宽度系数对参数的压缩效果是平方级的:
另一条经典路线是 Xception:它在 Inception 模块基础上把“先逐通道、后逐点”的结构贯彻到底,并加入残差连接,在 ImageNet 上超越了 Inception V3。后来的 MobileNetV2/V3、EfficientNet 也都以深度可分离卷积为基本积木。这些经典网络的出现,说明流水线已经从“实验”变成行业标配——工程师可以直接把它们当 backbone 使用,再接上检测、分割等任务头,轻松部署到手机和边缘盒子。
- 宽度系数 α取值范围 0<α≤1,把每一层的通道数都乘以 α,让网络整体“变瘦”。α 越小,模型越小,精度损失越多。
- 通道缩放后代入逐通道部分变成 (αC_in)×9,逐点部分变成 (αC_in)×(αC_out),因为输入输出通道同时缩放。
- 平方缩减提取公因子 α²,得到 α²×P_ds。这就是“每道菜分量减半,所有食材都减半”带来的双倍省钱效应。
使用注意事项:别让流水线变成绊脚石
流水线虽好,直接照搬也会翻车。首先,不是所有层都适合用深度可分离:网络第一层通常保留标准卷积,因为输入只有 3 个 RGB 通道,逐通道省不了多少算力,反而丢失底层细节;深层通道数多,才是深度可分离发挥威力的主战场。结构设计的原则是“浅层求稳、深层求省”。
训练上也有讲究。深度可分离网络参数量少、容量小,需要更长的训练周期、更精细的学习率策略,配合数据增强和知识蒸馏才能逼近标准网络的精度。直接用训练 VGG 的“配方”去训 MobileNet,往往收敛慢、精度差,这不是网络不行,而是没给它“加餐”。
评估时必须回归真实场景:FLOPs 只是理论值。深度可分离卷积的逐通道特性是“小矩阵、多批次”的稀疏计算,在部分硬件上访存不连续,GPU 的矩阵乘加速并不总是见效。最佳实践是在目标设备上实测推理延迟,再用 AI 工具链做算子融合、量化等专门优化,硬件不配合时还要考虑把逐通道卷积合并成标准卷积。
一句话:流水线是给懂后厨管理的人用的工具——知道哪道菜值得拆、哪道菜必须亲力亲为,才能让效率与口味兼得。在移动端,深度可分离卷积是首选方案;在服务器端强算力面前,它反而不一定是最优解。
AI 应用场景
手机端实时图像分类与检测
阶段:模型压缩与端侧部署
解决的问题:传统 CNN 如 VGG16 有 1.38 亿参数,在手机 CPU 上跑一张图要数秒,内存和耗电都扛不住。用深度可分离卷积替换标准卷积后,模型缩至十几 MB,推理延迟降到几十毫秒,摄像头取景框内就能实时给出分类结果与检测框。
具体案例:某电商 App 的扫码识物功能,后端原本部署在云服务器,每张图往返延迟 300ms 且需承担高额带宽。工程师改用 MobileNetV3 作为主干网络,在手机本地完成特征提取与分类,延迟降到 30ms,服务器成本下降 80%。
工业质检边缘盒子
阶段:边缘推理与模型压缩
解决的问题:产线质检要求在 10ms 内判断工件是否缺陷,数据不能出车间,只能在摄像头旁的小盒子(嵌入式设备)上跑模型。标准卷积网络在低功耗 ARM 芯片上算力不足,深度可分离卷积把计算量降到 1/8 后,实时检测成为可能。
具体案例:某电子元件工厂部署了 200 个边缘质检盒子,每个盒子内置深度可分离卷积分类网络,对电路板焊点缺陷做实时筛查。相比此前的人工目检,漏检率下降 60%,且 24 小时不间断运行。
无人机与机器人的低功耗感知
阶段:端侧推理加速
解决的问题:无人机续航有限,机载芯片功耗预算只有几瓦,还要同时跑目标检测与避障。深度可分离卷积在保持精度的同时大幅降低算力需求,让无人机在飞行中也能实时识别障碍物和地面目标。
具体案例:某农业无人机团队用深度可分离卷积搭建小麦病虫害检测模型,在机载 Jetson Nano 上达到 25 帧/秒的实时检测,一次飞行可巡查 50 亩农田,功耗控制在 5W 以内,比传统方案续航提升约 40%。
Python 演示
import numpy as np def conv2d(img, kernel, stride=1, pad=1): """标准卷积: img(C_in,H,W), kernel(C_out,C_in,K,K) -> (C_out,H,W)""" ci, h, w = img.shape co, _, k, _ = kernel.shape ho = (h + 2 * pad - k) // stride + 1 wo = (w + 2 * pad - k) // stride + 1 img_pad = np.pad(img, ((0, 0), (pad, pad), (pad, pad)), mode='constant') out = np.zeros((co, ho, wo)) for o in range(co): for i in range(ho): for j in range(wo): patch = img_pad[:, i * stride:i * stride + k, j * stride:j * stride + k] out[o, i, j] = np.sum(kernel[o] * patch) return out def depthwise_separable_conv(img, dw_kernel, pw_kernel, stride=1, pad=1): """深度可分离: 逐通道dw(C_in,1,K,K) + 逐点pw(C_out,C_in,1,1)""" ci, h, w = img.shape k = dw_kernel.shape[2] ho = (h + 2 * pad - k) // stride + 1 wo = (w + 2 * pad - k) // stride + 1 img_pad = np.pad(img, ((0, 0), (pad, pad), (pad, pad)), mode='constant') mid = np.zeros((ci, ho, wo)) for c in range(ci): # 逐通道: 每个通道用独立卷积核 for i in range(ho): for j in range(wo): patch = img_pad[c, i:i + k, j:j + k] mid[c, i, j] = np.sum(dw_kernel[c, 0] * patch) out = np.zeros((pw_kernel.shape[0], ho, wo)) for o in range(pw_kernel.shape[0]): # 逐点: 1x1跨通道融合 for c in range(ci): out[o] += pw_kernel[o, c, 0, 0] * mid[c] return out if __name__ == '__main__': np.random.seed(42) img = np.random.randn(3, 8, 8) # 3通道输入, 8x8特征图 c_out = 4 std_w = np.random.randn(c_out, 3, 3, 3) # 标准卷积核 dw_w = np.random.randn(3, 1, 3, 3) # 逐通道卷积核 pw_w = np.random.randn(c_out, 3, 1, 1) # 逐点卷积核 out_std = conv2d(img, std_w, pad=1) out_ds = depthwise_separable_conv(img, dw_w, pw_w, pad=1) print("标准卷积输出形状:", out_std.shape) print("深度可分离输出形状:", out_ds.shape) print("标准卷积参数量:", std_w.size) print("深度可分离参数量:", dw_w.size + pw_w.size) print("压缩比例: %.2f%%" % ((dw_w.size + pw_w.size) / std_w.size * 100))
img_pad = np.pad(img, ((0,0),(pad,pad),(pad,pad)), mode='constant')给特征图四周补零,保证卷积后尺寸不变。patch = img_pad[:, i*stride:i*stride+k, j*stride:j*stride+k]取出某个输出像素对应的所有通道局部窗口,标准卷积同时看到全部通道。out[o, i, j] = np.sum(kernel[o] * patch)一个输出通道累加所有输入通道的加权和,这就是“全能厨师”的全混合操作。patch = img_pad[c, i:i+k, j:j+k]逐通道卷积只取第 c 个通道的窗口,专员不看别人家的食材。mid[c, i, j] = np.sum(dw_kernel[c, 0] * patch)每个通道用自己独立的 3×3 核处理,输出通道数等于输入通道数。out[o] += pw_kernel[o, c, 0, 0] * mid[c]逐点卷积的 1×1 权重跨通道累加,主厨按配方比例调和。print("压缩比例: %.2f%%" % ((dw_w.size + pw_w.size) / std_w.size * 100))本例输出 36%,与理论压缩比公式吻合。
常见误区
误区我以为深度可分离就是把 3×3 卷积去掉几个参数,相当于用小卷积核(比如 1×1 或 2×2)代替 3×3,所以叫“可分离”。
正解完全不是。深度可分离拆的是“通道”维度而不是“空间”维度。逐通道卷积里每个卷积核仍然是 3×3,只是每个核只负责一个输入通道;逐点卷积用 1×1 核负责混合通道。空间感受野和标准卷积一样大,但跨通道的耦合被拆成了两步,这才是省参数的本质。
为何常见:名字里带“分离”,又一直和“轻量化”绑定,初学者容易直觉地理解为缩小卷积核尺寸。
误区分组卷积不也是把通道分成几组分别计算吗?感觉跟深度可分离差别不大,都是省参数的手段。
正解分组卷积把通道分成 G 组,组内仍然是“全混合”;深度可分离是分组数的极端情况——每组只有 1 个通道,即 G=C_in,这就是“逐通道”;但拆完还必须接一个 1×1 逐点卷积来恢复通道间的信息流动。少了逐点卷积,网络学不到跨通道特征,精度会明显崩坏。
为何常见:两者都在通道维度做文章,数学形式上确实有关联,不细究分组数与“逐通道+逐点”的组合关系就容易混淆。
误区既然它只是把标准卷积拆开算,数学上应该等价,那精度也应该一点不差。
正解计算形式并不等价。标准卷积的每个输出像素是所有输入通道的联合函数,而深度可分离把空间卷积和通道混合拆成两个线性步骤,中间还夹着激活函数,表达空间受到了限制。实测 MobileNetV1 在 ImageNet 上比同代标准卷积网络低约 1 个百分点。工程上常靠知识蒸馏和加宽通道数来补偿。
为何常见:“拆分后结果一样”的直觉只对纯线性运算成立,但 CNN 里有非线性激活,拆分改变了解空间。
误区我把模型计算量降到 1/8,换到手机上应该也能快 8 倍吧?
正解FLOPs 只是理论上的乘加次数。深度可分离的逐通道卷积是“小矩阵、多批次”的稀疏形态,很多框架在移动端 CPU 上对它的算子优化不如标准卷积成熟,访存开销可能抵消理论收益。必须用目标设备实测推理延迟,而不是只盯 FLOPs 数字。
为何常见:大家习惯用 FLOPs 衡量模型快慢,但工程真谛是“理论省算力 + 硬件优化配合”双重因素。
面试题
Q1. 深度可分离卷积由哪两个子操作组成?
- A.膨胀卷积与转置卷积
- B.逐通道卷积与逐点卷积← 正确答案
- C.标准卷积与池化
- D.全局卷积与局部卷积
答案:B。深度可分离卷积拆成两半:逐通道卷积(Depthwise)用每个通道独立的 K×K 核做空间提取,逐点卷积(Pointwise)用 1×1 核做跨通道融合。膨胀卷积、标准卷积与池化都是其他概念。
Q2. 逐点卷积使用的卷积核尺寸是?
- A.卷积核大小为三乘三
- B.卷积核大小为五乘五
- C.卷积核大小为一乘一← 正确答案
- D.卷积核大小为七乘七
答案:C。逐点卷积就是 1×1 卷积,它不在空间上滑动扩展,只在通道方向上做线性组合,负责把逐通道卷积的结果融合成最终输出。
Q3. 输入输出通道数均为 64、卷积核 3×3 时,深度可分离卷积相对标准卷积的计算量约为?
- A.减少到原来的约二分之一
- B.减少到原来的约三分之一
- C.减少到原来的约八分之一← 正确答案
- D.计算量完全不减少
答案:C。套用压缩比公式 η=1/C_out+1/9=1/64+1/9≈0.127,约等于 1/8。通道数越高,η 越接近理论下限 1/9,但不会是“完全不减少”。
Q4. 深度可分离卷积中,逐通道卷积的输出通道数与输入通道数的关系是?
- A.输出通道缩减为原来一半
- B.输出是输入通道的数倍
- C.输出与输入通道数相同← 正确答案
- D.输出强制固定为单通道
答案:C。逐通道卷积为每个输入通道准备一个独立的 K×K 卷积核,有多少输入通道就有多少输出通道,通道数保持不变。改变通道数的任务交给后面的逐点卷积完成。
Q5. MobileNet 中的宽度系数 α 的作用是?
- A.增加网络每一层的输入分辨率
- B.把所有通道数统一乘以系数 α← 正确答案
- C.把卷积核尺寸放大 α 倍
- D.把网络训练轮数增加 α 倍
答案:B。宽度系数 α(0<α≤1)把每层通道数整体缩放,由于通道数同时出现在输入和输出位置,参数和计算量按 α² 缩减,是 MobileNet 控制模型规模的核心旋钮。
Q6. 在压缩比公式中,深度可分离卷积计算量的分子由哪两项组成?
- A.Cin×9 与 Cin×Cout← 正确答案
- B.Cin×Cout 与 Cout×9
- C.Cin×9 与 Cout×9
- D.Cout×9 与 Cin×Cout
答案:A。分子第一项是逐通道卷积,每个输入通道一个 3×3 核,共 Cin×9;第二项是逐点卷积,1×1 核建立 Cin 到 Cout 的线性映射,共 Cin×Cout。两项相加再除以标准卷积的 Cin×Cout×9。
Q7. 关于深度可分离卷积,下列说法正确的是?
- A.通道混合与空间解耦← 正确答案
- B.它的第一步是逐点卷积
- C.常被用于移动端轻量模型← 正确答案
- D.参数量一定比标准卷积多
答案:AC。深度可分离的核心思想正是把通道混合与空间提取解耦,因此被 MobileNet 等移动端轻量网络广泛采用。它的第一步是逐通道卷积而非逐点卷积;参数量通常比标准卷积少得多,不可能“一定更多”。
Q8. 下列哪些属于深度可分离卷积带来的好处?
- A.参数量大幅减少← 正确答案
- B.计算量大幅减少← 正确答案
- C.精度一定得到提升
- D.模型体积明显缩小← 正确答案
答案:ABD。深度可分离卷积参数和计算量都降到标准卷积的约 1/8 到 1/9,模型文件体积也随之缩小。但精度通常会小幅下降而非提升,这是轻量化的代价。
Q9. 若将卷积核从 3×3 换成 5×5,其他条件不变,压缩比 η=1/C_out+1/K² 会如何变化?
- A.压缩比变小,更加省算力← 正确答案
- B.压缩比变大,更加费算力
- C.压缩比完全保持不变
- D.压缩比只随通道变化
答案:A。η 中第二项是 1/K²,K=3 时为 1/9≈0.111,K=5 时降为 1/25=0.04,η 整体变小,说明卷积核越大时深度可分离相对标准卷积越省。第一项 1/C_out 与核尺寸无关。
Q10. 关于深度可分离卷积的工程实践,说法正确的是?
- A.浅层通常保留标准卷积← 正确答案
- B.所有层都适合改用深度可分离
- C.在目标设备上实测推理延迟← 正确答案
- D.训练时不需要做任何调参
答案:AC。第一层输入通道少(如 RGB 三通道),逐通道收益小,通常保留标准卷积;深度可分离网络参数少、容量小,需要更长的训练周期和蒸馏技巧,不能不做调参。评估必须回归目标设备实测,因为 FLOPs 不能代表硬件真实表现。