目標(biāo)檢測(cè)101:一文帶你讀懂深度學(xué)習(xí)框架下的目標(biāo)檢測(cè)
編譯:及子龍,張禮俊,余志文,錢(qián)天培
從簡(jiǎn)單的圖像分類(lèi)到3D位置估算,在機(jī)器視覺(jué)領(lǐng)域里從來(lái)都不乏有趣的問(wèn)題。其中我們最感興趣的問(wèn)題之一就是目標(biāo)檢測(cè)。
如同其他的機(jī)器視覺(jué)問(wèn)題一樣,目標(biāo)檢測(cè)目前為止還沒(méi)有公認(rèn)***的解決方法。在了解目標(biāo)檢測(cè)之前,讓我們先快速地了解一下這個(gè)領(lǐng)域里普遍存在的一些問(wèn)題。
一、目標(biāo)檢測(cè) vs 其他計(jì)算機(jī)視覺(jué)問(wèn)題圖像分類(lèi)
在計(jì)算機(jī)視覺(jué)領(lǐng)域中,最為人所知的問(wèn)題便是圖像分類(lèi)問(wèn)題。
圖像分類(lèi)是把一幅圖片分成多種類(lèi)別中的一類(lèi)。
ImageNet是在學(xué)術(shù)界使用的***的數(shù)據(jù)集之一,它由數(shù)百萬(wàn)個(gè)已分類(lèi)圖像組成,部分?jǐn)?shù)據(jù)用于ImageNet大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)賽(ILSVRC)。 最近幾年來(lái),解決分類(lèi)問(wèn)題的模型已經(jīng)有了超越人類(lèi)的識(shí)別能力,所以分類(lèi)問(wèn)題實(shí)際上已經(jīng)被解決了.
然而,圖像分類(lèi)問(wèn)題有許多挑戰(zhàn),相伴隨著的是許多如何解決這些問(wèn)題的文獻(xiàn)以及對(duì)還未被解決的問(wèn)題的探討。
圖像分類(lèi)實(shí)例
1. 目標(biāo)定位
同圖像分類(lèi)類(lèi)似,目標(biāo)定位要找到單個(gè)目標(biāo)在圖像中的位置。
目標(biāo)定位實(shí)例
目標(biāo)定位在實(shí)際生活中的應(yīng)用很廣泛,比如,智能剪切(通過(guò)定位目標(biāo)所在的位置,識(shí)別需要圖片從哪里剪切) ,或者進(jìn)行常規(guī)的目標(biāo)提取以便進(jìn)一步處理。結(jié)合圖像分類(lèi)技術(shù),它不僅僅可以定位目標(biāo),還能對(duì)該物體分類(lèi)。
2. 實(shí)例分割
從目標(biāo)檢測(cè)更進(jìn)一步,我們不僅僅要找到圖片中的對(duì)象,更是要發(fā)現(xiàn)該檢測(cè)對(duì)象對(duì)應(yīng)的像素碼。我們把這個(gè)問(wèn)題稱為實(shí)例分割,或者是對(duì)象分割。
3. 目標(biāo)檢測(cè)
在迭代處理定位和圖片分類(lèi)問(wèn)題時(shí),我們最終還是需要對(duì)多個(gè)目標(biāo)進(jìn)行同時(shí)檢測(cè)和分類(lèi)。目標(biāo)檢測(cè)是在圖片中對(duì)可變數(shù)量的目標(biāo)進(jìn)行查找和分類(lèi)。其中重要的區(qū)別是“可變”這一部分。
和圖像分類(lèi)問(wèn)題不同的是,由于每一張圖片待檢測(cè)目標(biāo)的數(shù)量不一,目標(biāo)檢測(cè)的輸出長(zhǎng)度是可變的。在這篇文章中,我們將詳細(xì)地介紹一些實(shí)際應(yīng)用,討論目標(biāo)檢測(cè)作為機(jī)器學(xué)習(xí)問(wèn)題的主要困難,以及在過(guò)去的幾年里如何應(yīng)用深度學(xué)習(xí)處理目標(biāo)檢測(cè)。
目標(biāo)檢測(cè)實(shí)例
二、實(shí)際案例
在Tryolabs 中,我們專(zhuān)注于使用現(xiàn)有的機(jī)器學(xué)習(xí)方法解決商務(wù)問(wèn)題,所以即使我們熱衷于機(jī)器學(xué)習(xí)的科研問(wèn)題,但最終我們還是要回歸實(shí)際應(yīng)用中。
雖然目標(biāo)檢測(cè)從某種程度上在工業(yè)界還是一個(gè)很新的工具,但它已經(jīng)有了很多實(shí)用和有趣的應(yīng)用。
1. 人臉檢測(cè)
自20世紀(jì)中期以來(lái),傻瓜相機(jī)開(kāi)始通過(guò)更為高效的自動(dòng)對(duì)焦來(lái)檢測(cè)人面。 雖然這是一種比較淺顯的目標(biāo)檢測(cè)應(yīng)用,但是這種方法同樣適用于其他類(lèi)型的目標(biāo)檢測(cè),我們稍后將會(huì)介紹。
2. 計(jì)數(shù)
計(jì)數(shù)是一個(gè)簡(jiǎn)單但是經(jīng)常被忽略的目標(biāo)檢測(cè)問(wèn)題。統(tǒng)計(jì)人,車(chē),花甚至是微生物數(shù)量是現(xiàn)實(shí)世界的需求,在大部分基于圖像的系統(tǒng)中都要使用。近幾年伴隨著監(jiān)控視頻設(shè)備的不斷涌現(xiàn),使用機(jī)器視覺(jué)將原圖像轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)的需求也越來(lái)越多。
3. 視覺(jué)搜索引擎
***,我們比較喜歡的一個(gè)實(shí)例是Pinterest(圖片社交平臺(tái))的視覺(jué)搜索引擎。
他們將目標(biāo)檢測(cè)作為索引圖像內(nèi)容的處理流程之一。比如,你可以在不同的背景下找到某個(gè)特定的錢(qián)包。 這比Google Image的反向搜索引擎只是找到類(lèi)似的圖像更強(qiáng)大。
圖1
圖1:相似查找:我們應(yīng)用目標(biāo)檢測(cè)方法定位包或鞋子這些產(chǎn)品。在這張圖片中, 用戶可以點(diǎn)擊圖片中的目標(biāo)對(duì)象便可以查找類(lèi)似的產(chǎn)品。
4. 空中影像分析
在這個(gè)廉價(jià)無(wú)人機(jī)和衛(wèi)星興起的年代,我們能在空中獲取***多的關(guān)于地球的數(shù)據(jù)。 如今已經(jīng)有越來(lái)越多的公司開(kāi)始使用planet 或者descartes labs 公司提供的衛(wèi)星圖片,應(yīng)用目標(biāo)檢測(cè)來(lái)計(jì)算汽車(chē),樹(shù),船的數(shù)量。這些舉措都為我們帶來(lái)了高質(zhì)量的數(shù)據(jù),這在從前是不可能實(shí)現(xiàn)的。
一些公司正在應(yīng)用無(wú)人機(jī)攝像對(duì)人難以到達(dá)的地方進(jìn)行自動(dòng)監(jiān)測(cè)(例如BetterView)或者使用物體檢測(cè)方法進(jìn)行整體分析(例如TensorFlight)。 除此之外,一些公司實(shí)現(xiàn)了不需人為干預(yù)下的場(chǎng)景自動(dòng)檢測(cè)和位置識(shí)別。
使用TensorFlight實(shí)現(xiàn)汽車(chē)、樹(shù)和行人的識(shí)別
三、目標(biāo)檢測(cè)存在的問(wèn)題和挑戰(zhàn)
現(xiàn)在,讓我們開(kāi)始深入了解目標(biāo)檢測(cè)中的主要問(wèn)題。
1. 對(duì)象數(shù)量不確定
我們?cè)谇懊嫣岬竭^(guò)對(duì)象數(shù)量可變,但是并沒(méi)有解釋為什么是個(gè)問(wèn)題。當(dāng)訓(xùn)練機(jī)器學(xué)習(xí)模型的時(shí)候,你經(jīng)常需要把數(shù)據(jù)表示成固定長(zhǎng)度的向量。如果在訓(xùn)練之前圖片中的對(duì)象數(shù)量是未知的,模型的輸出數(shù)量也就是未知的了。因此,一些增加模型復(fù)雜性的預(yù)處理是必要的。
在傳統(tǒng)的方法中,輸出的數(shù)量可以使用滑動(dòng)窗函數(shù)來(lái)計(jì)算,給不同位置產(chǎn)生一個(gè)固定大小的特征窗。在做完了預(yù)測(cè)之后,有些預(yù)測(cè)會(huì)被丟棄,有些會(huì)被合并到最終結(jié)果里面。
滑動(dòng)窗示例
2. 對(duì)象大小不同
另外一個(gè)挑戰(zhàn)是處理不同大小對(duì)象的問(wèn)題。面對(duì)一個(gè)簡(jiǎn)單的分類(lèi)問(wèn)題,你期望是盡可能將覆蓋圖片大部分面積的對(duì)象進(jìn)行分類(lèi)。而在有些情境中,你想識(shí)別的對(duì)象可能只有幾十個(gè)像素點(diǎn)大小(或者說(shuō)是原圖片中占比很小的一部分)。以往人們通過(guò)使用不同大小的滑動(dòng)窗來(lái)解決這個(gè)問(wèn)題,這種方法雖然簡(jiǎn)單,卻效率低下。
3. 建模
第三個(gè)挑戰(zhàn)是同時(shí)解決目標(biāo)定位和圖像分類(lèi)這兩個(gè)問(wèn)題。 我們?nèi)绾螌⑦@兩種不同類(lèi)型的需求組合到一個(gè)模型里呢?
在進(jìn)入深度學(xué)習(xí)和如何應(yīng)對(duì)這些挑戰(zhàn)之前,讓我們先快速了解一些經(jīng)典的檢測(cè)方法。
四、檢測(cè)方法
1. 傳統(tǒng)方法
在這里我們將集中介紹其中兩個(gè)***且目前依然被廣泛使用的模型。
***個(gè)是2001年由Paul Viola和Michael Jones在論文《Robust Real-time Object Detection》里提出 的Viola-Jones框架。這個(gè)方法快速且相對(duì)簡(jiǎn)單,使得低處理能力的傻瓜相機(jī)得以進(jìn)行實(shí)時(shí)的面部識(shí)別。
我們不打算深入介紹它是如何工作和訓(xùn)練的,但是總體來(lái)說(shuō),該算法是通過(guò)使用哈爾特征(Haar features)生成許多(可能幾千個(gè))簡(jiǎn)單的二元分類(lèi)器來(lái)實(shí)現(xiàn)的。這些分類(lèi)器通過(guò)一個(gè)多尺度級(jí)聯(lián)滑動(dòng)窗進(jìn)行評(píng)估,一旦遇到錯(cuò)誤的分類(lèi)結(jié)果則提前結(jié)束。
另一個(gè)傳統(tǒng)方法是使用方向梯度直方圖(HOG)特征和支持向量機(jī)來(lái)分類(lèi)。這個(gè)方法依然需要一個(gè)多尺度滑動(dòng)窗,盡管它比Viola-Jones表現(xiàn)優(yōu)異,但速度卻慢了很多。
2. 深度學(xué)習(xí)方法
在機(jī)器學(xué)習(xí)領(lǐng)域,深度學(xué)習(xí)一直是個(gè)大boss,尤其在計(jì)算機(jī)視覺(jué)方面。在圖像分類(lèi)的任務(wù)上,深度學(xué)習(xí)已經(jīng)徹底擊敗了其他的傳統(tǒng)模型。同樣,在目標(biāo)檢測(cè)方面,深度學(xué)習(xí)也代表了目前的***進(jìn)水平。
讀到這里,你應(yīng)該對(duì)我們面臨的挑戰(zhàn)和對(duì)解決它們的辦法有了一定的了解,接下來(lái)我們將概述一下在過(guò)去的幾年深度學(xué)習(xí)方法的發(fā)展歷程。
2013年由NYU(紐約大學(xué)) 提出的OverFeat 是最早將深度學(xué)習(xí)用于目標(biāo)檢測(cè)的方法之一。他們提出了一個(gè)使用卷積神經(jīng)網(wǎng)絡(luò)(CNNs)來(lái)處理多尺度滑窗的算法。
(1) OverFeat
2013年由NYU(紐約大學(xué)) 提出的OverFeat 是最早將深度學(xué)習(xí)用于目標(biāo)檢測(cè)的方法之一。他們提出了一個(gè)使用卷積神經(jīng)網(wǎng)絡(luò)(CNNs)來(lái)處理多尺度滑窗的算法。
(2) R-CNN
OverFeat提出后不久,加州大學(xué)伯克利分校的Ross Girshick及其同事就發(fā)表了Regins with CNN features,簡(jiǎn)稱R-CNN的方法,該方法在物體識(shí)別挑戰(zhàn)中有50%的效果提升。
他們提出了目標(biāo)檢測(cè)分三步走的方法:
- 使用候選區(qū)域方法(***的一個(gè)是’Selective Search’)提取可能的物體
- 使用CNN從每一個(gè)區(qū)域提取特征
- 使用支持向量機(jī)(SVM)分類(lèi)每一個(gè)區(qū)域
R-CNN架構(gòu)
Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." 2014.
盡管R-CNN能達(dá)到很好的識(shí)別效果,但是它在訓(xùn)練中有很多的問(wèn)題。
為了訓(xùn)練模型,你首先要對(duì)訓(xùn)練數(shù)據(jù)集產(chǎn)生候選區(qū)域,然后把CNN特征提取應(yīng)用于每一個(gè)區(qū)域(對(duì)于Pascal 2012數(shù)據(jù)集通常需要處理200GB的數(shù)據(jù)),***再訓(xùn)練支持向量機(jī)分類(lèi)器。
(3) Fast R-CNN
R-CNN被提出不久后,它又延伸出了一個(gè)完全使用深度學(xué)習(xí)的版本——就在一年后,Ross Girshick(目前在微軟研究中心)發(fā)表了Fast R-CNN。
和R-CNN類(lèi)似,F(xiàn)ast R-CNN依然采用Selective Search生成候選區(qū)域,但是和之前的分別提取出所有的候選區(qū)域然后使用支持向量機(jī)分類(lèi)器不同,F(xiàn)ast R-CNN 在完整的圖片上使用CNN然后使用集中了特征映射的興趣區(qū)域(Region of Interest, RoI),以及前向傳播網(wǎng)絡(luò)進(jìn)行分類(lèi)和回歸。這個(gè)方法不僅更快,而且有Rol集中層和全連接層,使得模型從頭到尾可求導(dǎo),更容易訓(xùn)練。
Fast R-CNN***的不足是,這個(gè)模型依然依賴Selective Search(或者其他的區(qū)域候選算法),當(dāng)用該方法進(jìn)行推論時(shí),這塊就成了一個(gè)瓶頸。
Fast R-CNN
Girshick, Ross. "Fast R-CNN" 2015.
(4) YOLO
在Fast R-CNN被提出過(guò)后不久,Joseph Redmon(與Girshick等人合著)發(fā)表了You Only Look Once:Unified, Real-Time Object Detection(YOLO)這篇論文。
YOLO提出了一個(gè)兼具準(zhǔn)確性和速度性的簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò),***實(shí)現(xiàn)了實(shí)時(shí)物體檢測(cè)。
YOLO架構(gòu)
Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." 2016.
(5) Faster R-CNN
接著,Shaoqing Ren(依然與Girshick合著,目前在Fackbook研究中心)發(fā)表了Faster R-CNN,這是R-CNN的第三次迭代。
Faster R-CNN添加了候選區(qū)域網(wǎng)絡(luò)(Region Proposal Network, RPN),試圖取消對(duì)Selective Search 算法的依賴,這使得模型可以完全實(shí)現(xiàn)端到端訓(xùn)練。
我們暫時(shí)不會(huì)詳細(xì)深入地介紹RPNs的運(yùn)行原理,但抽象地說(shuō),它基于一個(gè)叫“物體性”(objectness)的分?jǐn)?shù)輸出對(duì)象。這些物體被用在Rol集中層和全連接層,從而實(shí)現(xiàn)分類(lèi)的目標(biāo)。
Faster R-CNN架構(gòu)
Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." 2015.
(6) SSD和R-FCN
***,還有兩篇論文不得不提:Single Shot Detector(SSD) 和 Region-based Fully Convolutional Networks(R-FCN)。 前者在YOLO的基礎(chǔ)上使用多尺寸的卷積特征圖使得在結(jié)果和速度上都有提升。后者基于Faster R-CNN的架構(gòu),但是只使用了卷積網(wǎng)絡(luò)。
五、數(shù)據(jù)集的重要性
在研究中,數(shù)據(jù)集扮演了十分重要的角色,其重要性經(jīng)常被低估。每一次新的數(shù)據(jù)集發(fā)布,都會(huì)有論文被發(fā)表,新的模型在此基礎(chǔ)上進(jìn)行比對(duì)和提升,把不可能變成可能。
很可惜,對(duì)于目標(biāo)檢測(cè),我們還沒(méi)有足夠的數(shù)據(jù)集。數(shù)據(jù)很難產(chǎn)生,而且成本很高,具備優(yōu)秀數(shù)據(jù)庫(kù)的公司一般不愿意公開(kāi)他們的數(shù)據(jù),而學(xué)校則無(wú)法接觸到優(yōu)質(zhì)的數(shù)據(jù)集。
話雖如此,我們還是有一些不錯(cuò)的公開(kāi)數(shù)據(jù)可以使用,下面的列表就是目前可用的主要數(shù)據(jù)集。
六、結(jié)論
***,在目標(biāo)檢測(cè)領(lǐng)域,還有很多未知的領(lǐng)域值得我們探索,不論是業(yè)界應(yīng)用還是新型算法。盡管這篇文章只對(duì)目標(biāo)檢測(cè)作了簡(jiǎn)單的概述,我們依然希望它能幫助你初步了解目標(biāo)檢測(cè)這一領(lǐng)域,并為你更進(jìn)一步的學(xué)習(xí)打下基礎(chǔ)。
原文:https://tryolabs.com/blog/2017/08/30/object-detection-an-overview-in-the-age-of-deep-learning/
【本文是51CTO專(zhuān)欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號(hào)“大數(shù)據(jù)文摘( id: BigDataDigest)”】