日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习(十五)——SPPNet, Fast R-CNN

發布時間:2023/12/20 pytorch 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习(十五)——SPPNet, Fast R-CNN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://antkillerfarm.github.io/

RCNN(續)

RCNN算法的基本流程

RCNN算法分為4個步驟:

Step 1:候選區域生成。一張圖像生成1K~2K個候選區域(采用Selective Search方法)。

Step 2:特征提取。對每個候選區域,使用深度卷積網絡提取特征(CNN)。

Step 3:類別判斷。特征送入每一類的SVM分類器,判別是否屬于該類。

Step 4:位置精修。使用回歸器精細修正候選框位置。

論文:

https://www.koen.me/research/pub/uijlings-ijcv2013-draft.pdf

Selective Search for Object Recognition

Selective Search的主要思想:

Step 1:使用一種過分割手段,將圖像分割成小區域 (1k~2k個)。

這里的步驟實際上并不簡單,可參考論文:

《Efficient Graph-Based Image Segmentation》

中文版:

http://blog.csdn.net/surgewong/article/details/39008861

Step 2:查看現有小區域,按照合并規則合并可能性最高的相鄰兩個區域。重復直到整張圖像合并成一個區域位置。

Step 3:輸出所有曾經存在過的區域,所謂候選區域。

其中合并規則如下:優先合并以下四種區域:

1.顏色(顏色直方圖)相近的。

2.紋理(梯度直方圖)相近的。

3.合并后總面積小的:保證合并操作的尺度較為均勻,避免一個大區域陸續“吃掉”其他小區域(例:設有區域a-b-c-d-e-f-g-h。較好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh)

4.合并后,總面積在其bounding box中所占比例大的:保證合并后形狀規則。

Step2和Step3可參考論文:

《Selective Search for Object Recognition》

中文版:

http://blog.csdn.net/surgewong/article/details/39316931

http://blog.csdn.net/charwing/article/details/27180421

Selective Search的效果類似下圖:

上圖中的那些方框,就是bounding box。

一般使用IOU(Intersection over Union,交并比)指標,來衡量兩個bounding box的重疊度:

IOU(A,B)=ABAB

非極大值抑制(NMS)

RCNN會從一張圖片中找出n個可能是物體的矩形框,然后為每個矩形框為做類別分類概率(如上圖所示)。我們需要判別哪些矩形框是沒用的。

Non-Maximum Suppression顧名思義就是抑制不是極大值的元素,搜索局部的極大值。這個局部代表的是一個鄰域,鄰域有兩個參數可變,一是鄰域的維數,二是鄰域的大小。

下面舉例說明NMS的做法:

假設有6個矩形框,根據分類器的類別和分類概率做排序,假設從小到大屬于車輛的概率分別為A、B、C、D、E、F。

Step 1:從最大概率矩形框F開始,分別判斷A~E與F的重疊度IOU是否大于某個設定的閾值。(確定領域

Step 2:假設B、D與F的重疊度超過閾值,那么就扔掉B、D;并標記第一個矩形框F,是我們保留下來的。(抑制領域內的非極大值

Step 3:從剩下的矩形框A、C、E中,選擇概率最大的E,然后判斷E與A、C的重疊度,重疊度大于一定的閾值,那么就扔掉;并標記E是我們保留下來的第二個矩形框。(確定下一個領域,并抑制該領域內的非極大值

參考:

http://mp.weixin.qq.com/s/Cg9tHG1YgDCdI3NPYl5-vQ

如何用Soft-NMS實現目標檢測并提升準確率

ground truth

在有監督學習中,數據是有標注的,以(x,t)的形式出現,其中x是輸入數據,t是標注。正確的t標注是ground truth,錯誤的標記則不是。(也有人將所有標注數據都叫做ground truth)

在目標檢測任務中,ground truth主要包括box和category兩類信息。

正負樣本問題

一張照片我們得到了2000個候選框。然而人工標注的數據一張圖片中就只標注了正確的bounding box,我們搜索出來的2000個矩形框也不可能會出現一個與人工標注完全匹配的候選框。因此在CNN階段我們需要用IOU為2000個bounding box打標簽。

如果用selective search挑選出來的候選框與物體的人工標注矩形框的重疊區域IoU大于0.5,那么我們就把這個候選框標注成物體類別(正樣本),否則我們就把它當做背景類別(負樣本)。

使用SVM的問題

CNN訓練的時候,本來就是對bounding box的物體進行識別分類訓練,在訓練的時候,最后一層softmax就是分類層。那么為什么作者閑著沒事干要先用CNN做特征提取(提取fc7層數據),然后再把提取的特征用于訓練SVM分類器?

這個是因為SVM訓練和cnn訓練過程的正負樣本定義方式各有不同,導致最后采用CNN softmax輸出比采用SVM精度還低。

事情是這樣的,cnn在訓練的時候,對訓練數據做了比較寬松的標注,比如一個bounding box可能只包含物體的一部分,那么我也把它標注為正樣本,用于訓練cnn;采用這個方法的主要原因在于因為CNN容易過擬合,所以需要大量的訓練數據,所以在CNN訓練階段我們是對Bounding box的位置限制條件限制的比較松(IOU只要大于0.5都被標注為正樣本了);

然而SVM訓練的時候,因為SVM適用于少樣本訓練,所以對于訓練樣本數據的IOU要求比較嚴格,我們只有當bounding box把整個物體都包含進去了,我們才把它標注為物體類別,然后訓練SVM。

CNN base

目標檢測任務不是一個獨立的任務,而是在目標分類基礎之上的進一步衍生。因此,無論何種目標檢測框架都需要一個目標分類的CNN作為base,僅對其最上層的FC層做一定的修改。

VGG、AlexNet都是常見的CNN base。

評價標準

目標檢測一般采用mAP(mean Average Precision)作為評價標準。AP的含義參見《機器學習(二十一)》。

對于多分類任務來說,每個分類都有一個AP,將這些AP平均(或加權平均)之后,就得到了mAP。

目前,目標檢測領域的mAP,一般以PASCAL VOC 2012的標準為準。文檔參見:

http://host.robots.ox.ac.uk/pascal/VOC/voc2012/devkit_doc.pdf

對于目標檢測任務來說,除了分類之外,還有box準確度的問題。一般IOU大于0.5的被認為是正樣本,反之則是負樣本。

PASCAL VOC還對P-R曲線的采樣做出規定。2012之前的標準中,P-R曲線只需要對recall值進行10等分采樣即可。而2012標準規定,對每個recall值都要進行采樣。

參考:

http://blog.sina.com.cn/s/blog_9db078090102whzw.html

多標簽圖像分類任務的評價方法-mAP

https://www.zhihu.com/question/41540197

mean average precision(MAP)在計算機視覺中是如何計算和應用的?

總結

參考

https://zhuanlan.zhihu.com/p/23006190

RCNN-將CNN引入目標檢測的開山之作

http://www.cnblogs.com/edwardbi/p/5647522.html

Tensorflow tflearn編寫RCNN

http://blog.csdn.net/u011534057/article/category/6178027

RCNN系列blog

http://blog.csdn.net/shenxiaolu1984/article/details/51066975

RCNN算法詳解

http://mp.weixin.qq.com/s/_U6EJBP_qmx68ih00IhGjQ

Object Detection R-CNN

SPPNet

SPPNet是何愷明2014年的作品。

論文:

《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》

在RCNN算法中,一張圖片會有1~2k個候選框,每一個都要單獨輸入CNN做卷積等操作很費時。而且這些候選框可能很多都是重合的,重復的CNN操作從信息論的角度,也是相當冗余的。

SPPNet的核心思想如上圖所示:在feature map上提取ROI特征,這樣就只需要在整幅圖像上做一次卷積。

這個想法說起來簡單,但落到實地,還有如下問題需要解決:

Problem 1:原始圖像的ROI如何映射到特征圖(一系列卷積層的最后輸出)。

這里的計算比較復雜,要點在于:選擇原始圖像ROI的左上角和右下角,將之映射到feature map上的兩個對應點,從而得到feature map上的ROI。

參見:

https://zhuanlan.zhihu.com/p/24780433

原始圖片中的ROI如何映射到到feature map?

http://www.cnblogs.com/objectDetect/p/5947169.html

卷積神經網絡物體檢測之感受野大小計算

Problem 2:ROI的在特征圖上的對應的特征區域的維度不滿足全連接層的輸入要求怎么辦(又不可能像在原始ROI圖像上那樣進行截取和縮放)?

對于Problem 2我們分析一下:

這個問題涉及的流程主要有: 圖像輸入->卷積層1->池化1->…->卷積層n->池化n->全連接層。

引發問題的原因主要有:全連接層的輸入維度是固定死的,導致池化n的輸出必須與之匹配,繼而導致圖像輸入的尺寸必須固定。

解決辦法可能有:

1.想辦法讓不同尺寸的圖像也可以使池化n產生固定的輸出維度。(打破圖像輸入的固定性)

2.想辦法讓全連接層(罪魁禍首)可以接受非固定的輸入維度。(打破全連接層的固定性,繼而也打破了圖像輸入的固定性)

以上的方法1就是SPPnet的思想。

Step 1:為圖像建立不同尺度的圖像金字塔。上圖為3層。

Step 2:將圖像金字塔中包含的feature映射到固定尺寸的向量中。上圖為

(16+4+1)×256 維向量。

總結:

從上圖可以看出,由于卷積策略的不同,SPPnet的流程和RCNN也有一點微小的差異:

1.RCNN是先選擇區域,然后對區域進行卷積,并檢測。

2.SPPnet是先統一卷積,然后應用選擇區域,做區域檢測。

參考:

https://zhuanlan.zhihu.com/p/24774302

SPPNet-引入空間金字塔池化改進RCNN

http://kaiminghe.com/iccv15tutorial/iccv2015_tutorial_convolutional_feature_maps_kaiminghe.pdf

何愷明:Convolutional Feature Maps

Fast R-CNN

Fast R-CNN是Ross Girshick于2015年祭出的又一大招。

論文:

《Fast R-CNN》

代碼:

https://github.com/rbgirshick/fast-rcnn

上圖是Fast R-CNN的結構圖。從該圖可以看出Fast R-CNN和SPPnet的主要差異在于:

1.使用ROI(Region of interest) Pooling,替換SPP。

2.去掉了SVM分類。

以下將對這兩個方面,做一個簡述。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的深度学习(十五)——SPPNet, Fast R-CNN的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。