目標識別 評價指標(Iou,mAP,Fps)

2021-09-05 09:21:38 字數 1967 閱讀 1477

一、交並比

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

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

矩形框a、b的乙個重合度iou計算公式為:

iou=(a∩b)/(a∪b)

就是矩形框a、b的重疊面積佔a、b並集的面積比例:

iou=si/(sa+sb-si)

二、map(均值平均精度)

我們使用lou看檢測是否正確需要設定乙個閾值,最常用的閾值是0.5,即如果lou>0.5,則認為是真實的檢測(true detection),否則認為是錯誤的檢測(false detection)。我們現在計算模型得到的每個檢測框(置信度閾值後)的lou值。用計算出的lou值與設定的lou閾值(例如0.5)比較,就可以計算出每個影象中每個類的正確檢測次數(a)。對於每個影象,我們都有ground truth的資料(即知道每個影象的真實目標資訊),因此也知道了該影象中給定類別的實際目標(b)的數量。我們也計算了正確**的數量(a)(true possitive)。因此:

對於一類物體在一張影象上的精度:

即給定一張影象的類別c的precision=影象正確**(true positives)的數量 / 在影象張這一類的總的目標數量。 

對於一類物體在所有圖上的精度:

假如現在有乙個給定的類,驗證集中有100個影象,並且我們知道每個影象都有其中的所有類(基於ground truth)。所以我們可以得到100個精度值,計算這100個精度值的平均值,得到的就是該類的平均精度。 

即乙個c類的平均精度=在驗證集上所有的影象對於類c的精度值的和 / 有類c這個目標的所有影象的數量。 

對於所有類物體在所有圖上的精度:

現在加入我們整個集合中有20個類,對於每個類別,我們都先計算lou,接下來計算精度,然後計算平均精度。所有我們現在有20個不同的平均精度值。使用這些平均精度值,我們可以輕鬆的判斷任何給定類別的模型的效能。 

但是問題是使用20個不同的平均精度使我們難以度量整個模型,所以我們可以選用乙個單一的數字來表示乙個模型的表現(乙個度量來統一它們),我們可以取所有類的平均精度值的平均值,即map(均值平均精度)。 

map=所有類別的平均精度求和除以所有類別,即資料集中所有類的平均精度的平均值。

使用map值時我們需要滿足一下條件:

(1) map總是在固定的資料集上計算 

(2)它不是量化模型輸出的絕對度量,但是是乙個比較好的相對度量。當我們在流行的公共資料集上計算這個度量時,這個度量可以很容易的用來比較不同目標檢測方法 

(3)根據訓練中類的分布情況,平均精度值可能會因為某些類別(具有良好的訓練資料)非常高(對於具有較少或較差資料的類別)而言非常低。所以我們需要map可能是適中的,但是模型可能對於某些類非常好,對於某些類非常不好。因此建議在分析模型結果的同時檢視個各類的平均精度,這些值也可以作為我們是不是需要新增更多訓練樣本的乙個依據。

三、檢測速率(fps)

1秒內識別的影象數(幀數)

四、iou的python實現

具體實現過程請移步:

目標檢測與目標識別

目標識別 objec recognition 是指明一幅輸入影象中包含哪類目標。其輸入為一幅影象,輸出是該影象中的目標屬於哪個類別 class probability 目標檢測 object detection 除了要告訴輸入影象中包含哪類目標外,還要框出該目標的具體位置 bounding boxe...

AI 目標識別研究

haar like 目標識別 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇...

特徵匹配和目標識別

include include include using namespace std using namespace cv mat g src1,g src2 char input win input image int minhessian 400 定義最小海森矩陣 intmain ptrdet...