1. 为什么复合缩放更高效?
(1)单维度缩放的瓶颈
-
增加深度(层数):
更深的网络可以学习更复杂特征,但容易导致梯度消失/爆炸问题,且计算量随深度线性增长。
问题:深层网络训练困难,性能提升呈现明显的收益递减。 -
增加宽度(通道数):
更宽的网络能捕捉更丰富的特征,但参数量和计算量随通道数平方增长。
问题:过于浅层的宽网络可能浪费计算资源,无法有效捕捉高阶特征。 -
提高分辨率:
高分辨率输入保留更多细节,但计算量随分辨率平方增长。
问题:分辨率过高时,特征信息冗余且计算成本激增。
(2)复合缩放
传统模型的浪费 :
若仅增加网络深度(层数),可能导致梯度消失且计算量激增;若仅加宽通道数,参数量会平方级增长;若仅提高分辨率,冗余计算增多。这些单维度调整会导致 “投入多,回报少” ,即资源浪费。
EfficientNet 的改进 :
复合缩放通过同时但适度地增加这三个维度,能够更好地平衡模型的容量和计算效率,避免了某一维度过度增长带来的负面影响。
EfficientNet 提出用复合系数 ϕ \phi ϕ同步缩放深度、宽度、分辨率:
深度 = α ϕ , 宽度 = β ϕ , 分辨率 = γ ϕ \text{深度} = \alpha^\phi, \quad \text{宽度} = \beta^\phi, \quad \text{分辨率} = \gamma^\phi 深度=αϕ,宽度=βϕ,分辨率=γϕ
其中 α , β , γ \alpha, \beta, \gamma α,β,γ 是通过网格搜索确定的最佳比例(例如 α = 1.2 , β = 1.1 , γ = 1.15 \alpha=1.2, \beta=1.1, \gamma=1.15 α=1.2,β=1.1,γ=1.15), ϕ \phi ϕ 控制总放大倍数。
- 关键优势:三者按固定比例同步增长,确保每增加1倍计算量时,深度、宽度、分辨率均衡提升,避免资源浪费。
2. EfficientNet 的高效技术细节
(1)MBConv 模块:轻量化设计
-
深度可分离卷积(Depthwise Separable Conv):
- 传统卷积:一个 3 × 3 × C in × C out 3 \times 3 \times C_{\text{in}} \times C_{\text{out}} 3×3×Cin×Cout 滤波器同时处理空间和通道信息。
- 深度可分离卷积:
- 深度卷积:每个通道单独用 3 × 3 3 \times 3 3×3 卷积处理(参数量: 3 × 3 × C in 3 \times 3 \times C_{\text{in}} 3×3×Cin)。
- 点卷积:用 1 × 1 1 \times 1 1×1 卷积调整通道数(参数量: 1 × 1 × C in × C out 1 \times 1 \times C_{\text{in}} \times C_{\text{out}} 1×1×Cin×Cout)。
- 效率提升:参数量和计算量减少约8~9倍,显著提高模型效率。
-
残差连接:
在输入和输出通道数一致时添加残差连接,有效缓解梯度消失问题。 -
膨胀机制(Expansion):
通过 1 × 1 1 \times 1 1×1 卷积先扩展通道数(例如从32到144),再用深度卷积处理,最后压缩回原始通道数。
效果:有效扩大感受野,显著增强特征表达能力。
(2)复合缩放的资源分配
- 传统方法:单独放大某一维度(如加倍深度)会导致计算量激增,但性能提升有限。
- EfficientNet方法:通过数学公式更合理地分配计算资源,例如:
- 当 ϕ = 1 \phi=1 ϕ=1 时,深度 ×1.2,宽度 ×1.1,分辨率 ×1.15,总计算量 ≈ 原来的2倍。
- 实验表明,这种均衡分配比单维度放大准确率提升约4%,且使用更少的参数量。
3. EfficientNet 的"高效"体现在哪里?
(1)准确率与计算量的优化平衡
- 具体对比:
- EfficientNet-B4 在 ImageNet 上准确率达到83.0%,参数量仅19M。
- 相比之下,ResNet-50 准确率为76.5%,参数量25M。
核心优势:EfficientNet 用更少的参数和计算资源达到更高的准确率。
(2)灵活适应不同规模需求
- 完整模型家族:从 B0(5M参数)到 B7(66M参数),全面覆盖从轻量级到高精度的各种应用需求。
- 可调节性:通过调整 ϕ \phi ϕ 值,用户可以灵活控制模型复杂度,在性能和效率间找到最佳平衡点。
4. 总结与直观解释
- 核心技术优势:
复合缩放通过精确的数学公式均衡分配计算资源,避免单维度缩放的边际效应,同时 MBConv 模块设计大幅减少冗余计算。 - 高效本质:
在相同计算量下,复合缩放能更充分地利用深度、宽度、分辨率三个维度的协同效应,最大化提升模型性能。
直观类比:
传统方法就像给汽车单独升级引擎、轮胎或油箱,可能跑得更快但油耗剧增;
EfficientNet则像系统性地优化引擎功率、轮胎抓地力和油箱容量的平衡,让车在省油的同时跑得更远!🚗
关于分辨率
从技术上来说,"分辨率"通常指图片中像素的数量,与图像的尺寸直接相关。也就是说,大图片(像素多)在分辨率上是高的,而小图片(像素少)在分辨率上是低的。
但“清晰度”不仅仅取决于像素数量,还受到诸如对焦、噪点、压缩质量等因素的影响。所以一个分辨率高的大图片如果拍摄时模糊或存在噪点,可能看起来并不清晰;而一个小图片如果拍摄得非常精细和清晰,即使像素较少,视觉效果也可能更好。
总结来说,分辨率高与图片清晰度是两个不同的概念:
- 分辨率高: 指的是图片包含更多像素,尺寸大。
- 清晰度高: 指的是图片细节锐利、对比良好,质量好。
因此,“大图片”确实等于具有更高的分辨率,但并不必然意味着它的视觉清晰度也更好。
模型的表现很大程度上取决于输入图像的信息质量,而不仅仅是像素数量。具体来说:
-
高分辨率的“大图片”
如果图片虽然尺寸大,但不清晰(例如模糊、有噪点或者对焦不准),那么其中的细节信息可能会受到干扰,导致模型难以准确捕捉到有用的特征。 -
清晰的“小图片”
清晰的图片虽然尺寸较小、像素较少,但信息更集中、细节更明确,这样模型更容易提取到准确、可靠的特征。
总的来说,模型通常更倾向于从图像质量较高的输入中学习到更有用的信息。换句话说,即使大图片具有更多像素,如果图像质量较差,所提供的信息可能并不比一张清晰的小图片更有价值。理想状态下,模型最好能获得既清晰又高分辨率的图像,这样可以充分利用细节信息,同时保证图像的清晰度和质量。
所以在两者中,清晰的“小图片”通常会比不清晰的“大图片”带来更好的学习效果。