複製鏈接
請複製以下鏈接發送給好友

物體檢測

鎖定
物體檢測是計算機視覺中的經典問題之一,其任務是用框去標出圖像中物體的位置,並給出物體的類別。從傳統的人工設計特徵加淺層分類器的框架,到基於深度學習的端到端的檢測框架,物體檢測一步步變得愈加成熟。
中文名
物體檢測
外文名
object detection
學    科
計算機視覺
基本釋義
識別物體的位置和類別
意    義
視覺感知
應    用
人工智能

物體檢測內容簡介

在傳統視覺領域,物體檢測是一個非常熱門的研究方向。受70年代落後的技術條件和有限應用場景的影響,物體檢測直到上個世紀90年代才開始逐漸走入正軌。物體檢測對於人眼來説並不困難,通過對圖片中不同顏色、紋理、邊緣模塊的感知很容易定位出目標物體,但計算機面對的是RGB像素矩陣,很難從圖像中直接得到狗和貓這樣的抽象概念並定位其位置,再加上物體姿態、光照和複雜背景混雜在一起,使得物體檢測更加困難。
檢測算法裏面通常包含三個部分,第一個是檢測窗口的選擇, 第二個是特徵的設計,第三個是分類器的設計。隨着2001年Viola Jones提出基於Adaboost [1]  的人臉檢測方法以來,物體檢測算法經歷了傳統的人工設計特徵加淺層分類器的框架,到基於大數據和深度神經網絡的End-To-End的物體檢測框架,物體檢測一步步變得愈加成熟。

物體檢測傳統檢測算法

在2001年,一篇基於Haar+Adaboost的檢測方法在學術界和工業界引起了非常大的轟動,它第一次把檢測做到實時,並且在當時的技術限制下,檢測性能也做的非常亮眼。縱觀2012年之前的物體檢測算法,可以歸結為三個方面的持續優化:檢測窗口的選擇、特徵的設計和分類器的設計。

物體檢測檢測窗口的選擇

拿人臉檢測舉例,當給出一張圖片時,我們需要框出人臉的位置以及人臉的大小,那麼最簡單的方法就是暴力搜索候選框,把圖像中所有可能出現框的位置從左往右、從上往下遍歷一次。並且通過縮放一組圖片尺寸,得到圖像金字塔來進行多尺度搜索。
但是這種方法往往計算量很大並且效率不高,在實際應用中並不可取。人臉具有很強的先驗知識,比如人臉膚色YCbCr空間呈現很緊湊的高斯分佈,通過膚色檢測可以去除很大一部分候選區域,僅留下極小部分的區域作為人臉檢測搜索範圍。由於膚色的提取非常快,只是利用一些顏色分佈的信息,把每個像素判斷一下,整體速度提升很多。但膚色提取只是用到簡單的顏色先驗,如果遇到和膚色很像的,比如黃色的桌子,很有可能被誤判成人臉的候選檢測區域。
進一步提高精度衍生出如Selective Search [2]  或EdgeBox [3]  等區域提取的方法,基於顏色聚類、邊緣聚類的方法來快速把不是所需物體的區域給去除,相對於膚色提取精度更高,極大地減少了後續特徵提取和分類計算的時間消耗。

物體檢測特徵的設計

在傳統的檢測中,Haar由於提取速度快,能夠表達物體多種邊緣變化信息,並且可以利用積分圖快速計算,得到廣泛的應用;LBP更多的表達物體的紋理信息,對均勻變化的光照有很好的地適應性;HOG通過對物體邊緣使用直方圖統計來進行編碼,特徵表達能力更強,在物體檢測、跟蹤、識別都有廣泛的應用。傳統特徵設計往往需要研究人員經驗驅動,更新週期往往較長,通過對不同的特徵進行組合調優,從不同維度描述物體可以進一步提升檢測精度,如ACF檢測,組合了20種不同的特徵表達。

物體檢測分類器的設計

傳統的分類器包含Adaboost、SVM、Decision Tree等。
(1)Adaboost
一個弱分類器往往判斷精度不高,通過Adaboost自適應地挑選分類精度高的弱分類器並將它們加權起來,從而提升檢測性能。比如説,人臉檢測中一個候選窗口需要判斷是否為人臉,其中一些弱分類器為顏色直方圖分量(如紅黃藍三種顏色),如果黃色分量大於100,那我就認為這塊可能是人臉的候選區域,這就是個非常簡單的弱分類器。可是,單個這麼弱的分類器判斷是很不準的,那麼我們就需要引入另外一些分量做輔助。比如再引入紅色分量大於150,將幾個條件疊加起來,就組成了一個比較強的分類器。
這裏弱分類器的設計往往就是確定顏色判斷的閾值,為什麼會選擇100呢?其實這是我們需要學習得到的閾值,學習得到,當閾值設定為100時,分類的精度是最高的。另外,為什麼要選擇紅黃藍三種顏色?同樣,因為它們分類的精度更高。通過不斷進行特徵挑選並學習弱分類器,最終組合提升為Adaboost強分類器。
(2)SVM分類器
SVM通過最大化分類間隔得到分類平面的支持向量,在線性可分的小數據集上有不錯的分類精度,另外通過引入核函數將低維映射到高維,從而線性可分,在檢測場景被廣泛使用。
(3)決策樹
決策樹(Decision Tree)是一種樹形結構,其中每個內部節點表示一個屬性上的測試,每個分支代表一個測試輸出,每個葉子節點代表一種類別。
以二叉樹為例,假如從樹根進來有個二分類,我們需要區分它是人臉或者是非人臉,左邊是非人臉,右邊是人臉。當我進入第一個二叉樹分類器節點判斷,如果是非人臉的話直接輸出結果,如果是人臉候選的話進入下一層再做進一步的分類。通過學習每個節點的分類器來構造決策樹,最終形成一個強分類器。
通過對決策樹進行Ensemble,組合成隨機森林更好的提高分類或者回歸精度。

物體檢測物體檢測數據集

物體檢測常用的數據集有:PASCAL VOC和COCO。
PASCAL VOC為圖像識別和分類提供了一整套標準化的優秀的數據集,從2005年到2012年每年都會舉行一場圖像識別挑戰賽。
COCO數據集是微軟發佈的,除了圖片以外還提供物體檢測、分割(segmentation)和對圖像的語義文本描述信息。

物體檢測基於深度學習的檢測算法

物體檢測算法的演變分為兩個階段:一個就是基於傳統特徵的解決方法,另外一個就是深度學習算法。在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]  等一階段檢測算法——將物體檢測看作一個迴歸問題。
參考資料
  • 1.    Viola P, Jones M. Rapid Object Detection using a Boosted Cascade of Simple Features[C]// IEEE Computer Society Conference on Computer Vision & Pattern Recognition. IEEE Computer Society, 2001:511.
  • 2.    Uijlings J R R, Sande K E A V D, Gevers T, et al. Selective Search for Object Recognition[J]. International Journal of Computer Vision, 2013, 104(2):154-171.
  • 3.    Zitnick C L, Dollár P. Edge Boxes: Locating Object Proposals from Edges[C]// European Conference on Computer Vision. Springer, Cham, 2014:391-405.
  • 4.    Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
  • 5.    He K, Zhang X, Ren S, et al. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition[J]. IEEE Trans Pattern Anal Mach Intell, 2015, 37(9):1904-1916.
  • 6.    Girshick R. Fast R-CNN[C]// IEEE International Conference on Computer Vision. IEEE Computer Society, 2015:1440-1448.
  • 7.    Ren S, He K, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[C]// International Conference on Neural Information Processing Systems. MIT Press, 2015:91-99.
  • 8.    Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[J]. 2015:779-788.
  • 9.    Redmon J, Farhadi A. YOLO9000: Better, Faster, Stronger[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2017:6517-6525.
  • 10.    Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[C]// European Conference on Computer Vision. Springer, Cham, 2016:21-37.