大數(shù)據(jù)文摘作品,編譯:及子龍,張禮俊,余志文,錢天培。
從簡(jiǎn)單的圖像分類到3D位置估算,在機(jī)器視覺領(lǐng)域里從來都不乏有趣的問題。其中我們最感興趣的問題之一就是目標(biāo)檢測(cè)。
如同其他的機(jī)器視覺問題一樣,目標(biāo)檢測(cè)目前為止還沒有公認(rèn)最好的解決方法。在了解目標(biāo)檢測(cè)之前,讓我們先快速地了解一下這個(gè)領(lǐng)域里普遍存在的一些問題。
在計(jì)算機(jī)視覺領(lǐng)域中,最為人所知的問題便是圖像分類問題。
圖像分類是把一幅圖片分成多種類別中的一類。
ImageNet是在學(xué)術(shù)界使用的最受歡迎的數(shù)據(jù)集之一,它由數(shù)百萬個(gè)已分類圖像組成,部分?jǐn)?shù)據(jù)用于ImageNet大規(guī)模視覺識(shí)別挑戰(zhàn)賽(ILSVRC)。 最近幾年來,解決分類問題的模型已經(jīng)有了超越人類的識(shí)別能力,所以分類問題實(shí)際上已經(jīng)被解決了.
然而,圖像分類問題有許多挑戰(zhàn),相伴隨著的是許多如何解決這些問題的文獻(xiàn)以及對(duì)還未被解決的問題的探討。
圖像分類實(shí)例
同圖像分類類似,目標(biāo)定位要找到單個(gè)目標(biāo)在圖像中的位置。
目標(biāo)定位實(shí)例
目標(biāo)定位在實(shí)際生活中的應(yīng)用很廣泛,比如,智能剪切(通過定位目標(biāo)所在的位置,識(shí)別需要圖片從哪里剪切) ,或者進(jìn)行常規(guī)的目標(biāo)提取以便進(jìn)一步處理。結(jié)合圖像分類技術(shù),它不僅僅可以定位目標(biāo),還能對(duì)該物體分類。
從目標(biāo)檢測(cè)更進(jìn)一步,我們不僅僅要找到圖片中的對(duì)象,更是要發(fā)現(xiàn)該檢測(cè)對(duì)象對(duì)應(yīng)的像素碼。我們把這個(gè)問題稱為實(shí)例分割,或者是對(duì)象分割。
在迭代處理定位和圖片分類問題時(shí),我們最終還是需要對(duì)多個(gè)目標(biāo)進(jìn)行同時(shí)檢測(cè)和分類。目標(biāo)檢測(cè)是在圖片中對(duì)可變數(shù)量的目標(biāo)進(jìn)行查找和分類。其中重要的區(qū)別是“可變”這一部分。
和圖像分類問題不同的是,由于每一張圖片待檢測(cè)目標(biāo)的數(shù)量不一,目標(biāo)檢測(cè)的輸出長度是可變的。在這篇文章中,我們將詳細(xì)地介紹一些實(shí)際應(yīng)用,討論目標(biāo)檢測(cè)作為機(jī)器學(xué)習(xí)問題的主要困難,以及在過去的幾年里如何應(yīng)用深度學(xué)習(xí)處理目標(biāo)檢測(cè)。
目標(biāo)檢測(cè)實(shí)例
在Tryolabs 中,我們專注于使用現(xiàn)有的機(jī)器學(xué)習(xí)方法解決商務(wù)問題,所以即使我們熱衷于機(jī)器學(xué)習(xí)的科研問題,但最終我們還是要回歸實(shí)際應(yīng)用中。
雖然目標(biāo)檢測(cè)從某種程度上在工業(yè)界還是一個(gè)很新的工具,但它已經(jīng)有了很多實(shí)用和有趣的應(yīng)用。
自20世紀(jì)中期以來,傻瓜相機(jī)開始通過更為高效的自動(dòng)對(duì)焦來檢測(cè)人面。 雖然這是一種比較淺顯的目標(biāo)檢測(cè)應(yīng)用,但是這種方法同樣適用于其他類型的目標(biāo)檢測(cè),我們稍后將會(huì)介紹。
計(jì)數(shù)是一個(gè)簡(jiǎn)單但是經(jīng)常被忽略的目標(biāo)檢測(cè)問題。統(tǒng)計(jì)人,車,花甚至是微生物數(shù)量是現(xiàn)實(shí)世界的需求,在大部分基于圖像的系統(tǒng)中都要使用。近幾年伴隨著監(jiān)控視頻設(shè)備的不斷涌現(xiàn),使用機(jī)器視覺將原圖像轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)的需求也越來越多。
最后,我們比較喜歡的一個(gè)實(shí)例是Pinterest(圖片社交平臺(tái))的視覺搜索引擎。
他們將目標(biāo)檢測(cè)作為索引圖像內(nèi)容的處理流程之一。比如,你可以在不同的背景下找到某個(gè)特定的錢包。 這比Google Image的反向搜索引擎只是找到類似的圖像更強(qiáng)大。
圖1:相似查找:我們應(yīng)用目標(biāo)檢測(cè)方法定位包或鞋子這些產(chǎn)品。在這張圖片中, 用戶可以點(diǎn)擊圖片中的目標(biāo)對(duì)象便可以查找類似的產(chǎn)品。在這個(gè)廉價(jià)無人機(jī)和衛(wèi)星興起的年代,我們能在空中獲取空前多的關(guān)于地球的數(shù)據(jù)。 如今已經(jīng)有越來越多的公司開始使用planet 或者descartes labs 公司提供的衛(wèi)星圖片,應(yīng)用目標(biāo)檢測(cè)來計(jì)算汽車,樹,船的數(shù)量。這些舉措都為我們帶來了高質(zhì)量的數(shù)據(jù),這在從前是不可能實(shí)現(xiàn)的。
一些公司正在應(yīng)用無人機(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)汽車、樹和行人的識(shí)別
現(xiàn)在,讓我們開始深入了解目標(biāo)檢測(cè)中的主要問題。
我們?cè)谇懊嫣岬竭^對(duì)象數(shù)量可變,但是并沒有解釋為什么是個(gè)問題。當(dāng)訓(xùn)練機(jī)器學(xué)習(xí)模型的時(shí)候,你經(jīng)常需要把數(shù)據(jù)表示成固定長度的向量。如果在訓(xùn)練之前圖片中的對(duì)象數(shù)量是未知的,模型的輸出數(shù)量也就是未知的了。因此,一些增加模型復(fù)雜性的預(yù)處理是必要的。
在傳統(tǒng)的方法中,輸出的數(shù)量可以使用滑動(dòng)窗函數(shù)來計(jì)算,給不同位置產(chǎn)生一個(gè)固定大小的特征窗。在做完了預(yù)測(cè)之后,有些預(yù)測(cè)會(huì)被丟棄,有些會(huì)被合并到最終結(jié)果里面。
滑動(dòng)窗示例
另外一個(gè)挑戰(zhàn)是處理不同大小對(duì)象的問題。面對(duì)一個(gè)簡(jiǎn)單的分類問題,你期望是盡可能將覆蓋圖片大部分面積的對(duì)象進(jìn)行分類。而在有些情境中,你想識(shí)別的對(duì)象可能只有幾十個(gè)像素點(diǎn)大?。ɑ蛘哒f是原圖片中占比很小的一部分)。以往人們通過使用不同大小的滑動(dòng)窗來解決這個(gè)問題,這種方法雖然簡(jiǎn)單,卻效率低下。
第三個(gè)挑戰(zhàn)是同時(shí)解決目標(biāo)定位和圖像分類這兩個(gè)問題。 我們?nèi)绾螌⑦@兩種不同類型的需求組合到一個(gè)模型里呢?
在進(jìn)入深度學(xué)習(xí)和如何應(yīng)對(duì)這些挑戰(zhàn)之前,讓我們先快速了解一些經(jīng)典的檢測(cè)方法。
在這里我們將集中介紹其中兩個(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)練的,但是總體來說,該算法是通過使用哈爾特征(Haar features)生成許多(可能幾千個(gè))簡(jiǎn)單的二元分類器來實(shí)現(xiàn)的。這些分類器通過一個(gè)多尺度級(jí)聯(lián)滑動(dòng)窗進(jìn)行評(píng)估,一旦遇到錯(cuò)誤的分類結(jié)果則提前結(jié)束。
另一個(gè)傳統(tǒng)方法是使用方向梯度直方圖(HOG)特征和支持向量機(jī)來分類。這個(gè)方法依然需要一個(gè)多尺度滑動(dòng)窗,盡管它比Viola-Jones表現(xiàn)優(yōu)異,但速度卻慢了很多。
在機(jī)器學(xué)習(xí)領(lǐng)域,深度學(xué)習(xí)一直是個(gè)大boss,尤其在計(jì)算機(jī)視覺方面。在圖像分類的任務(wù)上,深度學(xué)習(xí)已經(jīng)徹底擊敗了其他的傳統(tǒng)模型。同樣,在目標(biāo)檢測(cè)方面,深度學(xué)習(xí)也代表了目前的最先進(jìn)水平。
讀到這里,你應(yīng)該對(duì)我們面臨的挑戰(zhàn)和對(duì)解決它們的辦法有了一定的了解,接下來我們將概述一下在過去的幾年深度學(xué)習(xí)方法的發(fā)展歷程。
2013年由NYU(紐約大學(xué)) 提出的OverFeat 是最早將深度學(xué)習(xí)用于目標(biāo)檢測(cè)的方法之一。他們提出了一個(gè)使用卷積神經(jīng)網(wǎng)絡(luò)(CNNs)來處理多尺度滑窗的算法。
OverFeat
2013年由NYU(紐約大學(xué)) 提出的OverFeat 是最早將深度學(xué)習(xí)用于目標(biāo)檢測(cè)的方法之一。他們提出了一個(gè)使用卷積神經(jīng)網(wǎng)絡(luò)(CNNs)來處理多尺度滑窗的算法。
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)分類每一個(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)練中有很多的問題。
為了訓(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ī)分類器。
Fast R-CNN
R-CNN被提出不久后,它又延伸出了一個(gè)完全使用深度學(xué)習(xí)的版本——就在一年后,Ross Girshick(目前在微軟研究中心)發(fā)表了Fast R-CNN。
和R-CNN類似,F(xiàn)ast R-CNN依然采用Selective Search生成候選區(qū)域,但是和之前的分別提取出所有的候選區(qū)域然后使用支持向量機(jī)分類器不同,F(xiàn)ast R-CNN 在完整的圖片上使用CNN然后使用集中了特征映射的興趣區(qū)域(Region of Interest, RoI),以及前向傳播網(wǎng)絡(luò)進(jìn)行分類和回歸。這個(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.
4YOLO
在Fast R-CNN被提出過后不久,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.
5Faster 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)行原理,但抽象地說,它基于一個(gè)叫“物體性”(objectness)的分?jǐn)?shù)輸出對(duì)象。這些物體被用在Rol集中層和全連接層,從而實(shí)現(xiàn)分類的目標(biāo)。
Faster R-CNN架構(gòu)
Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." 2015.
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ù)集扮演了十分重要的角色,其重要性經(jīng)常被低估。每一次新的數(shù)據(jù)集發(fā)布,都會(huì)有論文被發(fā)表,新的模型在此基礎(chǔ)上進(jìn)行比對(duì)和提升,把不可能變成可能。
很可惜,對(duì)于目標(biāo)檢測(cè),我們還沒有足夠的數(shù)據(jù)集。數(shù)據(jù)很難產(chǎn)生,而且成本很高,具備優(yōu)秀數(shù)據(jù)庫的公司一般不愿意公開他們的數(shù)據(jù),而學(xué)校則無法接觸到優(yōu)質(zhì)的數(shù)據(jù)集。
話雖如此,我們還是有一些不錯(cuò)的公開數(shù)據(jù)可以使用,下面的列表就是目前可用的主要數(shù)據(jù)集。
最后,在目標(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ǔ)。
聯(lián)系客服