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