深度學(xué)習(xí)時代的目標檢測算法綜述
目標檢測 VS 其他計算機視覺問題
分類問題
這或許是計算機視覺領(lǐng)域內(nèi)***的問題。它主要指將一張圖像歸為某種類別。學(xué)術(shù)界***的一類數(shù)據(jù)集是 ImageNet,由數(shù)以百萬計已分好類的圖像組成,(部分)用于年度 ImageNet 大規(guī)模視覺識別挑戰(zhàn)比賽(ILSVRC) 。近年來,分類模型已經(jīng)超過了人類的表現(xiàn),因此該問題基本算是一個已經(jīng)解決的問題。圖像分類領(lǐng)域有許多挑戰(zhàn),但是也有許多文章介紹已經(jīng)解決了的,以及未解決的挑戰(zhàn)。
目標定位
與分類類似,定位問題是找到圖像中單一物體的位置。
目標定位在實際生活中是很有用的。例如,智能裁剪(根據(jù)目標所在位置來裁剪圖像),甚至對規(guī)則目標進行提取,以使用不同技術(shù)對其進行進一步處理。它可以與分類相結(jié)合,不僅可以定位對象,還可以將其進行分類。
實例分割
從目標檢測再進一步,我們不僅想在圖像中找到目標,而且要找到每一個被檢測目標的像素級掩膜。我們將此問題稱為實例或目標分割。
目標檢測
將定位以及分類問題結(jié)合起來,最終我們需要同時檢測和分類多個目標。目標檢測是在圖像上定位和分類數(shù)量可變的對象的問題。重要的區(qū)別是“變量”部分。與分類問題相比,目標檢測的輸出數(shù)量是可變的,因為對于每幅圖來說,檢測到的目標數(shù)目可能是不同的。在本文中,我們將介紹目標檢測實際應(yīng)用的細節(jié),以及它作為一個機器學(xué)習(xí)問題,存在的主要問題是什么,過去幾年中,解決該問題的方式是如何一步步變成深度學(xué)習(xí)的。
實際應(yīng)用
在 Tryolabs,我們專門從事應(yīng)用***進的機器學(xué)習(xí)技術(shù)來解決商業(yè)問題,所以即使我們熱愛所有瘋狂的機器學(xué)習(xí)研究問題,但是***我們更多是在考慮實際應(yīng)用問題。
盡管目標檢測在工業(yè)界仍然是一個新工具,但已經(jīng)有許多使用目標檢測技術(shù)的實用而有趣的應(yīng)用了。
人臉檢測
自 2000 年年中,一些傻瓜相機已經(jīng)開始自帶人臉檢測功能,能夠進行更有效地自動對焦。雖然這只是目標檢測的一種狹義類型,但它所使用的方法也適用于其他類型的目標,我們將在后面詳述。
計數(shù)
目標檢測的一個很簡單但常常被忽視的用途是計數(shù)。統(tǒng)計人、汽車、花卉甚至微生物數(shù)量的能力是各種圖像信息系統(tǒng)應(yīng)該要具備的。最近,隨著視頻監(jiān)控設(shè)備的激增,其中蘊藏著***的使用計算機視覺方法將原始信息轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)的機會。
視覺搜索引擎
我們都很喜歡 Pinterest 視覺搜索引擎 。他們使用目標檢測技術(shù)作為系統(tǒng)的一部分,用于索引圖像中的不同部分。這樣,當你搜索某個特定的提包時,你能搜到你想要的手提袋在不同場景下的圖像。這個功能比谷歌圖像的反向搜索引擎要強大得多。
相似圖像:我們應(yīng)用目標檢測技術(shù)來定位包或者鞋子這類產(chǎn)品。在這個例子中,用戶可以點擊自動標注好的物體去查看相似的產(chǎn)品。
航拍圖像分析
在擁有廉價的無人機和(幾乎)負擔得起的衛(wèi)星發(fā)射服務(wù)之前,從未有過如此多的地球俯瞰圖。已經(jīng)有公司開始使用來自 Planet 和 Descartes Labs 公司的衛(wèi)星圖像,應(yīng)用目標檢測技術(shù)進行車輛、樹木和船只的數(shù)量統(tǒng)計。它帶來了高質(zhì)量的圖像,這在以前是不可能的(或非常昂貴的),現(xiàn)在使用它的人已經(jīng)越來越多了。
一些公司用無人機來自動勘察人類難以進入的區(qū)域(例如 Betterview ),或使用目標檢測技術(shù)進行一般性的分析(如 TensorFlight )。除此之外,一些公司在沒有人工干預(yù)的情況下使用這種技術(shù)進行自動檢測和定位問題。
目標檢測的問題與挑戰(zhàn)
讓我們開始深入研究目標檢測的主要問題。
目標的可變數(shù)量問題
我們前面已經(jīng)提到關(guān)于圖片中目標數(shù)量可變的問題,但我們忽視了為什么它會成為一個問題。訓(xùn)練機器學(xué)習(xí)模型時,通常需要將數(shù)據(jù)表示成固定大小的向量。由于事先不知道圖像中目標的數(shù)量,所以我們不知道正確的輸出數(shù)量。正因為如此,我們需要一些后續(xù)處理,這也增加了模型的復(fù)雜度。
這種輸出數(shù)量不定的問題已經(jīng)使用基于滑動窗口的方法得到了解決,在圖片的不同位置得到滑窗的固定大小特征。在得到所有的預(yù)測值之后,一些滑窗被丟棄,一些被合并,從而得到最終輸出。
大小
另一個大挑戰(zhàn)是目標的大小不一致問題。當進行簡單分類時,我們希望能對占圖像比例***的目標進行分類。另一方面,想要找到的目標可能只有幾個像素大小(或只占原始圖像的很小一部分)。傳統(tǒng)方法使用不同大小的滑動窗口解決了這一問題,這種方法雖然簡單但是效率很低。
模型
第三個挑戰(zhàn)是同時解決兩個問題。我們?nèi)绾螌⒍ㄎ缓头诸愡@兩種不同類型的問題最理想地結(jié)合進一個單一模型?
在接著介紹深度學(xué)習(xí)和如何應(yīng)對這些挑戰(zhàn)之前,讓我們快速地回顧一下經(jīng)典方法。
經(jīng)典方法
盡管近年來已經(jīng)有很多不同類型的方法,我們主要介紹兩個***的(現(xiàn)在依然廣泛使用)。
***個是 2001 年 Paul Viola 和 Michael Jones 在論文 《魯棒實時目標檢測》 中提出的 Viola Jones 框架 。該方法快速并且相對簡單,因此傻瓜相機的人臉檢測就是使用這個算法,它能做到實時檢測,并且運算量很小。
我們不會介紹它運作的底層細節(jié)以及如何訓(xùn)練它,但會介紹它的高層算法。它的工作原理是使用 Haar 特征 產(chǎn)生多種(可能有數(shù)千個)簡單的二進制分類器。這些分類器由級聯(lián)的多尺度滑動窗口進行評估,并且在出現(xiàn)消極分類情況的早期及時丟棄錯誤分類。
另一個類似的經(jīng)典方法是采用 梯度方向直方圖 (Histogram of Oriented Gradients,HOG)作為特征,以及支持向量機(SVM)作為分類器。它仍然依賴多尺度滑動窗口,盡管它的效果比 Viola Jones 要好很多,但是速度也慢很多。
深度學(xué)習(xí)的方法
深度學(xué)習(xí)作為機器學(xué)習(xí),尤其是計算機視覺中真正的“變革者”,已經(jīng)是眾人皆知了。與深度學(xué)習(xí)模型在圖像分類任務(wù)上完全碾壓其他經(jīng)典模型類似,深度學(xué)習(xí)模型在目標檢測領(lǐng)域也是***的方法。
現(xiàn)在,你已經(jīng)對目標檢測的挑戰(zhàn)是什么有了更直觀的了解,也知道了如何解決這些問題,下面我們會對過去幾年深度學(xué)習(xí)方法在目標檢測領(lǐng)域的演變過程做一個綜述介紹。
OverFeat
***個使用深度學(xué)習(xí)進行目標檢測并取得很大進展的方法是紐約大學(xué)在 2013 年提出的 Overfeat 。他們提出了一個使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)的多尺度滑動窗口算法。
R-CNN
在 Overfeat 提出不久,來自加州大學(xué)伯克利分校的 Ross Girshick 等人發(fā)表了 基于卷積神經(jīng)網(wǎng)絡(luò)特征的區(qū)域方法 (Regions with CNN features,R-CNN),它在目標檢測比賽上相比其他方法取得了 50%的性能提升。他們提出了一個三階段的方法:
- 使用區(qū)域候選算法提取包含可能目標的區(qū)域(***的 選擇性搜索算法 )
- 使用 CNN 在每個區(qū)域上提取特征。
- 使用 支持向量機 對區(qū)域進行分類。
Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” 2014.
雖然該方法取得了很好的結(jié)果,但是訓(xùn)練階段有很多問題。要訓(xùn)練網(wǎng)絡(luò),首先要生成訓(xùn)練數(shù)據(jù)集的候選區(qū)域,然后對每一個區(qū)域使用 CNN 提取特征(對于 Pascal 2012 訓(xùn)練數(shù)據(jù)集來說,通常需要生成大于 200GB 的中間文件),***訓(xùn)練 SVM 分類器。
Fast R-CNN
一年以后,Ross Girshick(微軟亞洲研究院)發(fā)表了 Fast R-CNN ,這個方法迅速演化成一個純深度學(xué)習(xí)的方法。與 R-CNN 相似,它也使用選擇性搜索來生成候選區(qū)域,但與 R-CNN 不同的是,F(xiàn)ast R-CNN 在整張圖上使用 CNN 來提取特征,然后在特征圖上使用區(qū)域興趣池化(Region of Interest,ROI),并且***用前饋神經(jīng)網(wǎng)絡(luò)來進行分類和回歸。這個方法不僅快,而且由于 RoI 池化層和全連接層的存在,該模型可以進行端到端的求導(dǎo),并且訓(xùn)練也更容易。***的不足是該模型仍舊依賴選擇性搜索(或者其他的區(qū)域候選算法),這也成為了模型推理階段的一個瓶頸。
Girshick, Ross. “Fast R-CNN” 2015.
YOLO
不久之后,Joseph Redmon(Girshick 也是共同作者之一)發(fā)表了一篇名為 《你只用看一遍:統(tǒng)一框架的實時目標檢測》 (You Only Look Once: Unified, Real-Time Object Detection(YOLO))的論文。YOLO 提出了一個簡單的卷積神經(jīng)網(wǎng)絡(luò)方法,它取得了很好的結(jié)果,并且速度也非??欤?**次實現(xiàn)了實時的目標檢測。
Redmon, Joseph, et al. “You only look once: Unified, real-time object detection.” 2016.
Faster R-CNN
隨后,任少卿(Girshick 也作為共同作者,現(xiàn)在 Facebook 研究院)發(fā)表了 Faster R-CNN ,這是 R-CNN 系列的第三代。Faster R-CNN 增加了一個所謂的“區(qū)域候選網(wǎng)絡(luò)(Regio Proosal Network,RPN)”,試圖擺脫搜索選擇算法,從而讓模型實現(xiàn)完全端到端的訓(xùn)練。我們不會詳細介紹 RPN 的原理,不過簡單地說,它的作用是根據(jù)“屬于目標”的分數(shù)來輸出可能目標。RoI 池化層和全連接層使用這些目標進行分類。我們會在后續(xù)的博客中詳細介紹該結(jié)構(gòu)的細節(jié)。
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” 2015.
SSD 和 R-FCN
***,有兩篇著名的論文, 《單幀檢測器》 (Single Shot Detector,SSD),它在 YOLO 的基礎(chǔ)上進行改良,通過使用多尺度的卷積特征圖以達到更好的結(jié)果和速度,以及 《基于區(qū)域的全卷積網(wǎng)絡(luò)》 (Region-based Fully Convolutional Networks,R-FCN),它使用了 Faster RCNN 的架構(gòu),但是只含有卷積網(wǎng)絡(luò)。
數(shù)據(jù)集的重要性
在研究中,數(shù)據(jù)集起到非常重要的作用(有時被低估了)。每當一個新的數(shù)據(jù)集發(fā)布以后,新的論文接踵而至,新的模型被互相比較,不斷進步,把可能性推向***。
不幸的是,目標檢測的數(shù)據(jù)集不是太多。數(shù)據(jù)比較難(也很昂貴)獲得,公司可能不愿意免費發(fā)布他們投資的產(chǎn)品,而大學(xué)又沒有足夠的資源。
不過現(xiàn)在依然有一些很好的數(shù)據(jù)集,下面是一些主要的公開數(shù)據(jù)集:
結(jié)論
總而言之,目標檢測領(lǐng)域現(xiàn)在有很多機會,不管是在未知的應(yīng)用還是在提出新方法推進領(lǐng)域內(nèi)***進的效果上。盡管這只是一個目標檢測的概述,我希望它能讓你們對目標檢測有一個基本了解,從而引導(dǎo)你們了解深度知識。
后面幾周,我們會做關(guān)于目標檢測框架實現(xiàn)的細節(jié)、評估標準以及訓(xùn)練模型方法的系列文章。我們也會嘗試將過去的目標檢測算法應(yīng)用到其他問題上。