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