EfficientNet模型
一、模型框架
2019年粟耻,谷歌新出EfficientNet垢乙,網(wǎng)絡(luò)如其名锨咙,這個網(wǎng)絡(luò)非常的有效率,怎么理解有效率這個詞呢追逮,我們從卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展來看:
從最初的VGG16發(fā)展到如今的Xception酪刀,人們慢慢發(fā)現(xiàn),提高神經(jīng)網(wǎng)絡(luò)的性能不僅僅在于堆疊層數(shù)钮孵,更重要的幾點是:
1骂倘、網(wǎng)絡(luò)要可以訓練,可以收斂油猫。
2稠茂、參數(shù)量要比較小,方便訓練情妖,提高速度睬关。
3、創(chuàng)新神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)毡证,學到更重要的東西电爹。
而EfficientNet很好的做到了這一點,它利用更少的參數(shù)量(關(guān)系到訓練料睛、速度)得到最好的識別度(學到更重要的特點)
EfficientNet模型具有很獨特的特點丐箩,這個特點是參考其它優(yōu)秀神經(jīng)網(wǎng)絡(luò)設(shè)計出來的。經(jīng)典的神經(jīng)網(wǎng)絡(luò)特點如下:
1恤煞、利用殘差神經(jīng)網(wǎng)絡(luò)增大神經(jīng)網(wǎng)絡(luò)的深度屎勘,通過更深的神經(jīng)網(wǎng)絡(luò)實現(xiàn)特征提取。
2居扒、改變每一層提取的特征層數(shù)概漱,實現(xiàn)更多層的特征提取,得到更多的特征喜喂,提升寬度瓤摧。
3、通過增大輸入圖片的分辨率也可以使得網(wǎng)絡(luò)可以學習與表達的東西更加豐富玉吁,有利于提高精確度照弥。
EfficientNet就是將這三個特點結(jié)合起來,通過一起縮放baseline模型(MobileNet中就通過縮放α實現(xiàn)縮放模型进副,不同的α有不同的模型精度这揣,α=1時為baseline模型;ResNet其實也是有一個baseline模型影斑,在baseline的基礎(chǔ)上通過改變圖片的深度實現(xiàn)不同的模型實現(xiàn))曾沈,同時調(diào)整深度、寬度鸥昏、輸入圖片的分辨率完成一個優(yōu)秀的網(wǎng)絡(luò)設(shè)計塞俱。
EfficientNet的效果如下:
二、結(jié)構(gòu)層次
在EfficientNet模型中吏垮,其使用一組固定的縮放系數(shù)統(tǒng)一縮放網(wǎng)絡(luò)深度障涯、寬度和分辨率。
假設(shè)想使用 2N倍的計算資源膳汪,我們可以簡單的對網(wǎng)絡(luò)深度擴大αN倍唯蝶、寬度擴大βN 、圖像尺寸擴大γN倍遗嗽,這里的α,β,γ都是由原來的小模型上做微小的網(wǎng)格搜索決定的常量系數(shù)粘我。
如圖為EfficientNet的設(shè)計思路,從三個方面同時拓充網(wǎng)絡(luò)的特性。
EfficientNet一共由Stem + 16個Blocks + Con2D + GlobalAveragePooling2D + Dense組成征字,其核心內(nèi)容是16個Blocks都弹,其它的結(jié)構(gòu)與常規(guī)的卷積神經(jīng)網(wǎng)絡(luò)差距不大。
此時展示的是EfficientNet-B0也就是EfficientNet的baseline的結(jié)構(gòu):
其中每個Block的的參數(shù)如下:
DEFAULT_BLOCKS_ARGS = [
{'kernel_size': 3, 'repeats': 1, 'filters_in': 32, 'filters_out': 16,
'expand_ratio': 1, 'id_skip': True, 'strides': 1, 'se_ratio': 0.25},
{'kernel_size': 3, 'repeats': 2, 'filters_in': 16, 'filters_out': 24,
'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25},
{'kernel_size': 5, 'repeats': 2, 'filters_in': 24, 'filters_out': 40,
'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25},
{'kernel_size': 3, 'repeats': 3, 'filters_in': 40, 'filters_out': 80,
'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25},
{'kernel_size': 5, 'repeats': 3, 'filters_in': 80, 'filters_out': 112,
'expand_ratio': 6, 'id_skip': True, 'strides': 1, 'se_ratio': 0.25},
{'kernel_size': 5, 'repeats': 4, 'filters_in': 112, 'filters_out': 192,
'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25},
{'kernel_size': 3, 'repeats': 1, 'filters_in': 192, 'filters_out': 320,
'expand_ratio': 6, 'id_skip': True, 'strides': 1, 'se_ratio': 0.25}
]
Block的通用結(jié)構(gòu)如下匙姜,其總體的設(shè)計思路依然基于MobileNet中的Inverted residuals結(jié)構(gòu)畅厢,在3x3網(wǎng)絡(luò)結(jié)構(gòu)前利用1x1卷積升維,在3x3網(wǎng)絡(luò)結(jié)構(gòu)后氮昧,利用1x1卷積降維框杜,先進行擴張,再進行壓縮袖肥。只是其中增加了一個先壓縮特征再增加特征的乘法特征提冗淙琛:
三、代碼實現(xiàn)(tesorflow2)
https://github.com/weigesdl/Classical_convolution_network_model/blob/master/efficientNet.ipynb
四椎组、原文鏈接:
https://blog.csdn.net/weixin_44791964/article/details/102886367