MultiGrain: a unified image embedding for classes and instances

MultiGrain: a unified image embedding for classes and instances

 

摘要

 

文中主要介紹一種叫做multiGrain的方法,這種方法可以同時對圖片進行分類和檢測。數據的標籤只依賴於類別標籤,訓練也是相對簡單,最小化交叉熵Loss以及ranking Loss,用來判定兩張圖片是否可區分的。這個模型是根據普通的分類模型構建的,它的奇異之處在於有一種pooling層,可以在低像素上訓練的模型應用到高像素中。

文中的分類、檢索結果是要優於目前存在的算法的。

 

 

 

 

簡介

 

文中的模型可以完成三種任務,這三種任務的完成是基於一個向量編碼,

目前來說卷積實現分類,已經是對圖像特徵提取方向的一個巨大進步,所以形成一個既可以檢索又可以分類的編碼本身並不存在衝突。

這種任務是與多任務這種任務有衝突很難融合不同的。雖然文中的三個任務不衝突,但是對於不同的實例相似度具有不同的評價標準比如,分類需要更多的變化來展示不變,而複製檢測對於圖像細節又很敏感。

爲了使得模型能夠滿足不同的情況,模型的結構時使用一種分類網絡,在分類網絡的後面加上一層global pooling層。 這樣可以輸入不同大小的圖像。

訓練模型的時候主要使用,交叉熵loss以及對比損失函數。 訓練的時候還使用了數據增強。

 

文中的主要貢獻如下

 

  1. 使用了檢索和分類結合的網絡
  2. 給出了新的batch 策略,每個batch中包含重複的數據增強的實例
  3. 使用一個對圖像檢索有意義的池化層,當輸入的是高像素的圖像的時候分類準確率能夠有很大的提升

 

 

相關工作

 

隨着卷積網絡的發展,大規模的基於imageNet的分類模型開始產生,這些模型的優秀特徵提取能力能夠複用到其他圖像任務之中比如實例檢索。

所以鑑於分類模型的優秀的特徵提取能力,在圖像檢索中主要是對pooling層的改進,比如R-MAC結合PCA白化往往能夠在圖像檢索中有很好的效果。 (uber-net)。

數據增強:數據增強能夠防止過擬合以及提升模型效果,在一個batch中如果包含一個圖像的多種增強圖像,那麼訓練模型的效果要好於只在batch中包含一種圖像的batch訓練的模型。 之後產生一種成爲batch 增強的增強方式,直接對batch 做數據增強增加了batch的大小,這樣做的訓練效果較好,也能夠節省進行所有圖像增強的資源。文中提出了一種新的數據增強的方式RA,使用採樣策略從batch中採集少量桐鄉大小的數據,然後使用重複數據增強做一個batch都能夠很好的提升模型效果。

 

 

網絡結構

在說明網絡結構前,需要重申的是分類任務以及相似度任務在模型結構以及模型訓練步驟方面有很多的不同,下面就是這種不同的一些總結。

 

 

下面就是本文將這些不同一一解決。

 

Special Pooling 算法

 

這種pooling方式就是將featuremap 轉化爲一個向量。

分類算法,在早起的分類模型leNet-5, AlexNet模型,其pooling方式就是把feature map 拉直。之後的ResNet以及DenseNet則使用的平均池化。

檢索算法:由於需要很多的局部信息那麼,GeM池化。

文中就是用的GeM池化,這是第一次將GeM池化應用到分類任務中。

訓練目標函數

對於分類網絡來說,其目標函數就是交叉熵,但是對於檢索網絡使用的loss爲對比loss,公式如下

其中alpha爲一個常數超參(margin),beta是一個可以學習的參數

融合Loss

其中

|B|表示一個batch的數據量,P(B)表示一個batch的數據對的量。

 

RA

 

使用訓練數據訓練分類,使用數據增強訓練檢索任務。

文中推薦一種新的針對SGD訓練以及數據增強的採樣策略,

從數量爲|B|的網絡中,使用採樣策略,採樣|B|/m個圖片,然後將圖片進行m次增強。同一圖片的不同增強還是認爲是同一實例。

 

PCA 白化

 

PCA白化同時應用到了 分類任務以及實例檢索任務。

 

輸入大小

 

在分類任務中的圖像處理,首先進行resize,然後center-crop成一個224 x 224的圖像,這樣可以有更小的顯存,更快的推理。與之相反的是圖像檢索主要依賴於圖像細節,所以需要更高的像素。目前來說圖像檢索所使用的像素,需要滿足長邊在800~1024之間,所以在實際操作的過程中不能夠同時端到端的訓練分類和檢索任務。爲了解決這個問題,文中使用低像素的進行訓練,高像素的進行推理。這得益於模型結構中所用的pooling層

一般來說像素越大,pooling的參數p越大

爲了選擇適用所有任務的pooling中的參數p,文中給出一個合成檢索任務IN-aug。

從ImageNet中抽樣2000個圖片,每個類2張,並且每一個圖片給出5個數據增強。

 

然後評估IN-aug的檢索準確度,看一下在top5中,有多少個圖片增強數據。選擇表現最好的那個做爲pooling的p值,p in {1, 2, …., 10}。

上述表格爲試驗的參數。

最後feature map的熱力圖,在224像素的條件下車輛太小不能夠被激活,而在全卷積的條件下在p=3時候,能夠很好的激活汽車的區域。

 

總體來說網絡結構如下圖所示

 

 

實驗部分

 

試驗使用的分類網絡是ResNet50,  SGD初始化學習率是0.2, 一共訓練了120 epochs,分別在30,60,90 epochs後進行學習率衰減。 Batch 大小是512,每個epoch迭代5005次,使用均值採樣,並且假設m=3以及RA。

數據增強:使用標準flip,隨機resize crop, 隨機加入亮度噪音,顏色變化。翻轉。

Pooling 選擇,在選擇中考慮了兩種pooling設置,p=1或者p=3, p=1的時候就是平均池化,應用到分類的結構中。P=3應用到檢索之中。

 

輸入大小以及剪切:訓練網絡使用的是224 x 224像素大小,推理過程中分別使用的是224, 500, 800。對於224的像素,小邊被resize成256並且center crop 成224大小,對於大於224的圖片,文中將大的邊resize成需要的像素大小。不經過裁剪直接通過網絡。

Margin loss 以及 batch 採樣。使用m=3的數據增強每一個batch,使用4塊gpu訓練。

數據:使用的ImageNet的數據集合,大概1200萬張圖片,用5萬個圖片作爲驗證集合。對於圖像檢索我們使用的是假期數據的map評價,

PCA白化來源於YFCC100M,20000張數據的計算。

在實驗中發現,lamta=0.1分類效果最差,爲0.5分類效果最好。下面的試驗主要給出的參數lamta=0.5,分類結果最佳的像素爲224和500。

相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。