錯誤類型、混淆矩陣及目標檢測常用評價指標

目標檢測常用評價指標

本文主要參考陳愷大佬在B站商湯賬號的介紹mmdetection的視頻。

檢測結果的正確/錯誤類型

真陽性(Ture Positive):算法檢測到了某類物體(Positive),而實際圖中也確實有這個物體,檢測結果正確(True)。
假陽性(False Positive):算法檢測到了某類物體(Postive),但是圖中沒有這個物體,檢測結果錯誤(False)。 又稱為誤檢
假陰性(False Negtive):算法沒有檢測到某類物體(Negtive),但是圖中有這個物體,檢測結果錯誤(False)。 又稱為漏檢

在這里插入圖片描述

左下實線框中確實有只貓,也檢測到了,即TP。
右下實線框內沒有物體,但是檢測到了,即FP。
右上虛線框內有屏幕,但是沒有檢測到,即FN。

實際上,二元的混淆矩陣是這樣的:

在這里插入圖片描述

一定要注意:初次面對這些概念時,兩個字母表示四種可能性,可能會自然而然地認為前后字母分別代表真實值和預測值的真假,但實際上不是這樣的。

P/N確實是表示預測值是真或假,而T/F可不是表示真實值的真或假。T/P 和 F/N 的真正含義是:

  • T/F:表示預測的對不對,代表的是預測值與真實值之間的關系
  • P/N:表示預測值是真還是假,代表模型對某個樣本的預測結果

這個一定要弄清楚,別被混淆矩陣把自己搞“混淆”了。

精確率Precision與召回率Recall

召回率=預測為真且實際為真總數實際為真總數,??即???Recall=TPTP+FN召回率=\frac{預測為真且實際為真總數}{實際為真總數}, \ \ 即\ \ \ Recall=\frac{TP}{TP+FN} 召回率=實際為真總數預測為真且實際為真總數??????Recall=TP+FNTP?

精確率=預測為真且實際為真總數預測為真總數,??即???Precision=TPTP+FP精確率=\frac{預測為真且實際為真總數}{預測為真總數}, \ \ 即\ \ \ Precision=\frac{TP}{TP+FP} 精確率=預測為真總數預測為真且實際為真總數??????Precision=TP+FPTP?

準確率=預測正確總數全部樣本總數,??即???Accuracy=TP+TNTP+FP+TN+FN準確率=\frac{預測正確總數}{全部樣本總數}, \ \ 即\ \ \ Accuracy=\frac{TP+TN}{TP+FP+TN+FN} 準確率=全部樣本總數預測正確總數??????Accuracy=TP+FP+TN+FNTP+TN?

召回率是實際為真樣本中預測為真的比例,精確率是預測為真樣本中真實為真的比例,準確率是預測正確的比例。

兩種極端的情況:

  1. 檢測器將所有的錨框都判斷為物體,此時召回率 Recall≈100%Recall\approx100\%Recall100% ,但是大量的背景都被誤檢為物體,FP很高,導致準確率很低。
  2. 檢測器只將置信度最高的一個框檢測為物體,當然有很大的幾率是正確的,準確率 Precision≈100%Precision\approx100\%Precision100% ,但是大量的物體被漏檢為背景,FN很高,導致召回率很低。

最理想的情況當然是召回率和準確率都為 100%,但在算法能力有限的現實情況下,我們應當盡可能地平衡二者。

通常做法是將檢測框按照置信度排序,并設置一個置信度閾值,僅輸出置信度大于該閾值的若干個框。

PR曲線和AP值

以上的做法無疑會受到閾值的選取的影響,為了得到和閾值無關的評分,我們可以遍歷閾值,并對召回率和準確率求平均。

具體做法:

  1. 檢測框按照置信度排序,取前 KKK 個框計算Precision和Recall。

  2. 遍歷 KKK 從1到全部檢測框,將得到的Precision和Recall繪制在坐標系上,得到PR曲線。

在這里插入圖片描述

  1. 定義 Average Precision = Precision對Recall的平均值,即PR曲線下的面積,作為檢測器的性能衡量指標。
    AP=∫01P(R)dRAP = \int_0^1P(R)dR AP=01?P(R)dR

Mean AP

分類別統計AP,并按類別平均得到Mean AP。

Mean AP的完整計算流程:

  1. 將數據集中全部圖像的預測框按預測類別分類。
  2. 對于某一類別的所有檢測框,計算AP:
    • 按置信度將該類別所有檢測框排序
    • 逐一與真值框比較,判定TP或FP,并繪制PR曲線
    • 對PR曲線插值,計算AP
  3. 求所有類別的AP的平均,得到Mean AP。
    mAP=1C∑i=1C∫01P(R)dRmAP=\frac{1}{C}\sum_{i=1}^C\int_0^1P(R)dR mAP=C1?i=1C?01?P(R)dR CCC 是全部類別數。

部分數據集(如COCO),還需要在不同的IOU閾值下計算Mean AP并平均,作為最終評分,這可以衡量檢測器在不同定位精度要求下的性能。

AP、AP50、AP75

以上我們討論的是在固定 IOU 下的 mAP 結果,我們也提到,有時會對不同的 IOU 也做測試,并記錄性能。我們經常在論文中見到 AP、AP50、AP75 這樣的指標就是指的在不同的 IOU 下的 mAP 結果。

具體來說:

  • AP50、AP75:這樣在 AP 后面帶數字的,很好理解,即分別是在 IOU 為 50、75 下的 mAP 值。
  • AP:這樣不帶數字的 AP 指標通常指的是 AP@50:5:95,表示 IOU 從 50 ,取到95,步長為5(即50, 55, 60, 65, …, 90, 95),分別計算這些 IOU 值下的 mAP,再求平均。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532862.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php顯示json,PHP解決JSON中文顯示問題

PHP如何解決JSON中文顯示問題&#xff1f;本文主要介紹了PHP JSON格式的中文顯示問題解決方法&#xff0c;本文總結了3種解決中文顯示\u開頭字符問題的方法。希望對大家有所幫助。返回json數據中文顯示的問題解決方法一&#xff1a;<?php function Notice(){include ./incl…

使用yolov5訓練自己的目標檢測數據集

使用yolov5訓練自己的目標檢測數據集 yolov4出來后不久&#xff0c;又出現了yolov5&#xff0c;沒有論文。雖然作者沒有放上和yolov4的直接測試對比&#xff0c;但在COCO數據集的測試效果還是很可觀的。很多人考慮到YOLOv5的創新性不足&#xff0c;對算法是否能夠進化&#xf…

php的integer,PHP整型 integer

整數是一個沒有小數的數字。整數規則:整數必須至少有一個數字 (0-9)整數不能包含逗號或空格整數是沒有小數點的整數可以是正數或負數整型可以用三種格式來指定&#xff1a;十進制&#xff0c; 十六進制( 以 0x 為前綴)或八進制(前綴為 0)。在以下實例中我們將測試不同的數字。 …

einops和einsum:直接操作張量的利器

einops和einsum&#xff1a;直接操作張量的利器 einops和einsum是Vision Transformer的代碼實現里出現的兩個操作tensor維度和指定tensor計算的神器&#xff0c;在卷積神經網絡里不多見&#xff0c;本文將介紹簡單介紹一下這兩樣工具&#xff0c;方便大家更好地理解Vision Tra…

php的filter input,php中filter_input函數用法分析

本文實例分析了php中filter_input函數用法。分享給大家供大家參考。具體分析如下&#xff1a;在 php5.2 中,內置了filter 模塊,用于變量的驗證和過濾,過濾變量等操作&#xff0c;這里我們看下如何直接過濾用戶輸入的內容.fliter 模塊對應的 filter_input 函數使用起來非常的簡單…

COCO 數據集格式及mmdetection中的轉換方法

COCO 數據集格式及mmdetection中的轉換方法 COCO格式 CV中的目標檢測任務不同于分類&#xff0c;其標簽的形式稍為復雜&#xff0c;有幾種常用檢測數據集格式&#xff0c;本文將簡要介紹最為常見的COCO數據集的格式。 完整的官方樣例可自行查閱&#xff0c;以下是幾項關鍵的…

php獲取h1,jQuery獲取h1-h6標題元素值方法實例

本文主要介紹了jQuery實現獲取h1-h6標題元素值的方法,涉及$(":header")選擇器操作h1-h6元素及事件響應相關技巧,需要的朋友可以參考下&#xff0c;希望能幫助到大家。1、問題背景&#xff1a;查找到h1-h6&#xff0c;并遍歷它們&#xff0c;打印出內容2、實現代碼&am…

在導入NVIDIA的apex庫時報錯 ImportError cannot import name ‘UnencryptedCookieSessionFactoryConfig‘ from

在導入NVIDIA的apex庫時報錯 ImportError: cannot import name ‘UnencryptedCookieSessionFactoryConfig’ from ‘pyramid.session’ (unknown location) 報錯 在使用NVIDIA的apex庫時報錯 ImportError: cannot import name ‘UnencryptedCookieSessionFactoryConfig’ fro…

php怎么取request,PHP-如何在Guzzle中獲取Request對象?

我需要使用Guzzle檢查數據庫中的很多項目.例如,項目數量為2000-5000.將其全部加載到單個數組中太多了,因此我想將其分成多個塊&#xff1a;SELECT * FROM items LIMIT100.當最后一個項目發送到Guzzle時,則請求下一個100個項目.在“已滿”處理程序中,我應該知道哪個項目得到了響…

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 論文簡析及關鍵代碼簡析

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 論文簡析及關鍵代碼簡析 論文&#xff1a;https://arxiv.org/abs/2104.00323 代碼&#xff1a;https://github.com/dvlab-research/JigsawClustering 總結 本文提出了一種單批次&#xff0…

java jps都卡死,java長時間運行后,jps失效

在部署完應用后&#xff0c;原本jps使用的好好的&#xff0c;能正確的查詢到自己正在運行的java程序。但&#xff0c;過了一段時間后&#xff0c;再使用jps來查看運行的應用時&#xff0c;自己運行的程序都看不到&#xff0c;但是自己也沒有關閉這些程序啊&#xff01;然而使用…

指針(*)、取地址()、解引用(*)與引用()

指針(*)、取地址(&)、解引用(*)與引用(&) C 提供了兩種指針運算符&#xff0c;一種是取地址運算符 &&#xff0c;一種是間接尋址運算符 *。 指針是一個包含了另一個變量地址的變量&#xff0c;您可以把一個包含了另一個變量地址的變量說成是"指向"另一…

matlab電類,985電氣研二,有發過考研經驗貼 電氣電力類的有

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓clc;clear;p[2.259;2.257;2.256;2.254;2.252;2.248;2.247;2.245;2.244;2.243;2.239;2.238;2.236;2.235;2.234;2.231;2.229;2.228;2.226;2.225;2.221;2.220;2.219;2.217;2.216;2.211;2.209;2.208;2.207;2.206;2.202;2.201;2.199;2.1…

matlab legend 分塊,matlab?legend?分塊!

matlab legend 分塊&#xff01;(2013-03-26 18:07:38)%%%壓差clc;clear all;figure(55);set (gcf,Position,[116 123 275 210],color,w);P[25 26 27 28 29 30 31 32 33 34 35];%理論q0.00006*pi*28*P*10^(6)*0.03^3/(12*0.028448*5);q1110.00006*pi*28*P*10^(6)*0.03^3/(12*0.…

利用opencv-python繪制多邊形框或(半透明)區域填充(可用于分割任務mask可視化)

利用opencv-python繪制多邊形框或&#xff08;半透明&#xff09;區域填充&#xff08;可用于分割任務mask可視化&#xff09; 本文主要就少opencv中兩個函數polylines和fillPoly分別用于繪制多邊形框或區域填充&#xff0c;并會會以常見用途分割任務mask&#xff08;還是筆者…

matlab與maple互聯,Matlab,Maple和Mathematica三款主流科學計算軟件的互操作

本文根據網上零散的信息以及這三款軟件自帶的說明文檔整理而成&#xff0c;為備忘而記錄。記錄了Matlab和Maple之間的相互調用&#xff0c;以及Matlab和Mathematica之間相互調用的安裝配置方法。為何需要互操作&#xff1f; 數值計算和圖形方面Matlab毫無疑問是最強的&a…

PyTorch中的topk方法以及分類Top-K準確率的實現

PyTorch中的topk方法以及分類Top-K準確率的實現 Top-K 準確率 在分類任務中的類別數很多時&#xff08;如ImageNet中1000類&#xff09;&#xff0c;通常任務是比較困難的&#xff0c;有時模型雖然不能準確地將ground truth作為最高概率預測出來&#xff0c;但通過學習&#…

java高級語言特性,Java高級語言特性之注解

注解的定義Java 注解(Annotation)又稱 Java 標注&#xff0c;是 JDK1.5 引入的一種注釋機制。注解是元數據的一種形式&#xff0c;提供有關于程序但不屬于程序本身的數據。注解對它們注解的代碼的操作沒有直接影響。注解本身沒有任何意義&#xff0c;單獨的注解就是一種注釋&am…

C/C++中的typedef 和 #define

C/C中的typedef 和 #define typedef C/C中的關鍵字typedef允許用戶為類型名來起一個新名字&#xff0c;通常會是縮寫或者能夠清晰表明類型含義的新名字。 例&#xff1a; typedef unsigned int UINT; UINT 100;值得注意的是&#xff0c;typedef除了為C/C內置的數據類型取別…

php3.2.3 升級,thinkphp3.2.3 升級到3.2.4時出錯問題

有些項目最初用OneThink做的&#xff0c;而OneThink 默認使用的TP 是3.2.0 的&#xff0c;沒事的時候就想給升級一下&#xff0c;但是直接復制進去的時候&#xff0c;有錯誤&#xff0c;導致OneThink 不能運行&#xff0c;排查后&#xff0c;需要修改兩個地方1、修改 Applicati…