---
# System prepended metadata

title: '論文閱讀: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks reference'
tags: [模型論文]

---

# 論文閱讀: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks [reference](https://arxiv.org/abs/1905.11946)

## 核心思想:
旨在探討網路width數(channel)、深度、输入的分辨率對精確度的影響
並發現以上三個參數要同步放大(compound scaling)對網路的提升才有最好的影響

### 1. 網路深度、通道數與輸入圖像解析度的優缺點
![15](https://hackmd.io/_uploads/BJJe-V3oA.png)
#### 增加網路的通道數 (channel/width)
* 優點: **獲得更高細粒度的特徵、更易於訓練**，適用於較小的模型
* 缺點: 通道數過多但較淺的網路**難以學習深層特徵、計算資源消耗增加** ，且準確性很快達到飽和
#### 增加網路的深度 (Depth)
* 優點: **捕捉更豐富和複雜的特徵、更好的泛化能力** 
* 缺點: **梯度消失問題、訓練困難** ，非常深的網路的準確度增益有限，
    ex: ResNet-1000 $\cong$ ResNet-101
#### 增加輸入圖像的解析度 (Image Resolution)
現代卷積神經網絡通常使用較高的解析度，如299x299或331x331，以獲得更好的準確性。
* 優點: **捕捉更高細粒度的特徵模式、改善模型的精度** 
* 缺點: **收益遞減、增加計算量**



### 2. 實驗說明:
1. 假設以ResNet為例，ResNet有五個Stage (conv.7x7 + layer1~4)，這是描述一個模型的公式
    ![13](https://hackmd.io/_uploads/SyH3TZns0.png =50%x)
    * 其中:
        $N:$ Convolution Network，$\odot:$ 串接網路的符號
        $F_i:$ Stage數 共五個，$L_i:$ block重複數量，$X:$ 輸入
        $<H_i, W_i,  C_i>:$ height, width, channel

2. 擴張模型的方法，可以被總結成以下的最佳化問題:
    ![14](https://hackmd.io/_uploads/HJTsyMhiC.png =80%x)
    * 在最大化Accuracy的前提下，有上述三個條件
        其實$N$是一個$(d,w,r)$的函數，(depth, width, resolution)
    * 在不調整模型本人$F$的前提下，探討的部分 **深度($L_i$)**、**$通道數(C_i)$**、**$輸入解析度(H_i,W_i)$**

3. 提出的綜合係數的擴展公式:
![16](https://hackmd.io/_uploads/S1a0ZVnoR.png =50%x)
* 其中:
    $\Phi:$ 為自己指定的係數，用來控制資源量
    運算資源量(FLOPS)與 $d,$ $w^2,r^2$ 成正比




## 論文的各個模型設置:
![9](https://hackmd.io/_uploads/BJeqdiFoR.png =50%x)
紅色的線: B0~B7

* #### B0，baseline的模型結構
    其實就是mobileNet的block
    ![11](https://hackmd.io/_uploads/HkYvFiFjA.png =70%x)

* #### 其他版本的係數
    ![10](https://hackmd.io/_uploads/rydMFsKiR.png)

## compound scaling的比較
![12](https://hackmd.io/_uploads/ryOO5oYjR.png =70%x)
可以看到，單獨提升depth、width、resolution的效果都不好

## 總結:
總得來說，EfficientNet最大的貢獻即為compound scaling，指導我們在設計網絡時，特別是比較大的網絡時，深度、寬度和分辨率要同步增加。