高精尖的物體檢測演示效果

高精尖的物體檢測演示效果

 

物體檢測算法的演變分爲兩個階段:一個就是基於傳統特徵的解決方法,另外一個就是深度學習算法。在2013年之前主流檢測算法是傳統的特徵優化檢測方法。但是,在2013年之後,整個學術界和工業界都逐漸利用深度學習來做檢測。

基於深度學習的早期的物體檢測,大都使用滑動窗口的方式進行窗口提取,這種方式本質是窮舉法 R-CNN [4]  。後來提出Selective Search [2]  等區域窗口提取算法,對於給定的圖像,不需要再使用一個滑動窗口進行圖像掃描,而是採用某種方式“提取”出一些候選窗口,在獲得對待檢測目標可接受的召回率的前提下,候選窗口的數量可以控制在幾千個或者幾百個。

後來,又出現了SPP [5]  ,其主要思想是去掉了原始圖像上的crop/warp等操作,換成了在卷積特徵上的空間金字塔池化層。那麼爲什麼要引入SPP層呢?其實主要原因是CNN的全連接層要求輸入圖片是大小一致的,而實際中的輸入圖片往往大小不一,如果直接縮放到同一尺寸,很可能有的物體會充滿整個圖片,而有的物體可能只能佔到圖片的一角。SPP對整圖提取固定維度的特徵,首先把圖片均分成4份,每份提取相同維度的特徵,再把圖片均分爲16份,以此類推。可以看出,無論圖片大小如何,提取出來的維度數據都是一致的,這樣就可以統一送至全連接層。

實際上,儘管R-CNN 和SPP在檢測方面有了較大的進步,但是其帶來的重複計算問題讓人頭疼,而 Fast R-CNN [6]  的出現正是爲了解決這些問題。 Fast R-CNN使用一個簡化的SPP層 —— RoI(Region of Interesting) Pooling層,其操作與SPP類似,同時它的訓練和測試是不再分多步,不再需要額外的硬盤來存儲中間層的特徵,梯度也能夠通過RoI Pooling層直接傳播。Fast R-CNN還使用SVD分解全連接層的參數矩陣,壓縮爲兩個規模小很多的全連接層。

Fast R-CNN使用Selective Search來進行區域提取,速度依然不夠快。Faster R-CNN則直接利用RPN (Region Proposal Networks)網絡來計算候選框。RPN以一張任意大小的圖片爲輸入,輸出一批矩形區域,每個區域對應一個目標分數和位置信息。從 R-CNN 到 Faster R-CNN [7]  ,這是一個化零爲整的過程,其之所以能夠成功,一方面得益於CNN強大的非線性建模能力,能夠學習出契合各種不同子任務的特徵,另一方面也是因爲人們認識和思考檢測問題的角度在不斷髮生改變,打破舊有滑動窗口的框架,將檢測看成一個迴歸問題,不同任務之間的耦合。

除了R-CNN、Fast R-CNN 和 Faster R-CNN等兩階段檢測算法外,還有YOLO [8-9]  、SSD [10]  等一階段檢測算法——將物體檢測看作一個迴歸問題。

 

源碼地址:https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章