首先我們明確乙個定義,當前主流的object detection框架分為1 stage和2 stage,而2 stage多出來的這個stage就是regional proposal過程,明確這一點後,我們繼續講。
regional proposal的輸出到底是什麼?
我們首先看一下以faster r-cnn為代表的2 stage目標檢測方法
可以看到,圖中有兩個classification loss和兩個bounding-box regression loss,有什麼區別呢?
1、input image經過cnn特徵提取,首先來到region proposal網路。由regio proposal network輸出的classification,這並不是判定物體在coco資料集上對應的80類中哪一類,而是輸出乙個binary的值p,可以理解為
rpn網路做的事情就是,如果乙個region的rpn同時也會在feature map上框定這些roi感興趣區域的大致位置,即輸出bounding-box。
----打個比方----
我上午第四節課餓得不行,我就想著中午要吃什麼?附近好多西餐廳和中餐廳,餐廳裡菜品有很多。但是我生活費不夠了。。gg。。不太想吃(吃不起)西餐,所以無論西餐廳裡有什麼菜品,我都不會考慮;只有路過中餐廳時,我才會進去看看具體吃什麼菜。
----------真是尷尬的栗子----------
so, rpn網路做的事情就是,把一張中,我不感興趣的區域——花花草草、大馬路、天空之類的區域忽視掉,只留下一些我可能感興趣的區域——車輛、行人、水杯、鬧鐘等等,然後我之後只需要關注這些感興趣的區域,進一步確定它到底是車輛、還是行人、還是水杯(分類問題)。。。。
你可能會看到另一對通俗易懂的詞語,前景(車、人、杯)和背景(大馬路、天空)。
啊 好的,到此為止,rpn網路的工作就完成了,即我們現在得到的有:在輸入rpn網路的feature map上,所有可能包含80類物體的region區域的資訊,其他region(非常多)我們可以直接不考慮了(不用輸入後續網路)。
接下來的工作就很簡單了,假設輸入rpn網路的feature map大小為 64x64 ,那麼我們提取的roi的尺寸一定小於64x64,因為原始影象某一塊的物體在feature map上也以同樣的比例存在。我們只需要把這些region從feature map上摳出來,由於每個region的尺寸可能不一樣,因為原始影象上物體大小不一樣,所以我們需要將這些摳出來的region想辦法resize到相同的尺寸,這一步方法很多(pooling或者interpolation,一般採用pooling,因為反向傳播時求導方便)。
假設這些摳出來的roi region被我們resize到了 14x14 或者 7x7 ,那我們接下來將這些region輸入普通的分類網路,即第一張faster r-cnn的結構圖中最上面的部分,即可得到整個網路最終的輸出classification,這裡的class(車、人、狗。。)才真正對應了coco資料集80類中的具體類別。
同時,由於我們之前rpn確定的box\region座標比較粗略,即大概框出了感興趣的區域,所以這裡我們再來一次精確的微調,根據每個box中的具體內容微微調整一下這個box的座標,即輸出第一張圖中右上方的bounding-box regression。
整個faster r-cnn網路就到此結束了,下面總結一下,同時也回答你的問題:
region proposal有什麼作用?
1、coco資料集上總共只有80類物體,如果不進行region proposal,即網路最後的classification是對所有anchor框定的region進行識別分類,會嚴重拖累網路的分類效能,難以收斂。原因在於,存在過多的不包含任何有用的類別(80類之外的,例如各種各樣的天空、草地、水泥牆、玻璃反射等等)的region輸入分類網路,而這些無用的region佔了所有region的很大比例。換句話說,這些region數量龐大,卻並不能為softmax分類器帶來有用的效能提公升(因為無論怎麼**,其類別都是背景,對於主體的80類沒有貢獻)。
2、大量無用的region都需要單獨進入分類網路,而分類網路由幾層卷積層和最後一層全連線層組成,引數眾多,十分耗費計算時間,faster r-cnn本來就不能做到實時,這下更慢了。
最後有個小小的說明,針對不了解anchor的同學們,我在文中始終在說對於感興趣的區域「框定乙個座標」,這是為了便於理解,其實這樣說是不準確的。
具體就是:我們整張影象上,所有的框,一開始就由anchor和網路結構確定了,這些框都有各自初始的座標(錨點)。所有後續的工作,rpn提取前景和背景,其實就是保留包含前景的框,丟掉包含背景的;包括後續的nms,也都是丟掉多餘的,並非重新新建乙個框。
我們網路輸出的兩個bounding-box regression,都是輸出的座標偏移量,也就是在初始錨點的基礎上做的偏移修正和縮放,並非輸出乙個原圖上的絕對座標。
yolo有類似rpn的機制,那就是最後輸出時的confidence值,這個值決定了前景和背景。
ssd是將anchor機制融合在了1 stage模型中,原理與本文所述基本一致。
目標檢測中的example mining
目標檢測,一般分為2個部分,定位和分類,example mining是選擇出特定樣本來計算損失函式 從實際問題出發hard example應該就是指定位較困難或分類較困難或者兩者都困難的候選框。ssd的caffe中支援negative mining和hard example mining,當shar...
目標檢測中region proposal的作用
首先我們明確乙個定義,當前主流的object detection框架分為1 stage和2 stage,而2 stage多出來的這個stage就是regional proposal過程,明確這一點後,我們繼續講。regional proposal的輸出到底是什麼?我們首先看一下以faster r c...
目標檢測中的Selective Search
在r cnn學習的過程中,首先使用到的技巧就是selective search選擇性搜尋。它的目標是減小滑動窗或者窮舉法帶來的冗餘候選區域,從而減小計算量。本文參考blog 選擇性搜尋主要集中解決了以下幾個問題 事先並不知道內物體的尺寸,如何確定不同大小比例的候選框 對於影象中存在的特徵,如何利用起...