論文閱讀筆記《Dense Classification and Implanting for Few-Shot Learning》

核心思想

  本文是對基於度量學習的小樣本學習算法進行改進。常見的度量學習算法通常利用一個嵌入式網絡對圖像進行特徵提取,然後利用一個線性分類器進行分類。在訓練過程中得到的線性分類器權重可以看作對應每個類別的權值(class weights),在測試時,就比較查詢圖像對應的特徵值與每個類別權值之間的相似性,並以此進行分類預測。二維圖像經過特徵提取後得到的特徵信息是高維的張量,因此通常需要壓縮維度,以便於計算相似性。常見的壓縮維度的方式有兩種:壓平(Flattening)或者池化(Pooling).
在這裏插入圖片描述
  圖a所示的就是壓平操作,就是將原本爲h×w×dh\times w\times d維的張量,拉伸爲r×dr\times d維的張量,其中r=hwr=hw。這一方法具有較高的區分能力,但是不具備空間不變性。圖b所示的是池化操作,利用全局平均池化將每個通道的特徵圖都壓縮爲一個值,得到一個長度爲dd的特徵向量aa。這一方式能夠顯著降低維度,並且具有空間不變性,但區分能力較差。本文提出一種稱之爲稠密分類(Dense classificatio)的方法,對於提取到的特徵圖ϕ(x)\phi(x)不進行維度壓縮,而是對空間中的每一點對應的特徵向量進行分類預測。具體而言,假設特徵提取網絡最後一層輸出了維度爲h×w×dh\times w\times d的張量ϕ(x)\phi(x),那可以將其拆分成r=hwr=hw個長度爲dd的特徵向量ϕ(k)(x)\phi ^{(k)}(x),然後分別計算類別權重與ϕ(k)(x)\phi ^{(k)}(x)之間的距離,對每個空間上的點都進行類別預測,如下圖所示。
在這裏插入圖片描述
  在元測試階段,對於新類別的樣本,通常是對已訓練好的特徵提取網絡ϕθ\phi _{\theta}進行微調訓練,以滿足新類別樣本特徵表達的需要。在低層級的網絡中特徵信息的通用性較強,對於不同類別的樣本都能提取到有用的信息,而隨着網絡的加深,在高層級的網絡中,特徵信息就具備較強的區分度,而不具備通用性了。因此本文提出一種稱爲“神經移植”(Neural Implants)的方法,針對高層級的特徵提取網絡進行改進,改進的結構如下圖所示
在這裏插入圖片描述
  如圖所示,低層級的特徵提取網絡保持不變,在高層級的卷積層上增加一個新的分支,與原有的卷積層構成一個平行的結構。凍結原本高層級網絡的權重,使其不再更新,以保留對於原有類別的特徵提取能力,然後對於新類別的樣本,其特徵信息會分別經過兩個分支網絡,並且將原本高層級網絡提取的特徵圖,與新添加的網絡提取的特徵圖級聯起來,作爲新添加網絡分支下一層的輸入。最後得到新類別樣本對應的特徵信息ϕθ,θ(x)\phi '_{\theta ,\theta'}(x)。這一方法既消除了使用深層網絡出現過擬合的問題,又提高了特徵提取網絡對於新類別樣本的表徵能力。

實現過程

網絡結構

  嵌入式特徵提取網絡採用ResNet-12

損失函數

  如上文所述,計算損失要對空間中的每個點分別計算再求和,如下式
在這裏插入圖片描述
其中
在這裏插入圖片描述
在這裏插入圖片描述
sτs_{\tau}表示scaled cosine similarity,計算過程如下
在這裏插入圖片描述
其中,x^=x/x\hat{x}=x/\left \| x\right \|,\left \langle, \right \rangle表示Frobenius內積,τ\tau表示放縮係數。

訓練策略

  在元測試過程中,每次只選擇一個樣本作爲查詢樣本,其餘樣本都作爲支持集,類似《Few-Shot Learning with Localization in Realistic Settings》提出的留一交叉驗證法

創新點

  • 提出了稠密分類的方法,對空間中的每個點都進行分類預測,並計算損失,提高了分類的細粒度
  • 提出了神經移植的方法,保留已訓練好的網絡參數,增加新的網絡分支用於處理新的類別樣本

算法評價

  作者針對原有的小樣本學習算法提出兩點改進:稠密分類與神經移植。首先要說明的是,這兩點改進都是針對元測試階段,也就是網絡已經在一個數據集上訓練好了,目前要針對新的類別,且每個類別僅包含少量樣本的情況進行微調訓練。稠密分類的思想與DN4算法中提到的局部描述子的概念非常相似,都是通過增加分類的細粒度,不在圖片級別上進行類別預測,而在像素(或超像素)級別上進行類別預測,如果細粒度進一步提高到對原圖中每個像素進行類別預測,那麼就成爲語義分割任務了。而神經移植的思想有點類似於遷移學習的一些方法,只不過是在保留原有網絡的基礎上,對網絡結構進行了“拓寬”,但是新增加網絡分支的參數初始化怎麼處理呢?如果是從隨機狀態開始訓練,少量的數據集是否足夠呢?

如果大家對於深度學習與計算機視覺領域感興趣,希望獲得更多的知識分享與最新的論文解讀,歡迎關注我的個人公衆號“深視”。在這裏插入圖片描述

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