2025-08-17 李沐深度學習16——目標檢測

文章目錄

  • 1 介紹
    • 1.1 實際應用
    • 1.2 邊界框
    • 1.3 數據集
  • 2 錨框
    • 2.1 什么是錨框
    • 2.2 交并比
    • 2.3 分配標簽
    • 2.4 非極大值抑制
  • 3 經典目標檢測網絡
    • 3.1 R-CNN
      • 3.1.1 R-CNN (原始版本)
      • 3.1.2 Fast R-CNN
      • 3.1.3 Faster R-CNN
      • 3.1.4 Mask R-CNN
    • 3.2 單階段檢測器:SSD 和 YOLO
      • 3.2.1 SSD (Single Shot Detection)
      • 3.2.2 YOLO (You Only Look Once)
    • 3.3 非錨框(Anchor-free)算法

1 介紹

目標檢測,也稱為物體檢測,是計算機視覺領域一個非常重要的應用。它的核心任務是在一張圖片中識別出所有感興趣的物體,并確定它們的位置

這個任務比簡單的圖片分類要復雜得多,因為它需要處理以下兩個問題:

  1. 識別多個物體:一張圖片可能包含多個不同的物體(比如多只貓、多只狗、甚至貓和狗同時出現)。目標檢測需要識別出所有這些物體。
  2. 定位物體位置:僅僅識別出物體還不夠,它還需要用一個邊界框(Bounding Box) 把每個物體圈出來,從而確定它們在圖片中的具體位置。
特征圖片分類(Image Classification)目標檢測(Object Detection)
任務判斷一張圖片的主體內容屬于哪個類別。識別圖片中所有感興趣的物體,并確定它們的類別和位置。
關注點整體圖像,通常假設圖片中只有一個主體物體。多個物體,即使它們屬于同一類別。
輸出一個類別標簽(例如:“狗”)。多個物體的類別標簽 和 它們對應的位置信息(邊界框)。
舉例一張圖片中有只狗,分類任務是判斷這張圖片是“狗”。一張圖片中有兩只狗和一只貓,目標檢測任務是識別出“狗1”、“狗2”、“貓1”,并用邊界框標出它們各自的位置。
image-20250816211213198

1.1 實際應用

目標檢測在現實世界中有非常廣泛的應用,以下是幾個典型例子:

  • 自動駕駛:這是目標檢測一個非常重要的應用。自動駕駛汽車需要實時識別周圍的車輛、行人、交通信號燈和路標等,以確保安全行駛。
  • 智能零售/無人售貨:系統可以自動識別顧客從貨架上拿走了哪些商品,從而實現無人收銀。
  • 安防監控:識別可疑人員、遺留物品或車輛,并進行跟蹤。
  • 工業質檢:識別產品上的缺陷或瑕疵。

1.2 邊界框

**邊界框(Bounding Box)**是目標檢測中用來表示物體位置的核心概念。它是一個方框,通常用來粗略地圈出圖片中的一個物體。

一個邊界框可以用四個數字來定義,主要有兩種常用的表示方法:

  1. 左上角和右下角坐標
    (xtop_left,ytop_left,xbottom_right,ybottom_right)(x_{top\_left},y_{top\_left},x_{bottom\_right},y_{bottom\_right}) (xtop_left?,ytop_left?,xbottom_right?,ybottom_right?)

    • 優點:直觀,可以直接確定框的對角線。
  2. 左上角坐標、寬度和高度
    (xtop_left,ytop_left,w,h)(x_{top\_left},y_{top\_left},w,h) (xtop_left?,ytop_left?,w,h)

    • 優點:在某些計算中更方便,例如縮放或大小調整。
image-20250816211523948

1.3 數據集

目標檢測任務的數據集與圖片分類有顯著不同,因為其標注成本更高。

  • 工作量大:每張圖片可能包含多個物體,每個物體都需要單獨標注。如果一張圖片平均有 5 個物體,標注工作量至少是圖片分類的 5 倍。
  • 需要畫框:標注者需要用鼠標拖動來畫出每個物體的邊界框,這比簡單地選擇一個類別標簽要耗時得多。

由于標注成本高昂,目標檢測的數據集通常比圖片分類的數據集

一張圖片可能對應多個物體和類別,數據不能像圖片分類那樣簡單地按類別存放在子文件夾中。通常,標注信息會存放在一個單獨的文件中,比如一個文本文件或 CSV 文件。

  • 格式舉例:每一行代表圖片中的一個物體,包含以下信息:
    • 文件名
    • 物體類別
    • 邊界框的四個坐標值

COCO (Common Objects in Context) 是目標檢測領域一個非常重要和廣泛使用的大型數據集,它的地位類似于圖片分類中的 ImageNet。

  • 特點
    • 包含 80 個日常生活中常見的物體類別(如人、車輛、交通燈、飛機、日常用品等),類別數遠少于 ImageNet 的 1000 類。
    • 包含約 33 萬張圖片,標注了超過 150 萬個物體。
  • 用途
    • 由于其規模和多樣性,COCO 數據集被廣泛用于學術研究和模型性能評估。
image-20250816212037603

2 錨框

由于直接預測邊界框(Bounding Box) 的四個坐標值難度較大,基于錨框的算法提供了一種更有效的方法。

2.1 什么是錨框

錨框,也叫 Anchor Box,是目標檢測算法預先生成的一系列候選框。算法會先在圖片中生成大量的錨框,然后對每個錨框進行兩項預測:

  1. 分類:判斷這個錨框內是否包含感興趣的物體(例如:狗、貓),或者只包含背景。
  2. 回歸:如果錨框內有物體,則預測這個錨框需要進行多大的平移縮放才能與真實的邊界框(Ground Truth Bounding Box) 完全重合。

通過這種方法,算法不再是直接從零開始預測邊界框的坐標,而是基于預設的錨框進行微調,這大大簡化了預測任務。

基于錨框的算法需要進行兩次預測:

  • 第一次預測(分類):預測每個錨框是否包含某個物體,以及屬于哪一類。
  • 第二次預測(回歸):預測每個錨框到真實邊界框的偏移量

這與目標檢測需要預測類別位置的任務相吻合。

image-20250816212706141

2.2 交并比

為了評估錨框與真實邊界框的相似度,我們使用一個稱為 IOU(Intersection over Union) 的指標。

IOU(交并比)是衡量兩個框重疊程度的指標,其值在 0 到 1 之間:

  • IOU = 0:兩個框完全沒有重疊。
  • IOU = 1:兩個框完全重合。
  • IOU 的值越接近 1,表示兩個框的相似度越高。

IOU 的計算方法非常直觀:
IOU(A,B)=面積(A∪B)面積(A∩B)IOU(A,B)=面積(A∪B)面積(A∩B) IOU(A,B)=面積(AB)面積(AB)
其中:

  • A 和 B 代表兩個框。
  • A∩B 是兩個框的交集面積(重疊部分)。
  • A∪B 是兩個框的并集面積(兩個框的總面積減去重疊面積)。

IOU 本質上是雅可比指數(Jaccard Index) 在邊界框上的應用。如果我們將每個框看作一個像素集合,IOU 就是兩個集合的交集大小除以它們的并集大小。

image-20250816212741369

2.3 分配標簽

在訓練模型時,我們需要為每個錨框分配一個“標簽”,告訴模型這個錨框應該預測什么。

一個簡單的分配策略是:

  1. 為每個真實邊界框(Ground Truth Bounding Box),找到與之 IOU 值最大的那個錨框。將這個錨框標記為正樣本,并將其與該真實邊界框關聯起來。
  2. 在剩下的錨框中,找到那些與任意一個真實邊界框的 IOU 值大于某個閾值(比如 0.5)的錨框。這些錨框也標記為正樣本
  3. 所有不屬于上述兩類的錨框都被標記為負樣本(即只包含背景)。
image-20250816212857856

注意點

  • 一張圖片可能會生成成千上萬個錨框,但真實邊界框通常只有十幾個。因此,絕大多數錨框都是負類樣本
  • 為錨框分配標簽是一個動態過程,每次讀入一張圖片時都需要重新計算,因為錨框的位置是預設的,而真實邊界框的位置是根據圖片內容而變化的。
image-20250816213044371

2.4 非極大值抑制

由于算法會為每個錨框生成一個預測結果,最終的輸出會包含大量重疊且相似的預測框。NMS(Non-Maximum Suppression)的作用是去除冗余的預測框,得到一個干凈、最終的預測結果。

NMS 的基本思想是保留那些置信度最高的預測框,并抑制(移除)那些與它高度重疊的低置信度預測框。

NMS 算法步驟:

  1. 篩選:從所有預測框中,篩選出那些置信度(即預測物體類別概率)大于某個閾值的非背景類預測框。
  2. 排序:將這些預測框按置信度從高到低排序。
  3. 迭代
    • 選取置信度最高的預測框作為最終預測。
    • 移除(抑制)所有與該預測框 IOU 值大于某個閾值(例如 0.5)的其他預測框。
    • 從剩余的預測框中,重復上述步驟,直到沒有更多的預測框。

這個過程將確保最終輸出的預測框是不重疊置信度最高的。

image-20250816213351291

3 經典目標檢測網絡

3.1 R-CNN

R-CNN (Region-based Convolutional Neural Network) 是目標檢測領域一個里程碑式的工作,它首次將深度學習引入目標檢測。

3.1.1 R-CNN (原始版本)

image-20250816213746766
  • 核心思想:這是一個“兩階段(two-stage)”算法,先生成候選區域,再對每個區域進行分類和回歸。
  • 流程
    1. 區域建議(Region Proposal):使用一種傳統的啟發式算法(如 Selective Search)在圖像中生成數千個錨框(候選區域)。
    2. 特征提取:將每個錨框中的內容裁剪縮放成固定大小,然后輸入到一個預訓練的 CNN 模型(如 VGG, AlexNet)中提取特征。
    3. 分類和回歸
      • 使用 SVM 分類器對提取的特征進行分類(判斷是哪一類物體或背景)。
      • 使用一個線性回歸模型預測邊界框的偏移量,對錨框進行微調。
  • 關鍵技術:ROI Pooling
    • 為了處理不同大小的錨框,R-CNN 引入了 ROI (Region of Interest) Pooling
    • ROI Pooling 的作用是將任意大小的區域池化(pooling)成固定大小的輸出(例如 7x7),這使得所有錨框的特征可以被送入到后續的全連接層。
    • 方法:將 ROI 區域均勻地劃分為 NxN 網格,然后在每個網格中執行最大池化,得到一個固定大小的特征圖。
image-20250816214014915
  • 缺點:計算成本高。因為要對每個候選框都單獨進行一次 CNN 特征提取,一張圖片可能需要重復處理上千次。

3.1.2 Fast R-CNN

  • 核心思想:為了解決 R-CNN 的速度問題,Fast R-CNN 提出了只對整張圖片進行一次 CNN 特征提取
  • 改進流程
    1. 對整張圖片進行 CNN 特征提取,得到一個完整的特征圖(Feature Map)
    2. 仍然使用 Selective Search 生成錨框。
    3. 將這些錨框映射到第一步生成的特征圖上。
    4. 使用 ROI Pooling 從特征圖上提取每個錨框的特征向量。
    5. 將特征向量送入全連接層,進行分類(使用 Softmax)和邊界框回歸。
  • 優點:大幅提升速度,因為 CNN 特征提取只進行了一次。
image-20250816214121496

3.1.3 Faster R-CNN

  • 核心思想:進一步加速,用神經網絡取代傳統的 Selective Search
  • 改進流程
    1. 引入一個名為 RPN (Region Proposal Network) 的小型神經網絡來自動生成高質量的錨框。
    2. RPN 本身是一個簡化的目標檢測器,它接收 CNN 的特征圖作為輸入,并預測哪些區域可能包含物體,同時預測這些區域的邊界框偏移量。
    3. NMS 被用來去除 RPN 生成的冗余錨框。
    4. 這些由 RPN 生成的錨框作為 Fast R-CNN 的輸入,進行后續的分類和回歸。
  • 優點:速度再次提升,且完全端到端(end-to-end),不再依賴外部算法。Faster R-CNN 在精度上表現優異,但速度仍然相對較慢。
image-20250816214212619

3.1.4 Mask R-CNN

  • 核心思想:在 Faster R-CNN 的基礎上,增加了一個實例分割(Instance Segmentation)分支,可以預測每個物體的像素級掩碼(mask)。
  • 關鍵技術:ROI Align
    • 為了實現像素級別的預測,Mask R-CNN 提出了 ROI Align 來替代 ROI Pooling。
    • ROI Pooling 在劃分區域和取整時會產生舍入誤差,導致特征圖和原圖的像素對齊不精確,這對邊界框回歸影響不大,但會嚴重影響像素級分割的精度。
    • ROI Align 采用雙線性插值(bilinear interpolation)來精確地從特征圖中獲取像素值,避免了舍入誤差,從而提高了像素級預測的準確性。
  • 應用:常用于需要高精度和像素級信息的場景,如自動駕駛。
image-20250816214239946

3.2 單階段檢測器:SSD 和 YOLO

與 R-CNN 系列的“兩階段”不同,單階段(Single-stage) 檢測器直接從 CNN 的輸出中預測邊界框和類別,無需單獨的區域建議網絡。

3.2.1 SSD (Single Shot Detection)

  • 核心思想:通過一個神經網絡直接完成所有預測,并且利用多尺度特征圖來提升效果。
  • 流程
    1. 使用 CNN 提取特征,在不同層級的特征圖上進行預測。
    2. 在每個特征圖的每個像素上生成多個不同尺寸和長寬比的錨框。
    3. 對每個錨框同時預測其類別和邊界框偏移量。
  • 優點:速度非常快,因為它只進行一次前向傳播。
  • 缺點:精度相對較低,尤其對小物體檢測效果不佳。
image-20250816214420814

3.2.2 YOLO (You Only Look Once)

  • 核心思想:將目標檢測問題看作一個回歸問題,只看一遍圖片就完成所有預測。
  • 與 SSD 的區別
    • 劃分網格:YOLO 將圖片均勻地劃分為 SxS 的網格,每個網格負責預測位于其中心點的物體。
    • 錨框生成:每個網格只會生成固定數量的錨框(例如 B 個),而不是像 SSD 那樣對每個像素都生成錨框。這大大減少了錨框總數和計算量。
  • 演進:YOLO 系列(YOLOv2, YOLOv3, YOLOv4, etc.)持續優化,在保持速度優勢的同時,不斷提升精度。
  • 應用:YOLO 系列以其極快的速度和不斷提高的精度,在工業界應用廣泛,特別是在需要實時檢測的場景。
image-20250816214511419

3.3 非錨框(Anchor-free)算法

  • 核心思想:這類算法完全放棄使用錨框,直接預測物體的中心點或邊界框的坐標。
  • 方法:通常將目標檢測任務轉換為像素級別的預測,例如,對每個像素預測它是否是某個物體的中心點,以及該物體邊界框的大小和偏移量。
  • 優勢:由于不需要處理大量的錨框,這類算法的流程更簡單,計算更高效,并且有望在未來超越基于錨框的算法。
  • 代表:CenterNet, FCOS 等。
算法家族優點缺點典型應用
R-CNN 系列精度高,尤其是 Faster R-CNN 和 Mask R-CNN。速度相對較慢,計算成本高。競賽、需要極高精度的場景,如醫學影像。
SSD / YOLO 系列速度快,適合實時檢測。早期版本精度不如 R-CNN 系列。工業界、實時監控、無人機等。
非錨框算法流程更簡單,有望超越傳統方法。相對較新,還在發展中。學術研究,未來發展方向。

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

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

相關文章

Bluedroid vs NimBLE

🔹 對比:Bluedroid vs NimBLE 1. 協議棧體積 & 內存占用 Bluedroid:體積大,RAM 占用也大(幾十 KB 到上百 KB)。NimBLE:輕量級,內存占用大概是 Bluedroid 的一半甚至更少。 &…

(純新手教學)計算機視覺(opencv)實戰八——四種邊緣檢測詳解:Sobel、Scharr、Laplacian、Canny

邊緣檢測詳解:Sobel、Scharr、Laplacian、Canny邊緣檢測是圖像處理和計算機視覺中的重要步驟,主要用于發現圖像中亮度變化劇烈的區域,即物體的輪廓、邊界或紋理特征。OpenCV 提供了多種常用的邊緣檢測算子,本教程將通過四種方法帶…

PyTorch 環境配置

目錄一、安裝 CUDA二、安裝 PyTorch1. 創建虛擬環境2. 安裝 PyTorch三、在 PyCharm 上創建一個 PyTorch 項目參考文章: 【2025年最新PyTorch環境配置保姆級教程(附安裝包)】 【超詳細 CUDA 安裝與卸載教程(圖文教程)】…

鴻蒙中冷啟動分析:Launch分析

啟動的分類(熱身環節) 啟動動類型觸發條件系統開銷 & 速度主要優化方向冷啟動應用進程不存在(首次啟動或進程被殺后啟動)最高,需創建進程、加載資源、初始化所有組件主要優化目標,減少主線程任務&…

告別盲目排查,PolarDB+DAS Agent智能運維新突破

1.概述 周五下午6點正準備下班,數據庫CPU突然爆滿,業務告警響成一片,DBA卻要手動翻查CPU/內存/負載等多個監控指標,還要查詢是否有新增慢SQL,死鎖等問題?” 這可能是數據庫DBA最鬧心的場景了,…

Linux------《零基礎到聯網:CentOS 7 在 VMware Workstation 中的全流程安裝與 NAT 網絡配置實戰》

(一)Linux的發行版Centos安裝與配置 下載Linux發行版本Centos:centos-7-isos-x86_64安裝包下載_開源鏡像站-阿里云點擊CentOS-7-x86_64-DVD-2009.torrent ,CentOS-7-x86_64-DVD-2009.torrent是官方提供的 BT 種子文件(176.1 KB&a…

iOS App 混淆工具實戰,教育培訓類 App 的安全保護方案

隨著在線教育、企業培訓、知識付費平臺的興起,越來越多的 iOS 應用需要保護自己的課程資源和核心邏輯。然而,教育類 App 面臨的最大風險并非傳統的外掛或刷分,而是 視頻盜鏈、題庫數據泄露、源碼邏輯被二次利用。 在這種場景下,合…

RabbitMQ:SpringAMQP Topic Exchange(主題交換機)

目錄一、案例需求二、基礎配置三、代碼實現TopicExchange與DirectExchange類似,區別在于RoutingKey可以是多個單次的列表,并且以.分割。 Queue與Exchange指定BindingKey時可以使用通配符: #:代指0個或多個單詞。*:代…

(純新手教學)計算機視覺(opencv)實戰六——圖像形態學(腐蝕、膨脹、開運算、閉運算、梯度、頂帽、黑帽)

圖像形態學在圖像處理中,形態學(Morphology) 是一種基于圖像中物體形狀的處理方法,通常用于二值圖像和灰度圖像。它通過腐蝕、膨脹等基本操作,結合開運算、閉運算、梯度運算、頂帽、黑帽等派生操作,來實現去…

學習嵌入式第三十五天

文章目錄網絡(續上)1.函數接口2.相關功能實現1.TCP連接2.UDP習題網絡(續上) 1.函數接口 sendto 原型:ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, sockle…

為什么給數據表加了索引,寫入速度反而變慢了

為數據表增加索引后之所以會導致寫入(包括插入、更新、刪除)操作的速度變慢,其根本原因在于索引本質上是一個獨立的、需要與主表數據保持實時同步的“數據結構”。這一機制的核心邏輯涵蓋五個方面:因為索引本質上是一個“獨立的數…

.NET Core 中采用獨立數據庫的SAAS(多租戶)方法

介紹多租戶是指一種軟件架構,其中軟件的單個實例在服務器上運行并為多個租戶提供服務。在基于 SAAS 的平臺中,租戶是指使用該平臺開展業務運營的客戶。每個租戶都擁有獨立的數據、用戶帳戶和配置設置,并且與其他租戶隔離。多租戶允許有效利用…

運維日常工作100條

這是一份非常詳細和實用的“運維日常工作100條”清單。它涵蓋了從日常巡檢、變更管理、故障處理到安全、優化和文檔等運維工作的方方面面,可以作為運維工程師的日常工作指南和檢查清單。 運維日常工作100條 一、日常巡檢與監控 (20條) 檢查核心監控大盤:查看整體業務健康狀態…

OpenHarmony子系統介紹

OpenHarmony子系統OpenHarmony子系統1. AI業務子系統2. 方舟運行時子系統3. ArkUI框架子系統4. DFX子系統5. DeviceProfile子系統6. XTS子系統7. 上傳下載子系統8. 主題框架子系統9. 事件通知子系統10. 位置服務子系統11. 元能力子系統12. 全局資源調度子系統13. 全球化子系統1…

博士招生 | 英國謝菲爾德大學 招收計算機博士

內容源自“圖靈學術博研社”gongzhonghao學校簡介謝菲爾德大學(The University of Sheffield)是英國久負盛名的公立研究型大學,也是羅素集團成員之一。在 2026 年 QS 世界大學排名中,謝菲爾德大學位列第92位,其中計算機…

如何理解面向過程和面向對象,舉例說明一下?

面向過程和面向對象是兩種不同的編程思想,核心區別在于解決問題的視角不同:前者關注 “步驟和過程”,后者關注 “對象和交互”。面向過程的核心思想是把問題拆解成一系列步驟,通過函數實現每個步驟,然后按順序調用這些…

深入了解評估與微調中使用的Graders:原理、實現與最佳實踐

深入了解評估與微調中使用的Graders 在模型評估與微調(Fine-tuning)過程中,Graders(評分器)是衡量模型輸出與參考答案之間表現的重要工具。本文將系統介紹Grader的類型、技術實現及如何在實際項目中融入穩定且高質量的…

行緩存(line buffer)在圖像卷積中的工作方式

上面這張圖配合文字,展示了行緩存(line buffer)在圖像卷積中的工作方式:上半部分是一個按行掃描輸入的圖像塊(示例為 99,編號 1–81)。 藍色表示已被寫入行緩存并按隊列等待的數據,綠…

【數據分享】中國371個城市的坡度矢量數據和excel數據

今天要說明數據就是中國371個城市的坡度矢量數據和excel數據。數據介紹在城市發展的進程中,地形地貌始終是影響規劃決策的關鍵因素,而坡度作為表征地表傾斜程度的核心指標,更是貫穿于城市建設、生態保護等諸多環節。本文將全面解讀中國 371 個…

《WINDOWS 環境下32位匯編語言程序設計》第7章 圖形操作(1)

圖形設備接口GDI(Graphics Device Interface)是Win32的一個重要組成部分,其作用是允許Windows的應用程序將圖形輸出到計算機屏幕、打印機或其他輸出設備上。GDI實際上是一個函數庫,包括直線、畫圖和字體處理等數百個函數。7.1 GDI…