1. 一文讀懂EfficientNet

        共 2300字,需瀏覽 5分鐘

         ·

        2020-09-17 14:43

        作者丨Vardan Agarwal、ronghuaiyang(譯)
        來(lái)源丨AI公園
        編輯丨極市平臺(tái)

        導(dǎo)讀

        ?

        本文介紹了一種高效的網(wǎng)絡(luò)模型EfficientNet,并分析了?EfficientNet B0 至B7的網(wǎng)絡(luò)結(jié)構(gòu)之間的差異。

        我在一個(gè)Kaggle競(jìng)賽中翻閱notebooks,發(fā)現(xiàn)幾乎每個(gè)人都在使用EfficientNet 作為他們的主干,而我之前從未聽(tīng)說(shuō)過(guò)這個(gè)。
        谷歌AI在這篇文章中:https://arxiv.org/abs/1905.11946介紹了它,他們?cè)噲D提出一種更高效的方法,就像它的名字所建議的那樣,同時(shí)改善了最新的結(jié)果。一般來(lái)說(shuō),模型設(shè)計(jì)得太寬,太深,或者分辨率太高。剛開(kāi)始的時(shí)候,增加這些特性是有用的,但很快就會(huì)飽和,然后模型的參數(shù)會(huì)很多,因而效率不高。在EfficientNet中,這些特性是按更有原則的方式擴(kuò)展的,也就是說(shuō),一切都是逐漸增加的。
        不明白發(fā)生了什么?不要擔(dān)心,一旦看到了架構(gòu),你就會(huì)明白了。但首先,讓我們看看他們得到了什么結(jié)果。
        由于參數(shù)的數(shù)目相當(dāng)少,這個(gè)模型族是非常高效的,也提供更好的結(jié)果?,F(xiàn)在我們知道了為什么這些可能會(huì)成為標(biāo)準(zhǔn)的預(yù)訓(xùn)練模型,但是缺少了一些東西。

        同之處

        首先,任何網(wǎng)絡(luò)都以它為主干,在此之后,所有對(duì)架構(gòu)的實(shí)驗(yàn)都以它為開(kāi)始,這在所有8個(gè)模型和最后的層中都是一樣的。
        之后,每個(gè)主干包含7個(gè)block。這些block還有不同數(shù)量的子block,這些子block的數(shù)量隨著EfficientNetB0到EfficientNetB7而增加。要可視化模型層,代碼如下:
        !pip?install?tf-nightly-gpu

        import?tensorflow?as?tf

        IMG_SHAPE?=?(224,?224,?3)
        model0?=?tf.keras.applications.EfficientNetB0(input_shape=IMG_SHAPE,?include_top=False,?weights="imagenet")
        tf.keras.utils.plot_model(model0)?#?to?draw?and?visualize
        model0.summary()?#?to?see?the?list?of?layers?and?parameters
        如果你計(jì)算EfficientNet-B0的總層數(shù),總數(shù)是237層,而EfficientNet-B7的總數(shù)是813層??!但不用擔(dān)心,所有這些層都可以由下面的5個(gè)模塊和上面的主干組成。
        我們使用這5個(gè)模塊來(lái)構(gòu)建整個(gè)結(jié)構(gòu)。
        • 模塊1?— 這是子block的起點(diǎn)。
        • 模塊2?— 此模塊用于除第一個(gè)模塊外的所有7個(gè)主要模塊的第一個(gè)子block的起點(diǎn)。
        • 模塊3?— 它作為跳躍連接到所有的子block。
        • 模塊4?— 用于將跳躍連接合并到第一個(gè)子block中。
        • 模塊5?— 每個(gè)子block都以跳躍連接的方式連接到之前的子block,并使用此模塊進(jìn)行組合。
        這些模塊被進(jìn)一步組合成子block,這些子block將在block中以某種方式使用。
        • 子block1?— 它僅用于第一個(gè)block中的第一個(gè)子block。
        • 子block2?— 它用作所有其他block中的第一個(gè)子block。
        • 子block3?— 用于所有block中除第一個(gè)外的任何子block。
        到目前為止,我們已經(jīng)指定了要組合起來(lái)創(chuàng)建EfficientNet模型的所有內(nèi)容,所以讓我們開(kāi)始吧。

        模型結(jié)構(gòu)

        EfficientNet-B0

        EfficientNet-B0架構(gòu)。(x2表示括號(hào)內(nèi)的模塊重復(fù)兩次)

        EfficientNet-B1

        EfficientNet-B1的結(jié)構(gòu)

        EfficientNet-B2

        它的架構(gòu)與上面的模型相同,唯一的區(qū)別是特征圖(通道)的數(shù)量不同,增加了參數(shù)的數(shù)量。

        EfficientNet-B3

        EfficientNet-B3的結(jié)構(gòu)

        EfficientNet-B4

        EfficientNet-B4的結(jié)構(gòu)

        EfficientNet-B5

        EfficientNet-B5的結(jié)構(gòu)

        EfficientNet-B6

        EfficientNet-B6的結(jié)構(gòu)

        EfficientNet-B7

        EfficientNet-B7的結(jié)構(gòu)
        很容易看出各個(gè)模型之間的差異,他們逐漸增加了子block的數(shù)量。如果你理解了體系結(jié)構(gòu),我鼓勵(lì)你將任意的模型打印出來(lái),并仔細(xì)閱讀它以更徹底地了解它。下面的表表示了EfficientNet-B0中卷積操作的內(nèi)核大小以及分辨率、通道和層。
        此表已包含在原始論文中。對(duì)于整個(gè)模型族來(lái)說(shuō),分辨率是一樣的。我不確定卷積核的大小是否改變了。層的數(shù)量已經(jīng)在上面的圖中顯示了。通道數(shù)量是不同的,它是根據(jù)從每個(gè)型號(hào)的摘要中看到的信息計(jì)算出來(lái)的,如下所示:
        在結(jié)束之前,我附上了另一個(gè)圖像,來(lái)自它的研究論文,顯示了它與其他的SOTA的performance的比較,還有減少的參數(shù)的數(shù)量和所需的FLOPS。



        原文鏈接:
        https://towardsdatascience.com/complete-architectural-details-of-all-efficientnet-models-5fd5b736142


        往期精彩:

        【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf

        【原創(chuàng)首發(fā)】深度學(xué)習(xí)語(yǔ)義分割理論與實(shí)戰(zhàn)指南.pdf


        喜歡您就點(diǎn)個(gè)在看!

        瀏覽 150
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 黄包小网站视频在线看 | 国产精品露脸在线 | 国产一区二区在线电影 | gogo人体gogo西西大尺度高清 | 无码破解一区二区三区在线播报 |