不定期讀一篇Paper之SENet

不定期讀一篇Paper之SENet

前言

​   首先,引用原文中的一段文字,如下圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sKyZ5C4r-1585816784109)(./imgs/target.png)]

​   所以,SENet的提出了更加關注不同通道的之間的重要程度,下面是VGG16網絡第一層的特徵圖可視化圖片來源,共有64個通道,從圖中我們可以看出不同特徵圖所關注的圖像的特徵不同(當然,隨着網絡的加深,網絡能夠表達的信息更加的抽象,這裏引用了淺層網絡),有些通道關注是一些紋理信息,有些是一些輪廓信息等,所以,一個直觀的理解在我們對圖像的處理過程中我們希望關注的層次能夠有”側重點“,這樣能夠使我們的網絡總會關注那些有用的信息。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IlI6AY1N-1585816784111)(./imgs/feature_map.jpg)]

框架

​   SENet提出關注網絡卷積層中不同通道的重要程度,而這個重要程度是可以學習的,相當於我們可以學習到每一個通道相應的權重分數,然後,把它與我們的相應的通道的結合,就可以使得不同的通道表示的結果整體上有了側重點。

​ 下圖是SENet模塊:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HbzndReA-1585816784112)(./imgs/senet.png)]

​   實現原理結合以下pytorch代碼理解,個人覺得這是一個原理上很直觀,但是思路新奇的架構

class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        """
        :param channel:輸入通道
        :param reduction:縮減倍數
        """
        super(SELayer, self).__init__()
        # 1. Squeeze(average pooling)
        self.avg_pool = nn.AdaptiveAvgPool2d(1)

        # 2.Excitation
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

這裏列舉幾個重要的點:

  • 縮減倍數的選擇,作者說這是一個超參數,在不同的深度的layer中,你可以選擇調整不同的縮減比例來提高你的網絡性能。

  • 全局平均池化的選擇,原則上你也可以選擇最大池化,作者證明兩者效果相差不大,但全局平均池化在整體效果會好一點。

  • 網絡模塊的插入應該在卷積操作後,非線性激活函數的前面(relu),因爲SENet最後選擇sigmoid來凸顯不同通道的重要程度(實驗上sigmoid的效果也更好一些,相比於relu、tanh),相當於一個門控單元。而我們知道simmoid激活函數在網絡很深的時候會出現梯度消失和爆炸,尤其是在嵌入殘差網絡,所以選擇在原激活函數前添加模塊。下圖是在inception Net和Residual Net中插入SE module

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yGnFShvc-1585816784114)(./imgs/Se_insert.png)]

實驗

​   本次實驗是在renet18上加入了SE模塊實現圖線分類任務,模型迭代100個epoch,數據集選擇了cifar10分類,實驗效果如下,當然本身殘差網絡在圖像分類任務就有較好的任務。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1L4489mt-1585816784116)(./imgs/train_acc.svg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-M6RlRZeo-1585816784117)(./imgs/train_loss.svg)]
train_acc train_loss

實驗中也對網絡中關注的點進行的了可視化,如下圖中所示,我們通過熱力圖可以看出在分類爲飛機時,網絡正真關注的是飛機本身,而對於汽車的關注,也更加關注汽車區域。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0e6qNGSk-1585816784118)(./imgs/senet_all.svg)]

參考

論文地址

解讀Squeeze-and-Excitation Networks(SENet)

最後一屆ImageNet冠軍模型:SENet

Momenta詳解ImageNet 2017奪冠架構SENet

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章