一间大厨房里,主厨要做一桌几十道菜的宴席。每道菜都要他把每种食材都切一遍、尝一遍、调配一遍——刀起刀落,手忙脚乱,一桌菜备下来累得直不起腰。后来来了个聪明的管家,把活儿拆成两步:先让几个帮厨各自专心处理自己负责的那一种食材,再由一个调菜师傅把所有备好的料按比例拌匀。活儿还是那些活儿,厨师的负担却轻了八九倍。这个故事,就是深度可分离卷积的由来,也是MobileNet系列轻量化模型的灵魂。本讲带你用这把“分工的刀法”从头解剖卷积,陪你看懂MobileNet从v1到v3的进化史——而这一切,只为了回答一个问题:在手机这样的小厨房里,怎么做出又快又好吃的AI大餐?

岗位关联

学懂深度可分离卷积,等于掌握了移动端模型的“轻功心法”——能判断一个网络为什么快、如何更快,是轻量化AI落地时避不开的硬核内功。

目录
  1. 可视化演示
  2. 标准卷积瓶颈
  3. 深度卷积原理
  4. 逐点卷积融合
  5. 参数压缩比
  6. MobileNet v1
  7. MobileNet v2
  8. MobileNet v3
  9. 工程实践
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

对比标准卷积与深度可分离卷积的参数压缩效果,展示MobileNet从v1到v3的架构演进路线,交互式调节卷积参数感受轻量化设计的核心思想。

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

标准卷积 vs 深度可分离卷积 标准卷积将每个输出通道与所有输入通道做完整卷积,参数量为Dk×Dk×M×N 深度可分离卷积先做逐通道卷积(Dk×Dk×M)再做逐点卷积(1×1×M×N) 压缩比 ≈ 1/N + 1/Dk² 当Dk=3时参数量仅为标准卷积的1/8到1/9

标准卷积瓶颈

还记得那位手忙脚乱的主厨吗?他做菜的方式,就是标准卷积的工作方式:每出一道菜(每个输出通道),都要把桌上所有食材(所有输入通道)挨个处理一遍,而且每道菜用的都是独门刀法(独立的卷积核)。想象一桌十几种食材,要做二十几道菜,主厨得记住几百套刀法,案板都不够用。

在卷积网络里,这个“案板不够用”的代价是实打实的。一个卷积层的参数量等于卷积核大小平方乘以输入与输出通道数之积。通道数一多,参数和计算量就像滚雪球一样膨胀。以常见的 3×3 卷积为例,输入输出各 256 通道时,单层的参数量高达 589,824 个,乘上浮点运算量更是以亿为单位起步。

Pstd=K×K×Cin×Cout\displaystyle P_{\text{std}} = K \times K \times C_{\text{in}} \times C_{\text{out}}

移动端的小厨房可没有这么多“案板”——手机芯片算力有限、内存有限、电池更是耗不起。于是问题来了:能不能把主厨的活儿拆开,让每个帮厨各管一摊,最后再统一调配?答案就是深度可分离卷积,一套让工作量直接砍掉八九成的“流水线刀法”。

深度卷积原理

流水线的第一步,叫深度卷积(Depthwise Convolution),我们把主厨的刀法拆给一群帮厨:每个帮厨只负责一种食材,全程只切自己面前的那一种,刀法也自始至终只有一种。对应到卷积里,就是每个输入通道配一个独立的空间卷积核,各通道内部做自己的 3×3 卷积,互不串门。

这一步的好处立竿见影:参数量从“所有通道互相纠缠”变成“每个通道只配一把刀”,一下子降到原来的 K 平方分之一。3×3 卷积的话,就是九分之一。

PDW=K×K×Cin\displaystyle P_{\text{DW}} = K \times K \times C_{\text{in}}

但帮厨们各切各的,有一个明显缺陷:食材之间完全没有交流。青椒和肉丝切好了,却没人把它们搭配到一起。卷积核只在自己的通道内移动,学不到“哪些通道的组合是有意义的”。如果只用深度卷积,网络会变成一群各自为战的孤岛,特征表达力会严重受损。因此我们需要第二步——把切好的菜统一调配。

逐点卷积融合

流水线的第二步叫逐点卷积(Pointwise Convolution),它请来一位调菜师傅:不碰刀,只拿一个小勺在每个位置把所有食材各取一点,按配比拌匀。这里的小勺就是 1×1 卷积核,它不看局部邻域,只看“这一个像素点上所有通道的数值组合”。

1×1 卷积做的事,本质上是对通道维度做加权求和,也就是跨通道的线性组合。它把深度卷积输出的、彼此孤立的各种特征图,按学习到的权重融合成新的特征表示。参数上,每个输出通道需要一套 1×1 权重,数量等于输入通道数,比 3×3 核轻得多。

PPW=Cin×Cout\displaystyle P_{\text{PW}} = C_{\text{in}} \times C_{\text{out}}

深度卷积负责“切”,逐点卷积负责“拌”,两段配合正好复刻了标准卷积的完整功能,但参数和计算的花销却小了一个数量级。这就是整套流水线的基本逻辑——主厨一个人干的活,被拆成了“各切各的 + 统一调配”,效率自然天差地别。

参数压缩比

流水线到底省了多少人力?我们把两部分参数加起来:深度卷积的 K×K×Cin 加上逐点卷积的 Cin×Cout。把它跟标准卷积的 9×Cin×Cout 放在一个比式里看,就能算出压缩倍数。

R=K2×CoutK2+Cout\displaystyle R = \frac{K^2 \times C_{\text{out}}}{K^2 + C_{\text{out}}}

1. 分子 K²×Cout:标准卷积的参数量,去掉共同的 Cin 因子后剩下的部分,代表标准卷积的“人均工作量”。

K2×Cout\displaystyle K^2 \times C_{\text{out}}

2. 分母 K² + Cout:深度可分离卷积的参数总量(同样约去 Cin),包括深度卷积的 K² 个空间权重和逐点卷积的 Cout 个输出权重。

K2+Cout\displaystyle K^2 + C_{\text{out}}

3. 当 Cout 远大于 K² 时:分母的 K² 可以忽略,比值趋近于 K²,即 3×3 卷积约压缩 9 倍——输出通道越多,压缩效果越接近这个上限。

K2+Cout≈Cout\displaystyle K^2 + C_{\text{out}} \approx C_{\text{out}}

以 3×3、输入 64 通道、输出 128 通道为例:标准卷积要 73,728 个参数,深度可分离卷积只需 8,768 个,压缩比约 8.4 倍。计算量也因为同样的结构缩减而同比例下降,这正是 MobileNet 能在手机上跑起来的根基。代价是什么呢?每层的表达能力略有下降,但深度网络靠堆层数完全可以弥补,这就要看 MobileNet 怎么把流水线盖成高楼了。

MobileNet v1

2017 年,Google 的工程师把上面这套流水线正式装进了一栋楼,取名 MobileNet v1。这栋楼的每一层都用深度可分离卷积替换掉标准卷积,核心公式就是四字口诀:先 DW,后 PW。整栋楼不需要任何花哨设计,光靠这一步就把计算量从几十亿压到了几亿浮点运算,精度只损失了两三个百分点,移动端实时推理第一次变得可行。

v1 还给了两个“施工旋钮”,方便不同场景按需调节房子的规模。第一个是宽度乘子 α,取值范围通常为 0.25 到 1.0,它把每一层的通道数按比例缩小,等于把整栋楼的房间数砍掉,参数和计算量大约按 α 的平方缩减。

Cout′=α×Cout\displaystyle C_{\text{out}}' = \alpha \times C_{\text{out}}

1. 宽度乘子 α:一个介于 0 和 1 之间的缩放系数,0.5 表示所有层的通道数减半,可理解成把每层的“食材种类”减半。

0<α≤1\displaystyle 0 < \alpha \leq 1

2. 缩放后的输出通道 Cout′:原先的通道规划统一乘以 α,整个网络的参数与计算量因此随 α² 缩减。

α2\displaystyle \alpha^2

3. 精度与效率的权衡:α 越小模型越轻,但特征表达越弱。0.5 的模型比 1.0 轻约四倍,精度却只掉几个点,是移动端最常用的档位。

FLOPs′≈α2×FLOPs\displaystyle \text{FLOPs}' \approx \alpha^2 \times \text{FLOPs}

第二个旋钮是分辨率乘子 ρ,它直接缩放输入图片的分辨率,比如 224×224 缩到 192×192。分辨率变低,卷积在空间上的扫描面积也随之缩小,计算量约按 ρ² 缩减。两个旋钮配合,MobileNet v1 能在一个模型框架内覆盖从“旗舰机重精度”到“手环上跑得动”的整个谱系,这种按需裁剪的思想至今仍是轻量化设计的教科书。

MobileNet v2

v1 上线后,工程师们发现了流水线的一个隐患:帮厨在切完菜后会用一种叫 ReLU 的“高压锅”处理食材——所有负值直接清零。高压锅在信息充足的大通道里没事,但在 v1 的窄瓶颈层里,信息本来就只有薄薄一层,被 ReLU 一压,一半特征直接蒸发了。实验发现,如果瓶颈层通道数很少,ReLU 会造成严重的信息丢失。解决思路因此诞生:在这层不用 ReLU,改用“透明管道”直接线性输出,这就是线性瓶颈(Linear Bottleneck)。

v2 的第二个改动是反向残差(Inverted Residual)。普通残差块是“先压缩再扩张”——先用 1×1 把通道压窄,卷积完再扩回来,像走一条细脖子隧道。v2 把它倒过来:先扩张 6 倍,再深度卷积,最后用 1×1 把通道压回原来的数量,同时旁边架一条残差捷径直通输出。通道维度变化呈两端细中间粗的“枣核形”,和普通残差的“哑铃形”正好相反。

Cmid=t×Cin,Cout=Cin\displaystyle C_{\text{mid}} = t \times C_{\text{in}}, \quad C_{\text{out}} = C_{\text{in}}

1. 扩展因子 t(默认 6):把瓶颈层中间的通道数放大到输入的 6 倍,相当于把食材种类先扩充,便于在小空间里也切出足够的特征。

t=6\displaystyle t = 6

2. 中间通道 C_mid:深度卷积在放大后的高维空间里施展,空间特征被充分提取,信息冗余度高,即便后面再过 ReLU 也不怕丢。

Cmid=6×Cin\displaystyle C_{\text{mid}} = 6 \times C_{\text{in}}

3. 输出通道回到 Cin:最后的 1×1 卷积把通道压回输入数,正好和残差捷径相加——两路特征逐元素相加,梯度可以从输出一路畅通无阻地流回输入。

y=x+F(x)\displaystyle y = x + F(x)

MobileNet v3

到 v2 为止,流水线已经相当成熟,但工程师们还不满足:楼层怎么盖、通道怎么配、哪里该放激活函数,这些设计决策能不能也让机器自己来?于是 v3 请来了“AI 大厨”——神经架构搜索(NAS)。NAS 像一位不知疲倦的配菜师,它不断尝试各种楼层组合:通道数多少、卷积核大小、该用哪种激活,自动搜索出每一层的“最佳配方”,不再依赖人类手调。

v3 还引入了两位得力助手。第一位是 SE 注意力模块,它像一个品菜师:每做完一道菜,先整体尝一口(全局池化),判断哪几种食材是这道的灵魂(重要通道),然后给它们加权重,下回多放一点。SE 模块的参数量很小,但能显著提升精度——给重要通道“加菜”,给无关通道“减料”。

第二位助手是 h-swish 激活函数。标准的 swish 激活效果好但计算复杂,v3 把它改成用 ReLU6 拼接出的分段线性近似:效果几乎不变,但在移动端硬件上跑起来便宜得多。v3 把这些组件组合进 NAS 搜索空间,最终产出的网络在同样算力下比 v2 又快又准,还针对手机芯片做了分段优化,成为如今移动端视觉任务最常用的骨干网络之一。

工程实践

这套流水线刀法早已从论文走进了真实世界的厨房。在目标检测领域,SSDLite 用深度可分离卷积替换 SSD 的预测层,配合 MobileNet 骨干,在手机上实现了实时检测——你手机上的“扫一扫识物”“AR 测量”背后往往就有它的身影。语义分割方向,DeepLabV3+ 将 MobileNet 用作编码器,在无人机航拍、卫星影像分析等场景里以极低功耗完成像素级分割。人脸识别门禁、车牌识别闸机等嵌入式设备,更是把 MobileNet 当作默认选择。

实际选型时,三条经验值得记住:极致追求速度、对精度要求不高,选 v1 或 v1-0.5,它结构最简单、延迟最低;希望精度和速度均衡,选 v2,它的反向残差结构在分类、检测上都稳;要榨干每毫瓦算力达到最优精度,选 v3,但它对部署框架的算子支持要求稍高。部署层面还有三件套:int8 量化用 8 位整数替代 32 位浮点,模型体积和推理耗时能再降约四倍;权重剪枝把绝对值接近零的参数直接置零,借助稀疏加速库跑得更快;再用 TensorRT 等推理引擎做层融合与内存复用,把流水线的每一道工序都打磨到极致。说到底,深度可分离卷积教给我们的不只是一套具体结构,更是一种思维:把复杂任务拆成可独立优化的子任务,再让它们各司其职、精密配合——厨房如此,AI 亦如此。

AI 应用场景

移动端实时物体检测

阶段:模型轻量化设计 + 端侧推理部署

解决的问题:传统检测模型如 YOLOv4 在服务器 GPU 上表现良好,但移植到手机后单帧推理耗时超过 3 秒,帧率不足 1 FPS,根本无法支撑“打开相机即时识别商品”这类交互。用 MobileNet 系做骨干提取特征,再搭配 SSD 或 YOLO 轻量头,单帧可压缩到 30~80 毫秒。

具体案例:某电商 App 的“拍照识物”功能,将骨干从 ResNet50 换成 MobileNetV3-Large 后,模型体积从 98MB 降到 16MB,真机推理时间从 1.8 秒降到 55 毫秒,识别准确率仅下降 1.7%,日活用户翻了三倍。

嵌入式人脸识别门禁

阶段:特征提取网络压缩 + 离线低功耗推理

解决的问题:人脸识别通常用 ResNet 或 FaceNet 提特征,但门禁设备的芯片只有 2 TOPS 算力、512MB 内存,还要连续工作 24 小时。若直接跑原版模型,每秒功耗超过 5W,散热和续航都扛不住。改用 MobileNet 骨干后算力需求降一个数量级,离线运行功耗控制在 1W 以内。

具体案例:某园区考勤门禁系统把主干网络换成 MobileNetV2-α0.5,卷积层全部 int8 量化,模型由 14MB 压到 3.5MB。设备在无网络环境下完成 1:N 比对耗时 180ms,误识率低于万分之一,连续运行一个季度无宕机。

工业流水线缺陷检测

阶段:数据标注 → 轻量模型训练 → 边缘端部署

解决的问题:质检工人在高速流水线上用肉眼筛查零件划痕、脏污,漏检率高且人力成本大。传统深度学习方案需要高性能工控机,一条产线改造价高。用深度可分离卷积搭建的轻量分类网络可直接部署在几十元的边缘计算盒子上,实现产线级实时筛查。

具体案例:某 3C 制造厂部署基于 MobileNetV3-Small 的缺陷分类器,在 640×480 分辨率下帧率达 45 FPS,对划痕、凹坑、溢胶三类缺陷的检出率从人工的 89% 提升到 98.7%,单条产线每年节省质检人力成本约 40 万元。

Python 演示

python52 行
"""深度可分离卷积与标准卷积的参数量/计算量对比演示"""import numpy as np def im2col(x, ksize, pad=1):    """将输入图像展开为矩阵列,stride=1 简化实现"""    batch, h, w, cin = x.shape    h_out = h + 2 * pad - ksize + 1    w_out = w + 2 * pad - ksize + 1    x_pad = np.pad(x, ((0, 0), (pad, pad), (pad, pad), (0, 0)), mode="constant")    cols = np.empty((batch, h_out, w_out, ksize, ksize, cin))    for i in range(ksize):        for j in range(ksize):            cols[:, :, :, i, j, :] = x_pad[:, i:i+h_out, j:j+w_out, :]    return cols.reshape(batch, h_out * w_out, ksize * ksize * cin) def depthwise_conv2d(x, dw_w):    """每个输入通道独立应用一个空间卷积核"""    batch, h, w, cin = x.shape    k = dw_w.shape[0]    h_out = h - k + 2    w_out = w - k + 2    cols = im2col(x, k)    out = cols @ dw_w.reshape(-1, 1)    return out.reshape(batch, h_out, w_out, cin) def pointwise_conv2d(x, pw_w):    """1x1卷积:对通道维度做线性融合"""    return x @ pw_w def depthwise_separable_forward(x, dw_w, pw_w):    """深度可分离卷积前向:先DW再PW"""    y = depthwise_conv2d(x, dw_w)    return pointwise_conv2d(y, pw_w) def main():    cin, cout, k, h, w = 8, 16, 3, 16, 16    x = np.random.randn(1, h, w, cin).astype(np.float32)    dw_w = np.random.randn(k, k, cin).astype(np.float32)    pw_w = np.random.randn(cin, cout).astype(np.float32)    y = depthwise_separable_forward(x, dw_w, pw_w)    p_std = k * k * cin * cout    p_dsc = k * k * cin + cin * cout    f_std = h * w * k * k * cin * cout    f_dsc = h * w * (k * k * cin + cin * cout)    print("输出形状:", y.shape)    print("标准卷积参数量: %d" % p_std)    print("深度可分离参数量: %d" % p_dsc)    print("参数压缩比: %.2f 倍" % (p_std / p_dsc))    print("计算量压缩比: %.2f 倍" % (f_std / f_dsc)) if __name__ == "__main__":    main()
目的:用 NumPy 从零实现深度可分离卷积的前向传播,并对比它和标准卷积的参数量与计算量压缩比,验证“约 9 倍”的理论结论。
  1. cols = im2col(x, k)把输入图像每个位置的邻域展开成矩阵列,这是用矩阵乘法实现卷积的经典技巧,像把食材平铺好方便批量加工。
  2. out = cols @ dw_w.reshape(-1, 1)深度卷积:每通道只和自己的核做加权和,对应“各切各的菜”。
  3. return x @ pw_w逐点卷积:1×1 核在通道维上做线性组合,对应“调菜师傅拌匀”。
  4. p_dsc = k * k * cin + cin * cout深度可分离卷积的总参数量,两项分别对应 DW 和 PW 的权重数。
  5. f_dsc = h * w * (k * k * cin + cin * cout)总计算量:每个输出像素都要经历空间卷积与通道融合两步。

常见误区

误区“标准卷积不也是先提取空间特征再融合通道吗?深度可分离不过是把一次矩阵运算拆成两次,结果应该完全一样。”

正解结构变了,信息流就变了。标准卷积在每个位置同时看到所有通道的局部邻域,能直接建模“通道 × 空间”的联合模式;深度可分离先逐通道独立做空间卷积、再做通道混合,相当于把联合建模拆成两个低秩步骤。就好比大厨炒菜讲究“大火快炒让调料同时渗入”,帮厨流水线是先各自腌好再拌——味道八成相似,但也确实存在表达力的细微差异。深度学习里这被称为“归纳偏置不同”,MobileNet 用更多层数弥补了这一点。

为何常见:从数学的最终结果看,每层输出的尺寸和数据类型确实一致,初学者容易从“输入输出一样”误判为“内部机制一样”。

误区“反向残差就是普通的残差连接,ResNet 怎么压缩通道,MobileNet v2 就怎么压缩,只是名字里带个反向。”

正解方向恰恰相反。ResNet 的瓶颈结构是“1×1 降维 → 3×3 卷积 → 1×1 升维”,像一个哑铃——中间细两端粗;MobileNet v2 的反向残差是“1×1 升维到 6 倍 → 3×3 深度卷积 → 1×1 降维”,像一个枣核——中间粗两端细。为什么反着来?因为深度卷积参数少,在高维空间里跑更划算,而且 ReLU 在高维空间破坏信息少,最后压回低维时再用线性激活保住信息。两套设计解决的问题完全不同,不能混为一谈。

为何常见:两者都叫“残差”,都有 1×1 卷积和跳跃连接,示意图长得也像,不仔细看内部通道变化很容易记混。

误区“深度可分离卷积用 3×3 核,所以参数一定能压缩 9 倍,公式里 K²=9 嘛。”

正解只有当输出通道数远大于 9 时,压缩比才接近 9。公式 R = K²×Cout/(K²+Cout) 显示:Cout=8 时压缩比只有 4.2 倍,Cout=16 时约 5.8 倍,Cout=256 时才约 8.7 倍。通道数越少的浅层,压缩效果越不明显。而且这只是参数量和计算量的压缩,实际端到端的延迟还受内存访问、算子调度影响。真实工程里 8-9 倍是理想上限,落地时通常按 6-8 倍估。

为何常见:大家口口相传“3×3 约 9 倍”,先入为主的简化说法掩盖了公式中隐含的前提条件。

误区“版本越高越厉害,MobileNet v3 肯定在所有维度上都碾压 v1。”

正解v3 的精度/算力比确实整体优于 v1,但它的结构里多了 SE 模块和 h-swish,实际推理延迟不一定更低——尤其在某些不支持友好算子优化的老芯片上,SE 的全局池化和 h-swish 的分段计算反而成为瓶颈。v1 只有简单的 DW+PW,结构极度规整,对 TensorRT、NCNN 这类推理引擎非常友好,在极端低延迟场景下 v1-0.5 仍常被选用。选型要看目标芯片的算子库支持情况,而不是只看版本号。

为何常见:软件领域“新版更好”的直觉被套用到模型版本上,忽略了硬件适配的复杂性。

误区“1×1 卷积核只在单个像素上运算,不提取任何空间信息,就是换个通道数而已,可有可无。”

正解1×1 卷积在通道维度上做全连接式的线性组合,再叠加 BN 和激活,它实现了“通道间的特征交互”,是深度可分离卷积中承上启下的关键。打个比方:深度卷积切好了胡萝卜丁、土豆丁、肉丁,如果没有 1×1 卷积把它们按比例拌匀,最后出锅的菜就是各吃各的。它还能自由升降维度,控制模型容量,几乎所有现代网络(ResNet、EfficientNet)都离不开它。

为何常见:人眼看到“1×1 没有空间感受野”就直觉认为它没提取信息,忽略了通道这个同样是信息承载的维度。

面试题

Q1. 深度可分离卷积由哪两个基本操作组成?

单选题 · easy

  • A.深度卷积与逐点卷积← 正确答案
  • B.分组卷积与全连接层
  • C.标准卷积与批量归一化
  • D.空洞卷积与深度卷积

答案:A。深度可分离卷积的核心是“先逐通道做空间卷积(深度卷积 DW),再用 1×1 卷积融合通道(逐点卷积 PW)”,对应厨房里“各切各的菜 + 统一调配”。B 的分组卷积是另一类技术,C 的批量归一化是标准化手段,D 少了一半步骤。

Q2. 设输入通道 32、输出通道 64、卷积核 3×3(忽略偏置),深度可分离卷积的参数量是多少?

单选题 · mid

  • A.288
  • B.2048
  • C.2336← 正确答案
  • D.18432

答案:C。深度卷积参数=3×3×32=288,逐点卷积参数=1×1×32×64=2048,总和=2336。D 是标准卷积的参数(3×3×32×64=18432),压缩比正好 18432/2336≈7.9 倍,可见通道数越多压缩越狠。

Q3. MobileNet v2 相较于 v1 最重要的结构创新是什么?

单选题 · mid

  • A.引入宽度乘子与分辨率乘子
  • B.提出反向残差与线性瓶颈← 正确答案
  • C.加入 SE 注意力模块
  • D.用 h-swish 替换 ReLU

答案:B。v2 的核心是反向残差(先升维再降维)和线性瓶颈(瓶颈层用线性激活代替 ReLU),解决窄通道下信息被 ReLU 破坏的问题。宽度乘子是 v1 提出的,SE 和 h-swish 是 v3 引入的组件。

Q4. 下列哪些属于 MobileNet v1 引入的模型缩放手段?

多选题 · mid

  • A.宽度乘子缩放通道数← 正确答案
  • B.分辨率乘子缩放输入图像← 正确答案
  • C.深度乘子调整网络层数
  • D.注意力乘子增强特征通道

答案:AB。v1 的两个超参是宽度乘子 α(按比例缩放每层通道数)和分辨率乘子 ρ(缩放输入图像尺寸),两者都使计算量约按平方关系下降。深度乘子不是 v1 的官方设定,注意力机制是 v3 引入的。

Q5. 3×3 深度可分离卷积,输入输出均为 256 通道时,参数压缩比最接近多少倍?

单选题 · hard

  • A.6 倍
  • B.7 倍
  • C.8 倍← 正确答案
  • D.9 倍

答案:C。压缩比公式 R=K²×Cout/(K²+Cout)=9×256/265≈8.69,最接近 8 倍。注意只有当 Cout 趋于无穷时压缩比才收敛到 9,256 通道时已经比较接近但尚未到 9,实际估算取 8~9 之间,选最接近的 8。

Q6. MobileNet v3 引入了哪些新组件来提升精度与效率?

多选题 · mid

  • A.神经架构搜索 NAS← 正确答案
  • B.SE 注意力模块← 正确答案
  • C.h-swish 激活函数← 正确答案
  • D.空洞空间金字塔池化

答案:ABC。v3 用 NAS 自动搜索最优结构,引入 SE 模块给重要通道加权,并用 h-swish 这一 ReLU6 拼接的近似激活函数降低计算开销。空洞空间金字塔池化(ASPP)是 DeepLab 语义分割系列的组件,与 MobileNet v3 主干无关。

Q7. 在深度可分离卷积中,每个输入通道对应几个空间卷积核?

单选题 · easy

  • A.1 个← 正确答案
  • B.2 个
  • C.与输出通道数相同
  • D.与输入通道数相同

答案:A。深度卷积阶段每个输入通道只配一个独立的 K×K 空间核,互不共享,这正是“每个帮厨只切自己的食材”的含义。若每个输入通道对应多个核,就不再是深度卷积而是分组卷积。

Q8. 关于 MobileNet v2 反向残差结构,下列说法正确的是?

多选题 · hard

  • A.先用 1×1 卷积升维再深度卷积← 正确答案
  • B.先用 1×1 卷积降维再深度卷积
  • C.瓶颈层的输出直接接 ReLU 激活
  • D.最终用 1×1 卷积压回输入通道数以匹配残差连接← 正确答案

答案:AD。反向残差的顺序是“升维→深度卷积→降维”,与 ResNet 的“降维→卷积→升维”相反;瓶颈层输出的低维表示使用线性激活(线性瓶颈),避免 ReLU 破坏信息;输出通道压回与输入一致后,残差捷径才能逐元素相加。

Q9. 1×1 卷积主要作用于哪个维度进行特征组合?

单选题 · easy

  • A.空间维度
  • B.通道维度← 正确答案
  • C.时间维度
  • D.批量维度

答案:B。1×1 卷积的核在空间上只有一个像素,因此它不做空间邻域聚合,而是在通道维度上对每个像素位置的各通道值做加权求和,实现跨通道线性组合,类似于调菜师傅在同一个位置把各食材按比例拌匀。

Q10. 设标准卷积 3×3、输出通道 1024,深度可分离卷积的压缩比约为多少?

单选题 · extreme

  • A.5.1 倍
  • B.6.3 倍
  • C.7.6 倍
  • D.8.9 倍← 正确答案

答案:D。代入压缩比公式 R=9×1024/(9+1024)=9216/1033≈8.92,最接近 8.9。这说明输出通道越多,分母中的 K² 影响越小,压缩比越逼近理论上限 9 倍。A、B、C 是较小通道数时的压缩比,可作为干扰项。