什么是 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 之上,这是一款针对移动和嵌入式设备优化的轻量级计算机视觉模型。其核心是移动倒置瓶颈卷积 (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 (Medical Open Network for 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 和汽车领域的计算机视觉。探索我们的许可选项,并立即开始使用计算机视觉进行构建!






