1. 程式人生 > >Recall || Precision || Average_precision(AP) || Intersection-over-Union(IoU)||NMS

Recall || Precision || Average_precision(AP) || Intersection-over-Union(IoU)||NMS

||召回率(Recall)|| 

||精確率(Precision)||

||平均正確率Average_precision(AP) ||

||交除並(Intersection-over-Union(IoU))||

||非極大值抑制(NMS)||

定義:

True positives : 真陽|True negatives: 真陰 | False positives: 假陽| False negatives: 假陰 |

Precision 與 Recall

Precision其實就是在識別出來的圖片中,True positives所佔的比率: 
這裡寫圖片描述 
其中的n代表的是(True positives + False positives)

Recall 是True positives與測試集中所有的比值: 
這裡寫圖片描述 
Recall的分母是(True positives + False negatives) 

調整閾值

我們可以通過改變閾值,來選擇讓系統識別能出多少個圖片,當然閾值的變化會導致Precision與Recall值發生變化。

下圖為不同閾值條件下,Precision與Recall的變化情況: 
這裡寫圖片描述

Precision-recall 曲線

如果你想評估一個分類器的效能,一個比較好的方法就是:觀察當閾值變化時,Precision與Recall值的變化情況。如果一個分類器的效能比較好,那麼它應該有如下的表現:讓Recall值增長的同時保持Precision的值在一個很高的水平。而效能比較差的分類器可能會損失很多Precision值才能換來Recall值的提高。通常情況下,文章中都會使用Precision-recall曲線,來顯示出分類器在Precision與Recall之間的權衡。 
這裡寫圖片描述

 
上圖就是分類器的Precision-recall 曲線,在不損失精度的條件下它能達到40%Recall。而當Recall達到100%時,Precision 降低到50%。

Approximated Average precision

相比較與曲線圖,在某些時候還是一個具體的數值能更直觀地表現出分類器的效能。通常情況下都是用 Average Precision來作為這一度量標準,它的公式為: 
這裡寫圖片描述 
在這一積分中,其中p代表Precision ,r代表Recall,p是一個以r為引數的函式,That is equal to taking the area under the curve.

實際上這一積分極其接近於這一數值:對每一種閾值分別求(Precision值)乘以(Recall值的變化情況),再把所有閾值下求得的乘積值進行累加。公式如下: 
這裡寫圖片描述

 
在這一公式中,N代表測試集中所有圖片的個數,P(k)表示在能識別出k個圖片的時候Precision的值,而 Delta r(k) 則表示識別圖片個數從k-1變化到k時(通過調整閾值)Recall值的變化情況。

Interpolated average precision

不同於Approximated Average Precision,一些作者選擇另一種度量效能的標準:Interpolated Average Precision。這一新的演算法不再使用P(k),也就是說,不再使用當系統識別出k個圖片的時候Precision的值與Recall變化值相乘。而是使用: 這裡寫圖片描述 
也就是每次使用在所有閾值的Precision中,最大值的那個Precision值與Recall的變化值相乘。公式如下: 
這裡寫圖片描述

下圖的圖片是Approximated Average Precision 與 Interpolated Average Precision相比較。 這裡寫圖片描述 
很明顯 Approximated Average Precision與精度曲線挨的很近,而使用Interpolated Average Precision算出的Average Precision值明顯要比Approximated Average Precision的方法算出的要高。

一些很重要的文章都是用Interpolated Average Precision 作為度量方法,並且直接稱算出的值為Average Precision 。PASCAL Visual Objects Challenge從2007年開始就是用這一度量制度,他們認為這一方法能有效地減少Precision-recall 曲線中的抖動。所以在比較文章中Average Precision 值的時候,最好先弄清楚它們使用的是那種度量方式。

IoU

物體檢測需要定位出物體的bounding box,就像下面的圖片一樣,我們不僅要定位出車輛的bounding box 我們還要識別出bounding box 裡面的物體就是車輛。對於bounding box的定位精度,有一個很重要的概念,因為我們演算法不可能百分百跟人工標註的資料完全匹配,因此就存在一個定位精度評價公式:IOU。

IoU這一值,可以理解為系統預測出來的框與原來圖片中標記的框的重合程度。 


IOU定義了兩個bounding box的重疊度,如下圖所示:


矩形框A、B的一個重合度IOU計算公式為:

IOU=(A∩B)/(A∪B)

即檢測結果Detection Result與 Ground Truth 的交集比上它們的並集,即為檢測的準確率:

IoU=DetectionResultGroundTruthDetectionResultGroundTruth

如下圖所示: 
藍色的框是:GroundTruth 
黃色的框是:DetectionResult 
綠色的框是:DetectionResult  GroundTruth 
紅色的框是:DetectionResult  GroundTruth

這裡寫圖片描述

NMS

主要目的:

          在物體檢測非極大值抑制應用十分廣泛,主要目的是為了消除多餘的框,找到最佳的物體檢測的位置。


如上圖中:雖然幾個框都檢測到了人臉,但是我不需要這麼多的框,我需要找到一個最能表達人臉的框。

原理:

非極大值抑制,顧名思義就是把非極大值過濾掉(抑制)。下面是R-CNN中的matlab原始碼

function picks = nms_multiclass(boxes, overlap)
%%boxes為一個m*n的矩陣,其中m為boundingbox的個數,n的前4列為每個boundingbox的座標,格式為
%%(x1,y1,x2,y2);第5:n列為每一類的置信度。overlap為設定值,0.3,0.5 .....
x1 = boxes(:,1);%所有boundingbox的x1座標
y1 = boxes(:,2);%所有boundingbox的y1座標
x2 = boxes(:,3);%所有boundingbox的x2座標
y2 = boxes(:,4);%所有boundingbox的y2座標
area = (x2-x1+1) .* (y2-y1+1); %每個%所有boundingbox的面積
picks = cell(size(boxes, 2)-4, 1);%為每一類預定義一個將要保留的cell
for iS = 5:size(boxes, 2)%每一類單獨進行
    s = boxes(:,iS);
    [~, I] = sort(s);%置信度從低到高排序

    pick = s*0;
    counter = 1;
    while ~isempty(I)
      last = length(I);
      i = I(last);  
      pick(counter) = i;%無條件保留每類得分最高的boundingbox
      counter = counter + 1;

      xx1 = max(x1(i), x1(I(1:last-1)));
      yy1 = max(y1(i), y1(I(1:last-1)));
      xx2 = min(x2(i), x2(I(1:last-1)));
      yy2 = min(y2(i), y2(I(1:last-1)));

      w = max(0.0, xx2-xx1+1);
      h = max(0.0, yy2-yy1+1);

      inter = w.*h;
      o = inter ./ (area(i) + area(I(1:last-1)) - inter);%計算得分最高的那個boundingbox和其餘的boundingbox的交集面積

      I = I(o<=overlap);%保留交集小於一定閾值的boundingbox
    end

    pick = pick(1:(counter-1));
    picks{iS-4} = pick;%保留每一類的boundingbox
end



相關推薦

Recall || Precision || Average_precision(AP) || Intersection-over-UnionIoU||NMS

||召回率(Recall)||  ||精確率(Precision)|| ||平均正確率Average_precision(AP) || ||交除並(Intersection-over-Union(IoU))|| ||非極大值抑制(NMS)|| 定義: True

【YOLO學習】召回率Recall,精確率Precision,平均正確率Average_precision(AP) ,交除並Intersection-over-UnionIoU

摘要 在訓練YOLO v2的過程中,系統會顯示出一些評價訓練效果的值,如Recall,IoU等等。為了怕以後忘了,現在把自己對這幾種度量方式的理解記錄一下。 這一文章首先假設一個測試集,然後圍繞這一測試集來介紹這幾種度量方式的計算方法。 大雁與飛機

目標檢測中IOU的介紹Intersection over Union

IOU的輸入 1 ground-truth的bounding box 2 預測的bounding box IOU的輸出 輸出為值在[0,1]之間的數字 IOU = 兩個矩形交集的面積/兩個矩形的並集面積 Reference: https://www.

目標識別object detection中的 IoUIntersection over Union

首先直觀上來看 IoU 的計算公式: 由上述圖示可知,IoU 的計算綜合考慮了交集和並集,如何使得 IoU 最大,需要滿足,更大的重疊區域,更小的不重疊的區域。 兩個矩形窗格分別表示: 左上點、右下點的座標聯合標識了一塊

IoUIntersection-over-Union

交併比 (intersection over union) 即為兩個區域的交集與並集的比值。 例如有兩個區域 C 與 G,如下圖表示: 那麼 IoU 的值定義為: IoU=C∩GC∪GIoU=\fra

Intersection over Union(IoU) algorithms

  IoU演算法可用與評估兩個多維度資料的相似度,舉一個實際應用,做CV,物件檢測,我們需要評估模型的識別準確率,不同於二元類問題,普通的評估演算法不合適,於是用到了這個演算法,這個演算法簡單易懂,評估效果也不錯。   這裡主要討論如何計算並評估兩個矩形相交程度。有空再訓練一個物件檢測器,來試試水。。  

深度學習中IU、IoU(Intersection over Union)的概念理解以及python程式實現

Intersection over Union是一種測量在特定資料集中檢測相應物體準確度的一個標準。我們可以在很多物體檢測挑戰中,例如PASCAL VOC challenge中看多很多使用該標準的做法。 通常我們在 HOG + Linear SVM objec

IoUIntersection over Union

#傳入的是真值標籤和預測標籤 def bbox_iou(bbox_a, bbox_b): print bbox_a.shape print bbox_b.shape if bbox_a.shape[1] != 4 or bbox_b.shape

【深度學習】深度學習中IU、IoU(Intersection over Union)的概念理解以及python程式實現

IoU(Intersection over Union) Intersection over Union是一種測量在特定資料集中檢測相應物體準確度的一個標準。我們可以在很多物體檢測挑戰中,例如PASCAL VOC challenge中看多很多使用該標準的做法。 通常我們

評價訓練效果的值——精準度precision、召回率recall、準確率accuracy、交除並IoU

每次談到這些值得時候都很混亂,這邊通俗的講解出來,然而目前mAP還沒弄明白,後續弄明白再貼出來。。。。 TP是正樣本預測為正樣本 FP是負樣本預測為正樣本 FN是本為正,錯誤的認為是負樣本 TN是本為負,正確的認為是負樣本 precision就是在識別出來的圖片中(

SparkCore運算元例項之---- 交集、差集、並集intersection, subtract, union, distinct, subtractByKey

1. 交集 intersecion 1.1 原始碼 /** * Return the intersection of this RDD and another one. The output will not contain any duplicate

C之 struct 和 union

C語言 struct union 在 C 語言中我們經常會使用到 struct 和 union,那麽它們兩個各自有何特點呢?今天我們就一探究竟。 我們先來介紹下 struct 。它可以看做是變量的集合,那麽一個空的結構體占多大內存呢?這是一個有趣的問題,按照理論分析,

無線AP如何區分來賓流動用戶和正常用戶?

上網 .com 人員 流動 公網 安全 現在 無線網 直接 現在大部分局域網都提供了無線上網的功能。無線主要用於滿足以下幾種需求:無線辦公的需要,比如無線pos機等辦公設備。員工無線上網的需要。來賓、客人的無線上網。這樣就帶來了相關的安全性問題:來賓有可能通過無線接入到企業

oracle分析函式row_number() over()使用2

row_number() over ([partition by col1] order by col2) ) as 別名表示根據col1分組,在分組內部根據 col2排序而這個“別名”的值就表示每組內部排序後的順序編號(組內連續的唯一的),[partition by col1] 可省略。 以Scott/ti

hive union all

多表合併,欄位名必須匹配 union all 需放於子查詢中,合併後的表要有別名 union  去掉重複的 union all  不去重 eg: select * from (select age, name from test1 union all select age,

目標定位和檢測系列:交併比IOU和非極大值抑制NMS的python與C/C++實現

Python實現 交併比(Intersection over Union)和非極大值抑制是(Non-Maximum Suppression)是目標檢測任務中非常重要的兩個概念。例如在用訓練好的模型進行測試時,網路會預測出一系列的候選框。這時候我們會用NMS來移除一些多餘的候選框。即移除一些IOU

目標定位和檢測系列3:交併比IOU和非極大值抑制NMS的python實現

交併比(Intersection over Union)和非極大值抑制是(Non-Maximum Suppression)是目標檢測任務中非常重要的兩個概念。例如在用訓練好的模型進行測試時,網路會預測出一系列的候選框。這時候我們會用NMS來移除一些多餘的候選框。

轉載準確率accuracy,精確率Precision,召回率Recall和綜合評價指標F1-Measure -絕對讓你完全搞懂這些概念

自然語言處理(ML),機器學習(NLP),資訊檢索(IR)等領域,評估(evaluation)是一個必要的工作,而其評價指標往往有如下幾點:準確率(accuracy),精確率(Precision),召回率(Recall)和F1-Measure。 本文將簡單介紹其中幾個概念。中文中這幾個評價指標翻譯各有不同,

吳恩達機器學習PrecisionRecall、F-score、TPR、FPR、TNR、FNR、AUC、Accuracy

目錄 0. 前言 學習完吳恩達老師機器學習課程的機器學習系統設計,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 0. 前言 針對二分類的結果,對模型進行評估,通常有以下

準確率accuracy,精確率Precision,召回率Recall和綜合評價指標F1-Measure

自然語言處理(ML),機器學習(NLP),資訊檢索(IR)等領域,評估(evaluation)是一個必要的工作,而其評價指標往往有如下幾點:準確率(accuracy),精確率(Precision),召回率(Recall)和F1-Measure。 本文將簡單介紹其中幾個概念。