Deep TEN: Texture Encoding Network
原文地址:Deep TEN
備註:這篇文章中提到的Encoding Layer 是語義分割–(EncNet)Context Encoding for Semantic Segmentation的前部分工作,面向是紋理識別任務。
收錄:CVPR2017(IEEE Conference on Computer Vision and Pattern Recognition)
代碼:
論文提出了一個新的深度學習模型,推廣了傳統的字典學習(dictionary learning)
和殘差編碼(Residual Encoders)
(例如 VLAD 和 Fisher Vector)。提出的編碼層(Encoding Layer)可結合現有的深度學習框架,實現了端對端的深度學習框架,在材料識別任務上取得了不錯的效果。
核心思想
傳統方法
對於輸入圖片,傳統圖像識別方案:
即分爲如下步驟:
- 通常先提取圖像特徵(SIFT、filterbank responses等)
- 通過聚類等非監督方式得到一個字典(dictionary)
- 對圖片特徵編碼(材料識別中通常使用無序編碼器,比如BoWs,VLAD)
- 使用分類器進行分類
傳統方法有以下兩個特點:
- 輸入圖片可以爲任意大小,使用編碼器轉化爲一個固定長度的表達。
- 特徵本身是通用的(domain-independent),字典和編碼表達通常攜帶域信息(domain-specific information)。 即圖像特徵部分對多數任務都是有效的,這和深度學習預訓練是一個道理,字典和編碼是針對特定任務的,即深度學習裏面的finetune。
相關工作
對比於傳統方法(左圖),已有的深度學習方法Cimpoiet. al. CVPR 2015 做了如下嘗試(右圖):
總結一下:
- 將特徵提取換成了Pre-trained CNN,因爲CNN的特徵提取能力強
- 編碼使用強大的Fisher Vector編碼器
CNN強大的特徵提取讓整個框架得到了當時的state-of-the-art。但這種方法將整個系統分成多步再優化。 即整個系統形成不了端對端學習,特徵提取,字典學習和編碼器不能夠從標識的數據(labeled data)中得到進一步優化。 這可以類比目標檢測中的Fast R-CNN工作,先使用傳統方法找出侯選區域。使用CNN來提取特徵,使用RoI pooling將特徵映射爲固定長度表示,然後用分類器。最終版的Faster R-CNN通過RPN聯立學習。*
論文方案
理想的方案如右圖,即論文的思路:
思路也很直接:設法將字典學習和編碼整合到一個CNN網絡層中,實現了端對端的學習優化。
論文提出了一個數學模型(Residual Encoding Model),推廣已有的編碼器 (VLAD, Fisher Vector),使得整個系統是可微分的,讓所有部分從loss 中學習。實現了全監督式的字典學習(supervised dictionary learning)。 同時模型具備傳統方法的特性:如CNN網絡可以接受任意大小的圖片;字典學習和編碼容易攜帶domain信息,這樣學習到的深度特徵就更容易應用於其他domain。
模型推廣了VLAD和Fisher Vector,故除了應用的於材料/紋理識別,還可以應用到其他地方(今年的scene understanding的EncNet
, image retrieval等等)。
論文介紹
Abstract
論文提出了一個新穎的編碼層(Encoding Layer)集成可集成現有的CNN中,論文稱爲深度紋理編碼網絡(Texture Encoding Network,Deep-TEN
),編碼層將整個字典學習(dictionary learning)和編碼集成到一個單獨的模型,提供了一個端對端的學習框架,分類器的feature,dictionaries和encoding representation都可以同時從loss上學習。
其中編碼層泛化成魯棒殘差編碼器(例如VLAD和Fish Vectors)。實驗證明新的模型在多個數據集達到了先進的表現。
Introduction
Motivation
CNN在多個計算機視覺任務上成爲了標準方法。在紋理和材料識別和目標識別中有一些獨特的挑戰,需要捕獲一些空間重複無序度量(apturing an orderless measure encompassing some spatial repetition)。
在傳統的方法上,使用興趣點檢測方法提取手工特徵(例如SIFT或filterbank responses)。字典通常是離線學習,再編碼特徵分佈(例如BoW),後面再使用分類器(例如SVM)得到預測結果。
在最近的工作中,手工提取特徵被預訓練的CNN代替,BoWs被魯棒殘差編碼器代替(例如VLAD和Fisher Vector),例如Cimpoi等人使用不同的編碼器(VLAD,FV)組成不同的特徵(SIFT,CNN),這取得了當時的先進的結果。
但是,這些方法是堆疊self-contained 組件(特徵提取,字典學習,編碼,分類器訓練),如下圖左邊和中間:
這些算法的缺點在於特徵提取和編碼一旦構建完成就是固定的,這樣特徵學習(CNN和字典)無法從標籤數據中獲益。
如何實現端對端學習?
CNN的卷積操作是以滑窗方式操作,充當局部特徵提取器。輸出的特徵圖保存了輸入圖片的相對的空間排列。再將得到的全局有序的特徵級聯送到FC層做分類, 這樣的框架在圖像分類,目標識別等獲得巨大成功。但是這不適用於紋理識別,因爲紋理識別需要描述特徵分佈的空間不變表示而不是級聯。
因此,一個無序的特徵池化層對於端對端訓練是很有用的,而問題在於loss的梯度傳遞,論文在附錄A給出了新的BP推導,實現了無序表示的編碼集成到深度學習框架中。
Contribution
論文的第一個貢獻
引入了一個新的可學習殘差編碼層(Encoding Layer),能夠將整個字典學習和殘差編碼集成到單一的CNN模型中,編碼層具有三個主要屬性:
編碼層推廣魯棒殘差編碼器,如VLAD和Fisher Vector,這種表示是無序的,描述了特徵空間,適用於紋理和材質識別。
編碼層在卷積層頂端充當池化層,接收不同尺寸大小並提供固定長度的表示輸出。因爲可接收不同尺寸的輸出,模型更爲靈活並且實現證明多尺度輸入能夠提升模型性能。
編碼層學習固定字典並編碼表示,這可能會攜帶特定域的信息,因此適合遷移預訓練特徵。在論文中,CNN是從對象分類遷移到紋理識別,因爲網絡作爲迴歸過程實現端對端訓練,因此卷積特徵與頂端的編碼層一起更容易遷移。
論文的第二個貢獻
給出了一個端對端的框架Texture Encoding Network - Deep TEN。其中特徵提取、字典學習和編碼集成於單個網絡中, 每個組件受益於BP中的梯度流動,都可以做學習調整。
模型在多個數據集上獲得了先進的結果。論文進一步探索了通過對兩個數據集聯合訓練來傳輸和編碼層一起學習的卷積特徵。
Learnable Residual Encoding Layer
對於傳統方法不太瞭解,這裏只是貼一個大概翻譯~
Residual Encoding Model:
給定一組 個視覺描述符 ,和一組學習codebook 包含了 個 維的codewords. 爲每個描述符 ,針對每個codeword 分配權重 ,對應的殘差向量記爲 ,其中 和 . 給定分配和殘差向量,殘差編碼模塊對每個單獨的codeword 做聚合操作:
結果編碼輸出是一個固定長度表示 (獨立於輸入描述符 的)。
Encoding Layer:
傳統的識別方法分成特徵提取,字典學習,特徵池化(編碼),分類器學習。 論文的方案將字典學習和殘差編碼結合到單個CNN模型中,稱之爲Encoding Layer 。 編碼層以全監督方式學習同時學習編碼參數和固有字典。固有字典通過分配權重傳遞的梯度從描述符的分佈中學習。在訓練過程中,提取的卷積特徵也可以從編碼表示中受益。
對於描述符的權重原本使用的時 Hard-assignment,論文改進使用的Soft-weight應對不可分問題,受GMM的啓發,最終的權重爲:
這對描述符提供了一個更爲精確的建模,編碼層通過分配的權重聚合殘差向量,最終再用 做標準化。
End-to-end Learning:
編碼層是一個有向無環圖,如下所示:
所有的參數都是可微分的。
Relation to Other Methods
對比圖如下:
Experimental Results
紋理識別任務上:
在分類任務上測試:
Conclusion
論文的主要貢獻在於將傳統的編碼部分和現CNN架構集成到一起,彌補了傳統計算機視覺方法和深度學習方法之間的差距。具體來說,提出了個數學模型 (Residual Encoding Model),推廣了已有的編碼器 (VLAD, Fisher Vector),並且使得整個系統是可微分的,每個部分都可從loss function中學習。 論文提出了一個針對紋理識別任務的框架Deep TEN,在多個紋理數據集上表現優異。
此外,新的模型有很多傳統方法的特性:如CNN網絡可以接受任意大小的圖片,字典學習和表達容易攜帶Domain信息,這樣學習到的深度特徵就更加容易應用於其他domain。