目標檢測指標計算

mAP(mean Average Precision)

概述

  1. 預備參數:類別數,IoU閾值,maxDets值(每張測試圖像最多保留maxDets個預測框,通常是根據置信度得分排序后取前maxDets個);
    • Q: 假如某張測試圖像只有3個預測框dt,而此時的maxDets=5,如何處理?A: 只保留這3個dt,對應代碼是dt[0:maxDets]
  2. 根據模型輸出的置信度分數,將所有預測框按從高到低排序;
  3. 根據IoU是否超過閾值,判斷每個預測框是 T P I o U TP_{IoU} TPIoU?還是 F P I o U FP_{IoU} FPIoU?(TP/FP還要結合分類置信度判斷);
  4. 不同置信度閾值對應一個Precision-Recall點,取不同置信度閾值得到 Precision-Recall 曲線;
  5. PR曲線下面積即為 AP(根據面積積分計算方式不同,分為VOC和COCO風格);
  6. 所有類別AP平均值即為mAP;如果數據集中包含多個 IoU 閾值,則需要分別計算每個 IoU 閾值下的mAP,然后取平均值,例如 mAP@[0.5:0.95] 。

背景知識

Precision 和 Recall

  • Precision(精確率) :預測為正類的樣本中,實際為正類的比例。
    P r e c i s i o n = T r u e P o s i t i v e s ( T P ) T r u e P o s i t i v e s ( T P ) + F a l s e P o s i t i v e s ( F P ) Precision=\frac{True Positives (TP)}{True Positives (TP)+False Positives (FP)} Precision=TruePositives(TP)+FalsePositives(FP)TruePositives(TP)?
  • Recall(召回率) :實際為正類的樣本中,被正確預測為正類的比例。
    R e c a l l = T r u e P o s i t i v e s ( T P ) T r u e P o s i t i v e s ( T P ) + F a l s e N e g a t i v e s ( F N ) Recall= \frac{True Positives (TP)}{True Positives (TP)+False Negatives (FN)} Recall=TruePositives(TP)+FalseNegatives(FN)TruePositives(TP)?

IoU與匹配規則

  • IoU :預測框與真實框的交集面積與并集面積的比值。
    I o U = A r e a o f O v e r l a p A r e a o f U n i o n IoU=\frac{Area of Overlap}{Area of Union} IoU=AreaofUnionAreaofOverlap?
  • 如果 IoU 超過某個閾值(通常為 0.5 或其他自定義值),則認為該預測框是 T P I o U TP_{IoU} TPIoU?,否則為 F P I o U FP_{IoU} FPIoU?

計算 Precision-Recall 曲線

假設我們有一個簡單的例子,包含以下數據:

  • 總共有 5 個真實框。
  • 模型輸出了 5 個預測框,按置信度排序后的結果如下:
    在這里插入圖片描述
    取預測框1的置信度為閾值,則TP = 1, FP = 0;Precision=1/1=1.0,Recall=1/5=0.2;

    取預測框5的置信度為閾值,則TP = 3, FP = 2;Precision=3/5=0.6,Recall=3/5=0.6;

這5個點可以組成PR曲線。

20250520更新

Q:在計算目標檢測的mAP的時候,如果當前有100個預測框,而只有5個GT。在分配TP和FP的時候,只要預測框的iou大于閾值,就認為它是TP嗎?還是100個預測框按置信度降序排列,按iou分配完5個GT后,剩余的都作為FP?

A:TP和 FP 的分配不是簡單地“只要預測框的 IoU 大于閾值就算 TP”,而是需要考慮 置信度排序 和 唯一匹配原則。

  1. 將所有預測框按照置信度得分從高到低排序
  2. 從得分最高的預測框開始,依次與GT進行匹配
    • 如果當前預測框與某個未被匹配的 GT 框的 IoU ≥ 閾值(通常是 0.5),則這個預測框被標記為 TP,同時該 GT 框被“占用”,不能再被其他預測框匹配
    • 如果沒有任何未匹配的 GT 框與當前預測框的 IoU ≥ 閾值,那么這個預測框被標記為 FP
  3. 注意!這里的TP和FP實際對應 T P I o U TP_{IoU} TPIoU? F P I o U FP_{IoU} FPIoU?

計算 AP(曲線下面積)

  • 插值處理 :為了消除 Precision 的波動,通常對 Precision 進行插值處理,即對于每個 Recall 值 r,取大于等于 r 的最大 Precision 值。
  • 積分計算 :對插值后的 Precision-Recall 曲線進行積分,計算曲線下面積。常用的方法包括:
    • 直接數值積分(COCO風格)
    • 使用 11 點插值法(如 VOC 2007 的標準),在 Recall = [0, 0.1, 0.2, …, 1.0] 處取 Precision 值并求平均。

Recall

以COCO計算方式為例,如果是單獨考慮recall指標,則指每一類下, T P I o U TP_{IoU} TPIoU?和GT數量的比值。并沒有考慮置信度閾值,而只考慮根據IoU匹配上來決定TP。

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

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

相關文章

聯合索引失效情況分析

一.模擬表結構: 背景: MySQL版本——8.0.37 表結構DDL: CREATE TABLE unite_index_table (id bigint NOT NULL AUTO_INCREMENT COMMENT 主鍵,clomn_first varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMEN…

軟件架構之-論分布式架構設計及其實現

論分布式架構設計及其實現 摘要正文摘要 2023年2月,本人所在集團公司承接了長三角地區某省漁船圖紙電子化審查項目開發,該項目旨在為長三角地區漁船建造設計院、漁船審圖機構提供一個便捷化的服務平臺。在次項目中,我作為項目成員參與了整個項目的建設工作,全權負責項目需求…

Pydantic數據驗證實戰指南:讓Python應用更健壯與智能

導讀:在日益復雜的數據驅動開發環境中,如何高效、安全地處理和驗證數據成為每位Python開發者面臨的關鍵挑戰。本文全面解析了Pydantic這一革命性數據驗證庫,展示了它如何通過聲明式API和類型提示系統,徹底改變Python數據處理模式。…

3、ubantu系統 | 通過vscode遠程安裝并配置anaconda

1、vscode登錄 登錄后通過pwd可以發現目前位于wangqinag賬號下,左側為屬于該賬號的文件夾及文件。 通過cd ..可以回到上一級目錄,通過ls可以查看當前目錄下的文件夾及文件。 2、安裝 2.1、下載anaconda 通過wget和curl下載未成功,使用手動…

Python 與 Java 在 Web 開發中的深度對比:從語言特性到生態選型

在 Web 開發領域,Python 和 Java 作為兩大主流技術棧,始終是開發者技術選型時的核心考量。本文將從語言本質、框架生態、性能工程、工程實踐等多個維度展開深度對比,結合具體技術場景解析兩者的適用邊界與融合方案,為開發者提供系…

【OpenGL學習】(一)創建窗口

文章目錄 【OpenGL學習】(一)創建窗口 【OpenGL學習】(一)創建窗口 GLFW OpenGL 本身只是一套圖形渲染 API,不提供窗口創建、上下文管理或輸入處理的功能。 GLFW 是一個支持創建窗口、處理鍵盤鼠標輸入和管理 OpenGL…

電腦閃屏可能的原因

1. 顯示器 / 屏幕故障 屏幕排線接觸不良:筆記本電腦屏幕排線(屏線)松動或磨損,導致信號傳輸不穩定,常見于頻繁開合屏幕的設備。屏幕面板損壞:液晶屏內部燈管老化、背光模塊故障或面板本身損壞,…

docker容器知識

一、docker與docker compose區別: 1、docker是創建和管理單個容器的工具,適合簡單的應用或服務; 2、docker compose是管理多容器應用的工具,適合復雜的、多服務的應用程序; 3、docker與docker compose對比&#xff…

什么是Rootfs

Rootfs (Root Filesystem) 詳解 buildroot工具構建了一個名為"rootfs.tar"的根文件系統壓縮包。 什么是rootfs Rootfs(Root Filesystem,根文件系統)是操作系統啟動后掛載的第一個文件系統,它包含系統正常運行所需的基…

關于NLP自然語言處理的簡單總結

參考: 什么是自然語言處理?看這篇文章就夠了! - 知乎 (zhihu.com) 所謂自然語言理解,就是研究如何讓機器能夠理解我們人類的語言并給出一些回應。 自然語言處理(Natural Language Processing,NLP&#xff0…

Linux下載國外軟件鏡像的加速方法(以下載Python-3.8.0.tgz為例)

0 前言 使用linux經常會通過國外服務器下載軟件鏡像,有些軟件的下載速度奇慢,本文介紹一種加速國外軟件鏡像下載速度的方法,需要準備下載工具:迅雷。 1 以下載Python-3.8.0.tgz為例 找到Python官網的Python-3.8.0.tgz鏡像下載地…

沒有公網ip怎么端口映射外網訪問?使用內網穿透可以解決

無公網IP時本地搭建的網絡端口服務怎么映射外網遠程訪問?較為簡單通用的方案就是使用nat123內網穿透,下面詳細內網映射外網實現教程。? 一、了解內網公網區別,及無公網IP外網訪問方案 內網IP默認只能在同局域網內連接互通,而公…

Word2Vec詳解

目錄 Word2Vec 一、Word2Vec 模型架構 (一)Word2Vec 的核心理念 (二)Word2Vec 的兩種架構 (三)負采樣與層次 Softmax (四)Word2Vec 的優勢與局限 二、Word2Vec 預訓練及數據集…

ShardingSphere:查詢報錯:Actual table `數據源名稱.表名` is not in table rule configuration

目錄 簡介異常信息排查原因解決 簡介 1、使用ShardingSphere框架&#xff0c;版本為5.2.1 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core</artifactId><version>5.2.1</version>…

MongoDB聚合查詢:從入門到精通

文章目錄 前言一、工具一般聚合查詢分為四步 二、使用步驟1.MongoDB Compass2.Studio 3T 二、舉個栗子總結 前言 Mongo 聚合查詢 一般用mongo做數據庫,涉及到關聯查詢情況不多,但是還有些情況要使用到,今天就講下如何通過工具做關聯查詢,最終聚合結果,得到最終的查詢結果集; …

codeup添加流水線docker自動化部署

在項目根目錄下增加Dockerfile文件 # 使用基礎鏡像 FROM maven:3.8.4-openjdk-17-slim AS build # 設置工作目錄 WORKDIR /app # 復制項目源代碼 COPY . . # 構建項目 RUN mvn clean package -DskipTests # 驗證JAR包是否生成 RUN ls -l target/your-project.jar # 使用合適的…

從 Word2Vec 到 BERT:AI 不止是詞向量,更是語言理解

一、前言 在上篇文章中&#xff0c;我們介紹了Word2Vec以及它的作用&#xff0c;總的來說&#xff1a; Word2Vec是我們理解NLP的第一站 Word2Vec將詞變成了“向量”—— 終于可以用機器理解詞語的相似度 我們獲得了例如“國王 - 男人 女人 ≈ 女王” 的類比能力 我們可以將…

鏡像管理(2)Dockerfile總結

一、docker鏡像構建方法 commoit :使用 docker commit 意味著所有對鏡像的操作都是黑箱操作,生成的鏡像也被稱為黑 箱鏡像,換句話說,就是除了制作鏡像的人知道執行過什么命令、怎么生成的鏡像,別人根 本無從得知。而且,即使是這個制作鏡像的人,過一段時間后也無法記清具…

機器學習第十七講:PCA → 把100維數據壓縮成3D視圖仍保持主要特征

機器學習第十七講&#xff1a;PCA → 把100維數據壓縮成3D視圖仍保持主要特征 資料取自《零基礎學機器學習》。 查看總目錄&#xff1a;學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章&#xff1a;DeepSeek R1本地與線上滿血版部署&#xff1a;超詳細手把手指南 主…

【Linux庖丁解牛】——進程等待!

1. 進程退出場景 進程退出一般有三種場景&#xff1a; 。代碼運行完畢&#xff0c;結果正確 。代碼運行完畢&#xff0c;結果錯誤【比如&#xff0c;我們要對某個文件進行寫入&#xff0c;但寫入的文件路徑出錯&#xff0c;代碼運行完畢&#xff0c;可是結果出錯】 。代碼異…