论文阅读(2)--Picking Deep Filter Responses for Fine-grained Image Recognition
這次閱讀的文章是Picking Deep Filter Responses for Fine-grained Image Recognition,這篇文章是來自上海交通大學Xiaopeng Zhang等人的工作,該文章提出了一種對深度網絡中的filter進行挑選的方法,基于挑選的filter的結果構建復雜特征表達。
0. 摘要
識別精細類別的子類別比較困難的原因是其在一些特別的部位上有比較高的局部和細微的不同。(due to the highly localized and subtle differences in some specific parts)
本文提出一種基于挑選深度filter response的兩個步驟的框架。步驟流程如下圖所示:
第一步是找出對于特別的部位(specific patterns)比較重要的較敏感的filters,然后通過選擇的新的正樣本和再訓練的部件模型中交替迭代來學習一組部件檢測器(a set of part detectors)。
第二步則是通過Spatially Weighted Fisher Vector(SWFV)編碼來選擇 filter response,這里根據Fisher Vector本身的重要性來給每個Fisher Vector分配一個權重,并將其合并到最終的圖片表示中(pool it into final image representation)。
1. 介紹
目前大多數精細分類都需要在訓練階段或者測試階段需要有物體或者部件的標注,在一些比較新的工作則只需要在訓練階段需要,但是對于大規模的數據庫,標注是一個非常耗費時間和精力的事情,同時在實際應用中也需要用戶手工標注,因此能夠自動發現部件就可以擺脫進行標注這項工作,但是自動發現標注是一個經典的先有雞還是先有蛋的問題——發現一個部件例子需要有一個準確的外觀模型,但是沒有部件例子就不能學習到一個好的準確的外觀模型。(without an accurate appearance model, examples of a part cannot be discovered, and an accurate appearance model cannot be learned without having part examples.)
本文的第一個貢獻是為精細圖像識別提出了一個自動部件檢測的方法。首先是基于深度 filters的選擇性,提出一個新的用于學習檢測器的初始化方法。這個方法學習到的檢測器都是比較弱的,甚至大部分的檢測器都與我們的任務無關,但是這個方法的關鍵是精心選擇具有重要和始終如一的響應的深度 filters。其次,通過迭代選擇每類的正樣本和再訓練正則化的部件模型來學習一組檢測器。使用正則化是考慮到正類樣本的多樣性和可靠性。
第二個貢獻是提出了一種非常適合精細圖像表示的特征,也就是將CNN的深度 filter responses作為局部的描述符,然后使用SWFV方法來對其進行編碼。這個做法是可以更強調對識別有關鍵作用的響應,以及丟棄掉沒有用的響應。
接下來是對論文提出的兩個步驟的具體介紹,分別是指學習部件檢測器以及使用SWFV編碼得到圖像表示進行分類兩個步驟。
2. 學習部件檢測器(Learning Part Detectors)
對于部件檢測器的學習方法,分3個步驟,分別是正樣本初始化,正則化檢測器的訓練以及檢測器的挑選(positive sample initialization, regularized detector training,and detector selection)。整個過程是一個弱監督的過程,只需要訓練樣本的標簽,不需要任何物體或者部件級別的標注。
選擇 Filters:正樣本初始化
利用CNN的不同層的濾波器是對特定部件敏感的,比如底層的濾波器主要是對角落以及一些邊緣連接,而高層則是對有更有語義意義的區域敏感。當然,這些濾波器作為檢測器來說是比較弱的。
首先是利用選擇性搜索(selective search)生成一個大量的區域建議(generate a large pool of region proposals),以及隨機采樣的一個100萬個patches的子集。每個proposal調整成大小是107*107。然后,對所有channels中的響應(應該就是指特征圖,feature map)進行排序,并選出排在前面1萬個響應,最后會得到得分排在前1萬區域的響應分布。這個分布是稀疏的,論文在一個鳥類數據庫上做的分布顯示前面5%的channels包含超過90%的響應。
分布如下圖所示:
這里,作者將這些channels稱為有區分性的濾波器(We refer to these channels as distinctive filters),下圖展示了在鳥類數據集上所挑選到的有區分性和沒有區分性的濾波器結果。
對這些選擇出來的濾波器,挑選具有排在前m(論文中m=100)個響應的patches作為對應的部件模型的初始正樣本。
正則化檢測器訓練
選擇好初始的正樣本后,通過優化一個線性SVM分類器來學習對應的檢測器。
由于初始的正樣本并不是很好開始(如下圖所示,有些樣本中沒有準確定位部件的位置),所以這里訓練SVM檢測器是需要進行迭代。
每次迭代,在前一輪迭代中排在前10%的檢測器都會作為新的正樣本。但是直接使用這個方法并不能有多大提高,因為學習到的檢測器容易對初始的正樣本過擬合,為了解決這個問題,論文是選擇將訓練集均分成2個沒有重疊的子集,一個作為訓練集,另一個作為驗證集,并且在迭代過程中重復交換作為訓練集和驗證集的子集,直到收斂為止。
訓練物體/部件檢測器的另一個問題就是最好的檢測器總是會鎖定幾個容易檢測的子類,而不能從大部分其他子類中發現到這些子類的正樣本。
為了解決這個問題,論文提出了一個在每輪訓練中對每類的正樣本使用正則化的損失函數。
以上步驟如下列算法步驟所示
檢測器的選擇
論文提到上述算法最后會得到數十個檢測器,這里需要進一步挑選,通過這些檢測器的識別準確率進行挑選,最后剔除識別率低于40%的檢測器,最終得到的檢測器會比較少,論文中的實驗是得到少于10個。
3. Bag of Parts Image Representation
在得到上述訓練好的檢測器后,就可以從每種圖片中檢測到對應的部件。
一個直接的可以得到部件表示的方法就是直接使用從這些檢測器檢測到的部件中提取CNN的特征,這里主要是使用CNN的倒數第二個全連接層的特征,并且之前大部分工作都是如此做法。這種做法有兩個限制,一是背景的干擾,二是來自檢測的不準確性,可能會丟失關鍵的細節。
論文提出的新的方法是計算部件顯著性圖和將CNN特征和SWFV合并在一起(we propose to compute part saliency map and pool CNN features with Spatially Weighted Fisher Vector(SWFV-CNN))。
4. 小結
文章中報告的結果表明,利用該方法在CUB-200-2011和Stanford Dogs兩個數據集上都取得了較優異的成果。值得一提的是,該方法并未利用人工標注信息(bbox+parts),在測試集上相比于利用標注信息的方法有了顯著提高。該方法并非采用End-to-End的結構,在中間的環節如Spatial weighting, FV pooling需要針對數據分布的不同而做細致調整。
大概簡單看完,論文的想法是挺好的,通過自動檢測部件來避免工作量非常大的人工標注,由于深度學習,特別是CNN的強大,現在對數據庫的規模都是抱著越大越好,如果需要對圖片都進行人工標注,這真是一件非常痛苦的事情。
不過感覺論文中的關鍵應該就是第一步中的選擇濾波器了,如何挑選到真正有用的濾波器作為用于檢測部件的detector就是非常重要,論文的做法似乎是對CNN中的所有特征圖進行一個排序,首先是分不同channel,然后根據出現的頻率做一個分布,這些channel就被作為是有區分性的detector,并根據這個來選擇初始的正樣本。接著用這些正樣本來進行挑選檢測器,使用SVM分類器來進行迭代訓練,并加入正則化來增加多樣性和可靠性。
不過對于具體的實現細節還是不太清楚,需要再多讀幾遍。
總結
以上是生活随笔為你收集整理的论文阅读(2)--Picking Deep Filter Responses for Fine-grained Image Recognition的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕触摸板驱动ASUS PTP Driv
- 下一篇: Linux常用内建命令笔记