導讀
本文是何凱明的作品。文章為了解決圖像分類中平移不變性和目標檢測中平移變換性的困境,構造position-sensitive score map,并且整個網(wǎng)絡是全卷積網(wǎng)絡,從而在處理一張圖像時基本上共享了所有的計算拐叉。論文鏈接
1.Introduction
最近圖像分類任務中state-of-the-art的網(wǎng)絡比如Residual Net和GoogLenet都是全卷積網(wǎng)絡。因此很自然的想法就是把目標檢測也用全卷積網(wǎng)絡來實現(xiàn)扇商。但是這樣的想法實在是naive凤瘦,這樣得到網(wǎng)絡并不能達到分類網(wǎng)絡的準確率。這是因為對于圖像分類案铺,我們需要增加網(wǎng)絡對圖像的平移不變性蔬芥,而目標檢測卻正好相反,目標的定位需要平移變換性(translation variance)红且。什么意思呢坝茎?
平移不變性:對于圖片分類來說,一張圖片進行一定的平移暇番,網(wǎng)絡應該還是給出同樣的結果嗤放。比如一張喵星人的圖,向左平移5個像素壁酬,那它應該還是一只喵次酌。所以恨课,對于分類,我們需要增加網(wǎng)絡的平移不變性岳服。而卷積網(wǎng)絡就具有平移不變性剂公。所以深的全卷積網(wǎng)絡在Image Net上表現(xiàn)會更好。
平移變換性:但是在目標檢測中吊宋,我們需要定位一個Object纲辽,這是和位置相關的,如果這個目標發(fā)生了一定的平移璃搜,我們希望網(wǎng)絡還能正確給出他的坐標拖吼,而不是平移前的坐標。網(wǎng)絡對于自己預測的BOX應該給出一個有意義的響應來說明這個BOX有多正確的覆蓋目標物體这吻。比如說吊档,有個proposal只覆蓋了一只喵的3/4,而另一只proposal只覆蓋了一只喵的1/2唾糯,那么網(wǎng)絡應該告訴我怠硼,第一個proposal更好。
為了解決這個困境移怯,像ResNet的檢測框架就在卷積層中間插入了RoI Pooling香璃,這樣RoI Pooling后面的卷積層就不再是平移不變性。但是這樣的設計犧牲了訓練的效率舟误,因為它引入了不少region-wise layers增显。如下圖所示。
因此本文提出R-FCN脐帝,使用的共享計算的基礎網(wǎng)絡是FCN,為了引入平移變換性到FCN糖权,作者設計了位置敏感的特征圖(position-sensitive score maps)堵腹。每一個score map都編碼了對應某個空間的位置信息。比如某個score map對應著目標的左上角星澳。后面會詳細解析下這是什么意思疚顷。在這些score map之后跟著幾個層,但是都是不需要學習的層禁偎。整個結構可以實現(xiàn)end-to-end的訓練腿堤。
2.Our approach
overview
和RCNN一樣,本文的方法也包含兩個階段:1.region proposal 2.region classification 如暖。雖然目前也有不是基于region proposal的方法笆檀,但是沒有基于region proposal方法好。R-FCN需要學習的參數(shù)全部在卷積層盒至,并且是對整個圖像計算共享的酗洒。在最后一層卷積層,將會生成kk組position-sensitive score maps,其中每組position-sensitive score maps里面包含C+1個position-sensitive score map分別對應C個類別加一個背景類別湿蛔。然后店溢,在position-sensitive score maps后面跟著一個position-sensitive RoI Pooling。這個Pooling層和我們普通的不一樣矩桂。我們普通的RoI Pooling對所有的通道都會進行Pooling沸移,但是這個不同。我們先看下圖.
Position-Sensitive RoI Pooling
在進行PSRoI Pooling時侄榴,假設我們pooling后的大小為kk雹锣,這里k=3,但是主要pooling后的結果是有C+1個通道的牲蜀。假設我想得到pooling結果中黃色那部分的特征笆制,在圖中是左上角那塊C+1通道的特征,其實就是一個C+1維的向量涣达。
- 那么第一步在辆,因為這里要計算左上角黃色的特征,所以我先從k*k==9組position-sensitive score maps中拿出黃色那組score maps度苔,這組score maps是C+1通道的
- 第二步匆篓,將RoI區(qū)域劃分成3*3份,映射到黃色的這組score maps上寇窑,然后拿出左上角的那塊[w/k,h/k,C+1]大小的特征塊鸦概,用average或者max的方法計算得到一個C+1維的向量。該向量就是該區(qū)域池化的結果甩骏。其他顏色快進行同樣操作窗市。
事實上后面的公式就是表達這個意思。
特別說明的是這里用的是average pooling饮笛。式子中咨察,Rc(i,j)是指Pooling后的結果中第i,j個向量的在c通道的響應。如果福青,i=0,j=0,那正好對應我上面說的左上角摄狱,黃色區(qū)域。Zi,j,c是指score maps上面第i,j組score maps上c通道上的點无午,i=0,j=0時媒役,正好是黃色那組score maps。而x0,y0是RoI左上角坐標宪迟。這里說的bin酣衷,其實就是將RoI劃分成k*k個區(qū)域,每個區(qū)域叫一個bin踩验。然后你可以看到x,y的變化范圍是只有w/k,h/k這么大鸥诽。當i=0,j=0時商玫,x,y的變化范圍是[0,w/k],[0,h/k],加上x0和y0的話正好對應左上角黃色那塊區(qū)域牡借。n就是一個bin的點數(shù)拳昌。這是average pooling。
這么說應該解析清楚了吧钠龙。然后就是將PSRoI Pooling后的結果進行一個投票炬藤。這里作者只是使用了簡單的平均投票。然后產生一個C+1維的投票結果向量碴里。然后使用softmax來計算損失沈矿。
Box Regression
而對于box的回歸,作者簡單起見咬腋,使用的是與類別無關的box回歸羹膳,也就是說,產生一個4kk的score maps根竿,最后用同樣的PSRoI Pooling和投票陵像,得到一個4維的向量。當然也可以用和類別相關的box 回歸寇壳,每個類別回歸一個box醒颖,但這樣子計算量又會非常大。
Train
然后是訓練部分壳炎,這里沒什么特別值得注意的地方泞歉,一方面就是loss 使用類別loss和box reg loss的加權,然后正樣本的IoU取0.5匿辩。有一點作者特別強調的是腰耙,這個網(wǎng)絡可以很輕易的在訓練過程中使用OHEM(online hard example mining)技術。這是當然了铲球,因為subnet沒有卷積計算沟优。Proposal的數(shù)目大也沒影響。當然大的Proposal可能有利于訓練的精度提高睬辐,但是后面的實驗也說了,到2000時并沒啥增長了宾肺。另外溯饵,作者訓練時,按照loss對RoIs進行排序锨用,選擇大loss的RoIs丰刊。當然這是普遍的做法。另外就是交替訓練增拥。
另外還有一些像NMS的技巧啄巧,A trous的引入和stride的修改寻歧。這些不在詳細說。
Visualization
然后作者展示了投票過程秩仆。box overlap目標時码泛,給出的響應會不一樣。
3.Experiments
然后作者展示了一些結果澄耍。其實個人感覺無論是效果上還是速度上都沒有很大的提升噪珊,沒有足夠亮眼的成果,只能說訓練和測試快了一點齐莲,但是效果沒有state-of-the-art痢站。引用作者的說法
Our method achieves accuracy competitive with the Faster R-CNN counterpart, but is much faster during both training and inference
不過,這個想法倒是很不錯选酗,前面[Paper Reading -3]中曠視科技的借鑒了這個想法倒是有不錯的提升阵难。這里我就不貼了,同學們有心情就看下原文芒填,沒心情忽略也不影響對整個文章的理解呜叫。
今晚的Paper Share就分享到這里啦。下一次我將會分享圖像檢索的論文氢烘,因為最近要搞這個項目了怀偷。當然目標檢測,分類等論文我也會持續(xù)關注播玖。還有些論文看了還沒來得及寫椎工。后面繼續(xù)努力。
------少俠阿朱 2017.12.01于深圳
轉載請注明出處哦蜀踏,http://www.reibang.com/p/9d11f4409a08