當前位置:編程學習大全網 - 源碼下載 - 目標檢測算法圖解:壹文看懂RCNN系列算法

目標檢測算法圖解:壹文看懂RCNN系列算法

姓名:王咫毅

學號:19021211150

嵌牛導讀CNN如此風靡,其衍生算法也是層出不窮,各種衍生算法也可以應用於各種應用場景,各類場合。本文則是了解每個衍生算法的各個使用場景、原理及方法。

嵌牛鼻子RCNN 目標檢測

嵌牛提問RCNN系列算法有何區別和聯系?

嵌牛正文

在生活中,經常會遇到這樣的壹種情況,上班要出門的時候,突然找不到壹件東西了,比如鑰匙、手機或者手表等。這個時候壹般在房間翻壹遍各個角落來尋找不見的物品,最後突然壹拍大腦,想到在某壹個地方,在整個過程中有時候是很著急的,並且越著急越找不到,真是令人沮喪。但是,如果壹個簡單的計算機算法可以在幾毫秒內就找到妳要找的物品,妳的感受如何?是不是很驚奇!這就是對象檢測算法(object detection)的力量。雖然上述舉的生活例子只是壹個很簡單的例子,但對象檢測的應用範圍很廣,跨越多個不同的行業,從全天候監控到智能城市的實時車輛檢qian測等。簡而言之,物體檢測是強大的深度學習算法中的壹個分支。

在本文中,我們將深入探討可以用於對象檢測的各種算法。首先從屬於RCNN系列算法開始,即RCNN、 Fast RCNN和 Faster 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模型既昂貴又緩慢:

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

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

RCNN整個物體檢測過程用到三種模型:

CNN模型用於特征提取;

線性svm分類器用於識別對象的的類別;

回歸模型用於收緊邊界框;

這些過程相結合使得RCNN非常慢,對每個新圖像進行預測需要大約40-50秒,這實際上使得模型在面對巨大的數據集時變得復雜且幾乎不可能應用。

好消息是存在另壹種物體檢測技術,它解決了RCNN中大部分問題。

3.了解Fast RCNN

3.1Fast RCNN的思想

RCNN的提出者Ross Girshick提出了這樣的想法,即每個圖像只運行壹次CNN,然後找到壹種在2,000個區域內***享該計算的方法。在Fast RCNN中,將輸入圖像饋送到CNN,CNN生成卷積特征映射。使用這些特征圖提取候選區域。然後,使用RoI池化層將所有建議的區域重新整形為固定大小,以便將其饋送到全連接網絡中。

下面將其分解為簡化概念的步驟:

1.首先將圖像作為輸入;

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

3.在所有的感興趣的區域上應用RoI池化層,並調整區域的尺寸。然後,每個區域被傳遞到全連接層的網絡中;

4.softmax層用於全連接網以輸出類別。與softmax層壹起,也並行使用線性回歸層,以輸出預測類的邊界框坐標。

因此,Fast RCNN算法中沒有使用三個不同的模型,而使用單個模型從區域中提取特征,將它們分成不同的類,並同時返回所標識類的邊界框。

對上述過程進行可視化講解:

將圖像作為輸入:

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

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

最後,這些區域被傳遞到壹個全連接網絡,對其進行分類,並同時使用softmax和線性回歸層返回邊界框:

上述過程說明了Fast RCNN是如何解決RCNN的兩個主要問題,即將每個圖像中的1個而不是2,000個區域傳遞給卷積神經網絡,並使用壹個模型來實現提取特征、分類和生成邊界框。

3.2Fast RCNN的問題

Fast RCNN也存在壹定的問題,它仍然使用選擇性搜索作為查找感興趣區域的提議方法,這是壹個緩慢且耗時的過程,每個圖像檢測對象大約需要2秒鐘。

因此,又開發了另壹種物體檢測算法——Faster RCNN。

4.了解Faster RCNN

4.1. Faster RCNN的思想

Faster RCNN是Fast RCNN的修改版本,二者之間的主要區別在於,Fast RCNN使用選擇性搜索來生成感興趣區域,而Faster RCNN使用“區域提議網絡”,即RPN。RPN將圖像特征映射作為輸入,並生成壹組提議對象,每個對象提議都以對象分數作為輸出。

以下步驟通常采用Faster RCNN方法:

1.將圖像作為輸入並將其傳遞給卷積神經網絡,後者返回該圖像的特征圖;

2.在這些特征圖上應用RPN,返回提議對象及其分數;

3.在這些提議對象上應用RoI池層,以將所有提案降低到相同的大小;

4.最後,將提議傳遞到全連接層,該層在其頂部具有softmax層和線性回歸層,以對對象的邊界框進行分類和輸出;

這裏簡要解釋壹下RPN是如何運作的:

首先,Faster RCNN從CNN獲取特征圖並將它們傳遞到區域提議網絡。RPN在這些特征圖上使用滑動窗口,每個窗口生成不同形狀和大小的k個方框( Anchor boxe):

方框是固定尺寸的邊界箱,具有不同的形狀和尺寸。對於每個方框,RPN預測兩件事:

預測錨是對象的概率;

用於邊界框回歸器調整錨點以更好地適合物體的形狀;

在有了不同形狀和大小的邊界框後,將其傳遞到RoI池層。對每個提案並對其進行裁剪,以便每個提案都包含壹個對象。這就是RoI池層所做的事情,它為每個方框提取固定大小的特征圖:

然後將這些特征圖傳遞到全連接層,該層具有softmax和線性回歸層,最終對對象進行分類並預測已識別對象的邊界框。

4.2Faster RCNN的問題

上述討論過的所有對象檢測算法都使用區域來識別對象,且網絡不會壹次查看完整圖像,而是按順序關註圖像的某些部分,這樣會帶來兩個復雜性的問題:

該算法需要多次通過單個圖像來提取到所有對象;

由於不是端到端的算法,不同的系統壹個接壹個地工作,整體系統的性能進壹步取決於先前系統的表現效果。

鏈接: /p/51fc039ae7a4

  • 上一篇:imtoken安全可靠嗎
  • 下一篇:《鏡·織夢者2》txt全集下載
  • copyright 2024編程學習大全網