想象你要盖一栋能“看懂图片”的智能大厦。这栋大厦有三处可以扩建的地方——楼层数(深度)、每层的房间数(宽度)、以及窗户的采光面积(输入分辨率)。楼层越高,大厦越能理解“这是一只手”这种抽象概念;房间越多,同一层能存放的细节特征越丰富;窗户越大,进屋的图像信息越清晰。2019 年以前,工程师们建 CNN 就像只会蛮干的包工头:想让大厦更聪明,就拼命加盖楼层,盖到 152 层发现精度纹丝不动;换个思路狂加房间,参数账单像房租一样暴涨;再把窗户全换成落地窗,结果屋里空荡荡,信息无处安放。Google 团队的 EfficientNet 则像一位懂结构力学的总建筑师:先请 AI 设计团队(神经架构搜索 NAS)画好最合理的户型(MBConv),再拿出一套“黄金比例”的复合缩放公式,让楼层、房间、窗户按比例一起长大——用更少的建材,盖出了当年最高的精度之楼。
对 AI 从业者而言,EfficientNet 是“如何在有限算力下榨干模型精度”的典范:复合缩放思想、MBConv 模块与 NAS 落地流程,至今仍是移动端与云端视觉任务选型时的核心方法论。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
复合缩放:深度+宽度+分辨率同步放大 总FLOPS预算翻倍时:深度*1.2, 宽度*1.1, 分辨率*1.15对比:单独缩放深度/宽度/分辨率效率远低于复合缩放约束条件:alpha * beta^2 * gamma^2 = 2总FLOPS预算翻倍时:深度*1.2, 宽度*1.1, 分辨率*1.15
传统缩放困境
小区物业想要一栋更聪明的大厦,包工头的第一反应永远是“加盖楼层”——就像家长觉得孩子成绩差就多报补习班。早在 2015 年,学界就发现把 CNN 从 18 层加到 152 层(ResNet 的壮举),确实让识别精度一路上涨。可楼盖到百层以上之后,问题来了:楼层太高,信号一层一层传上去会逐渐“失真”,顶层住户根本看不清一楼的样子——这就是梯度消失与网络退化现象。于是包工头转向“狂加房间”:每层塞上千个房间(卷积核),参数账单像房租一样暴涨,训练变得异常缓慢还容易过拟合。再后来有人提议“把窗户全换成落地窗”(把输入图像从 224×224 提到 600×600),可屋里的房间数量没跟上,信息一拥而入却无处安放,反而拖慢了推理速度。
这三种做法的本质,是只在一个维度上使劲儿。深度(层数)、宽度(通道数)、分辨率(输入尺寸),是决定 CNN 容量与计算量的三根支柱。单独加高任何一根,其他两根都会成为短板——这就是“木桶效应”。论文里对传统的单维缩放有非常朴素的数学描述:
拿深度为例,单纯把层数从 D 扩到 D×λ,短期有效,但当层数超过一定阈值,误差不降反升(ResNet 论文里著名的“退化问题”)。即使有残差连接兜底,单维加深的收益也会迅速饱和。宽度同理:通道数翻倍,参数量约翻四倍(因为卷积是输出通道×输入通道的二维组合),但精度提升却远跟不上参数膨胀。分辨率更特殊:它只改变输入的像素规模,不改变模型复杂度,但会放大所有卷积层的计算开销。三者各自为政,是 2019 年之前 CNN 缩放的主流思路,也是精度天花板的主要来源。
所以 EfficientNet 团队的出发点很朴素:与其在某一根支柱上死磕,不如研究一下这三根支柱之间到底该保持什么比例,让大厦整体协调地长高、长胖、变通透。这正是复合缩放的起点。
- 深度放大把网络层数 D 乘上倍率 λ,模型会变得更深,能学出更抽象的特征表达。
- 宽度不变每层通道数 W 保持原样,意味着每层能容纳的特征种类不增加。
- 分辨率不变输入图像尺寸 R 也维持原样,送进大厦的细节信息量没有变化。
复合缩放思想
总建筑师发现,盖楼不是单一维度的事——楼层、房间、窗户必须配套。EfficientNet 论文最核心的洞察是:深度、宽度、分辨率这三个维度之间存在一种“协同关系”,同倍率放大三个维度,比只放大任何一个维度都更高效。就像健身不能只练胸不练腿,网络也不能只加层数不管每层的容量和输入的质量。
为了同时指挥三根支柱,作者引入一个全局缩放系数 φ(希腊字母 phi),并预设三个基准倍率 α、β、γ,表示“每让 φ 增加 1,楼高乘 α,面宽乘 β,窗户采光乘 γ”。为了让总建材(计算量 FLOPS)可控,还加了一条约束:α×β²×γ²≈2。为什么宽度和分辨率要平方?因为卷积层参数量与通道数的平方成正比,分辨率则直接作用在每一层的地板上——这两个维度对计算量的影响是二次的。
举个例子。φ=0 时是基线网络 B0;φ=1 时,深度×α、宽度×β、分辨率×γ,总计算量约为原来的 2 倍。论文通过网格搜索确定 α=1.2、β=1.1、γ=1.15 这组“黄金比例”。之后想盖多大的楼,只需要拧 φ 这一个旋钮,三种规模同时放大——这是“复合”二字的含义。
复合缩放的效果立竿见影:同样是翻倍计算量,传统单维缩放只能换几个点的精度提升,复合缩放却能稳定带来 2% 以上的 top-1 精度增益。就像同一块地皮,畸形的烟囱楼住不了几户人,而整体放大的均衡大厦,每平方米都物尽其用。
- 深度缩放α 是深度基准系数,φ 是全局缩放系数,深度按 α 的 φ 次方放大。
- 宽度缩放每层通道数按 β 的 φ 次方放大,让每层能装下更多种类的特征。
- 分辨率缩放输入图像分辨率按 γ 的 φ 次方放大,让更多细节能进入网络。
- 计算量约束三个系数满足约等于 2 的乘积限制,保证 φ 每加 1,总计算量约放大 2 倍而不是 8 倍。
MBConv模块
有了整体施工方案,还要有好的户型。EfficientNet 的“户型”叫 MBConv(Mobile Inverted Bottleneck Convolution,移动端倒瓶颈卷积),每个 MBConv 就像大厦里的一个精装单元,麻雀虽小五脏俱全。
MBConv 里藏着三样法宝。第一,深度可分离卷积(Depthwise Separable Convolution):先对每个通道单独做空间卷积(每个房间独立打扫),再用 1×1 点卷积把通道信息融合(走廊统一收垃圾)。相比标准卷积,计算量大约降为原来的九分之一。第二,倒瓶颈结构:先把通道数 6 倍扩张(把房间先腾空变大),最后再压缩回去,这种“细-粗-细”的形状比普通瓶颈更适合移动设备。第三,挤压激励模块(SE,Squeeze-and-Excitation):相当于一个智能调光系统,它先把整层特征压缩成一个“全局亮度读数”,学出每个通道的重要性,再按重要性重新加权——让网络自己决定“这层该看脸还是该看手”。
MBConv 还内置了残差连接,也就是一条从单元入口直通出口的“逃生通道”。让梯度可以跳过中间的复杂变换直达底层,缓解深层网络的梯度消失。这就像大厦里每层都有应急楼梯,火警时(反向传播时)信号可以不绕路直接往下跑。
一个 MBConv 单元把“省参数、降计算、自适应调权、保梯度”四件事打包完成,EfficientNet 全楼都用这种精装户型。正是因为它足够高效,整栋楼才敢用复合缩放的节奏大胆长高——户型越好,越经得起放大。
- 输入分支x 是本层模块的输入特征图,它会被原封不动地保留一份。
- 学习残差F(x) 是本层要学习的目标映射,即“在输入之上还需要补充什么变化”。
- 恒等跳连输出 y 等于 F(x) 与 x 逐元素相加,梯度反向传播时可以沿恒等路径直达底层。
网络结构搜索
户型图纸是谁画的?不是人类手工设计的,而是 AI 自己搜出来的——这就是神经架构搜索(NAS,Neural Architecture Search)。你可以把它想象成一个“自动设计团队”:给定一批可替换的建材零件(卷积核尺寸、扩张比、SE 开关、通道数……),自动枚举出海量的候选户型,再逐一“试住”测评精度,最后挑出精度又高、用料又省的方案。EfficientNet 的基线 B0 正是在这样一个搜索空间中,以“精度最高、同时计算量不超标”为双目标筛出来的。
这里的搜索空间比平地盖楼更聪明:Google 团队先以 MobileNet 的倒瓶颈结构为基础单元,允许 NAS 在 7×7、5×5、3×3 卷积核、不同扩张比、是否加 SE 之间自由组合。搜索的目标函数可以写成:
最终搜出的 B0 只有 530 万参数,却在 ImageNet 上达到 77.1% 的 top-1 精度,直接追平了当时动辄几千万参数的 ResNet 系模型。对工程团队来说,NAS 不是遥不可及的黑魔法:它本质上是“用算力换人力”——把设计师逐层抠结构的体力活,变成一台机器在约束空间里自动寻优。EfficientNet 把这一步做完后,后续的 B1-B7 不再需要重新搜索,而是用复合缩放公式直接放大,成本极低。
- 候选结构m 表示搜索空间 S 中的一种网络结构,比如某个 MBConv 变体排成的组合。
- 精度最大化在所有候选结构中,挑出验证精度 Acc(m) 最高的那个结构,记为 m*。
- 预算约束同时要求它的计算量 FLOPs(m) 不超过预算 B,保证搜索出来的不是“又大又强”而是“又小又强”。
模型家族
图纸定稿后,就是批量施工。B0 作为精心搜出来的地基,只动用了 530 万参数和 0.39B FLOPS。要得到更强的模型,EfficientNet 团队没有重新搜一遍,而是拿出复合缩放的 φ 旋钮,从 φ=0.5 一路拧到 φ=4,生成了 B1 到 B7 七个兄弟。
每一档的施工配方是:把 B0 的深度乘 α^φ、宽度乘 β^φ、分辨率乘 γ^φ。论文还观察到参数量大约满足下面的规律——φ 每加一,模型规模约翻一番,但精度并不是翻倍就封顶,而是持续稳定上涨。B5 就已经把 top-1 精度顶到 83.3%,B7 更进一步达到 84.3%,刷新了 ImageNet 的纪录,而它的参数(66M)居然和当年的 ResNet-152(60M)差不多——但精度高出近 6 个百分点。
家族中每个成员都有明确的“适用户型面积”:B0/B1 是紧凑小户型,适合手机;B2-B4 是中产改善房,适合普通 GPU;B5-B7 是豪华大平层,适合多卡训练和云端推理。选型时照着硬件预算挑 φ 就行,这是 EfficientNet 最让工程师省心的地方。
从 B0 到 B7,家族谱系清晰地展示了一个设计哲学:先花重金把户型设计好,再用一把标尺量产不同档位。相比之前每个模型都要从零手调,这种“一次搜索、无限放大”的思路把研发成本摊薄到了极致。
- 基线参数量P(0) 是 φ=0 时 B0 的参数量,约 530 万。
- 指数放大参数量随 φ 近似按 2 的 φ 次方增长,φ 每加 1 模型规模约翻倍。
- 精度收益用翻倍的代价换来持续攀升的精度,这是复合缩放区别于单维缩放的关键收益曲线。
与ResNet对比
住惯了老式塔楼的工程师,难免要拿 EfficientNet 和经典 ResNet 比一比。两者最直观的差异是“同一个成绩,谁花的力气更少”。ResNet-152 以 6000 万参数实现约 78.4% 的 top-1 精度;EfficientNet-B0 只有 530 万参数,就达到 77.1%,几乎追平。而 EfficientNet-B7 用 6600 万参数拿到 84.3%,同等参数预算下精度高出 6 个百分点;反过来,要达到 84% 以上,ResNet 系模型需要把网络堆到上亿参数,并且伴随巨大的 FLOPS 开销。论文里的对比图显示,在相同精度下,EfficientNet 参数量比当时最好的 CNN 小 8.4 倍、推理计算量小 16 倍。
| 模型 | 参数规模 | Top-1 精度 |
| --- | --- | --- |
| ResNet-152 | 60M | 78.4% |
| EfficientNet-B0 | 5.3M | 77.1% |
| EfficientNet-B7 | 66M | 84.3% |
这种差距的根源不在“堆料”而在“结构”。ResNet 的核心模块是简单的 3×3 卷积加残差,设计年代早、没有专门做过效率优化;EfficientNet 的 MBConv 模板本身就是为了移动端省计算设计的,又经过 NAS 在约束下筛选,天然就是“性价比”导向。复合缩放的加入,则保证了每一份新增的参数都被三个维度均匀消化,不会出现某根支柱孤军深入导致失衡。
从工程选型角度看,这一对比传递了一个重要信号:参数多不等于精度高,结构合理加缩放策略得当,才能让算力预算花在刀刃上。这就好比两个厨师做同样的菜,一个靠猛加调料,一个靠精准火候——后者才是可持续的。
实际部署
大厦交付后,怎么入住、怎么装修,是工程师最关心的问题。EfficientNet 家族最大的好处是“丰俭由人”。不同档位的模型对应不同的硬件预算,选型时不需要重新设计网络,只需要拧 φ 这个旋钮。
移动端和边缘设备(手机、摄像头、车载芯片)算力有限、内存紧张,首选 B0 或 B1。它们体积小、速度快,配合量化(把 FP32 权重压成 INT8)和剪枝,可以轻松跑在手机 SoC 上,用于实时人脸识别、商品识别、卡证 OCR 等任务。云端和工业场景(服务器 GPU、自动驾驶训练集群)则选 B4-B7,用足够大的模型保证检测分割的精度底线。
更普遍的使用方式是“拿来主义”——把 EfficientNet 当骨干网络(backbone),接上分割头、检测头、关键点头,就变成了一个完整的视觉系统。在医学影像、工业质检这类标注数据稀缺的领域,直接加载 ImageNet 预训练的 B0-B4 做迁移学习,通常只需要几千张图就能微调出可用的模型,工作流非常成熟。
部署时还有两个实用技巧:一是按 FLOPS 预算选模型,而不是按参数量;二是先用 B0 快速跑通流程,再逐步升级到更大档位观察收益曲线,找到“性价比拐点”。这就像先样板间试住,再决定要不要买大房子,避免一上来就上 B7 把显卡和电费都烧穿。
设计哲学
EfficientNet 的故事,表面是一篇模型论文,实质上是一套“如何设计可扩展系统”的方法论。它告诉我们:当你想把一件事物做大做强时,单点突破很快会遇到天花板,系统性协同才是正道。
三个哲学关键词。第一,多维度协同:深度、宽度、分辨率不是孤立的旋钮,而是一个相互耦合的系统,任何单一维度的过度扩张都会让其他维度成为瓶颈。第二,数据驱动:B0 的户型不是人拍脑袋定的,而是 NAS 在算力约束下“以精度为唯一目标”自动搜索出来的——把设计交给数据和机器,人类专注于定义约束。第三,效率优先:从 MBConv 的省计算设计,到复合缩放的 FLOPS 封顶,整条技术链都把“每一 FLOPS 的精度产出”作为核心指标,这正是深度学习走向工程化的必然要求。
这套哲学的影响早已超出 CNN:后来的 Vision Transformer、Swin Transformer、ConvNeXt 等架构,都继承了“先搜索或设计强基线,再统一缩放”的思路;多任务学习、多模态模型中也常见“按比例分配计算预算”的复合缩放思想。可以说 EfficientNet 提供了一把通用的“算力-精度”标尺。
对学习者而言,最重要的启示是:下次遇到一个性能瓶颈时,别急着像包工头一样“再加一层”,先问一句——我的资源、数据、模型这三个维度是不是协同的?高效,不是省出来的,是设计出来的。
AI 应用场景
移动端实时识别
阶段:模型压缩与端侧部署
解决的问题:手机端人脸识别、拍照搜商品要求低延迟、小内存,传统大模型参数多跑不动。EfficientNet-B0/B1 精度密度高,量化后只有几 MB,手机 SoC 上能实时推理。
具体案例:某电商 App 用 EfficientNet-B0 作骨干接检测头,在千元机上实现 30FPS 的拍照搜商品;相比原 MobileNetV2 方案,精度提升 4 个点,包体反而小 20%。
工业质检迁移学习
阶段:迁移学习与微调
解决的问题:工厂表面缺陷样本少、标注贵,从头训练大模型不现实。EfficientNet 预训练权重迁移性好,小样本下也能快速收敛。
具体案例:用 ImageNet 预训练的 EfficientNet-B3 做骨干,对钢板缺陷数据集微调,2D 大图上达到 99.1% 召回率,仅需 8 张 V100 训练 2 小时。
AutoML架构搜索工程化
阶段:神经网络架构搜索
解决的问题:为每个新任务手工设计 CNN 成本极高,NAS 把架构搜索标准化,配合复合缩放一键生成多个算力档位的模型。
具体案例:某 AI 平台团队复现 NAS 流程,在受限搜索空间中搜出比 ResNet 精度更高、推理快 3 倍的轻量骨干,并用复合缩放公式批量产出 B0-B4 供不同客户选型。
Python 演示
import torchimport torch.nn as nn def compound_scale(phi, alpha=1.2, beta=1.1, gamma=1.15): """复合缩放:返回深度/宽度/分辨率三档放大倍数""" depth = alpha ** phi width = beta ** phi res = gamma ** phi flops = (alpha * beta ** 2 * gamma ** 2) ** phi return depth, width, res, flops class MBConv(nn.Module): """EfficientNet 的 MBConv 模块(简化版)""" def __init__(self, in_ch, out_ch, expand=6, stride=1): super().__init__() mid = in_ch * expand self.use_res = (stride == 1 and in_ch == out_ch) self.expand_conv = nn.Conv2d(in_ch, mid, 1, bias=False) self.depthwise = nn.Conv2d(mid, mid, 3, stride, 1, groups=mid, bias=False) self.se = nn.Sequential( nn.AdaptiveAvgPool2d(1), nn.Conv2d(mid, max(4, mid // 8), 1), nn.ReLU(), nn.Conv2d(max(4, mid // 8), mid, 1), nn.Sigmoid(), ) self.project = nn.Conv2d(mid, out_ch, 1, bias=False) self.bn1 = nn.BatchNorm2d(mid) self.bn2 = nn.BatchNorm2d(out_ch) def forward(self, x): h = torch.relu(self.bn1(self.expand_conv(x))) h = self.depthwise(h) h = h * self.se(h) h = self.bn2(self.project(h)) if self.use_res: h = h + x return h class MiniEfficientNet(nn.Module): """迷你 EfficientNet:用 phi 同时控制深度与宽度""" def __init__(self, phi=1.0, num_classes=10): super().__init__() widen = lambda c: max(2, int(c * (1.1 ** phi))) deepen = max(1, round(2 * (1.2 ** phi))) self.stem = nn.Sequential( nn.Conv2d(3, widen(32), 3, 2, 1, bias=False), nn.BatchNorm2d(widen(32)), nn.ReLU(), ) self.stages = nn.ModuleList([ nn.Sequential(*([MBConv(widen(32), widen(64), stride=2)] + [MBConv(widen(64), widen(64)) for _ in range(deepen)])), nn.Sequential(*([MBConv(widen(64), widen(128), stride=2)] + [MBConv(widen(128), widen(128)) for _ in range(deepen)])), ]) self.head = nn.Sequential( nn.AdaptiveAvgPool2d(1), nn.Flatten(), nn.Linear(widen(128), num_classes), ) def forward(self, x): x = self.stem(x) for stage in self.stages: x = stage(x) return self.head(x) if __name__ == "__main__": x = torch.randn(2, 3, 64, 64) for phi in [0.0, 0.5, 1.0]: depth, width, res, flops = compound_scale(phi) net = MiniEfficientNet(phi=phi) total = sum(p.numel() for p in net.parameters()) out = net(x) print("phi=%.1f depth=%.2f width=%.2f res=%.2f flops=%.2f params=%.3fM out=%s" % (phi, depth, width, res, flops, total / 1e6, tuple(out.shape)))
depth = alpha ** phi深度按系数 α 的 φ 次方放大,这是复合缩放的“深度档位”。flops = (alpha * beta ** 2 * gamma ** 2) ** phi计算量约扩大 2^φ 倍的约束来自这一行的数学关系。self.depthwise = nn.Conv2d(mid, mid, 3, stride, 1, groups=mid, bias=False)groups=mid 即深度可分离卷积的关键:每个通道独立做空间卷积。h = h * self.se(h)SE 模块按通道重要性重新加权特征,是 MBConv 的“智能调光”。if self.use_res: h = h + x残差连接让梯度有“逃生通道”,训练深层网络时不退化。widen = lambda c: max(2, int(c * (1.1 ** phi)))φ 控制宽度的缩放,beta=1.1 是论文给出的宽度基准倍率。deepen = max(1, round(2 * (1.2 ** phi)))φ 同时控制深度,alpha=1.2 决定每个 stage 里 MBConv 重复的次数。
常见误区
误区EfficientNet 不就是把网络层数堆得更高吗?深度上去了,精度自然就上去了,跟 ResNet 的路子差不多。
正解EfficientNet 的核心恰恰不是加深。B0 只有 7 个 block 深,它的关键是复合缩放——深度、宽度、分辨率三者按一份“2^φ 的预算”同步增长。单维加深的 ResNet 到 152 层就撞上收益天花板,而 EfficientNet 在三个维度都不极端的情况下刷新了 ImageNet 纪录。
为何常见:“更深网络等于更强”是 2012-2015 年 ResNet 带来的思维惯性,很多人下意识把一切精度提升都归因于层数变多。
误区复合缩放嘛,就是深度×2、宽度×2、分辨率×2,暴力等比例放大,简单粗暴。
正解如果三个维度都乘 2,计算量会变成原来的 8 倍,而不是论文中受控的约 2 倍。复合缩放先用 NAS 锁定 α、β、γ 的比例(1.2、1.1、1.15),再满足 αβ²γ²≈2 约束,φ 每加 1 整体计算量只约翻一倍。这是“有配方”的缩放,不是“无脑等比例放大”。
为何常见:复合(compound)这个词容易让人误解为“所有东西一起乘同一个数”,忽略了背后保 FLOPS 翻倍的约束条件。
误区MBConv 不就是有个残差连接的三层卷积吗?跟 ResNet 的 BasicBlock 没什么本质区别。
正解MBConv 里藏着三处关键设计:深度可分离卷积把计算量压到约 1/9;倒瓶颈结构先扩后压、用 1×1 卷积融合通道;SE 模块用全局池化加两个卷积学通道权重。它和 ResNet 块“3×3 卷积加恒等映射”的朴素结构有本质差异,是专门为移动端效率设计的精装模块。
为何常见:MBConv 也有残差连接也有卷积,外观跟 ResNet 块相似,不细看内部结构的人容易想当然。
误区NAS 要几十万美元的算力,是 Google 才能用的黑科技,普通工程师只能看看论文。
正解NAS 的核心是“在约束空间内自动搜索”,而 EfficientNet 已经开源了 B0 的结构和缩放公式,工程团队直接拿来用就好。自己从零跑 NAS 确实需要相当算力,但我们可以直接享受它的成果——就像你不需要自己造芯片,也能用上手机里的 AI。
为何常见:看到“搜索”和“百万 FLOPS”就望而生畏,忽略了模型供应链中“别人已经搜好、自己直接引用”的环节。
面试题
Q1. EfficientNet 的核心创新是什么?
- A.把网络层数堆到千层以上
- B.用复合缩放同步提升三维度← 正确答案
- C.用无监督预训练替代监督学习
- D.引入全新的自注意力机制
答案:B。EfficientNet 最核心的贡献是复合缩放——用 φ 同时控制深度、宽度、分辨率。A 是旧的加深思路;C 是无监督方向;D 是 Transformer 方向,都与 EfficientNet 的核心创新无关。
Q2. 复合缩放同时调整的三个维度是?
- A.深度、宽度、通道数
- B.深度、宽度、分辨率← 正确答案
- C.层数、卷积核大小、学习率
- D.参数量、批次大小、训练轮数
答案:B。三个维度是深度(层数)、宽度(每层通道数)、分辨率(输入图像尺寸)。A 中通道数已被宽度包含;C 和 D 混入了训练超参数,属于干扰项。
Q3. EfficientNet 的基线网络 B0 是如何得到的?
- A.手工设计逐层调参
- B.神经架构搜索自动发现← 正确答案
- C.对 ResNet-152 剪枝得来
- D.随机初始化后暴力训练
答案:B。B0 是 NAS 在受限搜索空间中以精度最高、计算量不超标为目标搜索出的帕累托最优结构。它不是手工设计、不是剪枝、更不是随机训练出来的模型。
Q4. 复合缩放约束中 αβ²γ²≈2 的直接作用是?
- A.让参数量减少一半
- B.控制整体计算量按 2^φ 增长← 正确答案
- C.保证模型精度至少翻倍
- D.让网络更容易被剪枝部署
答案:B。深度贡献 α、宽度贡献 β²、分辨率贡献 γ²,三者乘积约等于 2,使 φ 每加 1 时总 FLOPS 约翻一倍。这不是减参数、保精度或为剪枝准备的约束。
Q5. MBConv 中的 SE 模块主要起什么作用?
- A.扩大卷积核的感受野
- B.按通道重要性重新加权特征← 正确答案
- C.降低输入图像的分辨率
- D.完全替代 BatchNorm 的效果
答案:B。SE(挤压激励)先全局池化读出每通道的“亮度”,再学出一组权重对特征重新加权,本质是通道注意力。它不改变感受野、不降分辨率、也不替代 BatchNorm。
Q6. EfficientNet-B0 相比同精度 ResNet 的优势是什么?
- A.参数更少、计算量更小← 正确答案
- B.网络结构更简单、更容易训练
- C.不需要任何预训练数据
- D.在任意硬件上推理都更快
答案:A。B0 用 5.3M 参数追平了 ResNet-152(60M 参数)的精度,参数少约一个数量级。B 不对:B0 的结构其实更复杂;C 和 D 过于绝对,推理速度还取决于硬件优化。
Q7. 关于 φ=1 时的复合缩放,下列说法正确的是?
- A.深度变为 α 倍,宽度变为 β 倍,分辨率变为 γ 倍,计算量约翻一倍← 正确答案
- B.三个维度各乘 2,计算量变为原来的 8 倍
- C.只有深度变为原来的 2 倍,宽度和分辨率不变
- D.模型精度保证提升 2 个百分点以上
答案:A。φ=1 时 D=α^1、W=β^1、R=γ^1,且 αβ²γ²≈2 保证 FLOPS 约翻倍。B 是无约束的暴力放大;C 是单维缩放;D 是经验观察而非保证。
Q8. MBConv 模块包含以下哪些结构?
- A.深度可分离卷积← 正确答案
- B.挤压激励模块← 正确答案
- C.残差连接分支← 正确答案
- D.全局平均池化层
答案:ABC。MBConv 由深度可分离卷积、倒瓶颈结构、SE 注意力和残差连接组成。全局平均池化是分类头(head)里的结构,不出现在 MBConv 单元内部。
Q9. 以下哪些是 EfficientNet 参数少但精度高的原因?
- A.复合缩放让三维均衡增长← 正确答案
- B.MBConv 大幅降低了冗余计算← 正确答案
- C.NAS 搜索出了更优的结构组合← 正确答案
- D.使用了更大的私有训练数据集
答案:ABC。复合缩放解决“维度失衡”,MBConv 解决“单元低效”,NAS 解决“结构最优”,三者共同造就高效率。D 错误:EfficientNet 用的是公开 ImageNet 数据集,没有用更大的私有数据。
Q10. 部署 EfficientNet 到实际任务时,合理的做法有哪些?
- A.移动端优先选用 B0 或 B1← 正确答案
- B.迁移到新任务时用预训练权重微调← 正确答案
- C.按 FLOPS 预算选择合适型号← 正确答案
- D.任何任务都用 B7 才能保证效果
答案:ABC。B0/B1 适合端侧,预训练微调是迁移学习标配,FLOPS 预算是选型核心依据。D 片面:B7 算力要求高,在延时敏感或边缘场景反而适得其反。