每次丟了東西,我們都希望有一種方法能快速定位出失物。現(xiàn)在,目標(biāo)檢測(cè)算法或許能做到。目標(biāo)檢測(cè)的用途遍布多個(gè)行業(yè),從安防監(jiān)控,到智慧城市中的實(shí)時(shí)交通監(jiān)測(cè)。簡(jiǎn)單來(lái)說(shuō),這些技術(shù)背后都是強(qiáng)大的深度學(xué)習(xí)算法。
在這篇文章中,我們會(huì)進(jìn)一步地了解這些用在目標(biāo)檢測(cè)中的算法,首先要從RCNN家族開(kāi)始,例如RCNN、Fast RCNN和Faster RCNN。在本系列接下來(lái)的文章中我們會(huì)談到更高級(jí)的算法,例如YOLO、SSD等等。
1. 解決目標(biāo)檢測(cè)任務(wù)的簡(jiǎn)單方法(利用深度學(xué)習(xí))
下圖是描述目標(biāo)檢測(cè)算法如何工作的典型例子,圖中的每個(gè)物體(不論是任務(wù)還是風(fēng)箏),都能以一定的精確度被定位出來(lái)。
首先我們要說(shuō)的就是在圖像目標(biāo)檢測(cè)中用途最廣、最簡(jiǎn)單的深度學(xué)習(xí)方法——卷積神經(jīng)網(wǎng)絡(luò)(CNN)。我要講的是CNN的內(nèi)部工作原理,首先讓我們看看下面這張圖片。
向網(wǎng)絡(luò)中輸入一張圖片,接著將它傳遞到多個(gè)卷積和池化層中。最后輸出目標(biāo)所屬的類別,聽(tīng)上去非常直接。
對(duì)每張輸入的圖片,我們都有對(duì)應(yīng)的輸出類別,那么這一技術(shù)能檢測(cè)圖片中多種目標(biāo)嗎?答案是肯定的!下面就讓我們看看如何用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)解決通用的目標(biāo)檢測(cè)問(wèn)題。
1.首先,我們把下面的圖片用作輸入:
2.之后,我們將圖片分成多個(gè)區(qū)域:
3.將每個(gè)區(qū)域看作單獨(dú)的圖片。
4.把這些區(qū)域照片傳遞給CNN,將它們分到不同類別中。
5.當(dāng)我們把每個(gè)區(qū)域都分到對(duì)應(yīng)的類別后,再把它們結(jié)合在一起,完成對(duì)原始圖像的目標(biāo)檢測(cè):
使用這一方法的問(wèn)題在于,圖片中的物體可能有不同的長(zhǎng)寬比和空間位置。例如,在有些情況下,目標(biāo)物體可能占據(jù)了圖片的大部分,或者非常小。目標(biāo)物體的形狀也可能不同。
有了這些考慮因素,我們就需要分割很多個(gè)區(qū)域,需要大量計(jì)算力。所以為了解決這一問(wèn)題,減少區(qū)域的分割,我們可以使用基于區(qū)域的CNN,它可以進(jìn)行區(qū)域選擇。
2. 基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)介紹
2.1 RCNN簡(jiǎn)介
和在大量區(qū)域上工作不同,RCNN算法提出在圖像中創(chuàng)建多個(gè)邊界框,檢查這些邊框中是否含有目標(biāo)物體。RCNN使用選擇性搜索來(lái)從一張圖片中提取這些邊框。
首先,讓我們明確什么是選擇性搜索,以及它是如何辨別不同區(qū)域的。組成目標(biāo)物體通常有四個(gè)要素:變化尺度、顏色、結(jié)構(gòu)(材質(zhì))、所占面積。選擇性搜索會(huì)確定物體在圖片中的這些特征,然后基于這些特征突出不同區(qū)域。下面是選擇搜索的一個(gè)簡(jiǎn)單案例:
首先將一張圖片作為輸入:
之后,它會(huì)生成最初的sub-分割,將圖片分成多個(gè)區(qū)域:
基于顏色、結(jié)構(gòu)、尺寸、形狀,將相似的區(qū)域合并成更大的區(qū)域:
最后,生成最終的目標(biāo)物體位置(Region of Interest)。
用RCNN檢測(cè)目標(biāo)物體的步驟如下:
我們首先取一個(gè)預(yù)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)。
根據(jù)需要檢測(cè)的目標(biāo)類別數(shù)量,訓(xùn)練網(wǎng)絡(luò)的最后一層。
得到每張圖片的感興趣區(qū)域(Region of Interest),對(duì)這些區(qū)域重新改造,以讓其符合CNN的輸入尺寸要求。
得到這些區(qū)域后,我們訓(xùn)練支持向量機(jī)(SVM)來(lái)辨別目標(biāo)物體和背景。對(duì)每個(gè)類別,我們都要訓(xùn)練一個(gè)二元SVM。
最后,我們訓(xùn)練一個(gè)線性回歸模型,為每個(gè)辨識(shí)到的物體生成更精確的邊界框。
下面我們就用具體的案例解釋一下。
首先,將以下圖片作為輸入:
之后,我們會(huì)用上文中的選擇性搜索得到感興趣區(qū)域:
將這些區(qū)域輸入到CNN中,并經(jīng)過(guò)卷積網(wǎng)絡(luò):
CNN為每個(gè)區(qū)域提取特征,利用SVM將這些區(qū)域分成不同類別:
最后,用邊界框回歸預(yù)測(cè)每個(gè)區(qū)域的邊界框位置:
這就是RCNN檢測(cè)目標(biāo)物體的方法。
2.2 RCNN的問(wèn)題
現(xiàn)在,我們了解了RCNN能如何幫助進(jìn)行目標(biāo)檢測(cè),但是這一技術(shù)有自己的局限性。訓(xùn)練一個(gè)RCNN模型非常昂貴,并且步驟較多:
根據(jù)選擇性搜索,要對(duì)每張圖片提取2000個(gè)單獨(dú)區(qū)域;
用CNN提取每個(gè)區(qū)域的特征。假設(shè)我們有N張圖片,那么CNN特征就是N*2000;
用RCNN進(jìn)行目標(biāo)檢測(cè)的整個(gè)過(guò)程有三個(gè)模型:
用于特征提取的CNN
用于目標(biāo)物體辨別的線性SVM分類器
調(diào)整邊界框的回歸模型。
這些過(guò)程合并在一起,會(huì)讓RCNN的速度變慢,通常每個(gè)新圖片需要40—50秒的時(shí)間進(jìn)行預(yù)測(cè),基本上無(wú)法處理大型數(shù)據(jù)集。
所以,這里我們介紹另一種能突破這些限制的目標(biāo)檢測(cè)技術(shù)。
3. Fast RCNN
3.1 Fast RCNN簡(jiǎn)介
想要減少RCNN算法的計(jì)算時(shí)間,可以用什么方法?我們可不可以在每張圖片上只使用一次CNN即可得到全部的重點(diǎn)關(guān)注區(qū)域呢,而不是運(yùn)行2000次。
RCNN的作者Ross Girshick提出了一種想法,在每張照片上只運(yùn)行一次CNN,然后找到一種方法在2000個(gè)區(qū)域中進(jìn)行計(jì)算。在Fast RCNN中,我們將圖片輸入到CNN中,會(huì)相應(yīng)地生成傳統(tǒng)特征映射。利用這些映射,就能提取出感興趣區(qū)域。之后,我們使用一個(gè)Rol池化層將所有提出的區(qū)域重新修正到合適的尺寸,以輸入到完全連接的網(wǎng)絡(luò)中。
簡(jiǎn)單地說(shuō),這一過(guò)程含有以下步驟:
輸入圖片。
輸入到卷積網(wǎng)絡(luò)中,它生成感興趣區(qū)域。
利用Rol池化層對(duì)這些區(qū)域重新調(diào)整,將其輸入到完全連接網(wǎng)絡(luò)中。
在網(wǎng)絡(luò)的頂層用softmax層輸出類別。同樣使用一個(gè)線性回歸層,輸出相對(duì)應(yīng)的邊界框。
所以,和RCNN所需要的三個(gè)模型不同,F(xiàn)ast RCNN只用了一個(gè)模型就同時(shí)實(shí)現(xiàn)了區(qū)域的特征提取、分類、邊界框生成。
同樣,我們還用上面的圖像作為案例,進(jìn)行更直觀的講解。
首先,輸入圖像:
圖像被傳遞到卷積網(wǎng)絡(luò)中,返回感興趣區(qū)域:
之后,在區(qū)域上應(yīng)用Rol池化層,保證每個(gè)區(qū)域的尺寸相同:
最后,這些區(qū)域被傳遞到一個(gè)完全連接的網(wǎng)絡(luò)中進(jìn)行分類,并用softmax和線性回歸層同時(shí)返回邊界框:
3.2 Fast RCNN的問(wèn)題
但是即使這樣,F(xiàn)ast RCNN也有某些局限性。它同樣用的是選擇性搜索作為尋找感興趣區(qū)域的,這一過(guò)程通常較慢。與RCNN不同的是,F(xiàn)ast RCNN處理一張圖片大約需要2秒。但是在大型真實(shí)數(shù)據(jù)集上,這種速度仍然不夠理想。
4.Faster RCNN
4.1 Faster RCNN簡(jiǎn)介
Faster RCNN是Fast RCNN的優(yōu)化版本,二者主要的不同在于感興趣區(qū)域的生成方法,F(xiàn)ast RCNN使用的是選擇性搜索,而Faster RCNN用的是Region Proposal網(wǎng)絡(luò)(RPN)。RPN將圖像特征映射作為輸入,生成一系列object proposals,每個(gè)都帶有相應(yīng)的分?jǐn)?shù)。
下面是Faster RCNN工作的大致過(guò)程:
輸入圖像到卷積網(wǎng)絡(luò)中,生成該圖像的特征映射。
在特征映射上應(yīng)用Region Proposal Network,返回object proposals和相應(yīng)分?jǐn)?shù)。
應(yīng)用Rol池化層,將所有proposals修正到同樣尺寸。
最后,將proposals傳遞到完全連接層,生成目標(biāo)物體的邊界框。
那么Region Proposal Network具體是如何工作的呢?首先,將CNN中得來(lái)的特征映射輸入到Faster RCNN中,然后將其傳遞到Region Proposal Network中。RPN會(huì)在這些特征映射上使用一個(gè)滑動(dòng)窗口,每個(gè)窗口會(huì)生成具有不同形狀和尺寸的k個(gè)anchor box:
Anchor boxes是固定尺寸的邊界框,它們有不同的形狀和大小。對(duì)每個(gè)anchor,RPN都會(huì)預(yù)測(cè)兩點(diǎn):
首先是anchor就是目標(biāo)物體的概率(不考慮類別)
第二個(gè)就是anchor經(jīng)過(guò)調(diào)整能更合適目標(biāo)物體的邊界框回歸量
現(xiàn)在我們有了不同形狀、尺寸的邊界框,將它們傳遞到Rol池化層中。經(jīng)過(guò)RPN的處理,proposals可能沒(méi)有所述的類別。我們可以對(duì)每個(gè)proposal進(jìn)行切割,讓它們都含有目標(biāo)物體。這就是Rol池化層的作用。它為每個(gè)anchor提取固定尺寸的特征映射:
之后,這些特征映射會(huì)傳遞到完全連接層,對(duì)目標(biāo)進(jìn)行分類并預(yù)測(cè)邊界框。
4.2 Faster RCNN的問(wèn)題
目前為止,我們所討論的所有目標(biāo)檢測(cè)算法都用區(qū)域來(lái)辨別目標(biāo)物體。網(wǎng)絡(luò)并非一次性瀏覽所有圖像,而是關(guān)注圖像的多個(gè)部分。這就會(huì)出現(xiàn)兩個(gè)問(wèn)題:
算法需要讓圖像經(jīng)過(guò)多個(gè)步驟才能提取出所有目標(biāo)
由于有多個(gè)步驟嵌套,系統(tǒng)的表現(xiàn)常常取決于前面步驟的表現(xiàn)水平
5. 上述算法總結(jié)
下表對(duì)本文中提到的算法做了總結(jié):
目標(biāo)檢測(cè)是很有趣的領(lǐng)域,在商業(yè)中也大有前景。得益于現(xiàn)代硬件和計(jì)算資源的發(fā)展,才能讓這一技術(shù)有重要的突破。
本文只是目標(biāo)檢測(cè)算法的開(kāi)門介紹,在下一篇文章中,我們會(huì)講解YOLO、RetinaNet這樣更流行的算法,請(qǐng)繼續(xù)關(guān)注!
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4838瀏覽量
107753 -
算法
+關(guān)注
關(guān)注
23文章
4784瀏覽量
98042 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5598瀏覽量
124396
原文標(biāo)題:基礎(chǔ)目標(biāo)檢測(cè)算法介紹(一):CNN、RCNN、Fast RCNN和Faster RCNN
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
穿孔機(jī)頂頭檢測(cè)儀 機(jī)器視覺(jué)深度學(xué)習(xí)
【團(tuán)購(gòu)】獨(dú)家全套珍藏!龍哥LabVIEW視覺(jué)深度學(xué)習(xí)實(shí)戰(zhàn)課(11大系列課程,共5000+分鐘)
【團(tuán)購(gòu)】獨(dú)家全套珍藏!龍哥LabVIEW視覺(jué)深度學(xué)習(xí)實(shí)戰(zhàn)課程(11大系列課程,共5000+分鐘)
電壓放大器在全導(dǎo)波場(chǎng)圖像目標(biāo)識(shí)別的損傷檢測(cè)實(shí)驗(yàn)的應(yīng)用
如何深度學(xué)習(xí)機(jī)器視覺(jué)的應(yīng)用場(chǎng)景
廣和通發(fā)布端側(cè)目標(biāo)檢測(cè)模型FiboDet
基于EVS事件感知的超低功耗多目標(biāo)檢測(cè)追蹤 #超低功耗視覺(jué) #深度學(xué)習(xí) #機(jī)器學(xué)習(xí) #人工智能 #evs
如何在機(jī)器視覺(jué)中部署深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)
諧波怎么處理最簡(jiǎn)單的方法
【嘉楠堪智K230開(kāi)發(fā)板試用體驗(yàn)】01 Studio K230開(kāi)發(fā)板Test2——手掌,手勢(shì)檢測(cè),字符檢測(cè)
基于LockAI視覺(jué)識(shí)別模塊:C++目標(biāo)檢測(cè)
提高IT運(yùn)維效率,深度解讀京東云AIOps落地實(shí)踐(異常檢測(cè)篇)
基于RK3576開(kāi)發(fā)板的車輛檢測(cè)算法
labview調(diào)用yolo目標(biāo)檢測(cè)、分割、分類、obb
行業(yè)首創(chuàng):基于深度學(xué)習(xí)視覺(jué)平臺(tái)的AI驅(qū)動(dòng)輪胎檢測(cè)自動(dòng)化
利用深度學(xué)習(xí)解決目標(biāo)檢測(cè)任務(wù)的簡(jiǎn)單方法
評(píng)論