Selective Search——Region Proposal的源頭 (目標檢測)(two-stage)(深度學習)(IJCV 2013)
論文名稱:《 Selective Search for Object Recognition 》
論文下載:https://ivi.fnwi.uva.nl/isis/publications/bibtexbrowser.php?key=UijlingsIJCV2013&bib=all.bib
論文程式碼:https://pan.baidu.com/s/1bncWrQR
1、總體介紹
如何定位一張影象上的目標(比如"牛")? 處理的流程可以是這樣的:
1.1 第一步: 將影象劃分成很多的小區域(regions);
1.2 第一步解釋: 如何將影象劃分成很多的小區域? 劃分的方式應該有很多種,比如: 1)等間距劃分grid cell,這樣劃分出來的區域每個區域的大小相同,但是每個區域裡面包含的畫素分佈不均勻,隨機性大;同時,不能滿足目標多尺度的要求(當然,可以用不同的尺度劃分grid cell,這稱為Exhaustive Search, 計算複雜度太大)! 2)使用邊緣保持超畫素劃分; 3)使用本文提出的Selective Search(SS)的方法來找到最可能的候選區域;
1.3 第二步: 判定每個區域是屬於"牛"的還是"非牛",將屬於"牛"的區域進行合併,就定位到牛了!其實這一步可以看做是對影象的過分割,都是過分割,本文SS方法的過人之處在於預先劃分的區域什麼大小的都有(滿足目標多尺度的要求),而且對過分割的區域還有一個合併的過程(區域的層次聚類),最後剩下的都是那些最可能的候選區域,然後在這些已經過濾了一遍的區域上進行後續的識別等處理,這樣的話,將會大大減小候選區域的數目,提供了演算法的速度.
1.4 第二步解釋: 第一步中先生成,後合併得到了那些最可能的候選區域,這一步將對每個區域進行判別,也就是判別每個區域到底是"牛"還是"非牛"! 流程的話,無非是在每個區域上提取特徵,然後訓練一個分類器(Kernel SVM);
下面放一張圖說明目標的多尺度:
2、訓練和測試流程圖
2.1 本文模型訓練流程圖
下面我將按照自己的理解一步一步地對此訓練流程圖進行講解(這個流程圖我認為應該分成四個部分):
(1)第一部分: 訓練集構造
(1.1)負樣本: 給定一張訓練影象 --> 形成原始的過分割區域 --> 使用本文SS方法對區域進行融合,形成一系列最可能的候選區域 --> 計算每個候選區域與真實標記區域GT之間的重合度,如果區域A與GT的重合度在20-50%之間,而且A與其他的任何一個已生成的負樣本之間的重合度不大於70%,則A被採納為負樣本,否則丟棄A,繼續判別下一個區域;
(1.2)正樣本: 就是那些手工標記的GT區域作為正樣本;
下圖展示了區域合併的過程: 對於此圖而言,正樣本是兩個綠色框框圈出來的區域;負樣本為藍色框框圈出來的區域;正樣本是人手工標記的,負樣本是SS方法得到的!
(2)第二部分: 提取每個正/負樣本(都是一個個不同大小的區域)的特徵
第一部分中將正樣本區域和負樣本區域都提取出來了,現在就需要提取每個區域的特徵了.本文主要採用了兩種特徵: HOG特徵 + bag-of-words特徵,同時輔助性地增加了SIFT,two colour SIFT,Extended OpponentSIFT,RGB-SIFT這四種特徵,這樣特徵加起來的維度達到了驚人的360,000.
(3)第三部分: 分類器
第二部分中,每個區域的特徵提取出來了,真實類別標籤也知道,那這就是一個2分類問題;分類器這裡採用了帶有Histogram Intersection Kernel的SVM分類器進行分類;這裡沒有對分類器本身做什麼改進,我們可能會質疑一下他這種分類器的選擇是否對這種場合是最好的,其他的沒什麼好講的.
(4)第四部分: 反饋
第三部分將分類器訓練好了,訓練好了就完了嗎? NO! 現在流行一種反饋機制,SVM訓練完成了,將得到每個訓練影象每個候選區域的軟分類結果(每個區域都會得到一個屬於正樣本的概率),一般如果概率大於0.5將被認為是目標,否則被認為是非目標,如果完全分類正確,所有的正樣本的SVM輸出概率都大於0.5,所有負樣本的SVM輸出概率都小於0.5,但是最常見的情況是有一部分的負樣本的輸入概率也是大於0.5的,我們會錯誤地將這樣樣本認為是目標,這些樣本就稱之為"False Positives".我們這裡就是想把這些"False Positives"收集起來,以剛才訓練得到的SVM的權值作為其初始權值,對SVM進行二次訓練,經過二次訓練的SVM的分類準確度一般會有一定的提升;
2.2 測試過程
測試的過程基本和訓練過程相同: 首先用SS方法得到測試影象上候選區域 --> 然後提取每個區域的特徵向量 --> 送入已訓練好的SVM進行軟分類 --> 將這些區域按照概率值進行排序 --> 把概率值小於0.5的區域去除 --> 對那些概率值大於0.5的,計算每個區域與比它分數更高的區域之間的重疊程度,如果重疊程度大於30%,則把這個區域也去除了 --> 最後剩下的區域為目標區域.
3、總結
文章最大的量點在於它的Selective Search策略,這個策略其實是藉助了層次聚類的思想(可以搜尋瞭解一下"層次聚類演算法"),將層次聚類的思想應用到區域的合併上面;作者給出了SS的計算過程:
總體思路:假設現在影象上有n個預分割的區域,表示為R={R1, R2, ..., Rn}, 計算每個region與它相鄰region(注意是相鄰的區域)的相似度,這樣會得到一個n*n的相似度矩陣(同一個區域之間和一個區域與不相鄰區域之間的相似度可設為NaN),從矩陣中找出最大相似度值對應的兩個區域,將這兩個區域合二為一,這時候影象上還剩下n-1個區域; 重複上面的過程(只需要計算新的區域與它相鄰區域的新相似度,其他的不用重複計算),重複一次,區域的總數目就少1,知道最後所有的區域都合併稱為了同一個區域(即此過程進行了n-1次,區域總數目最後變成了1).演算法的流程圖如下圖所示:
相關文章
- 深度學習之目標檢測深度學習
- 深度學習之目標檢測與目標識別深度學習
- 52 個深度學習目標檢測模型深度學習模型
- 深度學習之影像目標檢測速覽深度學習
- 基於OpenCV和YOLOv3深度學習的目標檢測OpenCVYOLO深度學習
- 深度學習與CV教程(13) | 目標檢測 (SSD,YOLO系列)深度學習YOLO
- 深度學習目標檢測(object detection)系列(六)YOLO2深度學習ObjectYOLO
- 深度學習目標檢測(object detection)系列(一) R-CNN深度學習ObjectCNN
- 深度學習“吃雞外掛”——目標檢測 SSD 實驗深度學習
- 深度學習目標檢測(object detection)系列(五) R-FCN深度學習Object
- 使用深度學習的交通標誌檢測深度學習
- 深度學習目標檢測(object detection)系列(四) Faster R-CNN深度學習ObjectASTCNN
- Pytorch 目標檢測學習 Day 2PyTorch
- 目標檢測演算法學習演算法
- 《基於深度學習的目標檢測綜述》論文獲發表深度學習
- 基於深度學習的計算機視覺應用之目標檢測深度學習計算機視覺
- Selective Search for Object RecognitionObject
- 深度學習與CV教程(12) | 目標檢測 (兩階段,R-CNN系列)深度學習CNN
- 深度學習論文翻譯解析(十三):Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks深度學習ASTCNNObject
- 目標檢測
- 52 個深度學習目標檢測模型彙總,論文、原始碼一應俱全!深度學習模型原始碼
- 51 個深度學習目標檢測模型彙總,論文、原始碼一應俱全!深度學習模型原始碼
- 深入學習OpenCV檢測及分割影象的目標區域OpenCV
- 深度學習:乳腺x檢測深度學習
- 深度剖析目標檢測演算法YOLOV4演算法YOLO
- 九、目標檢測
- 2018目標檢測
- 深度學習|基於MobileNet的多目標跟蹤深度學習演算法深度學習演算法
- 目標檢測---教你利用yolov5訓練自己的目標檢測模型YOLO模型
- 檢測到目標URL存在Http Host頭攻擊漏洞HTTP
- 使用深度學習檢測瘧疾深度學習
- 深度學習之瑕疵缺陷檢測深度學習
- 52 個深度學習目標檢測模型彙總,論文、原始碼一應俱全!(附連結)深度學習模型原始碼
- 28-目標檢測
- 目標檢測綜述
- 目標檢測之SSD
- 目標檢測之RetinaNetNaN
- 目標檢測面面觀