論文的關注點在於如何提高bounding box的定位,使用的是概率的預測形式,模型的基礎是region proposal。論文提出一個locNet的深度網絡,不在依賴於回歸方程。論文中提到locnet可以很容易與現有的detection系統結合,但我困惑的是(1)它們的訓練的方法,這點論文中沒有明確的提到,而僅僅說用迭代的方法進行(2)到底兩者的融合后兩個網絡的結構是怎樣呢?可以看做一個多任務的系統,還是存在兩個網絡呢?
檢測方法
輸入的候選bounding box(使用selective search或者sliding windows獲得),通過迭代的方法,獲得更精確的box。檢測的由兩個過程組成:識別模型(recognition model)以及定位模型(localization model)。識別模型為每個box計算一個置信度(confidence score),度量定位的准確性,定位模型調整box的邊界生成新的候選box,再輸入到識別模型中。偽代碼如下,
可以看到,在識別模型中,會根據計算的置信度刪除其中一些box,這樣做的目的是為了減少計算的復雜度。但從過程可以看出,置信度對於定位模型幾乎沒有用,這個迭代的過程識別模型的計算好像沒有必要。
定位模型
但上述並不是關心的重點,主要是看看這個提升定位准確性的方法。提出的locnet模型步驟總結如下
(1)對於輸入的box,把它擴大一個因子的倍數,獲取一個更大的區域R,把R投影到feature map中。
(2)經過一個類似於ROI pooling的層,輸出固定大小的map。在這里需要展開說明。把一個區域划分成M*M的格子,這時可以產生兩個向量和
,分別代表區域R的每一行或者列包含在bounding box中的概率,如圖(左)。例如,對於ground truth box而言,對於邊界內的行或列概率為1,否則為0,
其中B代表四條邊界l,r,t,b。這個稱謂In – Out 概率。
除此以外,還定義了邊界概率。即行或列是邊界的概率。對於ground truth box,有
(3)經過幾個卷積層和ReLU激活之后,出現兩個分支,分別對應兩個向量。然后經過max pooling得到row、column對應的向量。
(4)經過FC層之后,使用sigmoid函數輸出In –Out概率或者邊界概率或者兩者都輸出。
損失函數
最重要的是定義損失函數了。使用的是伯努利分布的模型,即每行或列有兩種可能(是或者不是),取對數后,這也是logistic 回歸常用的損失函數交叉熵,對於In –Out概率有
其中,對於
同理。對於邊界概率有
這里有兩個平衡因子,因為作為邊界的行或列較少,所以增大他們的權重,
。
問題引入:對於整個模型,讓人覺得奇怪的最后分支對應的row和column的max pooling的情況,竟然可以通過這樣蘊含邊界的信息,真的搞不明白為什么。這讓人思考pooling這個操作究竟為什么這么牛逼,無所不能的樣子。知乎上有人問過這個問題:CNN網絡的pooling層有什么用,圖像分類中的max pooling和average pooling是對特征的什么來操作的,結果是什么?但好像得出結論是,這是一個拍腦袋的結果……而對此系統分析的論文《A Theoretical analysis of feature pooling in Visual Recognition》也說這是一個經驗的操作,而且貌似論文結果也沒得出為什么來……
論文《A Theoretical analysis of feature pooling in Visual Recognition》的筆記,當一回搬運工,主要是記錄Pooling Binary Feature部分,后面的已經看不明白了,最終得出結論是:Pooling 可以把聯合特征轉變為一個更重要的表示,同時忽略其他無關的細節。
簡單起見,假設服從伯努利分布,則均值池化操作為
,最大化池化操作
。
論文中討論的是分布的可分性,給定兩個類別C1、C2,則計算可分性的兩個條件分布(最大值池化)為和
,均值池化
以及
。雖然是給定類別下的條件分布,但事實上也隱含着它屬於某個類別的概率,即后驗。因此可以用來計算兩個分布的可分性。
使得兩個分布可分性增大的方法是,使他們的均值期望距離增大,或者使得他們的樣本標准差變小。
對於均值池化,因為前面假設服從伯努利分布,所以
的分布(注意此時不是條件概率分布,對於條件概率分布,它們各自下的均值
會不同)均值為
,但是方差變小了為
。
對於最大值池化,的均值為
,方差為
。定義
為類條件下的可分性,對於均值的距離為
其中以及
。上式是P的函數,把P擴展到實數域,可以得到
的最值點為
函數先升后降,極限為0。假設,當P=1時就是均值的期望距離,此時會有許多的P,可以使得距離增大。假設
,如果
,可以推出
,這表明它的一個選擇的特征代表超過半數的圖像中的patch(這句話我的理解是,因為
即類別下選擇/生成特征的概率,即激活的概率過高),但通常而言這個不會發生在codebook包含超過100個codeword的時候(因為
很高)。
對於最大值池化的方差,同樣會經歷一個先升后降的過程。
據以上,論文總結了幾個點:
1、最大池化特別適合在特征都是非常稀疏的時候來分離(即,有着非常低的概率去激活,這時很少出現的情況)
2、使用所有可用的樣本去執行池化也許不是最優的
3、最優化池化技術會隨着字典的尺寸增加而增加。