論文解讀--用卷積網路基於視覺顯著性的方法提高人類檢測

《 Using Visual Saliency to Improve Human Detection with Convolutional Networks 》論文解讀

論文下載地址:點擊打開鏈接

如果下載鏈接出現了問題,回復我,我會發一個鏈接給下載。

一、論文解讀

1. 人類檢測的困難之處與目前常用的檢測方法

檢測(即包括人類的檢測)在視覺領域是一個比較重要的問題,對於人類的檢測主要存在如下幾個比較困難的點:

  • 人物的不同姿勢
  • 不同的光照條件
  • 人物圖像的不同的角度
  • 圖像中擁擠的人物以及人物之間的重疊等

給出一個對於上述問題的示例圖:

目前對於人物檢測常用的方法有:

(1) HOG和Haar描述子的特徵提取的組合,再用級聯進行分類,分類器的選擇比如SVM、boosting等。

(2) 採用可變形的部件模型。

以上說的方法均是人工提取的特徵,也有通過學習的方式去提取特徵進行分類檢測的,比如如下特徵提取模型(監督學習的和無監督學習的都有)

(3) 受限玻爾茲曼機(RBM)的堆疊網路。

然而,這種深層網路模型的分層的的表示學習,學習的特徵並沒有圖像的語義信息,因此所得到的特徵表現並不是那麼好。

2. 對於人物檢測相關方法的簡介

2.1 顯著性物體檢測

這裡主要說幾個paper說到的方法。

(1) 通過選取一些特徵(比如:顏色,尺度特徵等),使用線性組合的方式去檢測局部突出的地方。

(2) 通過計算每個不同層面含義的像素的顏色之間像素值來估計視覺顯著性。

paper中還提及了一些其他方法,這個我們只要了解一下就好了,有需要可以去看一下原文。

論文中提及到的方法都有其局限:這些方法結合的是人工選取的特徵,去得到圖像顯著性的的映射。人工選取的特徵很難達到一個較好的表現,因此在了解這些方法以後,作者提出了他們的idea。

2.2 人物檢測

在人物檢測的任務中,根據HOG特徵進行檢測是比較常用的一種方式,其效果成了後邊實現模型的一個baseline。paper中說到當前物體檢測常用的還是滑動窗口,但是了解過目前檢測的人應該知道,像候選窗口生成演算法,以及RPN生成檢測窗口的方法在fast-rcnn、faster-rcnn的模型中用的飛起來,因此後邊介紹完該論文提出的模型之後,如果要實現的話,我們可以進行嘗試對這個模型進行改進,看是否能的得到一個不錯的表現。

在人物檢測這一塊,作者還提出了一種解決圖像中人物粘合,人物擁擠的方法,即通過使視覺顯著性乘一個因子的辦法,這個後邊在論文模型的部分說到。

2.3 深度卷積神經網路

這個其實沒有什麼好說的,paper就說卷積神經網路在視覺的大部分問題上取得了比以往好得多的表現,因此論文在實現他們模型的時候也採取的CNNs。接下來就說說paper實現的idea。

3. 論文的idea

3.1 論文提出的模型的概述

論文提出的模型分為兩部分:視覺顯著性模型+檢測模型

(1) 用深度多層的網路結構處理原始圖像得到視覺顯著性圖像,將原始圖像乘以視覺顯著性圖像並乘以一個值為0.8的乘子(後邊我會把這一層的結構簡寫為 MLNet)。下面放模型跑出來的效果圖:

(2) 訓練一個檢測模型(paper中稱為DetectNet),用(1)中處理得到的圖像數據餵給這個模型,然後計算損失進行訓練(顯然這裡是監督學習的方式)

後邊會介紹這個模型更多的細節,這裡先總的概述一下,因為我要一步步的放大圖了。。。

3.2 對數據的預處理

(1) paper中使用的數據集是Penn-Fudan Dataset 和 TudBrussels Benchmark Dataset,可能作者嫌這兩個數據集中的數據太少,不容易讓他們的模型收斂或者為了避免overfit,為了增強模型的穩健型等等,作者對數據集做了數據增強(Data Augmentation)。

這裡說一下經驗之談,對於用深度學習去完成視覺的一些問題,往往對你的數據集做數據增強能使模型有更好的屬性,比如更穩健,有更好的表現等。因此在你在做task的時候要考慮到這一點。另外做數據增強有工具可以使用,這用工具能更有效率,更好的批量的處理你手上的數據集,這裡給出一個工具地址給大家:

Data Augmentation:點擊打開鏈接

(2)除了數據增強,作者對所使用的兩個數據集中的數據也做了處理,作者怕兩個數據集之間的差異帶來的變數因素會降低模型的準確度,因此為了統一兩個數據集之間的差異,作者把通過MLNet模型處理的圖像調整尺度到512×512,然後在繼續後邊的訓練。

3.3 模型結構的介紹

話不多說,直接上圖:

結合概述加上圖,應該對這個模型理解的差不多了,接下來說說幾個點。

(1) 模型結構

MLNet的結構為(CNN+Encoder),這裡邊的Encoder的作用是學到圖像的視覺顯著性的權重,可以更好的生成詩句顯著性圖像。至於MLNet的具體實現,大家根據自己的task和Dataset,怎麼效果好怎麼來。

DetectNet部分,作者直接上的GoogLeNet,連訓練模型的時候,權重都直接拿的ImageNet的權重進行訓練。這一部分就是以GoogLeNet為基礎訓練了一個FCN。如下給出一張圖:

(2) 模型訓練

從上圖可以明顯的看到作業是把訓練和測試分開來做的,至於為什麼這樣,paper說這樣能提高模型的表現(這個。。。。)。在這個模型中,作者將3810幅圖像作為訓練集,1252張圖像作為驗證集,3036張圖像作為測試集(1030 images of Penn-Fudan and 2006 images of TUD-Brussels )。

另外作者還說了一些超參數的值,需要的可以去看原文,這裡就不提了(感覺paper這裡不穩)。

(3) 模型損失函數的計算

損失函數包括兩部分:檢測的bbox損失 + 分割的pixel損失

檢測的損失計算:

分割的損失計算:

上述計算中的N表示batch size,式中帶有t的表示真實值,帶p的表示預測值。

綜合兩部分損失,對該模型進行訓練就好了。paper中順帶提到,使用Adam優化器進行優化。接下來給出幾組訓練的結果:

4. 論文的實驗結果

在實驗中,paper提到一個事,就是當提供同樣維度和類型的圖像餵給MLNet,整個模型可以得到更好的表現

向來不喜歡看paper實驗結果的我,只會簡略的看一下結果圖,如下:

二、論文心得

從paper提出的模型來看,特別是DetectNet的部分很容易讓我想到我比較推崇的一位大牛——KaiMing,他提出的Mask-rcnn的結構和這篇paper提出的DetectNet特別相似。當然這篇paper有個我們可以參考的點:對於粘合在一起的人物和人物出現很多的圖像,可以借鑒MLNet進行訓練得到視覺顯著性的圖像,再進行後邊的訓練或許能得到一個不錯的結果。

推薦閱讀:

TAG:深度學習DeepLearning | 目標檢測 | 視覺顯著性 |