最近在訓練pytorch-yolov3模型模型的過程中,模型評估時,某些類別的ap值會大於1,根據自己的常識,一直認為計算ap的方法存在問題,但是並不是。原因請往下看。
詳情請參考:
預備知識
iou:兩個目標框的交並比
目標框定義:
true positive (tp):乙個正確的定位結果,就是你**的框和我們的groudtruth之間的iou是可以大於我們規定的閾值的,我們一般取這個閾值都是0.5
false positive (fp):就是乙個錯誤的結果,就是你**的這個框和groundtruth的iou是小於閾值的
false negative (fn): 就是我們本來這裡有乙個物體的,所以我們這個地方應該有個框,但是你沒**出來,那麼這個groundtruth對於你的模型來講就是乙個fn
true negative (tn):這個就是我們這個groundtruth找到了乙個和它的iou大於閾值的**框,那麼對於這個ground就是認為被成功的檢測出來了。
precision和recall
ap的計算
11-points方法:
顧名思義,recall分為11點區間,ap定義為11個區間內最大precision的最大值得平均值。
area方法:
顧名思義:區間內積分面積總和定義為ap。
1.recall=tp/all groundtruth,tp為滿足iou需求的檢測框(乙個groundtruth可能會對應多個tp),所以recall可能會大於1。
2.11-points方法的recall範圍(0-1),area方法的recall範圍覆蓋整個recall範圍。
3.綜上兩種原因,11-points方法,ap值總會落在0-1範圍內;area方法,當recall範圍超出0-1時,ap可能會出現大於1的情況。
所以說當遇到某些類別ap值大於1的時候,不要慌,先判斷用的什麼評估方法。
ap值大於1的可能類別,多數是因為類別分布不均衡導致,類別樣本佔比大的類別,容易出現此種情況。
上述分析屬於個人理解,如有不對之處,還請指正。
tensorflow 目標檢測訓練及評估
基於tensorflow訓練車輛檢測器原始碼已上傳github,裡面整合了一鍵式訓練的指令碼。0.硬體,一塊1080ti及以上顯示卡的機器,不建議用cpu訓練。1.安裝gpu版tensorflow,並搭建訓練環境 sudo pip install tensorflow gpu sudo pip in...
深度學習 目標檢測mAP計算及旋轉檢測IOU
這裡僅作簡要分析,原始碼位址 有些許改變 1.資料夾分為兩個,真實標籤及檢測標籤 兩個資料夾中的檔案均為txt檔案,每張對應乙個txt檔案,其中真值標籤,每一行乙個目標,類別名 座標值 其中檢測標籤,每一行乙個目標,類別名 置信度 座標值 1.將所有真值標籤讀取並儲存json檔案,字典資料有以下3個...
2017 基於學習的目標檢測及應用
1.現有的各類目標檢測框架存在的共有侷限和瓶頸 a,小目標的感知和檢測 b,精度和速度難以兼得 c,設計和開發適合資源受限平台的輕量化演算法和和研究深度模型的壓縮技術日益成為焦點。2.目標檢測的發展值得關注 a,檢測效能的優化,包括精度的提公升和效率的增長,尤其在小目標檢測這個子問題上需要突破瓶頸 ...