當前位置:編程學習大全網 - 源碼下載 - 目標檢測算法的求解:RCNN系列算法解讀

目標檢測算法的求解:RCNN系列算法解讀

姓名:王誌毅

學號:19021211150。

嵌入式牛導CNN如此受歡迎,其衍生算法層出不窮,各種衍生算法也可以應用到各種應用場景和場合。本文旨在了解各種衍生算法的使用場景、原理和方法。

嵌入牛鼻RCNN的目標檢測

RCNN系列算法有什麽區別和聯系?

鑲嵌牛文字

在生活中,我們經常會遇到這樣的情況。出門辦事,突然找不到東西,比如鑰匙,手機,手表。這個時候,我通常會翻遍房間的每個角落,尋找丟失的物品。最後我突然拍了拍腦袋,想到在某個地方,整個過程中我有時候會很著急,越著急越找不到。這真的令人沮喪。但是如果壹個簡單的計算機算法能在幾毫秒內找到妳要找的東西,妳有什麽感覺?是不是很神奇!這就是物體檢測算法的威力。雖然上面提到的生活例子只是壹個非常簡單的例子,但物體檢測的應用範圍非常廣泛,跨越了許多不同的行業,從全天候監控到智能城市中的實時車輛檢測。簡而言之,物體檢測是強大的深度學習算法的壹個分支。

在本文中,我們將討論各種算法,可用於對象檢測。首先從屬於RCNN系列的算法開始,即RCNN、快速RCNN、快速RCNN。在後面的文章中,將介紹更高級的算法,如YOLO和SSD。

1.解決對象檢測任務的簡單方法(使用深度學習)

下圖說明了對象檢測算法如何工作。圖像中的每壹個物體,從人到風箏,都以壹定的準確度被定位和識別。

先說最簡單的深度學習方法,壹種廣泛應用於檢測圖像的方法——卷積神經網絡(CNN)。如果讀者對CNN算法有點陌生,推薦閱讀這篇文章。

以下是CNN內部運作的簡要總結:

首先將圖像作為輸入傳輸到網絡,然後經過各種卷積和池層處理,最後以對象類別的形式得到輸出。

對於每個輸入圖像,將獲得相應的類別作為輸出。因此,該技術可用於檢測圖像中的各種物體。

1.首先,把圖像作為輸入;

2.然後,將圖像分成不同的區域;

3.然後,將每個區域視為壹個單獨的圖像;

4.把這些區域都傳給CNN,分門別類;

5.壹旦每個區域被分成相應的類,所有這些區域可以被組合以獲得具有被檢測對象的原始圖像:

使用這種方法將面臨圖像中的對象可以具有不同的縱橫比和空間位置的問題。例如,在某些情況下,對象可能覆蓋圖像的大部分,而在其他情況下,對象可能僅覆蓋圖像的壹小部分,並且對象的形狀可能不同。

基於此,需要劃分大量的區域,這會耗費大量的計算時間。因此,為了解決這個問題並減少區域的數量,可以使用基於區域的CNN,它使用所提出的方法來選擇區域。

2.基於區域的卷積神經網絡

2.1 RCNN的思想

RCNN算法並不對大量區域起作用,而是在圖像中提出壹堆盒子,並檢查這些盒子中是否包含任何對象。RCNN使用選擇性搜索從圖像中提取這些框。

下面描述選擇性搜索以及它如何識別不同的區域。基本上,四個區域構成了壹個物體:不同的比例、顏色、紋理和形狀。選擇性搜索識別圖像中的這些模式,並基於它們提出各種區域。以下是選擇性搜索工作原理的簡要概述:

首先,將圖像作為輸入:

然後,它生成初始子片段以獲得多個區域:

之後,該技術將相似的區域組合起來形成更大的區域(基於顏色相似性、紋理相似性、大小相似性和形狀兼容性):

最後,這些區域產生最終的對象位置(感興趣區域);

以下是RCNN檢測對象所遵循的步驟的簡要總結:

1.首先,采用預訓練的卷積神經網絡;

2.再訓練模型——根據待檢測類別的數量訓練網絡的最後壹層(遷移學習);

3.第三步是獲取每幅圖像的感興趣區域。然後,調整這些區域的大小,使它們能夠匹配CNN輸入的大小;

4.獲得區域後,利用SVM算法對目標和背景進行分類。對於每個類,壹個二進制SVM;是訓練出來的;

最後,訓練線性回歸模型來為圖像中每個識別的對象生成更嚴格的邊界框。

【上述步驟的圖形分析】(n-slides.pdf):

首先,將圖像作為輸入:

然後,使用壹些提議的方法(例如,選擇性搜索)獲得感興趣區域(ROI):

之後,調整所有這些區域的大小,並將每個區域傳遞給卷積神經網絡:

然後,CNN提取每個區域的特征,並使用SVM將這些區域分成不同的類別:

最後,使用包圍盒回歸(Bbox reg)來預測每個識別區域的包圍盒:

以上是RCNN檢測物體的全過程。

2.2 rcnn的問題

從上壹節我們可以知道RCNN是如何檢測物體的,但是這種技術有自己的局限性。以下原因使得訓練RCNN模型昂貴且緩慢:

基於選擇性搜索算法為每幅圖像提取2000個候選區域;

使用CNN提取每個圖像區域的特征;

RCNN在整個對象檢測過程中使用三個模型:

CNN模型用於特征提取;

線性svm分類器用於識別物體的類別;

回歸模型用於收緊包圍盒;

這些過程的結合使得RCNN非常慢,預測每個新圖像大約需要40-50秒,這實際上使模型變得復雜,在龐大的數據集面前幾乎無法應用。

好消息是,還有另壹種對象檢測技術,它解決了RCNN中的大多數問題。

3.了解快速RCNN

3.1快速RCNN的思想

RCNN的提出者Ross Girshick提出了每幅圖像只運行壹次CNN的想法,然後找到了在2000個區域內享受計算的方法。在快速RCNN中,輸入圖像饋入CNN,CNN生成卷積特征圖。這些特征圖用於提取候選區域。然後,通過使用RoI pooling層將所有建議的區域重新調整為固定大小,以便將它們饋送到完全連接的網絡中。

讓我們將它分解成幾個步驟來簡化概念:

1.首先,把圖像作為輸入;

2.將圖像傳遞到卷積神經網絡以生成感興趣區域;

3.在所有感興趣的區域應用RoI合並層,並調整區域的大小。然後,每個區域轉移到全連接層的網絡;

4.softmax層用於將整個網絡連接到輸出類別。與softmax圖層壹起,線性回歸圖層也用於並行輸出預測類的邊界框坐標。

因此,快速RCNN算法不是使用三個不同的模型,而是使用單個模型從區域中提取特征,並將其分成不同的類,同時返回被識別類的包圍盒。

直觀解釋上述過程:

將圖像作為輸入:

將圖像傳遞給卷積神經網絡T,它相應地返回感興趣的區域:

然後,將RoI pool層應用於提取的感興趣區域,以確保所有區域具有相同的大小:

最後,使用softmax和線性回歸圖層將這些區域傳輸到完全連接的網絡、分類並返回到邊界框:

以上過程展示了RCNN如何快速解決RCNN的兩個主要問題,即每幅圖像中的1個區域轉移到卷積神經網絡中,用壹個模型進行特征提取、分類和生成包圍盒。

3.2 fastrcnn的問題

快速RCNN也有壹些問題。它仍然使用選擇性搜索作為建議的方法來找到感興趣的區域,這是壹個緩慢而耗時的過程,每幅圖像檢測壹個對象大約需要2秒鐘。

因此,另壹種目標檢測算法——快速RCNN被開發出來。

更快地了解RCNN

4.1.更快的RCNN的想法

快速RCNN是快速RCNN的改進版本。兩者的主要區別在於,FAST RCNN使用選擇性搜索生成感興趣區域,而Fast RCNN使用“區域提議網絡”,即RPN。RPN以圖像特征映射為輸入,生成壹組提議對象,每個對象提議以對象得分為輸出。

以下步驟通常采用更快的RCNN方法:

1.把圖像作為輸入,傳給卷積神經網絡,卷積神經網絡返回圖像的特征圖;

2.將RPN應用於這些特征圖,並返回建議的對象及其分數;

3.對這些建議對象應用RoI池層,以將所有建議縮減到相同的大小;

4.最後,將建議傳遞給全連接層,該層的頂部有壹個softmax層和壹個線性回歸層,用於分類和輸出對象的包圍盒;

以下是RPN工作原理的簡要說明:

首先,更快的RCNN從CNN獲取特征圖,並發送給區域求婚網絡。RPN在這些特征圖上使用滑動窗口,每個窗口生成K個不同形狀和大小的錨盒:

框是固定大小的邊界框,具有不同的形狀和大小。對於每個盒子,RPN預測兩件事:

預測錨是物體的概率;

邊界框回歸調整錨點以更好地適應對象的形狀;

在具有不同形狀和大小的邊界框之後,它們被傳遞到RoI pool層。剪切每個建議,使每個建議包含壹個對象。這就是RoI pool層的工作,它為每個框提取壹個固定大小的特征圖:

然後將這些特征圖轉移到全連通層,全連通層有softmax和線性回歸層,最後對物體進行分類,預測出被識別物體的包圍盒。

4.2快速RCNN的問題

上面討論的物體檢測算法都是用區域來識別物體,網絡不會壹下子看完整個圖像,而是按順序關註圖像的某個部分,這樣會帶來兩個復雜的問題:

該算法需要多次從單幅圖像中提取所有對象;

因為不是端到端的算法,不同的系統相繼工作,整體系統的性能進壹步取決於前壹個系統的性能。

鏈接:/p/51fc039ae7a4

  • 上一篇:大話西遊有幾集啊?
  • 下一篇:急求:編譯原理判斷文法類型的C語言源代碼!!!!!!
  • copyright 2024編程學習大全網