什么是 EfficientNet?快速概览
了解 EfficientNet 架构及其复合缩放的巧妙之处!探索 EfficientNet B0-B7,了解其在图像分类和分割效率方面的卓越表现。

2019 年,Google AI 的研究人员推出了 EfficientNet,这是一种先进的计算机视觉模型,旨在识别图像中的对象和模式。它最初主要用于图像分类,即将图像分配到多个预定义类别之一。不过,如今 EfficientNet 也可作为目标检测、分割和迁移学习等更复杂任务的骨干网络。
在 EfficientNet 之前,这类机器学习和视觉 AI 模型通常通过增加层数或扩大层的规模来提高准确率。层是神经网络模型中的处理步骤(一种受人脑启发的深度学习模型),用于处理数据、学习模式并提高准确率。
这些变化带来了权衡:传统 AI 模型变得更大、更慢,而额外的准确率通常很有限,相较之下却需要显著增加计算能力。
EfficientNet 采用了不同的方法。它以平衡的方式同时增加深度(层数)、宽度(每层中的单元数)和图像分辨率(输入图像的细节程度)。这种方法称为复合缩放,能够可靠地利用所有可用的处理能力。最终得到的模型更小、更快,性能也优于 ResNet 或 DenseNet 等旧模型。
如今,像 Ultralytics YOLO11 这样的新型计算机视觉模型在准确率、速度和效率方面表现更好。即便如此,EfficientNet 仍是一个重要的里程碑,并影响了许多先进架构的设计。
本文将用五分钟带你了解 EfficientNet,包括它的工作原理、独特之处,以及它为何在计算机视觉领域仍然重要。让我们开始吧!
什么是 EfficientNet?#
在设计 EfficientNet 之前,大多数图像识别模型会通过调整层或增大输入图像尺寸来捕获更多细节,从而提高准确率。虽然这些策略改善了结果,但也让模型更加庞大、要求更高。这意味着它们需要更多内存和更好的硬件。
EfficientNet 不改变单个层,而是使用一种称为复合缩放的方法,同时缩放深度、宽度和图像分辨率。这种方法可以让模型高效扩展,避免使任何单一方面负担过重。
EfficientNet 架构通过一系列模块处理图像,每个模块都由更小的子模块构成。每个模块中的子模块数量取决于模型规模。

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

图 2。复合缩放增加模型的宽度、深度和图像分辨率。(来源)
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 通常用于需要高精度的复杂数据集。在这些模型之上,最新的 EfficientNet V2 能够提高训练速度、更好地处理小型数据集,并针对现代硬件进行了优化。
EfficientNet 的应用#
与许多其他模型相比,EfficientNet 能够在使用更少内存和处理能力的同时生成准确结果。因此,它可用于从科学研究到人们日常使用的产品等众多领域。
医学图像分析#
医学图像(例如肺部 CT 扫描)通常包含对准确诊断至关重要的细微细节。AI 模型可以协助分析这些图像,发现人类可能难以检测的模式。用于此目的的一种 EfficientNet 变体是 MONAI(面向 AI 的医学开放网络)EfficientNet,它专为医学图像分析而设计。
基于 EfficientNet 的架构,研究人员还开发了 Lung-EffNet,这是一种用于对肺部 CT 扫描进行分类以检测肿瘤的模型。它可以将肿瘤分类为良性、恶性或正常,在实验环境中报告的准确率超过 99%。

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









