今天看的文獻是《Object Detection in 20 Years: A Survey》,非常經典的一篇目標檢測文獻,希望通過這篇文章學習到目標檢測的基礎方法并提供一些創新思想。
論文鏈接:1905.05055
目錄
一、摘要
1.1 原文
1.2 翻譯
二、介紹
三、目標檢測二十年發展
3.1 目標檢測發展路線圖
3.1.1 里程碑1
3.1.1.1 Viola Jones Detectors
3.1.1.2 HOG Detector
3.1.1.3 DPM
3.1.2 里程碑2
3.1.2.1 RCNN
3.1.2.2 SPPNet
3.1.2.2 Fast RCNN
3.1.2.3 Faster RCNN
3.1.2.4 FPN
3.1.3 里程碑3
3.1.3.1 YOLO
3.1.3.2 SSD
3.1.3.3 RetinaNet?
3.1.3.4 CornerNet
3.1.3.5 CenterNet
3.1.3.6 DETR
一、摘要
1.1 原文
Object detection, as of one the most fundamental and challenging problems in computer vision, has received great attention in recent years. Over the past two decades, we have seen a rapid technological evolution of object detection and its profound impact on the entire computer vision field. If we consider today’s object detection technique as a revolution driven by deep learning, then back in the 1990s, we would see the ingenious thinking and long-term perspective design of early computer vision. This paper extensively reviews this fast-moving research field in the light of technical evolution, spanning over a quarter-century’s time (from the 1990s to 2022). A number of topics have been covered in this paper, including the milestone detectors in history, detection datasets, metrics, fundamental building blocks of the detection system, speed-up techniques, and the recent state-of-the-art detection methods.
1.2 翻譯
目標檢測作為計算機視覺中最基本、最具挑戰性的問題之一,近年來受到了廣泛的關注。在過去的二十年里,我們看到了物體檢測技術的快速發展及其對整個計算機視覺領域的深遠影響。如果我們認為今天的物體檢測技術是一場由深度學習推動的革命,那么回到20世紀90年代,我們會看到早期計算機視覺的巧妙思維和長期視角設計。本文從技術發展的角度廣泛回顧了這一快速發展的研究領域,跨越了四分之一個世紀的時間(從20世紀90年代到2022年)。本文涵蓋了許多主題,包括歷史上的里程碑檢測器,檢測數據集,度量,檢測系統的基本構建塊,加速技術以及最新的最先進的檢測方法。
二、介紹
目標檢測的目標是開發計算模型和技術,解決這樣兩個問題:目標是什么?目標在哪里?(其實就是分類和定位)
目標檢測是實例分割、圖像字幕、目標跟蹤等視覺任務的基礎。深度學習的發展也讓目標檢測取得了巨大的進步,現在目標檢測已經廣泛應用于許多現實場景如自動駕駛、機器人視覺和視頻監控等。下圖展示了過去二十年里與“目標檢測”相關刊物的出版:
我們可以看到從1998年起刊物出版量逐步提升,2018年后增長幅度明顯增加,且直到2021年都在持續增長。
不同檢測任務的目標和條件不同導致任務難度有所不同,除了常見挑戰如不同視角、光照和不同類物體變化之外,還有包括但不限于物體旋轉、尺度變化、精確定位、密集和遮擋目標檢測和檢測速度的提升等。
本文的目的就是向讀者展示相關技術的演變,令讀者能夠掌握基本概念并找到潛在未來方向,而忽略技術細節。
三、目標檢測二十年發展
這個部分主要回顧目標檢測歷史發展,包括里程碑、數據集、指標和關鍵技術演變。
3.1 目標檢測發展路線圖
在前兩個世紀,人們普遍認為目標檢測經過了兩個歷史時期:傳統目標檢測時期(2014年以前)和基于深度學習的檢測(2014年以后),如下圖展示:
我們可以看到,2014年之前我們采用的是傳統目標檢測方法如VJ Det、HOG Det和DPM這些,在2014年出現了RCNN、YOLO、SSD這些以深度學習框架為主流的算法。并且深度學習的算法主要分為兩類:單階段檢測和雙階段檢測。
下面我們將以出現時間和性能為主要指引,重點突出背后的技術所在,如下圖所示:
3.1.1 里程碑1
此時主要是傳統的檢測器。其實我們回顧早期20世紀90年代的檢測技術,也是會覺得是視覺的巧妙設計和長期的視角。大多數早期檢測算法都是基于手工特征的,由于缺乏有效圖像表示,人們不得不設計復雜的特征表示和各種加速的方法。
3.1.1.1 Viola Jones Detectors
2001年,Viola和Jones首次實現不受任何限制的人臉實時檢測。同等檢測精度下,速度比其他算法快數十倍甚至數百倍。VJ檢測器通過滑動窗口:即通過圖像中可能的位置和比例,檢測某窗口是否包含人臉。主要采用三種技術實現:“積分圖像”、“特征選擇”和“級聯檢測”。
3.1.1.2 HOG Detector
2005年,Dala和Triggs提出定向梯度直方圖特征(Histogram of Oriented Gradients,HOG)描述符。這是一種對尺度不變特征變換和形狀上下文的重要改進。HOG主要用來進行行人檢測,通常是保持檢測窗口大小不變的情況下,對輸入圖像進行多次縮放實現。其一直是許多計算機視覺應用的基礎。
3.1.1.3 DPM
可變性零件模型(Deformable Part-based Model,DPM)是傳統目標檢測方法的縮影,最初由Felzenszwalb在2008年提出,屬于HOG的一種延伸。其采用的是“分而治之”的思想,訓練可以認為是一種合適的分解目標的方法,而推理則是對不同目標部分的檢測合集。例如,檢測汽車可以分解為檢測車窗、車身和車輪。這又被成為“明星模型”,也是F等人提出的。之后,Girshick將該模型擴展到“混合模型”,以處理變化更大的物體。現在許多檢測器都受到該模型的影響,如混合模型、硬負挖掘、邊界框回歸、上下文啟動等。
3.1.2 里程碑2
基于卷積神經網絡(CNN)的兩階段檢測器。隨著手工特征性能飽和,目標檢測在2010年達到聘平緩期,直到2012年卷積神經網絡的誕生。Girshick等人率先提出了帶有CNN特征的區域(RCNN),那時之后目標檢測發展迅速。基于深度學習的檢測算法分為單階段和雙階段,前者將框架為“一步完成”,后者將其作為“粗-精”的過程。
3.1.2.1 RCNN
RCNN(Region with CNN )首先通過選擇性搜索提取一組對象建議(即候選框),然后將每個建議重新縮放成固定大小的圖像,并輸入在ImageNet上預訓練的CNN模型加以提取特征。最后使用線性支持向量機(SVM)分類器預測區域內物體并識別類別。盡管RCNN取得了顯著性能提升,但也有明顯缺點:大量重疊區域上進行冗余特征計算導致速度較慢。SPPNet解決了該問題。
3.1.2.2 SPPNet
2014年He等人提出空間金字塔池化網絡(Spatial Pyramid Pooling Network,SPPNet),引入了空間金字塔池化層,使CNN生成固定長度表示。輸入圖像只需要計算一次特征映射,然后生成任意區域的固定長度表示用于訓練檢測器,避免重復計算卷積特征。SPPNet比RCNN快20倍以上。但仍存在一定缺點:訓練多階段,只對全連接層進行微調,忽略之前的層。Fast RCNN解決了這些問題。
3.1.2.2 Fast RCNN
2015年Girshick提出Fast RCNN。該檢測器能夠在相同網絡配置下同時訓練檢測器和邊界框回歸器。盡管其速度比RCNN快200倍以上,但仍存在缺陷:速度受到建議區域的限制。
3.1.2.3 Faster RCNN
2015年Ren等人提出了Faster RCNN。Faster RCNN引入了區域建議網絡(Region Proposal Network,RPN),使得幾乎沒有成本的區域建議成為可能。從R-CNN到Faster RCNN,目標檢測系統的大多數獨立的模塊都已經集成到一個統一的端到端學習框架中。盡管如此,后續檢測階段仍存計算冗余。
3.1.2.4 FPN
2017年,Lin等人提出FPN(Feature Pyramid Networks)。FPN開發出一種具有橫向連接的自頂向下架構,用在所有尺度上構建高級語義。目前FPN已成為大多數最新檢測器基本組成部分。
3.1.3 里程碑3
此部分主要是基于CNN的單階段檢測器。大多數兩階段檢測器遵循從粗到精的處理范式,粗的使努力提高召回能力,精的是在粗的檢測基礎上細化定位,強調區分能力。工程中很少使用兩階段檢測器,相反單階段可以一步推理中檢索所有對象,適用于移動設備,在密集和小物體方面性能收到影響。
3.1.3.1 YOLO
Joseph等人在2015年提出YOLO(You Only Look Once)yolo將單個神經網絡應用與整個圖像,將圖像劃分為多個區域,同時預測每個預取邊界框和概率,檢測速度大大提升,但精度有下降。YOLOv7引入動態標簽分配和模型結構重新參數化等優化結構,速度和精度更優。
3.1.3.2 SSD
Liu等人于2015年提出SSD(Single Shot MultiBox Detector)。主要引入多參考點和多分辨率檢測技術,顯著提高對小目標的檢測精度。SSD可以檢測網絡不同層的不同規模目標,其余檢測器只能在頂層預測。
3.1.3.3 RetinaNet?
單階段探測器檢測精度一直落后于兩階段,2017年Lin等人提出了RetinaNet,密集檢測訓練過程中遇到的極端前景-背景類不平衡是主要問題。于是,他們引入新的損失函數:焦點損失(Focal Loss)重塑標準交叉熵損失,使檢測器在訓練過程中更多的關注難分類、錯誤分類的例子。
3.1.3.4 CornerNet
Law等人為解決錨框需要提供分類、回歸參考等而建立大量參考框路徑的問題拋棄了以前的范式,提出CornerNet,該算法將任務視為關鍵點的預測,獲取關鍵點后,利用額外的嵌入信息對角落點進行解耦和重新分組,形成邊界框。
3.1.3.5 CenterNet
Zhou等人于2019年提出CenterNet。它還是遵循基于關鍵點的檢測范例,但消除了代價高昂的后處理,例如基于組的關鍵點分配和NMS,從而形成完全端到端的檢測網絡。
3.1.3.6 DETR
Transformers影響了整個深度學習領域,它拋棄了傳統卷積算子,轉而采用注意力單獨計算,以客服CNN的局限性,獲得全局尺度感受野,2020年Carion提出DETR,將目標檢測視為一個集合預測的問題,并提出一個端到端的變壓器檢測網絡。