當前位置:首頁 » 操作系統 » fast演算法

fast演算法

發布時間: 2023-05-20 02:36:49

A. 目標檢測演算法(R-CNN,fast R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3)

深度學習目前已經應用到了各個領域,應用場景大體分為三類:物體識別,目標檢測,自然語言處理。  目標檢測可以理解為是物體識別和物體定位的綜合 ,不僅僅要識別出物體屬於哪個分類,更重要的是得到物體在圖片中的具體位置。

2014年R-CNN演算法被提出,基本奠定了two-stage方式在目標檢測領域的應用。它的演算法結構如下圖

演算法步驟如下:

R-CNN較傳統的目標檢測演算法獲得了50%的性能提升,在使用VGG-16模型作為物體識別模型情況下,在voc2007數據集上可以取得66%的准確率,已經算還不錯的一個成績了。其最大的問題是速度很慢,內存佔用量很大,主要原因有兩個

針對R-CNN的部分問題,2015年微軟提出了Fast R-CNN演算法,它主要優化了兩個問題。

R-CNN和fast R-CNN均存在一個問題,那就是 由選擇性搜索來生成候選框,這個演算法很慢 。而且R-CNN中生成的2000個左右的候選框全部需要經過一次卷積神經網路,也就是需要經過2000次左右的CNN網路,這個是十分耗時的(fast R-CNN已經做了改進,只需要對整圖經過一次CNN網路)。這也是導致這兩個演算法檢測速度較慢的最主要原因。

faster R-CNN 針對這個問題, 提出了RPN網路來進行候選框的獲取,從而擺脫了選擇性搜索演算法,也只需要一次卷積層操作,從而大大提高了識別速度 。這個演算法十分復雜,我們會詳細分析。它的基本結構如下圖

主要分為四個步驟:

使用VGG-16卷積模型的網路結構:

卷積層採用的VGG-16模型,先將PxQ的原始圖片,縮放裁剪為MxN的圖片,然後經過13個conv-relu層,其中會穿插4個max-pooling層。所有的卷積的kernel都是3x3的,padding為1,stride為1。pooling層kernel為2x2, padding為0,stride為2。

MxN的圖片,經過卷積層後,變為了(M/16) x (N/16)的feature map了。

faster R-CNN拋棄了R-CNN中的選擇性搜索(selective search)方法,使用RPN層來生成候選框,能極大的提升候選框的生成速度。RPN層先經過3x3的卷積運算,然後分為兩路。一路用來判斷候選框是前景還是背景,它先reshape成一維向量,然後softmax來判斷是前景還是背景,然後reshape恢復為二維feature map。另一路用來確定候選框的位置,通過bounding box regression實現,後面再詳細講。兩路計算結束後,挑選出前景候選框(因為物體在前景中),並利用計算得到的候選框位置,得到我們感興趣的特徵子圖proposal。

卷積層提取原始圖像信息,得到了256個feature map,經過RPN層的3x3卷積後,仍然為256個feature map。但是每個點融合了周圍3x3的空間信息。對每個feature map上的一個點,生成k個anchor(k默認為9)。anchor分為前景和背景兩類(我們先不去管它具體是飛機還是汽車,只用區分它是前景還是背景即可)。anchor有[x,y,w,h]四個坐標偏移量,x,y表示中心點坐標,w和h表示寬度和高度。這樣,對於feature map上的每個點,就得到了k個大小形狀各不相同的選區region。

對於生成的anchors,我們首先要判斷它是前景還是背景。由於感興趣的物體位於前景中,故經過這一步之後,我們就可以舍棄背景anchors了。大部分的anchors都是屬於背景,故這一步可以篩選掉很多無用的anchor,從而減少全連接層的計算量。

對於經過了3x3的卷積後得到的256個feature map,先經過1x1的卷積,變換為18個feature map。然後reshape為一維向量,經過softmax判斷是前景還是背景。此處reshape的唯一作用就是讓數據可以進行softmax計算。然後輸出識別得到的前景anchors。

另一路用來確定候選框的位置,也就是anchors的[x,y,w,h]坐標值。如下圖所示,紅色代表我們當前的選區,綠色代表真實的選區。雖然我們當前的選取能夠大概框選出飛機,但離綠色的真實位置和形狀還是有很大差別,故需要對生成的anchors進行調整。這個過程我們稱為bounding box regression。

假設紅色框的坐標為[x,y,w,h], 綠色框,也就是目標框的坐標為[Gx, Gy,Gw,Gh], 我們要建立一個變換,使得[x,y,w,h]能夠變為[Gx, Gy,Gw,Gh]。最簡單的思路是,先做平移,使得中心點接近,然後進行縮放,使得w和h接近。如下:

我們要學習的就是dx dy dw dh這四個變換。由於是線性變換,我們可以用線性回歸來建模。設定loss和優化方法後,就可以利用深度學習進行訓練,並得到模型了。對於空間位置loss,我們一般採用均方差演算法,而不是交叉熵(交叉熵使用在分類預測中)。優化方法可以採用自適應梯度下降演算法Adam。

得到了前景anchors,並確定了他們的位置和形狀後,我們就可以輸出前景的特徵子圖proposal了。步驟如下:

1,得到前景anchors和他們的[x y w h]坐標。

2,按照anchors為前景的不同概率,從大到小排序,選取前pre_nms_topN個anchors,比如前6000個

3,剔除非常小的anchors。

4,通過NMS非極大值抑制,從anchors中找出置信度較高的。這個主要是為了解決選取交疊問題。首先計算每一個選區面積,然後根據他們在softmax中的score(也就是是否為前景的概率)進行排序,將score最大的選區放入隊列中。接下來,計算其餘選區與當前最大score選區的IOU(IOU為兩box交集面積除以兩box並集面積,它衡量了兩個box之間重疊程度)。去除IOU大於設定閾值的選區。這樣就解決了選區重疊問題。

5,選取前post_nms_topN個結果作為最終選區proposal進行輸出,比如300個。

經過這一步之後,物體定位應該就基本結束了,剩下的就是物體識別了。

和fast R-CNN中類似,這一層主要解決之前得到的proposal大小形狀各不相同,導致沒法做全連接。全連接計算只能對確定的shape進行運算,故必須使proposal大小形狀變為相同。通過裁剪和縮放的手段,可以解決這個問題,但會帶來信息丟失和圖片形變問題。我們使用ROI pooling可以有效的解決這個問題。

ROI pooling中,如果目標輸出為MxN,則在水平和豎直方向上,將輸入proposal劃分為MxN份,每一份取最大值,從而得到MxN的輸出特徵圖。

ROI Pooling層後的特徵圖,通過全連接層與softmax,就可以計算屬於哪個具體類別,比如人,狗,飛機,並可以得到cls_prob概率向量。同時再次利用bounding box regression精細調整proposal位置,得到bbox_pred,用於回歸更加精確的目標檢測框。

這樣就完成了faster R-CNN的整個過程了。演算法還是相當復雜的,對於每個細節需要反復理解。faster R-CNN使用resNet101模型作為卷積層,在voc2012數據集上可以達到83.8%的准確率,超過yolo ssd和yoloV2。其最大的問題是速度偏慢,每秒只能處理5幀,達不到實時性要求。

針對於two-stage目標檢測演算法普遍存在的運算速度慢的缺點, yolo創造性的提出了one-stage。也就是將物體分類和物體定位在一個步驟中完成。 yolo直接在輸出層回歸bounding box的位置和bounding box所屬類別,從而實現one-stage。通過這種方式, yolo可實現45幀每秒的運算速度,完全能滿足實時性要求 (達到24幀每秒,人眼就認為是連續的)。它的網路結構如下圖:

主要分為三個部分:卷積層,目標檢測層,NMS篩選層。

採用Google inceptionV1網路,對應到上圖中的第一個階段,共20層。這一層主要是進行特徵提取,從而提高模型泛化能力。但作者對inceptionV1進行了改造,他沒有使用inception mole結構,而是用一個1x1的卷積,並聯一個3x3的卷積來替代。(可以認為只使用了inception mole中的一個分支,應該是為了簡化網路結構)

先經過4個卷積層和2個全連接層,最後生成7x7x30的輸出。先經過4個卷積層的目的是為了提高模型泛化能力。yolo將一副448x448的原圖分割成了7x7個網格,每個網格要預測兩個bounding box的坐標(x,y,w,h)和box內包含物體的置信度confidence,以及物體屬於20類別中每一類的概率(yolo的訓練數據為voc2012,它是一個20分類的數據集)。所以一個網格對應的參數為(4x2+2+20) = 30。如下圖

其中前一項表示有無人工標記的物體落入了網格內,如果有則為1,否則為0。第二項代表bounding box和真實標記的box之間的重合度。它等於兩個box面積交集,除以面積並集。值越大則box越接近真實位置。

分類信息: yolo的目標訓練集為voc2012,它是一個20分類的目標檢測數據集 。常用目標檢測數據集如下表:

| Name | # Images (trainval) | # Classes | Last updated |

| --------------- | ------------------- | --------- | ------------ |

| ImageNet | 450k | 200 | 2015 |

| COCO | 120K | 90 | 2014 |

| Pascal VOC | 12k | 20 | 2012 |

| Oxford-IIIT Pet | 7K | 37 | 2012 |

| KITTI Vision | 7K | 3 | |

每個網格還需要預測它屬於20分類中每一個類別的概率。分類信息是針對每個網格的,而不是bounding box。故只需要20個,而不是40個。而confidence則是針對bounding box的,它只表示box內是否有物體,而不需要預測物體是20分類中的哪一個,故只需要2個參數。雖然分類信息和confidence都是概率,但表達含義完全不同。

篩選層是為了在多個結果中(多個bounding box)篩選出最合適的幾個,這個方法和faster R-CNN 中基本相同。都是先過濾掉score低於閾值的box,對剩下的box進行NMS非極大值抑制,去除掉重疊度比較高的box(NMS具體演算法可以回顧上面faster R-CNN小節)。這樣就得到了最終的最合適的幾個box和他們的類別。

yolo的損失函數包含三部分,位置誤差,confidence誤差,分類誤差。具體公式如下:

誤差均採用了均方差演算法,其實我認為,位置誤差應該採用均方差演算法,而分類誤差應該採用交叉熵。由於物體位置只有4個參數,而類別有20個參數,他們的累加和不同。如果賦予相同的權重,顯然不合理。故yolo中位置誤差權重為5,類別誤差權重為1。由於我們不是特別關心不包含物體的bounding box,故賦予不包含物體的box的置信度confidence誤差的權重為0.5,包含物體的權重則為1。

Faster R-CNN准確率mAP較高,漏檢率recall較低,但速度較慢。而yolo則相反,速度快,但准確率和漏檢率不盡人意。SSD綜合了他們的優缺點,對輸入300x300的圖像,在voc2007數據集上test,能夠達到58 幀每秒( Titan X 的 GPU ),72.1%的mAP。

SSD網路結構如下圖:

和yolo一樣,也分為三部分:卷積層,目標檢測層和NMS篩選層

SSD論文採用了VGG16的基礎網路,其實這也是幾乎所有目標檢測神經網路的慣用方法。先用一個CNN網路來提取特徵,然後再進行後續的目標定位和目標分類識別。

這一層由5個卷積層和一個平均池化層組成。去掉了最後的全連接層。SSD認為目標檢測中的物體,只與周圍信息相關,它的感受野不是全局的,故沒必要也不應該做全連接。SSD的特點如下。

每一個卷積層,都會輸出不同大小感受野的feature map。在這些不同尺度的feature map上,進行目標位置和類別的訓練和預測,從而達到 多尺度檢測 的目的,可以克服yolo對於寬高比不常見的物體,識別准確率較低的問題。而yolo中,只在最後一個卷積層上做目標位置和類別的訓練和預測。這是SSD相對於yolo能提高准確率的一個關鍵所在。

如上所示,在每個卷積層上都會進行目標檢測和分類,最後由NMS進行篩選,輸出最終的結果。多尺度feature map上做目標檢測,就相當於多了很多寬高比例的bounding box,可以大大提高泛化能力。

和faster R-CNN相似,SSD也提出了anchor的概念。卷積輸出的feature map,每個點對應為原圖的一個區域的中心點。以這個點為中心,構造出6個寬高比例不同,大小不同的anchor(SSD中稱為default box)。每個anchor對應4個位置參數(x,y,w,h)和21個類別概率(voc訓練集為20分類問題,在加上anchor是否為背景,共21分類)。如下圖所示:

另外,在訓練階段,SSD將正負樣本比例定位1:3。訓練集給定了輸入圖像以及每個物體的真實區域(ground true box),將default box和真實box最接近的選為正樣本。然後在剩下的default box中選擇任意一個與真實box IOU大於0.5的,作為正樣本。而其他的則作為負樣本。由於絕大部分的box為負樣本,會導致正負失衡,故根據每個box類別概率排序,使正負比例保持在1:3。SSD認為這個策略提高了4%的准確率

另外,SSD採用了數據增強。生成與目標物體真實box間IOU為0.1 0.3 0.5 0.7 0.9的patch,隨機選取這些patch參與訓練,並對他們進行隨機水平翻轉等操作。SSD認為這個策略提高了8.8%的准確率。

和yolo的篩選層基本一致,同樣先過濾掉類別概率低於閾值的default box,再採用NMS非極大值抑制,篩掉重疊度較高的。只不過SSD綜合了各個不同feature map上的目標檢測輸出的default box。

SSD基本已經可以滿足我們手機端上實時物體檢測需求了,TensorFlow在Android上的目標檢測官方模型ssd_mobilenet_v1_android_export.pb,就是通過SSD演算法實現的。它的基礎卷積網路採用的是mobileNet,適合在終端上部署和運行。

針對yolo准確率不高,容易漏檢,對長寬比不常見物體效果差等問題,結合SSD的特點,提出了yoloV2。它主要還是採用了yolo的網路結構,在其基礎上做了一些優化和改進,如下

網路採用DarkNet-19:19層,裡麵包含了大量3x3卷積,同時借鑒inceptionV1,加入1x1卷積核全局平均池化層。結構如下

yolo和yoloV2隻能識別20類物體,為了優化這個問題,提出了yolo9000,可以識別9000類物體。它在yoloV2基礎上,進行了imageNet和coco的聯合訓練。這種方式充分利用imageNet可以識別1000類物體和coco可以進行目標位置檢測的優點。當使用imageNet訓練時,只更新物體分類相關的參數。而使用coco時,則更新全部所有參數。

YOLOv3可以說出來直接吊打一切圖像檢測演算法。比同期的DSSD(反卷積SSD), FPN(feature pyramid networks)准確率更高或相仿,速度是其1/3.。

YOLOv3的改動主要有如下幾點:

不過如果要求更精準的預測邊框,採用COCO AP做評估標準的話,YOLO3在精確率上的表現就弱了一些。如下圖所示。

當前目標檢測模型演算法也是層出不窮。在two-stage領域, 2017年Facebook提出了mask R-CNN 。CMU也提出了A-Fast-RCNN 演算法,將對抗學習引入到目標檢測領域。Face++也提出了Light-Head R-CNN,主要探討了 R-CNN 如何在物體檢測中平衡精確度和速度。

one-stage領域也是百花齊放,2017年首爾大學提出 R-SSD 演算法,主要解決小尺寸物體檢測效果差的問題。清華大學提出了 RON 演算法,結合 two stage 名的方法和 one stage 方法的優勢,更加關注多尺度對象定位和負空間樣本挖掘問題。

目標檢測領域的深度學習演算法,需要進行目標定位和物體識別,演算法相對來說還是很復雜的。當前各種新演算法也是層不出窮,但模型之間有很強的延續性,大部分模型演算法都是借鑒了前人的思想,站在巨人的肩膀上。我們需要知道經典模型的特點,這些tricks是為了解決什麼問題,以及為什麼解決了這些問題。這樣才能舉一反三,萬變不離其宗。綜合下來,目標檢測領域主要的難點如下:

一文讀懂目標檢測AI演算法:R-CNN,faster R-CNN,yolo,SSD,yoloV2

從YOLOv1到v3的進化之路

SSD-Tensorflow超詳細解析【一】:載入模型對圖片進行測試  https://blog.csdn.net/k87974/article/details/80606407

YOLO    https://pjreddie.com/darknet/yolo/      https://github.com/pjreddie/darknet   

C#項目參考:https://github.com/AlturosDestinations/Alturos.Yolo

項目實踐貼個圖。

B. OpenCV-Python教程:38.FAST角點檢測演算法

理論

我們看到了一些特徵檢測演算法,他們很多都不錯,但是從實時應用的角度看,他們都不夠快,一個最好的例子是SLAM(同步定位與地圖創建)移動機器人沒有足夠的計算能力。

作為解決方案,FAST(加速切片測試特徵)演算法被提出,Edward Rosten和Tom Drummond 2006年在他們的論文「Machine learning for high-speed corner detection」提出,並在2010年最後修訂,演算法的基本大意如下:

使用FAST進行特徵檢測

1.選擇一個圖像里的像素p用來識別是不是一個興趣點,它的強度是Ip

2.選擇一個合適的閾值t

3.在要測試的像素周圍找16個像素的圓

4.現在如果存在一個在圓內(16像素的)的n個連續像素集合,他們都比Ip + t要亮,或者都比Ip - t 要暗(用白虛線顯示),那p就是角, n取12。

5.用一個高速測試來排除大量非角。這個測試只檢查1,9,5和13位置的像素(首先1和9會測試是否他們太亮或者太暗,如果是,再檢查5和13)。如果p是角,那麼至少3個都比Ip+t要亮或者比Ip-t要暗,如果不是這樣,那麼p不可能是角。這個檢測器展現了高性能,但是有幾個缺陷:

·當n< 12時不能拒絕很多備選點

·像素的選擇不是可選的,因為它的效率依賴問題和角的分布。

·高速測試的結果被丟棄了

·會檢測出多個愛挨在一起的特徵

機器學習角點檢測

1.選擇一組圖像進行訓練(最好從目標應用范圍內)

2.運行FAST演算法來對每個圖像進行特徵點查找

3.對每個特徵點,存下周圍的16個像素作為向量。所有圖像做完以後得到特徵向量P。

4.這16個像素里的每個像素(設為x)可以有下面的三個狀態:

5.根據這些狀態,特徵向量P被分成3個子集,Pd, Ps, Pb.

6.定義個新的布爾變數Kp,如果p是角就是真反之為假。

7.使用ID3演算法(決策樹分類)來查詢每個子集,對於每個true類用變數Kp,它選擇x來得出一個備選像素是否是角的信息。

8.對所有子集迭代直到為0

9.創建的決策樹用來對其他圖形做fast檢測

非極大值抑制

在臨近位置檢測多個興趣點是另一個問題,可以使用非極大值抑制來解決。

1.計算一個分數函數,V是所有檢測到的特徵點,V是p和16個圍著的像素值得絕對差。

2.計算兩個相鄰關鍵點的V值

3.丟掉V值低的那個

總結:

它比其他存在的角點演算法要快幾倍

但是它對高噪點情況來說不健壯,依賴閾值

OpenCV里的FAST特徵檢測

它和其他OpenCV里的特徵檢測類似,如果你願意,你可以指定閾值,是否使用非極大值抑制,要用的鄰居等。

對於鄰居,定義了三個標志位, cv2.FAST_FEATURE_DETECTOR_TYPE_5_8, cv2.FAST_FEATURE_DETECTOR_TYPE_7_12和cv2.FAST_FEATURE_DETECTOR_TYPE_9_16.

看結果,第一個圖像顯示了使用了非極大值抑制的FAST,第二個是沒有使用非極大值抑制的。

END

C. fast的副詞有哪些

fast有形容詞與副詞來指運動的物體或運行的速度,quickly只能作為副詞來強調立刻行動毫不遲疑毫不耽擱。

一、fast詞彙分析

音標:英[fɑːst]美[fæst]

釋義:

adj. 快速的,迅速的;緊的,穩襲仔固的

adv. 迅速地;緊緊地;徹底地

vi. 禁食,齋戒

n. 齋戒;絕食

短語

as fast as和…一樣快

fast growth快速生長

fast response快速響應

fast algorithm快速演算法

拓展雙語例句

1、These apples are maturing fast.

這些蘋果正在快速成熟。

2、They fast on certain days.

他們在某些天齋戒。

3、The fast bowlers were brought on again after the interval.

在休息後快速投球手再次被要求出場投球。

二、quickly詞彙分析

音標:英['kwɪklɪ]美['kwɪkli]

釋義:迅速地;很快地

短語

answer quickly搶答字母組

quickly erase快速抹除

sit quickly安靜地坐

拓展雙語例句

1、I have done the errands quickly.

我很快幹完了這些差事。

2、The dough would sour quickly in such weather.

在這種天氣生面團會很快發酵。

3、If we do the work turn and turn about, we can finish it quickly.

如果我畝滾們輪換著做這個工作,迅禪余我們能很快地把它完成。

D. Fast SLAM演算法的核心思想是什麼

FastSLAM演算法的核心思想是:
SLAM(),也稱為CML(),即時定位與地圖構建,或並發建圖與定位。
問題可以描述為:將一個機器人放入未知環境中的未知位置,是否有辦法讓機器人一邊逐步描繪出此環境完全的地圖,同時一邊決定機器人應該往哪個方向行進。例如掃地機器人就是一個很典型的SLAM問題,所謂完全的地圖(aconsistentmap)是指不受障礙行進到房間可進入的每個角落。SLAM最早由Smith、Self和Cheeseman於1988年提出。由於其重要的理論與應用價值,被很多學者認為是實現真正全自主移動機器人的關鍵。

E. fast和quick的區別是什麼

1,詞性上面的區別。態含

fast既是形容詞,也是副詞。quick是形容詞,它的副詞形式是quickly。

2,強調重點不同。

fast強調速度快,強調的是「速度」。

比如:一輛汽車行駛的非常快(It's a very fast car),一個人跑的非常快(He runs very fast)。在此時,我們需要用fast來形容。

3,發音不同。

quickly

音標:英['kwɪklɪ]美['kwɪkli]

fast

音標:英[fɑːst]美[fæst]

(5)fast演算法擴展閱讀:

fast,quick的其他釋義,短語,例枝閉飢句:

fast的其他意思:

vi. 禁食,齋戒

n. 齋戒;絕食

短語:

as fast as和…一樣快

fast growth快速生長

fast response快速響應

fast algorithm快速演算法

例句:

1,These apples are maturing fast.

這些蘋果正在快速成熟。

2,They fast on certain days.

他們在某些天齋戒。

3,The fast bowlers were brought on again after the interval.

在休息後快速投球手再次被要求出場投球。

quick的其他釋義:無

短語:

answer quickly搶答字母組

quickly erase快速抹除

sit quickly安靜地坐

例句:

1,I have done the errands quickly.

我很快幹完了這些差事。

2,The dough would sour quickly in such weather.

在這種天氣生面團會很快發酵。

3,If we do the work turn and turn about, we can finish it quickly.

如果我們輪換著做這個工作,我們能很快地把它完成。

F. fast-ed中e代表

在fast-ed中,困螞者e代表的是汪薯「歐幾里得距離物絕」(Euclidean Distance)或稱為「L2范數」,它是常見的兩個點之間距離的度量方式。

G. R-CNN, Fast R-CNN, Faster R-CNN, YOLO:目標檢測演算法總結

參飢晌巧考鏈接

以下是文中涉及的演算法的謹旦最原始的文章:

一個最直接的解決辦法是從圖中取不同的感興趣區域,然後對這些區域用CNN進行分類,檢測這些區域中是否有物體的存在。
但是待檢測物體可能存在於圖片的不同位置而且有不同的長寬比例。所以以上方法需要選取量非常大的區域並需要非常大的計算量。

因此,R-CNN, Fast R-CNN, Faster R-CNN, YOLO被開發去又快又准地找物體。

為了解決上述提到的有大量區域被選擇的問題, Ross Girshick et al 提出了一種方法:用了選擇性搜索爛鍵從圖片提取了2000個區域,這些區域被稱為」region proposals「。

用這種辦法,我們不需要去分類巨大數量的區域了,我們只需要去處理2000個區域。這2000個區域是用如下的選擇性搜索演算法(selective search algorithm)來找到的:

這篇文章 介紹了更多關於選擇性搜索演算法(selective search algorithm)的內容。

RCNN步驟:

R-CNN存在的問題:

Fast R-CNN的幾個改進:
The same author of the previous paper(R-CNN) solved some of the drawbacks of R-CNN to build a faster object detection algorithm and it was called Fast R-CNN. The approach is similar to the R-CNN algorithm.

Fast R-CNN更快的原因是:

Fast R-CNN更快:
From the above graphs, you can infer that Fast R-CNN is significantly faster in training and testing sessions over R-CNN. When you look at the performance of Fast R-CNN ring testing time, including region proposals slows down the algorithm significantly when compared to not using region proposals. Therefore, region proposals become bottlenecks in Fast R-CNN algorithm affecting its performance.

上面兩個演算法的缺點:
selective search耗時
Both of the above algorithms(R-CNN & Fast R-CNN) uses selective search to find out the region proposals . Selective search is a slow and time-consuming process affecting the performance of the network.

Faster R-CNN的改進:
不用selective search去找region proposals;
用network去找region proposals;
Therefore, Shaoqing Ren et al . came up with an object detection algorithm that eliminates the selective search algorithm and lets the network learn the region proposals .

Faster R-CNN的步驟:

時間上的對比:
Faster R-CNN最快並且能用作實時目標檢測

之前幾種演算法的缺點:
產生region的時候沒有縱覽整幅圖。其實圖的某些部分有更高的可能性包含物體。
All of the previous object detection algorithms use regions to localize the object within the image. The network does not look at the complete image. Instead, parts of the image which have high probabilities of containing the object .

YOLO的思想:
用一個單獨的網路去預測bounding boxes和bounding boxes中存在物體的概率
YOLO or You Only Look Once is an object detection algorithm much different from the region based algorithms seen above.
In YOLO, a single convolutional network predicts (1) the bounding boxes and (2)the class probabilities for these boxes.

YOLO的具體步驟:
How YOLO works is that:

YOLO的優缺點:

H. 計算機視覺——典型的目標檢測演算法(Fast R-CNN演算法)(五)

【嵌牛導讀】目標檢測在現實中的應用很廣泛,我們需要檢測數字圖像中的物體位置以及類別,它需要我們構建一個模型,模型的輸入一張圖片,模型的輸出需要圈出圖片中所有物體的位置以及物體所屬的類別。在深度學習浪潮到來之前,目標檢測精度的進步十分緩慢,靠傳統依靠手工特徵的方法來提高精度已是相當困難的事。而ImageNet分類大賽出現的卷積神經網路(CNN)——AlexNet所展現的強大性能,吸引著學者們將CNN遷移到了其他的任務,這也包括著目標檢測任務,近年來,出現了很多目標檢測演算法。

【嵌牛鼻子】計算機視覺

【嵌牛提問】如何理解目標檢測演算法——Fast R-CNN

【嵌牛正文】

        為克服SPP-Net 存衡基在的問題,2015 年Girshick 等提出基於邊界框和多任務損失分類的Fast R-CNN[31]演算法。該演算法將SPP 層簡化,設計出單尺度的ROI Pooling 池化層結構;將整張圖像的候選區域采樣成固定大小,生成特徵圖後作SVD分解,通過RoI Pooling層得到Softmax的分類得分和BoundingBox 外接矩形框的窗口回歸兩個向量;用Softmax 代替SVM 提出多任務損失函數思想,將深度網路和SVM分類兩個階段整合,即將分類問題和邊框回歸問題進行合並。

演算法詳解:

Fast R-CNN的流程圖如下,網路有兩個輸入: 圖像和對應的region proposal 。其中region proposal由selective search方法得到,沒有表示在流程圖中。對每個類別都訓練一個回歸器,且只有非背景的region proposal才需要進行回歸。

ROI pooling:ROI Pooling的作用是對不同大小的region proposal,從最後卷積層輸出的feature map提取大小固定的feature map。簡單講可以看做是SPPNet的簡化版本,因為全連接層的輸入需要尺寸大小一樣,所以不能直接將不同大小的region proposal映射到feature map作為輸出,需要做尺寸變換。在文章中,VGG16網路使用搭中H=W=7的參數,即將一個h*w的region proposal分割成H*W大小的網格,然後知攔山將這個region proposal映射到最後一個卷積層輸出的feature map,最後計算每個網格里的最大值作為該網格的輸出,所以不管ROI pooling之前的feature map大小是多少,ROI pooling後得到的feature map大小都是H*W。

因此可以看出Fast RCNN主要有3個改進:1、卷積不再是對每個region proposal進行,而是直接對整張圖像,這樣減少了很多重復計算。原來RCNN是對每個region proposal分別做卷積,因為一張圖像中有2000左右的region proposal,肯定相互之間的重疊率很高,因此產生重復計算。2、用ROI pooling進行特徵的尺寸變換,因為全連接層的輸入要求尺寸大小一樣,因此不能直接把region proposal作為輸入。3、將regressor放進網路一起訓練,每個類別對應一個regressor,同時用softmax代替原來的SVM分類器。

在實際訓練中,每個mini-batch包含2張圖像和128個region proposal(或者叫ROI),也就是每張圖像有64個ROI。然後從這些ROI中挑選約25%的ROI,這些ROI和ground truth的IOU值都大於0.5。另外只採用隨機水平翻轉的方式增加數據集。

測試的時候則每張圖像大約2000個ROI。

損失函數的定義是將分類的loss和回歸的loss整合在一起,其中分類採用log loss,即對真實分類(下圖中的pu)的概率取負log,而回歸的loss和R-CNN基本一樣。分類層輸出K+1維,表示K個類和1個背景類。

這是回歸的loss,其中t^u表示預測的結果,u表示類別。v表示真實的結果,即bounding box regression target。

採用SVD分解改進全連接層。如果是一個普通的分類網路,那麼全連接層的計算應該遠不及卷積層的計算,但是針對object detection,Fast RCNN在ROI pooling後每個region proposal都要經過幾個全連接層,這使得全連接層的計算占網路的計算將近一半,如下圖,所以作者採用SVD來簡化全連接層的計算。另一篇博客鏈接講的R-FCN網路則是對這個全連接層計算優化的新的演算法。

稍微總結下訓練和測試的結構,如下面兩個圖,對演算法的理解會更清晰。

test結構圖在ROI Pooling層是怎麼輸出的畫得比較容易理解。

I. fasterrcnn為什麼比fastrcnn快

Fast R-CNN和Faster R-CNN都是目標檢測演算法。Fast R-CNN是在RCNN和SPPnet的基礎上提出的,而Faster R-CNN則是在Fast R-CNN的基礎上提出的,使得目標檢測的速度更快,同時保持了較高的檢測精度。

Fast R-CNN之所以比RCNN和SPPnet快,是因為它引入了ROI池化層,將多個候選框中的特徵圖映射到固定大小的特徵圖上,從而使得共培祥享卷積層的特徵提取可以被多個候選框共享,從而減少了重復計算,提局中銷高了計算效率。

Faster R-CNN之所以比Fast R-CNN快,是因為它引入了RPN網路,用來生成候選框,而不是像Fast R-CNN一樣使用選擇性搜索。RPN網路可以共享卷積特徵,並且在訓練時可以端到端地進行優化,從而加速和簡化了目標檢測的流程。

總之,Fast R-CNN和Faster R-CNN都是在RCNN、SPPnet的基礎上不斷優化而來,它們引入了ROI池化層和RPN網路,使得目標檢測的速度和精度都得到了提高。其中,Faster R-CNN比Fast R-CNN快的原因是因為它引入了RPN網路,用來生成候選框並共享卷積特徵。桐游

J. quick和fast的區別是什麼

quick和fast的區別:

1、表意不同。

quick表示人的速度快,而fast既可以表示物體的速度快,也可以表示人的速度快。

2、讀音不同。

fast讀音:英 [fɑ:st];quick讀音:英 [kwɪk]

3、強調的事物不同。

fast多指運動物體速度"快"。強調物體運動的方式, 既能用作形容詞,又能用作副詞。而quick多指動作雹明發生或完成得很迅速、敏捷。強調動作的短暫性, 強調動作迅速發生並完成。

(10)fast演算法擴展閱讀歲灶

quick的詞性:

quickly是副詞,也表示即刻行動,毫不遲延,指動作在較短的時間內或較近的將來即可發生或完成。如:He quickly picks up the paper on the ground.(他很快地拾起地上的紙張)。

雙乎肆扮語例句

1、These apples are maturing fast.

這些蘋果正在快速成熟。

2、They fast on certain days.

他們在某些天齋戒。

3、The fast bowlers were brought on again after the interval.

在休息後快速投球手再次被要求出場投球。

示例片語:

1、answer quickly (搶答字母組 )。

2、quickly erase (快速抹除)。

3、sit quickly (安靜地坐)。

短語

1、as fast as和…一樣快

2、fast growth快速生長

3、fast response快速響應

4、fast algorithm快速演算法

熱點內容
asi源碼 發布:2025-04-23 02:46:45 瀏覽:576
小候編程 發布:2025-04-23 02:46:41 瀏覽:559
網路工程師使用哪些軟體寫腳本 發布:2025-04-23 02:28:43 瀏覽:458
c語言短路現象 發布:2025-04-23 02:23:54 瀏覽:302
可運行腳本怎麼寫 發布:2025-04-23 02:23:09 瀏覽:324
安卓死亡空間怎麼飛行 發布:2025-04-23 02:17:21 瀏覽:545
安卓機怎麼設置語音開機 發布:2025-04-23 02:08:01 瀏覽:485
mysql存儲過程事務控制 發布:2025-04-23 02:02:04 瀏覽:652
伺服器ip承載量 發布:2025-04-23 01:53:37 瀏覽:595
易語言源碼怎麼保存 發布:2025-04-23 01:36:28 瀏覽:161