當前位置:
首頁 > 知識 > 16歲Kaggle老兵奪冠Kaggle地標檢索挑戰賽!

16歲Kaggle老兵奪冠Kaggle地標檢索挑戰賽!

作者:anokas來源:Kaggle、機器之心等

anokas 贏得了谷歌地標檢索挑戰賽,在 Reddit 上引起了非常多的討論,大家都非常關心他的年齡以及是否有其他人幫助。不過在 anokas 的 Kaggle 主頁中,他過去一年的活躍度非常高。雖然 anokas 這次與他的爸爸組成團隊在圖像檢索挑戰賽中獲勝,但在他參與的 50 項挑戰賽中有 40 項都是單獨完成的。

anokas 兩年前就已經開始參加 Kaggle 競賽,在完成的 48 項競賽中,他一共獲得了 5 塊金牌、7 塊銀牌和 5 塊銅牌。除了這一項地標圖像檢索,他還獲得了谷歌雲與 YouTube-8M 視頻理解挑戰賽的第七名。以下是他排名比較靠前的競賽:

除了上述獲得的榮譽,anokas 昨天還在 Kaggle 分享了他們獲勝的方案,如下機器之心將介紹這一份解決方案。

以下是我們團隊在競賽中所使用解決方案的細節總結,我們的解決方案包含兩個主要的組件:第一個是創建一個高性能的全局描述子,以用奇異值向量表徵數據集中的圖像,第二個組件即構建一個高效的策略以匹配這些向量,從而搜索到最可能的匹配條目,並提交到排行榜。

下圖展示了整體的流程圖,在每一個應用步驟中都標記了 LB 分數,後面我們詳細介紹這些步驟。

全局描述子

我們解決方案的主要部分涉及到一些全局描述子,它們是描述整體圖像的向量。整體架構首先從兩個預訓練的 CNN 模型開始(ResNet 和 ResNeXt),然後使用四種頂尖的聚合方法以從這些模型生成全局描述子。以下是每種方法及它們「原始」性能的簡要細節,原始性能即不帶查詢擴展和資料庫擴展等方法的性能:

基於區域熵的多層抽象池化(REMAP)[42.8% mAP]:這是我們全新設計的全局描述子,它聚合了來自不同卷積層的層級化深度特徵,並訓練表徵多個互補的層級視覺抽象。我們計劃在即將來到的 CVPR Workshop 中展示 REMAP 架構的細節。

最大卷積激活值(MAC)[32.9% mAP]:MAC 描述子編碼了最後層中每一個卷積核的最大局部響應。在 MAC 架構中,ResNeXt 的最後卷積層會接一個最大池化層、L2 正則化層和 PCA+白化層。

卷積的池化和(SPoC)[31.7% mAP]:在 SPoC 流程中,ResNeXt 的最後卷積層會接一個池化求和層、L2 正則化層和 PCA+白化層。

卷積的區域最大激活值(RMAC)[34.7% mAP]:在 RMAC 中,ResNeXt 的最後卷積特徵圖是通過在多尺度重疊區域上做最大池化而得出。基於區域的描述子是 L2 正則化、PCA+白化和另一個 L2 正則化,描述子最後會求和匯聚到一個單描述子。

基本的 CNN 網路(ResNet 與 ResNeXt)都是在 ImageNet 數據集上進行預訓練,並在地標數據集上進行精調。該地標數據集由 Babenko 等人開發,包含了大約 120k 張圖像和 650 個著名的地標。

這個數據集中的圖像是通過在一個圖像搜索引擎進行文本查詢而收集的,沒有經過徹底驗證。因此,它們包含大量的無關圖像,我們將其過濾出來並刪除了。這個過程是半自動化的,依賴於使用 Hessian-affine 檢測器檢測到並使用 RVD-W 描述子聚集的密集 SIFT 特徵。清理完成之後,數據集中還剩下 650 個地標的 25000 張圖像。

我們沒有使用來自地標分類姊妹競賽的數據來訓練,因為我們想弄清楚該解決方案泛化到其它數據集的能力(相對於為該數據集而特定設計的解決方案)。

組合描述子

我們最終的全局描述子通過級聯 6 個按上述方式訓練調整好的全局描述子的方式來構建(下列括弧中是 LB 分數):

ResNeXt+REMAP (42.8%)

ResNeXt+RMAC (34.7%)

ResNeXt+MAC (32.9%)

ResNeXt+SPoC (31.7%)

ResNet+REMAP (35.8%)

ResNet+MAC (30.4%)

我們將描述子通過固定的 L2 範數縮放,從而為每個描述子分配權重,並按下列方式級聯描述子:

權重是點對點選取的,以反映每個方法的相對性能。之後,我們執行 PCA,將描述子的維度降低到 4K(不只是為了節約計算量,還為了刪除雜訊維度),並使用白化處理,使所有維度具備相同的方差。儘管 PCA 和白化只帶來少許改進,但它將查詢擴展步驟的結果提升了幾個百分點。

最近鄰搜索

在創建好描述子之後,每張圖像都用 4096 維的描述子來表徵。接下來,我們使用窮盡 k 最近鄰搜索來找出每張圖像的 top 2500 近鄰和 L2 距離。在這一階段提交每張測試圖像的 top 100 近鄰獲得了 47.2% 的分數。

這一步使用優化 NumPy 代碼來實現,耗時兩小時為 120 萬張圖像中的每一張找出 top 2500 近鄰(我們需要索引集執行最近鄰,以備後續使用)。

資料庫增強

下一步是執行資料庫增強(DBA),即用圖像描述子的加權組合及其 top 10 近鄰來替換資料庫(包括查詢)中的每個圖像描述子。目標是通過利用近鄰特徵來提高圖像表徵的質量。更準確地來說,我們對描述子執行加權求和,使用以下函數來計算權重:

有趣的是,儘管我們在其他數據集上發現,使用兩個以上近鄰來增強查詢會損害分數,而 10 個近鄰對數據集中的查詢和資料庫圖像來說卻是最好的。

我們需要注意:DBA 是該流程的最後一項,儘管它大大提高了分數,但是與查詢擴展步驟結合時,改進僅有 1-2%。我們認為原因在於資料庫擴展與查詢擴展方法的第一級別類似。

查詢擴展

查詢擴展是圖像檢索問題中的基礎技術,通常會帶來性能的極大提升。它遵循該原則運行:如果圖像 A B、B C,則 A C(即使描述子 A 和 C 並非明確匹配)。一個簡單的示例是有三個部分重疊的圖像的情況:

在這種情況下,查詢擴展機制能夠幫助我們匹配 A 和 C 在同一個場景中,儘管它們的描述子(尤其是全局描述子)可能非常不匹配。這對其他情況也有好處,比如我們有多張視角或亮度條件略微不同的圖像時,中間圖像可以幫助我們將它們連接起來。

在這場競賽中,我們設計了一種新的快速技術用於查詢擴展,它可以通過多個中間步驟遞歸地運行來捕捉圖像之間的長程連接(long-distance connection)。這使得該技術非常適用於這類問題,因為很多地標有很多圖像,只有一張圖像需要與查詢相匹配,同一地標的其它圖像被附加到 top-100 列表中。

我們決定不在這裡討論具體的方法,而僅限於解釋,在之後的論文中將深入介紹方法。但其基本原則和其它成熟的查詢擴展技術是相同的。我們的查詢擴展在運行一次迭代後帶來了大約 11% 的提高,在遞歸運行(30 分鐘的運行時)後帶來了 14% 的提高(當結合 DBA 的時候有所降低)。

簡化模型

在產品級機器學習環境中,由於收益遞減原則,很少使用怪獸級別的多模型集成。通常使用較小規模的模型集成就可以實現大部分性能。我們期望得到原來解決方案的簡化版本,其僅使用 ResNet-REMAP 和查詢擴展,在從下載數據到提交結果不到 12 小時的運行時內(在 4 塊 GPU 上)達到 56%~57% 的分數,由於它並不需要特定地為該競賽進行訓練,為此也帶來了很多好處。

未發揮作用的方法

局部描述子(local descriptor):在競賽中,我們對此最為吃驚。我們嘗試了多種基於不同局部描述子的方法,包括使用或不使用幾何驗證的方法,例如用於對我們的結果重排序(降低性能),或用於遍歷頂部的數千個全局近鄰來尋找可靠的、被基於 CNN 的全局描述子所忽略的局部匹配(有幫助,但對性能的提高不到 0.1%)。我們很好奇其它團隊是否在這場競賽中利用了局部描述子的威力。可能基於 CNN 的全局描述子的性能太好,以至於局部描述子已經過時了?

處理旋轉圖像:瀏覽一下數據集,我們就可以發現有很多圖像都經過了旋轉。我們以多種方式考慮了這個問題,例如在 kNN 過程中對比旋轉和非旋轉描述子,並為每對圖像取最接近的匹配,然而這並沒有提高我們的分數。這可能是因為這個數據集有很多的干擾項,假正類的增加超過了真正類的收益。

集成:我們嘗試了多種方法來結合不同的模型和方法,例如排序平均和交錯預測等,然而得到的收益非常小。也許在解決方案的早期階段進行模型集成會比在最終階段集成更好。

- 加入AI學院學習 -


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI講堂 的精彩文章:

最新!今日頭條新聞文本分類數據集
重磅!卷積神經網路為什麼能稱霸計算機視覺領域?

TAG:AI講堂 |