什么是 EfficientNet?快速概览
了解 EfficientNet 如何利用复合缩放、MBConv 模块和挤压激励机制,在 B0 到 B7 各个变体中平衡准确率与效率。
Abirami Vina6 分钟阅读
2019 年,Google AI 的研究人员推出了 EfficientNet,这是一种先进的计算机视觉模型,旨在识别图像中的物体和模式。它最初主要用于图像分类,即将图像分配到多个预定义类别之一。如今,EfficientNet 也可作为骨干网络,用于目标检测、分割和迁移学习等更复杂的任务。
在 EfficientNet 出现之前,这类机器学习和视觉 AI 模型试图通过增加层数或扩大每层规模来提高准确率。层是神经网络模型(受人脑启发的一种深度学习模型)中的处理步骤,用于处理数据、学习模式并提高准确率。
这些改动带来了权衡:传统 AI 模型变得更大、更慢,而准确率提升往往很有限,与之相比,所需计算能力却大幅增加。
EfficientNet 采用了不同的方法。它以均衡的方式同时增加网络深度(层数)、宽度(每层的单元数)和图像分辨率(输入图像的细节程度)。这种方法称为复合缩放。最终得到的模型更小、速度更快,性能也可能优于 ResNet 或 DenseNet 等早期模型。
如今,Ultralytics YOLO11 及其后继者 Ultralytics YOLO26 等较新的计算机视觉模型,具备更高的准确率、速度和效率。即便如此,EfficientNet 仍是一个重要的里程碑,对许多先进架构的设计产生了影响。
本文将用五分钟带你了解 EfficientNet,介绍它的工作原理、独特之处,以及它在计算机视觉领域至今仍然重要的原因。
什么是 EfficientNet?#
在 EfficientNet 设计出来之前,大多数图像识别模型会通过调整网络层或增大输入图像尺寸来捕捉更多细节、提高准确率。这些策略虽然改善了结果,却也让模型变得更大、更耗资源,因此需要更多内存和更好的硬件。
EfficientNet 不再单独调整各层,而是采用一种称为复合缩放的方法,同时缩放深度、宽度和图像分辨率。这种方法让模型能够高效扩展,而不会使任何单一方面负担过重。
EfficientNet 架构通过一系列模块块来处理图像,每个模块块由更小的模块构成。每个模块块中的模块数量取决于模型大小。

图 1. EfficientNet 的构建模块。(来源)
较小的版本使用较少的模块,较大的版本则会重复使用模块更多次。这种灵活的设计使 EfficientNet 能在各种应用中兼顾高准确率和高效率,适用范围从移动设备到大型系统。
复合缩放的工作原理#
复合缩放方法会扩展模型的深度、宽度和图像分辨率,同时保持三者之间的平衡。这样就能高效利用计算能力。该系列从较小的基线模型 EfficientNet-B0 开始,它是所有其他版本的基础。
从 B0 开始,模型逐步扩展为更大的变体,名称从 EfficientNet-B1 到 EfficientNet-B7。每提升一个版本,网络都会增加层数、增加通道数(用于处理数据的单元数),并处理更高分辨率的输入图像。每一步的扩展幅度由一个称为复合系数的参数决定,它确保深度、宽度和分辨率按固定比例增加,而不是彼此独立地变化。

图 2. 复合缩放会增加模型的宽度、深度和图像分辨率。(来源)
EfficientNet 架构#
接下来,我们看看 EfficientNet 的架构。
EfficientNet 基于 MobileNetV2 构建。MobileNetV2 是一种轻量级计算机视觉模型,针对移动设备和嵌入式设备进行了优化。其核心是 MBConv(移动端倒置瓶颈卷积)模块,这是一种特殊层,处理图像数据的方式类似于标准卷积,但所需计算更少。这个模块让模型速度更快,也更节省内存。
每个 MBConv 模块内部都包含一个挤压与激励 (SE) 模块。这个模块会调整网络中不同通道的强度:增强重要通道,减弱其他通道。它能帮助网络聚焦于图像中最重要的特征,同时忽略其他内容。EfficientNet 模型还使用了 Swish 激活函数(一种帮助网络学习模式的数学函数),让模型比旧方法更善于发现图像中的模式。
此外,它还使用 DropConnect,在训练期间随机关闭网络中的某些连接。这种随机正则化方法(通过随机化防止模型记住训练数据而不是进行泛化的技术)会迫使网络学习更稳健的特征表示(数据中更强、更通用的模式),从而减少过拟合,并更好地迁移到未见过的数据。

图 3. EfficientNet-B0 的架构(来源)
EfficientNet 模型变体简介#
现在我们已经更了解 EfficientNet 模型的工作原理,接下来讨论不同的模型变体。
EfficientNet 模型从 B0 扩展到 B7,其中 B0 是兼顾速度和准确率的基线版本。每个版本都会增加深度、宽度和图像分辨率,从而提高准确率。不过,计算需求也会随之增加,从 B1 和 B2 到性能更强的 B6 和 B7 都是如此。
EfficientNet-B3 和 EfficientNet-B4 在处理较大图像时实现了良好的平衡,而对于需要高精度的复杂数据集,人们通常会选择 B5。后续版本 EfficientNetV2 的训练速度更快,参数效率也更高。
EfficientNet 的应用#
与许多其他模型相比,EfficientNet 使用更少的内存和处理能力也能得到准确的结果。因此,它适用于许多领域,从科学研究到人们日常使用的产品。
医学图像分析#
医学图像(例如肺部 CT 扫描)通常包含对准确诊断至关重要的细微特征。AI 模型可以协助分析这些图像,发现人类可能难以察觉的模式。MONAI(面向 AI 的医学开放网络)EfficientNet 就是为此用途改造的模型之一,专门用于医学图像分析。
研究人员还基于 EfficientNet 架构开发了 Lung-EffNet,这是一种用于分类肺部 CT 扫描并检测肿瘤的模型。它可以将扫描结果分类为良性、恶性或正常,在实验环境中报告的准确率超过 99%。

图 4. 使用 Lung-EffNet 进行肿瘤图像分类。(来源)
实时目标检测#
目标检测是查找图像中的物体并确定其位置的过程。它是安防系统、自动驾驶汽车和无人机等应用的重要组成部分。
EfficientNet 在这一领域变得举足轻重,因为它提供了非常高效的图像特征提取方法。它对深度、宽度和分辨率进行缩放的方式展示了模型如何在不过于庞大或缓慢的情况下实现高准确率。因此,许多检测系统(例如 EfficientDet)都使用 EfficientNet 作为骨干网络。
较新的模型(如 Ultralytics YOLO11)也有着将速度与准确率结合起来的相同目标。EfficientNet 等架构的理念对这一高效模型发展趋势产生了深远影响。
EfficientNet 的优缺点#
以下是将 EfficientNet 用于计算机视觉项目的一些优势:
- 参数更少,准确率更高:与 ResNet 或 DenseNet 等较早的模型相比,EfficientNet 可以达到相当甚至更高的准确率。不过,它使用的参数更少,因此训练速度更快,也更容易部署。
- 可扩展的模型系列:从 B0 到 B7,你可以选择符合硬件条件和精度要求的版本,而无需更改基线网络。
- 适用于迁移学习: EfficientNet 可在迁移学习中提供可靠的模型性能。迁移学习是指重新训练预训练模型以完成自定义任务的过程。EfficientNet 可以作为各种计算机视觉任务的骨干网络。微调后,它也展现出优异表现。例如,在广泛使用的 CIFAR-100 图像分类数据集上,它以远少于以往模型的参数量实现了最先进的准确率。
尽管使用 EfficientNet 有诸多好处,但也要留意它的一些局限:
- 需要更多内存:EfficientNet-B6 和 EfficientNet-B7 等版本需要大量 GPU 内存。
- 缩放配置针对 ImageNet 调优:缩放设置是针对 ImageNet 数据集设计的,因此如果不进行微调,模型在差异很大的数据集上可能会出现性能下降。对于小型数据集尤其如此,因为 EfficientNet 的架构和缩放方案是针对 ImageNet 这类大型、多样化的数据集设计的;这类数据集提供了足够的数据,能够支撑其深度和宽度。
- 在某些硬件上速度较慢:EfficientNet 使用称为 MBConv 的层,这些层针对现代硬件的效率进行了优化。在较旧的 GPU 或 CPU 上,这些层的运行速度可能较慢。
要点#
EfficientNet 通过平衡深度、宽度和图像分辨率,改变了计算机视觉模型的扩展方式。它仍然是一种重要模型,也影响了更新的架构。尤其是在计算机视觉发展史上,它占有重要地位。
加入我们的社区和 GitHub 代码仓库,进一步探索 AI。查看我们的解决方案页面,了解医疗健康领域的 AI和汽车领域的计算机视觉。了解我们的许可方案,立即开始构建计算机视觉应用!
作者
评论
提出问题、分享你的结果,或帮助其他人。










