日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 深度学习目标检测评价指标 :mAP、Precision、Recall、AP、IOU等

發布時間:2025/3/21 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 深度学习目标检测评价指标 :mAP、Precision、Recall、AP、IOU等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目標檢測評價指標:

準確率 (Accuracy),混淆矩陣 (Confusion Matrix),精確率(Precision),召回率(Recall),平均正確率(AP),mean Average Precision(mAP),交除并(IoU),ROC + AUC,非極大值抑制(NMS)。

假設原始樣本中有兩類,其中:?
??1:總共有 P 個類別為 1 的樣本,假設類別 1 為正例。?
??2:總共有 N 個類別為 0 的樣本,假設類別 0 為負例。?
經過分類后:?
??3:有 TP 個類別為 1 的樣本被系統正確判定為類別 1,FN 個類別為 1 的樣本被系統誤判定為類別 0,顯然有 P=TP+FN;?
??4:有 FP 個類別為 0 的樣本被系統誤判斷定為類別 1,TN 個類別為 0 的樣本被系統正確判為類別 0,顯然有 N=FP+TN;?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??GroundTruth? ? ? ? ? ?預測結果

TP(True Positives):? ?真的正樣本? =?【正樣本? 被正確分為? 正樣本】

TN(True Negatives):真的負樣本? = 【負樣本? 被正確分為? 負樣本】

FP(False Positives):? 假的正樣本? = 【負樣本? 被錯誤分為? 正樣本】

FN(False Negatives):假的負樣本? = 【正樣本? 被錯誤分為? 負樣本】

?

1、準確率 (Accuracy)

  A = (TP + TN)/(P+N) = (TP + TN)/(TP + FN + FP + TN);
??反映了分類器統對整個樣本的判定能力——能將正的判定為正,負的判定為負。

2、精確度(Precision)

? ??? ? P = TP/(TP+FP);

? ? ? ?分對的樣本數除以所有的樣本數 ,即:準確(分類)率 = 正確預測的正反例數 / 總數。

  準確率一般用來評估模型的全局準確程度,不能包含太多信息,無法全面評價一個模型性能。

? ? ? ?反映了被分類器判定的正例中真正的正例樣本的比重。

3、召回率(recall)

??? ? ? R = TP/(TP+FN) = 1 - FN/T;
??反映了被正確判定的正例占總的正例的比重。

4、F1值?

? ? ? ?F1 = 2 * 召回率 * 準確率 / (召回率 + 準確率);

? ? ? ?這就是傳統上通常說的 F1 measure。
?

5、漏警概率(Missing Alarm)

? ? ???MA = FN/(TP + FN) = 1–TP/T = 1-R;
? ? ? ?反映有多少個正例被漏判。

6、虛警概率(False Alarm)

? ? ? ?FA = FP/(TP + FP) = 1–P;
? ? ? ?反映有多少個負例被誤判。

7、混淆矩陣 (Confusion Matrix)

  混淆矩陣中的橫軸是模型預測的類別數量統計,縱軸是數據真實標簽的數量統計。

  對角線,表示模型預測和數據標簽一致的數目,所以對角線之和除以測試集總數就是準確率。對角線上數字越大越好,在可視化結果中顏色越深,說明模型在該類的預測準確率越高。如果按行來看,每行不在對角線位置的就是錯誤預測的類別。總的來說,我們希望對角線越高越好,非對角線越低越好。

8、精確率(Precision)與召回率(Recall)

  

  一些相關的定義。假設現在有這樣一個測試集,測試集中的圖片只由大雁和飛機兩種圖片組成,假設你的分類系統最終的目的是:能取出測試集中所有飛機的圖片,而不是大雁的圖片。

  • True positives :?正樣本被正確識別為正樣本,飛機的圖片被正確的識別成了飛機。?

  • True negatives:?負樣本被正確識別為負樣本,大雁的圖片沒有被識別出來,系統正確地認為它們是大雁。?

  • False positives:?假的正樣本,即負樣本被錯誤識別為正樣本,大雁的圖片被錯誤地識別成了飛機。?

  • False negatives:?假的負樣本,即正樣本被錯誤識別為負樣本,飛機的圖片沒有被識別出來,系統錯誤地認為它們是大雁。

  Precision其實就是在識別出來的圖片中,True positives所占的比率。也就是本假設中,所有被識別出來的飛機中,真正的飛機所占的比例。反映了被分類器判定的正例中真正的正例樣本的比重。

  Recall 是測試集中所有正樣本樣例中,被正確識別為正樣本的比例。也就是本假設中,被正確識別出來的飛機個數與測試集中所有真實飛機的個數的比值。

  Precision-recall 曲線:改變識別閾值,使得系統依次能夠識別前K張圖片,閾值的變化同時會導致Precision與Recall值發生變化,從而得到曲線。

  如果一個分類器的性能比較好,那么它應該有如下的表現:在Recall值增長的同時,Precision的值保持在一個很高的水平。而性能比較差的分類器可能會損失很多Precision值才能換來Recall值的提高。通常情況下,文章中都會使用Precision-recall曲線,來顯示出分類器在Precision與Recall之間的權衡。

9、平均精度(Average-Precision,AP)與?mean Average Precision(mAP)

  AP就是Precision-recall 曲線下面的面積,通常來說一個越好的分類器,AP值越高。

  mAP是多個類別AP的平均值。這個mean的意思是對每個類的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]區間,越大越好。該指標是目標檢測算法中最重要的一個。

  在正樣本非常少的情況下,PR表現的效果會更好。

  

10、IoU

  IoU這一值,可以理解為系統預測出來的框與原來圖片中標記的框的重合程度。?計算方法即檢測結果Detection Result與 Ground Truth 的交集比上它們的并集,即為檢測的準確率。

? ? ? ?值得注意的是,IoU值超過0.5時,主觀效果已經比較不錯。

  IOU正是表達這種bounding box和groundtruth的差異的指標:

11、ROC(Receiver Operating Characteristic)曲線與AUC(Area Under Curve)

?  ??

  ROC曲線:

  • 橫坐標:假正率(False positive rate, FPR),FPR = FP / [ FP + TN] ,代表所有負樣本中錯誤預測為正樣本的概率,假警報率;

  • 縱坐標:真正率(True positive rate, TPR),TPR ?= TP / [ TP + FN] ,代表所有正樣本中預測正確的概率,命中率。

  對角線對應于隨機猜測模型,而(0,1)對應于所有整理排在所有反例之前的理想模型。曲線越接近左上角,分類器的性能越好。

  ROC曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試數據中的正負樣本的分布也可能隨著時間變化。

  ROC曲線繪制:

  (1)根據每個測試樣本屬于正樣本的概率值從大到小排序;

  (2)從高到低,依次將“Score”值作為閾值threshold,當測試樣本屬于正樣本的概率大于或等于這個threshold時,我們認為它為正樣本,否則為負樣本;

  (3)每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。?

?  當我們將threshold設置為1和0時,分別可以得到ROC曲線上的(0,0)和(1,1)兩個點。將這些(FPR,TPR)對連接起來,就得到了ROC曲線。當threshold取值越多,ROC曲線越平滑。

?  AUC(Area Under Curve)即為ROC曲線下的面積。AUC越接近于1,分類器性能越好。

?  物理意義:首先AUC值是一個概率值,當你隨機挑選一個正樣本以及一個負樣本,當前的分類算法根據計算得到的Score值將這個正樣本排在負樣本前面的概率就是AUC值。當然,AUC值越大,當前的分類算法越有可能將正樣本排在負樣本前面,即能夠更好的分類。

  計算公式:就是求曲線下矩形面積。

?12、PR曲線和ROC曲線比較

  ROC曲線特點:

  (1)優點:當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變。因為TPR聚焦于正例,FPR聚焦于與負例,使其成為一個比較均衡的評估方法。

     ?在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試數據中的正負樣本的分布也可能隨著時間變化。

  (2)缺點:上文提到ROC曲線的優點是不會隨著類別分布的改變而改變,但這在某種程度上也是其缺點。因為負例N增加了很多,而曲線卻沒變,這等于產生了大量FP。像信息檢索中如果主要關心正例的預測準確性的話,這就不可接受了。在類別不平衡的背景下,負例的數目眾多致使FPR的增長不明顯,導致ROC曲線呈現一個過分樂觀的效果估計。ROC曲線的橫軸采用FPR,根據FPR ,當負例N的數量遠超正例P時,FP的大幅增長只能換來FPR的微小改變。結果是雖然大量負例被錯判成正例,在ROC曲線上卻無法直觀地看出來。(當然也可以只分析ROC曲線左邊一小段)

  PR曲線:

  (1)PR曲線使用了Precision,因此PR曲線的兩個指標都聚焦于正例。類別不平衡問題中由于主要關心正例,所以在此情況下PR曲線被廣泛認為優于ROC曲線。

  使用場景:

  • ROC曲線由于兼顧正例與負例,所以適用于評估分類器的整體性能,相比而言PR曲線完全聚焦于正例。

  • 如果有多份數據且存在不同的類別分布,比如信用卡欺詐問題中每個月正例和負例的比例可能都不相同,這時候如果只想單純地比較分類器的性能且剔除類別分布改變的影響,則ROC曲線比較適合,因為類別分布改變可能使得PR曲線發生變化時好時壞,這種時候難以進行模型比較;反之,如果想測試不同類別分布下對分類器的性能的影響,則PR曲線比較適合。

  • 如果想要評估在相同的類別分布下正例的預測情況,則宜選PR曲線。

  • 類別不平衡問題中,ROC曲線通常會給出一個樂觀的效果估計,所以大部分時候還是PR曲線更好。

  • 最后可以根據具體的應用,在曲線上找到最優的點,得到相對應的precision,recall,f1 score等指標,去調整模型的閾值,從而得到一個符合具體應用的模型。

  • ?13、非極大值抑制(NMS)

    ?  Non-Maximum Suppression就是需要根據score矩陣和region的坐標信息,從中找到置信度比較高的bounding box。對于有重疊在一起的預測框,只保留得分最高的那個。

      (1)NMS計算出每一個bounding box的面積,然后根據score進行排序,把score最大的bounding box作為隊列中首個要比較的對象;

      (2)計算其余bounding box與當前最大score與box的IoU,去除IoU大于設定的閾值的bounding box,保留小的IoU得預測框;

      (3)然后重復上面的過程,直至候選bounding box為空。

      最終,檢測了bounding box的過程中有兩個閾值,一個就是IoU,另一個是在過程之后,從候選的bounding box中剔除score小于閾值的bounding box。需要注意的是:Non-Maximum Suppression一次處理一個類別,如果有N個類別,Non-Maximum Suppression就需要執行N次。

    總結

    以上是生活随笔為你收集整理的Python 深度学习目标检测评价指标 :mAP、Precision、Recall、AP、IOU等的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。