wordpress 置頂在前做網(wǎng)站優(yōu)化哪家公司好
背景:
MobileNet v1中DW卷積在訓(xùn)練完之后部分卷積核會(huì)廢掉,大部分參數(shù)為“0”
MobileNet v2網(wǎng)絡(luò)是由Google團(tuán)隊(duì)在2018年提出的,相比于MobileNet v1網(wǎng)絡(luò),準(zhǔn)確率更高,模型更小
網(wǎng)絡(luò)亮點(diǎn):
Inverted Residuals(倒殘差結(jié)構(gòu))
Linear Bottlenecks
倒殘差結(jié)構(gòu):
Residual Block:
ResNet網(wǎng)絡(luò)中提出了一種殘差結(jié)構(gòu)
1.輸入特征矩陣采用1*1的卷積核來對(duì)特征矩陣做壓縮,減少輸入特征矩陣的channel
2.采用3*3的卷積核做卷積處理
3.采用1*1的卷積擴(kuò)充channel
形成兩頭大,中間小的瓶頸結(jié)構(gòu)
Inverted Residual Block:
1.采用1*1的卷積核升維,讓channel變得更深
2.通過卷積核大小為3*3的DW卷積操作進(jìn)行卷積
3.通過1*1的卷積進(jìn)行降維
結(jié)構(gòu)圖:
過程:
1.通過大小為1*1的卷積,激活函數(shù)為ReLU6
2.通過DW卷積,卷積核大小為3*3,激活函數(shù)為ReLU6
3.通過卷積核大小為1*1的卷積處理,使用線性激活
1.h*w*k的輸入,經(jīng)過1*1卷積核、ReLU6(t為擴(kuò)展因子,1*1卷積核的個(gè)數(shù)為tk),輸出h*w*(tk)
2.第二層輸入等于第一層輸出,使用DW卷積,卷積核大小為3*3,步距為s(給定),輸出的特征矩陣深度和輸入特征矩陣的深度相同(MobileNet v1中提到過DW卷積),由于步距為s,輸出特征矩陣的高寬縮減為和
3.第三層的1*1卷積為降維操作,所采用的卷積核個(gè)數(shù)為
ReLU6激活函數(shù):
ReLU激活函數(shù)的改進(jìn)版,諸如此類的改進(jìn)函數(shù)還有很多,類似Leakey ReLU等
在普通的ReLU激活函數(shù)中,當(dāng)輸入值小于零,默認(rèn)全置零;當(dāng)輸入值大于零,不對(duì)值進(jìn)行處理
在ReLU6激活函數(shù)中,當(dāng)輸入值小于零,默認(rèn)全置零;在(0,6)區(qū)間,不會(huì)改變輸入值;當(dāng)輸入值大于“6”,將輸入值全部置為“6”
作用:
①避免網(wǎng)絡(luò)出現(xiàn)激活值過大的情況,穩(wěn)定訓(xùn)練過程
②適合量化
③保留非線性特征
④提高訓(xùn)練速度
對(duì)比:
原始的殘差結(jié)構(gòu)是先降維再升維,而倒殘差結(jié)構(gòu)是先升維再降維
在普通殘差結(jié)構(gòu)中使用的ReLU激活函數(shù),而倒殘差結(jié)構(gòu)采用的是ReLU6激活函數(shù)
shortcut:
在倒殘差結(jié)構(gòu)中,并不是每一個(gè)倒殘差結(jié)構(gòu)都有shortcut(捷徑)分支,在論文中提到當(dāng)stride=1時(shí)有捷徑分支,stride=2時(shí)沒有捷徑分支
分析得知上述表達(dá)有誤:當(dāng)stride=1且輸入特征矩陣與輸出特征矩陣shape相同時(shí),才有shortcut連接;若不滿足都沒有shortcut
倒殘差結(jié)構(gòu)的作用:
1. 高效的特征提取:結(jié)合深度卷積和逐點(diǎn)卷積,能夠有效提取特征,同時(shí)減少計(jì)算復(fù)雜度。
2. 減少梯度消失問題:通過直接將輸入特征傳遞到輸出,減輕了深層網(wǎng)絡(luò)中的梯度消失問題,有助于更快收斂。
3. 靈活的通道擴(kuò)展:通過設(shè)置 expand_ratio
,可以靈活調(diào)整特征維度,增強(qiáng)模型的表達(dá)能力,同時(shí)避免不必要的計(jì)算。
4. 內(nèi)存和計(jì)算效率:盡管在某些情況下會(huì)增加參數(shù)量,但整體上,倒殘差結(jié)構(gòu)通常能保持相對(duì)較低的內(nèi)存和計(jì)算需求,適合在移動(dòng)設(shè)備上運(yùn)行。
5. 增強(qiáng)非線性變換:通過激活函數(shù),倒殘差結(jié)構(gòu)能夠引入非線性,使得模型可以學(xué)習(xí)更復(fù)雜的特征關(guān)系。
6. 適應(yīng)性強(qiáng):能夠根據(jù)不同任務(wù)的需求,調(diào)整網(wǎng)絡(luò)的復(fù)雜性和參數(shù)設(shè)置,適應(yīng)多種應(yīng)用場(chǎng)景。
Linear Bottlenecks:
對(duì)于倒殘差結(jié)構(gòu)的最后一個(gè)1*1卷積層,使用線性激活函數(shù)而不是ReLU激活函數(shù)
線性激活函數(shù)使用原因:
在原論文中,作者做了相關(guān)實(shí)驗(yàn)。輸入是二維的矩陣,channel為1,分別采用不同維度的Matrix(矩陣)對(duì)其進(jìn)行變換,變換到一個(gè)更高的維度;再使用ReLU激活函數(shù)得到輸出值;再使用
矩陣的逆矩陣
,將輸出矩陣還原為2D特征矩陣
當(dāng)Matrix?維度為2和3時(shí),通過觀察下圖可以發(fā)現(xiàn),二維三維的特征矩陣丟失了很多信息
但隨著Matrix?的維度不斷加深,丟失的信息越來越少
總結(jié):
ReLU激活函數(shù)會(huì)對(duì)低維特征信息造成大量損失,而對(duì)于高維特征造成的損失小
倒殘差結(jié)構(gòu)為“兩邊細(xì),中間粗”,在中間時(shí)為一個(gè)低維特征向量,需要使用線性函數(shù)替換ReLU激活函數(shù),避免信息損失
網(wǎng)絡(luò)結(jié)構(gòu):
t:擴(kuò)展因子
c:輸出特征矩陣的深度,channel
n:bottleneck(論文中的倒殘差結(jié)構(gòu))重復(fù)的次數(shù)
s:步距,只代表每一個(gè)block(每一個(gè)block由一系列bottleneck組成)的第一層bottleneck的步距,其他的步距都為1
當(dāng)stride=1時(shí):輸入特征矩陣的深度為64,輸出特征矩陣的深度為96;若有捷徑分支,捷徑分支的輸出的特征矩陣分支深度為64,但是通過主分支的一系列操作,所輸出的深度為96,很明顯深度時(shí)不同的,無法使用加法操作,也就無法使用shortcut
對(duì)于上述提到的block的第一層一定是沒有shortcut的,但對(duì)于第二層,stride=1(表中的s只針對(duì)第一層,其他層的stride=1),輸入特征矩陣深度等于上一層輸出特征矩陣的深度,為96;輸出特征矩陣深度為96,因此在bottleneck第二層輸出特征矩陣的shape和輸入特征矩陣的shape相同,此時(shí)可以使用shortcut分支
在網(wǎng)絡(luò)的最后一層為一個(gè)卷積層,就是一個(gè)全連接層,k為分類的個(gè)數(shù)
性能分析:
圖像分類:
準(zhǔn)確率,模型參數(shù)都有一系列的提升,基本上達(dá)到了實(shí)時(shí)的效果
目標(biāo)檢測(cè):
將MobileNet與SSD聯(lián)合使用,將SSD中的一些卷積換為DW卷積和PW卷積,相比原始的模型有一些提升,但對(duì)比MNet v1卻差了一些
總結(jié):
基本實(shí)現(xiàn)了在移動(dòng)設(shè)備或嵌入式設(shè)備上跑深度學(xué)習(xí)模型,也將研究和日常生活緊密結(jié)合