目標定位和檢測系列(1):一些基本概念
最近開始學習深度學習中的定位和檢測任務。本來打算直接看論文,卻發現文章中的的很多基本概念都搞不清楚,於是就自己先梳理了一些定位和檢測任務的基本概念。(內容主要來自斯坦福大學的CS231課程、吳恩達的deeplearning.ai卷積部分,這兩門課程都可以在網易雲課堂裡找到漢化版)
識別、定位、檢測和分割
識別和定位:針對單個目標的任務,識別就是給定一張圖片,要讓計算機告訴你圖片中是什麼。而定位任務不僅要識別出影象中是什麼,還要給出目標在影象中的位置資訊。簡單的說,就是用一個矩形框把識別的目標框出來(有時候也有多個固定數量的目標)。而我們通常採用兩種方式在影象中表示一個矩形框:
(1) (x1, y1, x2, y2): 即給出矩形框左上角和右下角的座標
(2) (x1, y1, w, h):即給出矩形框的左上角座標和矩形框的長寬。
總的的來說,不管用哪種方法表示,我們都至少需要4個值來定位出影象中的一個目標,如果一副影象中包含C個目標,那我們至需要4*C值來定位所有目標(這裡不包括用於識別的類別標籤)。
檢測和分割:針對一幅影象中有多個目標(數量不固定)的情況。檢測任務要儘可能多的將影象中的目標用矩形框定位出來,相當於對多個目標的定位。而分割要求更嚴格,不再是用矩形框框出目標,而是要從畫素層面上將目標和背景完全分離出來。分割的結果往往是找出目標的輪廓線。
具體如下圖(圖片來自斯坦福CS231課程PPT):
定位任務評估方法:Intersection over Union (IoU)
IoU用來衡量模型最終輸出的矩形框或者測試過程中找出的候選區域(Region Proposal)與實際的矩形框(Gound Truth)的差異程度,定義為兩者交集和並集的比值。通常我們將這個閾值指定為0.5,即只要模型找出來的矩形框和標籤的IoU值大於0.5,就認為成功定位到了目標。
目標定位的兩種思路
看作迴歸問題。對於單個目標的定位,比較簡單的思想就是直接看作是關於目標矩形框位置的迴歸問題,也就是把刻畫矩形框位置資訊的4個引數作為模型的輸出進行訓練,採用L2損失函式。對於固定的多個目標定位,也採用類似的方法,只不過輸出由4個變成4*C個,C為需要定位的目標的類別數。這樣,完整的識別定位問題的損失函式由兩部分組成:第一部分是用於識別的損失,第二部分是用於定位產生的損失。顯然這種方法對於目標數量固定的定位問題比較容易,當數量不定時(比如檢測任務)就不適用了。
滑動視窗法。這種方法的一個典型代表是overFeat模型,它用不同大小的矩形框依次遍歷圖片中所有區域,然後在當前區域執行分類和定位任務,即每一個滑過的區域都會輸出一個關於目標類別和位置資訊的標籤,最後再把所有輸出的矩形框進行合併,得到一個置信度最高的結果。這種方法其實和我們人的思維很相似,但是這種方法需要用不同尺度的滑動框去遍歷整幅影象,計算量是可想而知的。
目標檢測的兩種思路
一種思路就是上面定位問題提到的滑動視窗法。還有一種是基於候選區域的檢測方法。簡單地說,因為用滑動視窗法需要的計算量太大了,如果能夠只針對其中的一部分割槽域進行分類監測,那效率必然會提高很多。於是這種方法第一步就是先基於原影象生成2000個左右的候選框,然後在這些候選框上分別進行分類和定位操作,最後再把所有的結果彙總到一起。這類方法典型代表是R-CNN系列方法。
選擇性搜尋(selective search)
上面提到基於候選框的目標檢測需要先產生2000個左右的候選區域,而產生這些區域用的最多的方法是選擇性搜尋。演算法過程大致如下:
(1) 生成初始區域集合
(2) 計算區域集合中所有相區域的相似度(相似度綜合考慮了顏色、紋理、尺寸和空間交疊)
(3) 合併相似度最高的兩個區域,並移除所有與這兩個區域有關的區域
(4) 重新計算合併的區域和其他所有區域的相似度並執行合併過程直到結束
非極大值抑制(Non-Maximum Suppression)
上面我們提到,在目標檢測的時候,因為我們是在多個區域上分別執行的,最終必然會產生大量的候選框。而我們希望得到一個最好的框來定位目標的位置。而非極大值抑制完成的就是抑制冗餘的矩形框,保留最優框的過程。
具體來說,對於某一個目標,我們的模型框出了很多候選框,每一矩形框都會有一個對應的類別分類概率,我們將他們從大到小排序,然後捨棄掉與最大概率的矩形框相似度高的矩形框(IoU值大於設定的閾值),保留剩下來的矩形框。
目標檢測評價指標:mean average precision (mAP)
這裡涉及到兩個概念:查準率(precision)和查全率(recall)因為對於目標檢測任務,我們往往需要在一張圖中檢測多個目標。對於每一個目標都可以計算測試的查準率和查全率,通過選用不同的閾值進行測試實驗,可以得出多組查準率和查全率資料,利用這些資料可以得到一條P-R曲線,而曲線下包圍的面積就表示average precision (AP),也就是說,這個值越大,說明模型的綜合性能越好。而對於多個目標,我們計算所有目標AP的平均值作為目標檢測最終的效能評價指標即mean average precision (mAP)
相關推薦
目標定位和檢測系列(1):一些基本概念
最近開始學習深度學習中的定位和檢測任務。本來打算直接看論文,卻發現文章中的的很多基本概念都搞不清楚,於是就自己先梳理了一些定位和檢測任務的基本概念。(內容主要來自斯坦福大學的CS231課程、吳恩達的deeplearning.ai卷積部分,這兩門課程都可以在網易雲
目標定位和檢測系列(3):交併比(IOU)和非極大值抑制(NMS)的python實現
交併比(Intersection over Union)和非極大值抑制是(Non-Maximum Suppression)是目標檢測任務中非常重要的兩個概念。例如在用訓練好的模型進行測試時,網路會預測出一系列的候選框。這時候我們會用NMS來移除一些多餘的候選框。
iptables(1):iptables 基本概念
blank target 什麽 com http href 概念 www. lan 1. 什麽是iptables? iptables(1):iptables 基本概念
目標定位和檢測系列:交併比(IOU)和非極大值抑制(NMS)的python與C/C++實現
Python實現 交併比(Intersection over Union)和非極大值抑制是(Non-Maximum Suppression)是目標檢測任務中非常重要的兩個概念。例如在用訓練好的模型進行測試時,網路會預測出一系列的候選框。這時候我們會用NMS來移除一些多餘的候選框。即移除一些IOU
目標定位和檢測系列中IOU的含義
本文轉自:https://blog.csdn.net/sinat_34474705/article/details/80045294 交併比(Intersection over Union)和非極大值抑制是(Non-Maximum Suppression)是目標檢測任務中非常重要的兩個概念。例如
python爬蟲系列(1):使用python3和正則表示式獲取貓眼電影排行榜資料
簡述 這次打算寫一個爬蟲系列,一邊也想好好總結鞏固學習的知識,一邊做總結筆記,方便以後回憶。這次我們使用Python3和正則表示式來爬取一個簡單html頁面資訊,就從貓眼電影的排行榜單開始吧。如果讀到這篇文章的是位大神,期望您能不吝賜教,指正錯誤,如果您是小白,咋們可以一同
Deep Learning 系列(1):RBM(受限波爾茲曼機)和 DBN(深信度神經網路)
前言:Deep Learning (DL深度學習)是近幾年來最火的一種機器學習方法,由Hinton(多倫多大學)提出。主要有兩分支:Geoffery Hinton和Joshua Bengio這一支用RBM組成deep architecture的研究。另一支是以Yann
【開源】OSharp框架學習系列(1):總體設計及系列導航
正是 html 組織 內聚性 權限 是什麽 enc 3-0 分發 OSharp是什麽? OSharp是個快速開發框架,但不是一個大而全的包羅萬象的框架,嚴格的說,OSharp中什麽都沒有實現。與其他大而全的框架最大的不同點,就是OSharp只做抽象封裝,不做實現。依賴註
Vue系列(1):單頁面應用程序
str from logs 引擎 每次 應用 跳轉方式 新手上路 為什麽 前言:關於頁面上的知識點,如有侵權,請看 這裏 。 關鍵詞:SPA、單個 HTML 文件、全靠 JS 操作、Virtual DOM、hash/history api 路由跳轉、ajax 響應、按需
美國高通 Snapdragon Neural Processing Engine SDK (SNPE) 系列 (1):使用者自定義層JNI實現
轉自:https://blog.csdn.net/guvcolie/article/details/77937786 Snapdragon Neural Processing Engine SDK是美國高通公司出品的神經網路處理引擎(SNP
藍鯨DevOps深度解析系列(1):藍盾平臺總覽
關注嘉為科技,獲取運維新知 2018年10月,嘉為科技與騰訊雲、藍鯨智雲攜手,在北京、上海、廣州、深圳舉辦 “研運一體,資料驅動,讓運維走向運營”為主題的分享會,來自金融、電力、能源、製造等行業的數百家企業到場參加。 在這個分享會上,除了下一代的研發運營體系、基於藍鯨平臺實現企業IT自
JavaScript自我實現系列(1):instanceof
JavaScript判斷型別的三種方法 typeof instanceof Object.prototype.toString typeof 使用: console.log(typeof 1024) // "number" 特殊情況: // js自身的bug console.lo
Vue系列(1):單頁面應用程式
前言:關於頁面上的知識點,如有侵權,請看 這裡 。 關鍵詞:SPA、單個 HTML 檔案、全靠 JS 操作、Virtual DOM、hash/history api 路由跳轉、ajax 響應、按需載入、MVVM SPA 我們先來看一下在百科上面的解釋吧,emmmm,一般呢,我每次搜尋一些不懂的詞,都會
V-rep遠端API控制之Python系列(1):位置控制模式
本節我們主要介紹如何使用遠端API(Python)的方式來控制機械臂的運動,主要介紹位置控制模式。 在V-rep外部控制中,我們通常稱遠端API端為Client端,稱V-REP為Server端,下面的內容分別從Server端和Client端介紹如何配置,最終完
Android元件系列(1):自動完成輸入內容的元件(AutoCompleteTextView )
本文為原創,如需轉載,請註明作者和出處,謝謝! AutoCompleteTextView 和 EditText 元件類似,都可以輸入文字。但 AutoCompleteText
解讀ASP.NET 5 & MVC6系列(1):ASP.NET 5簡介
ASP.NET 5簡介 ASP.NET 5是一個跨時代的改寫,所有的功能和模組都進行了獨立拆分,做到了徹底解耦。為了這些改寫,微軟也是蠻 拼的,幾乎把.NET Framwrok全部改寫了一遍,形成了一個.NET Core的東西。 在.NET Core裡一切都是可配置的,包括Session、MVC等功能,而一切
QT入門系列(1):QT Creator下載與安裝 Helloworld
一、下載與安裝 1.1 下載 從QT官網下載,下載頁:https://www.qt.io/download-open-source/,要先註冊登入帳號才可以下載。點選Offline Installers(離線安裝包),選擇合適系統,我這裡是windows
影象處理系列(1):測地線動態輪廓(geodesic active contour)
動態輪廓是影象分割的一個熱點,從早期的snake,就有很多的優化版,測地線動態輪廓(GAC)就是其中之一。總體來說,其摒棄了snake對引數的依賴,並加入了水平集,使得輪廓曲線更貼近目標物的拓撲結構。 經典的動態輪廓模型(activecontour model)的能量公式為
機器學習導圖系列(1):數據處理
探索 com machine 數學 選擇 機器學習算法 png 壓縮 網絡 機器學習導圖系列教程旨在幫助引導開發者對機器學習知識網絡有一個系統的概念,其中具體釋義並未完善,需要開發者自己探索才能對具體知識有深入的掌握。本項目靈感來自Daniel Formoso的github
呼叫鏈系列(1):解讀UAVStack中的貪吃蛇
一、背景 對於分散式線上服務,一個請求需要經過多個系統中多個模組,可能多達上百臺機器的協作才能完成單次請求。這種場景下單靠人力無法掌握整個請求中各個階段的效能開銷,更無法快速的定位系統中效能瓶頸。當發生故障時通常需要檢視大量日誌跨越多個團隊來確認問題。 二、舉個栗子 程式猿小亮作為一個在職場摸爬滾打多年