日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 超越MobileNetV3的輕量級網(wǎng)絡(luò)

          超越MobileNetV3的輕量級網(wǎng)絡(luò)

          發(fā)布人:CV研究院 時間:2021-11-10 來源:工程師 發(fā)布文章

          1.jpg

          之前CVPR公布了收錄的文章,“計算機(jī)視覺研究院”從其中找一些好的算法框架與大家分享,今天分享的就是超越Mobilenet_V3的輕量級網(wǎng)絡(luò)——GhostNet。

          雖然說mobileNet或者是shuffleNet提出了使用depthwise或者是shuffle等操作,但是引入的1x1卷積依然會產(chǎn)生一定的計算量。

          為什么1x1依然會產(chǎn)生較大的計算量?

          看卷積計算量的計算公式n?h?w?c?k?kn*h*w*c*k*kn?h?w?c?k?k,可以發(fā)現(xiàn),由于c和n都是比較大的,所以會導(dǎo)致這個計算量也是比較大的,但是作者在分析輸出的特征圖的時候發(fā)現(xiàn),其實有些特征圖是比較相似的。

          Introduction

          目前,神經(jīng)網(wǎng)絡(luò)的研究趨向于移動設(shè)備上的應(yīng)用,一些研究著重于模型的壓縮方法,比如剪枝,量化,知識蒸餾等,另外一些則著重于高效的網(wǎng)絡(luò)設(shè)計,比如MobileNet,ShuffleNet等。作者在分析輸出的特征圖的時候發(fā)現(xiàn),其實有些特征圖是比較相似的,如下圖所示,作者認(rèn)為可以通過簡單的變換得到。

          2.jpg

          訓(xùn)練好的網(wǎng)絡(luò)一般都有豐富甚至冗余的特征圖信息來保證對輸入的理解,如上圖ResNet-50的特征圖,相似的特征圖類似于對方的ghost。冗余的特征是網(wǎng)絡(luò)的關(guān)鍵特性,論文認(rèn)為與其避免冗余特征,不如以一種cost-efficient的方式接受,獲得很不錯的性能提升,論文主要有兩個貢獻(xiàn):

          · 提出能用更少參數(shù)提取更多特征的Ghost模塊,首先使用輸出很少的原始卷積操作(非卷積層操作)進(jìn)行輸出,再對輸出使用一系列簡單的線性操作來生成更多的特征。這樣,不用改變其輸出的特征圖,Ghost模塊的整體的參數(shù)量和計算量就已經(jīng)降低了;

          · 基于Ghost模塊提出GhostNet,將原始的卷積層替換為Ghost模塊。

          基于此,作者得到啟發(fā),是不是每張圖都需要用這么大的計算量去得到?是否可以通過cheap transformation得到這些相似的特征圖?

          然后就出現(xiàn)了GhostNet。Ghost就是說相似的特征圖,猶如另一個的幽靈,可以通過簡單的線性變換得到。

          3.jpg

          Ghost Module for More Features

          4.png

          對于輸入數(shù)據(jù)X∈?c×h×w,卷積層操作如上公式,Y∈?h′×w′×n為輸出的n維特征圖,f∈?c×k×k×nf為該層的卷積核,可得該層的計算量為n?h′?w′?c?k?k,這個結(jié)果一般較大,是由于n和c一般都很大。上面公式的參數(shù)量與輸入和輸出的特征圖數(shù)息息相關(guān),而從圖1可以看出中間特征圖存在大量冗余,且存在相似的特征(Ghost),所以完全沒必要占用大量計算量來計算這些Ghost。

          假設(shè)原輸出的特征為某些內(nèi)在特征進(jìn)行簡單的變換得到Ghost,通常這些內(nèi)在特征數(shù)量都很少,并且能通過原始卷積操作如下公式獲得,Y′∈?h′×w′×m為原始卷積輸出,f′∈?c×k×k×m為使用的卷積核,m≤n,bias直接簡化了:

          5.png

          為了獲得原來的n維特征,對Y′的內(nèi)在特征分別使用一系列簡單線性操作來產(chǎn)生s維ghost特征,Φi,j為生成y′i的j-th ghost特征圖的線性變換函數(shù),最后的Φi,s為保存內(nèi)在特征的identity mapping,整體計算如上圖2b。

          簡單的來說就是:

          首先,假設(shè)我們輸入特征圖的尺寸是h*w*c,輸出特征圖的尺寸是h’*w’*n,卷積核大小為k*k。

          在cheap operation變換中,我們假設(shè)特征圖的channel是m,變換的數(shù)量是s,最終得到的新的特征圖的數(shù)量是n,那么我們可以得到等式:

          n=m?sn = m * s

          n=m?s

          由于Ghost的變換過程中最后存在一個恒等變換(Identity),所以實際有效的變換數(shù)量是s-1,所以上式可以得到如下公式:

          m?(s?1)=n/s?(s?1)m * (s-1) = n/s * (s-1)

          m?(s?1)=n/s?(s?1)

          所以我們便可以計算得到如下結(jié)果:

          6.png

          當(dāng)然這里還有一個條件:m << n

          通過這么分析,可以體會到,其實GhostNet的方法也很簡單,無外乎就是將原本的乘法變成了兩個乘法相加,然后在代碼實現(xiàn)中,其實第二個變換是用depthwise conv實現(xiàn)的。作者在文中也提到,前面的卷積使用pointwise效率比較高,所以網(wǎng)絡(luò)嫣然類似一個mobilenet的反過來的版本,只不過GhostNet采用了拼接的方式,進(jìn)一步減少了計算量。

          Ghost module的pytorch代碼如下:

          class GhostModule(nn.Module):
              def __init__(self, inp, oup, kernel_size=1, ratio=2, dw_size=3, stride=1, relu=True):
                  super(GhostModule, self).__init__()
                  self.oup = oup
                  init_channels = math.ceil(oup / ratio)
                  new_channels = init_channels*(ratio-1)
                  self.primary_conv = nn.Sequential(
                      nn.Conv2d(inp, init_channels, kernel_size, stride, kernel_size//2, bias=False),
                      nn.BatchNorm2d(init_channels),
                      nn.ReLU(inplace=True) if relu else nn.Sequential(),
                  )
                  self.cheap_operation = nn.Sequential(
                      nn.Conv2d(init_channels, new_channels, dw_size, 1, dw_size//2, groups=init_channels, bias=False),
                      nn.BatchNorm2d(new_channels),
                      nn.ReLU(inplace=True) if relu else nn.Sequential(),
                  )
              def forward(self, x):
                  x1 = self.primary_conv(x)
                  x2 = self.cheap_operation(x1)
                  out = torch.cat([x1,x2], dim=1)
                  return out[:,:self.oup,:,:]

          與現(xiàn)有網(wǎng)絡(luò)的不同

          與目前主流的卷積操作對比,Ghost模塊有以下不同點:

          對比Mobilenet、Squeezenet和Shufflenet中大量使用1×1pointwise卷積,Ghost模塊的原始卷積可以自定義卷積核數(shù)量;

          目前大多數(shù)方法都是先做pointwise卷積降維,再用depthwise卷積進(jìn)行特征提取,而Ghost則是先做原始卷積,再用簡單的線性變換來獲取更多特征;

          目前的方法中處理每個特征圖大都使用depthwise卷積或shift操作,而Ghost模塊使用線性變換,可以有很大的多樣性;

          Ghost模塊同時使用identity mapping來保持原有特征。

          框架結(jié)構(gòu)

          下圖是Ghost bottleneck結(jié)構(gòu)圖,很類似resnet結(jié)構(gòu),不同的是channel是先升維再降維。

          7.jpgGhost Bottleneck(G-bneck)與residual block類似,主要由兩個Ghost模塊堆疊二次,第一個模塊用于增加特征維度,增大的比例稱為expansion ration,而第二個模塊則用于減少特征維度,使其與shortcut一致。

          G-bneck包含stride=1和stride=2版本,對于stride=2,shortcut路徑使用下采樣層,并在Ghost模塊中間插入stride=2的depthwise卷積。為了加速,Ghost模塊的原始卷積均采用pointwise卷積。

          下面是GhostNet的網(wǎng)絡(luò)結(jié)構(gòu)圖,可以看到channel控制的比較小,并且引入了SE結(jié)構(gòu)。

          8.jpg

          實驗

          作者首先采用控制變量法,測試不同的s以及d的效果。經(jīng)過測試發(fā)現(xiàn)在s=2,d=3的情況下模型表現(xiàn)較好。

          9.png10.png

          下表為在resnet50實驗的不同網(wǎng)絡(luò)的壓縮比例以及精度對比:

          11.jpg

          可以看到使用Ghost模塊不僅比其它壓縮方法更能降低模型的體量,也最能保持模型準(zhǔn)確率:

          12.jpg

          The feature maps in the 2nd layer of Ghost-VGG-16. The left-top image is the input, the feature maps in the left red box are from the primary convolution, and the feature maps in the right green box are after the depthwise transformation.

          13.jpg14.jpg

          ImageNet效果對比:

          15.jpg16.jpg

          目標(biāo)檢測的效果:

          17.jpg

          小結(jié)

          為了減少神經(jīng)網(wǎng)絡(luò)的計算消耗,論文提出Ghost模塊來構(gòu)建高效的網(wǎng)絡(luò)結(jié)果。該模塊將原始的卷積層分成兩部分,先使用更少的卷積核來生成少量內(nèi)在特征圖,然后通過簡單的線性變化操作來進(jìn)一步高效地生成ghost特征圖。從實驗來看,對比其它模型,GhostNet的壓縮效果最好,且準(zhǔn)確率保持也很不錯,論文思想十分值得參考與學(xué)習(xí)。

          論文地址:https://arxiv.org/pdf/1911.11907.pdf

          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

          電子管相關(guān)文章:電子管原理




          關(guān)鍵詞: AI

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉