mobilenet v1
要解決的問題:
目前大多數(shù)的網(wǎng)絡(luò)雖然能實(shí)現(xiàn)比較高的性能,但網(wǎng)絡(luò)過于龐大拴驮,所以論文要解決的就是輕量化的問題,試圖將網(wǎng)絡(luò)嵌入到移動(dòng)端。
亮點(diǎn):
1捧颅、將標(biāo)準(zhǔn)的卷積過程分為兩步,即depthwise convolution和pointwise convolution较雕,首先將濾波器進(jìn)行分解碉哑,再使用1*1的卷積進(jìn)行組合。
2亮蒋、引入了兩個(gè)超參數(shù)width multiplier和resolution multiplier扣典,可以對通道及輸入的尺寸進(jìn)行操作簡化模型
相關(guān)信息:
1、目前獲得較小網(wǎng)絡(luò)的方法主要有兩種慎玖,一種是直接訓(xùn)練較小的網(wǎng)絡(luò)贮尖,另一種是壓縮已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)。直接訓(xùn)練較小的網(wǎng)絡(luò)趁怔,往往在網(wǎng)絡(luò)的設(shè)計(jì)上下手湿硝,使用一些因式分解網(wǎng)絡(luò)等等薪前。壓縮已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)已經(jīng)有許多的方法,例如product quantization图柏、hashing序六、pruning、vector quantization 和 Huffman coding蚤吹。
2例诀、深度可分離卷積在xception網(wǎng)絡(luò)有所應(yīng)用,并超越了inception v3版本的性能裁着。
網(wǎng)絡(luò)設(shè)計(jì):
1繁涂、利用深度可分離卷積:
假設(shè)卷積的輸入為,經(jīng)過標(biāo)準(zhǔn)卷積K最終的輸出為
二驰,則卷積核的參量有
扔罪,計(jì)算代價(jià)為
;如果使用深度可分離卷積桶雀,則將卷積過程分為兩個(gè)階段矿酵,第一個(gè)階段使用
個(gè)卷積核,輸出特征圖維度為
矗积,之后再使用
個(gè)卷積核全肮,會(huì)生成跟原有卷積操作相同維度的特征圖,但這樣計(jì)算代價(jià)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=D_K*D_K*M*D_F*D_F%2BM*N*D_F*D_F" alt="D_K*D_K*M*D_F*D_F+M*N*D_F*D_F" mathimg="1">棘捣,遠(yuǎn)遠(yuǎn)小于原來的卷積操作的計(jì)算代價(jià)辜腺。
2、論文在深度可分離卷積中使用了batch norm與relu乍恐,結(jié)構(gòu)如下圖所示:
如果將將depthwise和pointwise算為獨(dú)立的層的話评疗,整體網(wǎng)絡(luò)共有28層
3、為了進(jìn)一步精簡模型茵烈,作者引入了兩個(gè)超參數(shù)百匆,一個(gè)是width multiplier,用來精簡通道瞧毙,減小通道數(shù)目胧华,使網(wǎng)絡(luò)變瘦,用來表示宙彪,在這個(gè)參量的作用下矩动,某一層的計(jì)算代價(jià)為:
另一個(gè)超參數(shù)是resolution multiplier,用來減小輸入大小释漆,用來表示悲没,與
共同作用時(shí),計(jì)算代價(jià)變?yōu)椋?/p>
需要注意的是,無論減少通道還是減小輸入都會(huì)使得網(wǎng)絡(luò)的精度下降示姿,在具體使用時(shí)結(jié)合需要來使用甜橱。
mobilenet v2
要解決的問題:
設(shè)計(jì)一種輕量化的網(wǎng)絡(luò),能夠提升網(wǎng)絡(luò)在不同任務(wù)栈戳、不同數(shù)據(jù)集的情況下的性能岂傲。
亮點(diǎn):
1、不再是單純的結(jié)構(gòu)堆疊子檀,而是從理論推導(dǎo)入手镊掖,分析了非線性激活對特征圖的影響,證明了其設(shè)計(jì)的線性瓶頸層的合理性與可行性褂痰。
2亩进、提出了一種倒置殘差的結(jié)構(gòu)。
相關(guān)信息:
1缩歪、目前對網(wǎng)絡(luò)的調(diào)整主要在追求一個(gè)性能與精確性的平衡归薛,目前已經(jīng)針對此做了大量的工作,包括進(jìn)行超參數(shù)優(yōu)化匪蝙、網(wǎng)絡(luò)的修剪主籍、引入稀疏性、改變卷積結(jié)構(gòu)等等逛球,現(xiàn)在甚至將強(qiáng)化學(xué)習(xí)與遺傳算法等引入了進(jìn)來崇猫。然而,這些使得網(wǎng)絡(luò)越來越復(fù)雜需忿,這一篇論文追求的是通過理解網(wǎng)絡(luò)內(nèi)部的信息傳遞機(jī)制,來指導(dǎo)網(wǎng)絡(luò)的設(shè)計(jì)蜡歹,盡可能的簡單化屋厘。
網(wǎng)絡(luò)設(shè)計(jì):
1、深度可分離卷積可以大大減小參數(shù)月而,這里仍然沿用汗洒,不作過多的介紹。
2父款、然后來研究一下網(wǎng)絡(luò)內(nèi)部信息的流動(dòng)溢谤。考慮一個(gè)層
組成的深度網(wǎng)絡(luò)憨攒,每一層都有一個(gè)
的激活張量世杀,在每個(gè)張量上,都存在著manifolds of interest肝集,個(gè)人理解就是網(wǎng)絡(luò)針對具體任務(wù)所獲取的特征圖上的必要信息瞻坝,這些信息彌漫在不同的通道上。然而杏瞻,其實(shí)這些manifolds of interest是可以嵌入特征圖的子空間上的所刀,這也是將維度進(jìn)行壓縮能取得較好效果的原理所在衙荐。但是,一般來說浮创,卷積之后會(huì)跟一種非線性激活操作忧吟,這就容易導(dǎo)致問題,以relu為例斩披。如果manifolds在所有的特征圖通道上都存在溜族,則relu操作肯定會(huì)破壞通道,從而丟失一部分信息雏掠,如果relu之后結(jié)果全為正斩祭,則此時(shí)的relu就相當(dāng)于一個(gè)線性分類器,所以乡话,當(dāng)深度可分離卷積完成后摧玫,再使用1*1卷積進(jìn)行壓縮的時(shí)候,索性就不要這種非線性激活操作(注意绑青,在大多數(shù)層非線性激活是必須的诬像,因?yàn)檫@能增加復(fù)雜性,增強(qiáng)網(wǎng)絡(luò)的擬合能力闸婴,而且如果manifolds能嵌入到一個(gè)較低維度上坏挠,加非線性激活也不會(huì)損失信息)。
3邪乍、使用殘差連接可以增加梯度的傳播效率降狠,所以這里也使用了殘差連接,而且是一種倒置的殘差結(jié)構(gòu)庇楞,這里連接的是瓶頸層榜配,從上面來看,瓶頸處已經(jīng)包含了必要的信息吕晌。示意如下:
4蛋褥、綜合上述,結(jié)構(gòu)如下:
先使用1*1的卷積進(jìn)行升維睛驳,在經(jīng)過深度可分離卷積烙心,再經(jīng)過1*1卷積進(jìn)行降維,跟著一個(gè)線性瓶頸層乏沸。這里看過另一篇博客博主的理解淫茵,覺得理解的比較好,深度可分離卷積將空間與通道完全解耦蹬跃,這樣并不完全可取痘昌。所以此時(shí)將維度增加了六倍,增加了冗余性,這樣在深度可分離卷積之后再進(jìn)行非線性激活就不會(huì)出現(xiàn)太多的信息損失辆苔。
mobilenet v3
亮點(diǎn):
1算灸、使用了網(wǎng)絡(luò)架構(gòu)搜索來搜索最優(yōu)結(jié)構(gòu)
2、使用了一些小技巧精簡模型
總體來說驻啤,理論上并沒有什么突破菲驴,只是在小細(xì)節(jié)上進(jìn)行了優(yōu)化處理(感覺大部分還是試出來的)
網(wǎng)絡(luò)設(shè)計(jì):
1、使用了Platform-Aware NAS進(jìn)行了全局網(wǎng)絡(luò)搜索骑冗,又使用了NetAdapt算法對局部進(jìn)行了微調(diào)(這部分不太了解赊瞬,也沒卡來試)。
2贼涩、對瓶頸層做了修改巧涧,將1*1卷積移到了平均池化層之后,減小了計(jì)算資源的消耗遥倦,同時(shí)削減了一些層谤绳,改動(dòng)如下:
3、對網(wǎng)絡(luò)的頭部做了修改袒哥,作者認(rèn)為開始時(shí)的邊緣提取所用的濾波器是互為鏡像的缩筛,因此將通道數(shù)減了一半。
4堡称、將非線性激活函數(shù)改為了h-swish用來逼近swish瞎抛,為了降低對計(jì)算資源的消耗,僅在后面部分使用却紧。
5桐臊、使用了SENet的網(wǎng)絡(luò)結(jié)構(gòu),如下所示: