目標檢測篇---faster R-CNN

目標檢測系列文章

第一章 R-CNN
第二篇 Fast R-CNN


目錄

  • 目標檢測系列文章
  • 📄 論文標題
  • 🧠 論文邏輯梳理
      • 1. 引言部分梳理 (動機與思想)
  • 📝 三句話總結
  • 🔍 方法邏輯梳理
  • 🚀 關鍵創新點
  • 🔗 方法流程圖
  • 關鍵疑問解答
    • Q1、 Anchor 的來源、生成與訓練中的作用?
    • Q2 Anchor 尺寸大于感受野如何工作?


📄 論文標題

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
作者:Shaoqing Ren, Kaiming He, Ross Girshick(fast R-CNN作者), and Jian Sun
團隊:Microsoft Research


🧠 論文邏輯梳理

1. 引言部分梳理 (動機與思想)

AspectDescription (Motivation / Core Idea)
問題背景 (Problem)Fast R-CNN 已經很快了,但是它依賴的外部區域提議算法(如 Selective Search)運行在 CPU 上,速度很慢,成為了整個目標檢測系統的性能瓶頸。而且,區域提議的計算與下游的檢測網絡是分離的,沒有共享計算。
目標 (Goal)創建一個完全基于深度學習的、端到端的目標檢測系統。具體來說,要設計一個內部的區域提議網絡,使其能夠與檢測網絡共享卷積特征,從而消除外部區域提議的瓶頸,實現高速且統一的檢測框架。
核心思想 (Core Idea)Faster R-CNN: 提出 區域提議網絡 (Region Proposal Network, RPN)RPN 是一個小型全卷積網絡,它直接作用于主干網絡(如 VGG/ResNet)輸出的共享卷積特征圖上,利用 Anchors 高效地預測出物體邊界框提議及其“物體性”得分。這些提議隨后被送入 Fast R-CNN 檢測網絡(使用同一份共享特征圖)進行精確分類和位置修正。
核心假設 (Hypothesis)通過讓 RPN 與檢測網絡共享底層的卷積計算,并將區域提議也用神經網絡實現,可以構建一個統一、高效的框架,顯著提升目標檢測的速度(達到近實時),同時保持甚至提高檢測精度。

📝 三句話總結

方面內容
?發現的問題
  • 速度瓶頸: Fast R-CNN 檢測網絡本身很快 (GPU),但其依賴的外部區域提議算法 (如 Selective Search) 通常在 CPU 上運行,速度極慢 (可能耗時數秒),成為整個目標檢測系統的絕對性能瓶頸
  • 計算分離與冗余: 區域提議的計算過程 (基于底層圖像特征) 與下游檢測網絡使用的深度卷積特征完全分離的,未能共享計算,存在明顯的計算冗余效率低下問題 (“missed opportunity for sharing computation”)。
  • 非端到端系統: 由于區域提議是外部獨立的步驟,整個系統并非完全的端到端學習框架。
💡提出的方法 (R-CNN)
  • 解決區域提議瓶頸: 提出 區域提議網絡 (Region Proposal Network, RPN)。這是一個內部的、可學習的、輕量級全卷積網絡 (FCN),直接作用于主干網絡輸出的特征圖,用于高效生成候選區域。
  • 解決計算分離: RPN 被設計為與 Fast R-CNN 檢測頭共享同一個主干卷積網絡 (Backbone) 輸出的特征圖。這意味著圖像最耗時的深度特征提取只需進行一次,其結果被 RPN (用于提議) 和檢測頭 (用于分類/回歸) 共同使用,極大提高了計算效率。
  • 整合系統: 將區域提議生成整合到統一的深度神經網絡框架中,使得整個檢測流程更加接近端到端 (除 NMS 等后處理外)。
  • 確立了現代兩階段目標檢測器(先提議、后檢測)的基本范式和標桿,對后續研究產生了極其深遠的影響。
?該方案的局限性/可改進的點
  • 訓練復雜性: 原始論文提出的 4 步交替訓練 (4-Step Alternating Training) 策略較為復雜、繁瑣且難以完美優化(盡管后續研究提出了近似聯合訓練和完全端到端聯合訓練的方法)。
  • 超參數敏感: 模型性能,特別是 RPN 的性能,對 Anchor 的配置(如尺度 Scales, 長寬比 Aspect Ratios, 數量 k)比較敏感,這些超參數需要根據數據集和主干網絡進行仔細設計和調優。
  • 兩階段本質: 盡管網絡結構統一,其內部工作邏輯仍然是先由 RPN 生成 proposals,再由 Fast R-CNN 檢測頭對這些 proposals 進行分類和精修的兩階段 (Two-Stage) 過程,這可能在速度上不如最優化的單階段 (One-Stage) 方法。
  • RoI Pooling 缺陷: 使用的 RoI Pooling 層存在坐標量化(取整)操作,導致 RoI 特征與其在原圖對應的區域之間存在輕微的空間不對齊 (misalignment) 問題,可能影響對小物體或需要精確定位的任務(這個問題在后續的 Mask R-CNN 中由 RoI Align 層改進)。

🔍 方法邏輯梳理

Faster R-CNN 是一個高度整合的統一網絡。

  • 模型輸入:

    • 一張 RGB 圖像。(不再需要外部 RoIs)
  • 處理流程 (Unified Network):

    1. 共享主干網絡 (Shared Conv Backbone - Encoder 角色):
      • 輸入: 整張圖像。
      • 處理: 圖像通過一系列卷積和池化層(如 VGG, ResNetconv 部分)。
      • 輸出: 整張圖像的共享卷積特征圖 (Shared Feature Map)。
    2. 區域提議網絡 (Region Proposal Network - RPN - 特殊模塊):
      • 輸入: 來自步驟 1 的共享特征圖
      • 處理:
        • 在特征圖上滑動一個小型的卷積網絡(如 3x3 卷積)。
        • 在滑窗的每個位置,考慮 k 個預定義的 Anchors (不同尺度面積(1282、2562、5122)、長寬比(0.5、1、2))。
        • 通過兩個并行的 1x1 卷積(分類頭和回歸頭)對每個 Anchor 進行預測:
          • 預測 2k 個物體性得分 (Objectness Scores: object vs. background)。
          • 預測 4k 個邊界框回歸偏移量 (relative to anchor)。
        • 基于物體性得分篩選 Anchors,應用回歸偏移量修正坐標,得到初步的 Proposals
        • Proposals 應用 NMS (非極大值抑制) 以減少冗余。【第一次使用NMS剔除多余的Anchors】
      • 輸出: 一組候選區域 RoIs (例如 ~300 或 ~2000 個,坐標是相對于原始圖像的)。
    3. RoI Pooling / RoI Align 層 (特殊模塊):
      • 輸入: 共享特征圖 (來自步驟 1) + RPN 生成的 RoIs (來自步驟 2)。
      • 處理:每個 RoI,從共享特征圖中提取一個固定大小 (e.g., 7x7xC) 的特征圖塊。(RoI Align 效果通常更好)
      • 輸出:每個 RoI 輸出一個固定大小的特征圖塊。
    4. 檢測頭 (Detection Head - Fast R-CNN 部分 - Decoder/Prediction 角色):
      • 輸入: 來自 RoI Pooling/Align 的固定大小特征圖塊。
      • 處理:
        • 通過全連接層 (FC layers) 或卷積層進一步處理特征。
        • 送入兩個并行的輸出層:
          • Softmax 分類器 (輸出 K+1 類概率 p p p)。
          • 邊界框回歸器 (輸出 K 類對應的 4 K 4K 4K 個回歸偏移量 t k t^k tk)。
      • 輸出: 對每個輸入的 RoI,輸出其最終的類別概率 p p p 和類別相關的回歸偏移量 t k t^k tk
    5. 后處理 (Post-processing - NMS):
      • 使用最終的類別分數和應用了回歸偏移量后的邊界框,再次進行 NMS (通常按類別進行)。
      • 輸出: 最終檢測結果列表。
  • 模型輸出:

    • 圖像中檢測到的物體列表,每個物體包含:類別標簽置信度分數精修后的邊界框坐標
  • 訓練過程:

    • 目標: 訓練 RPN 網絡學會生成高質量Proposals,同時訓練檢測頭學會對這些 Proposals 進行精確分類和定位。
    • 損失函數: 聯合優化 RPN 的損失 ( L c l s R P N + λ 1 L r e g R P N L_{cls}^{RPN} + \lambda_1 L_{reg}^{RPN} LclsRPN?+λ1?LregRPN?) 和 Fast R-CNN 檢測頭的損失 ( L c l s F a s t + λ 2 [ u > 0 ] L r e g F a s t L_{cls}^{Fast} + \lambda_2 [u>0] L_{reg}^{Fast} LclsFast?+λ2?[u>0]LregFast?) 。總損失是這兩部分損失的和(可能有權重因子)。
    • 訓練策略:
      • 4步交替訓練 (Alternating Training - 原始論文提出): 比較復雜,步驟間有權重固定和微調。
        1. 訓練 RPN (用 ImageNet 預訓練模型初始化)。
        2. 訓練 Fast R-CNN 檢測網絡 (用 ImageNet 預訓練模型初始化,使用第1步 RPN 生成的 proposals)。此時 ConvNet 獨立訓練。
        3. 固定共享的 ConvNet 層,只微調 RPN 的獨有層。
        4. 固定共享的 ConvNet 層,只微調 Fast R-CNN 的獨有層 (FCs 等)。
      • 近似聯合訓練 (Approximate Joint Training - 更常用): 在一次前向傳播中計算 RPN 和 Fast R-CNN 的 proposals 和損失,然后將它們的損失加起來一起反向傳播更新所有權重(包括共享卷積層)。實現上有一些細節處理 RPN proposal 對后續 loss 的影響。
      • 端到端聯合訓練 (End-to-End Joint Training): 一些現代框架支持更徹底的端到端訓練。

🚀 關鍵創新點

  • 創新點 1: 區域提議網絡 (Region Proposal Network - RPN)

    • 為什么要這樣做? 為了擺脫對外部、緩慢、與網絡分離的區域提議算法(如 Selective Search)的依賴。
    • 不用它會怎樣? 目標檢測系統的速度會被區域提議步驟嚴重拖慢,無法實現高速檢測,且提議過程無法從深度特征學習中受益。RPN 是實現速度整合的關鍵。
  • 創新點 2: 卷積特征共享 (Shared Convolutional Features)

    • 為什么要這樣做? 區域提議和物體檢測都需要對圖像進行特征提取,分開做是巨大的計算浪費。這兩項任務可以基于相同的底層視覺特征。
    • 不用它會怎樣? 計算成本會高得多(如 R-CNN 或即使是將 SS 搬上 GPU 但仍獨立計算的方案)。特征共享是 Faster R-CNN 實現效率飛躍的核心原因。
  • 創新點 3: Anchor 機制

    • 為什么要這樣做? 需要一種方法讓 RPN(一個相對簡單的全卷積網絡)能夠高效地在特征圖上直接預測出不同尺度、不同長寬比的物體提議。
    • 不用它會怎樣? RPN 可能難以直接預測如此多樣化的邊界框。Anchor 提供了一組有效的、多樣的參考基準,極大地簡化了 RPN 的預測任務,使其可以在單一尺度的特征圖上工作,避免了圖像金字塔或濾波器金字塔的復雜性。
  • 創新點 4: 統一網絡與端到端訓練趨勢

    • 為什么要這樣做? 將整個目標檢測流程(除了 NMS 等后處理)盡可能地統一到一個深度網絡中,可以簡化系統、提高效率,并可能通過聯合優化提升性能。
    • 不用它會怎樣? 系統會保持多階段、多模塊的狀態,訓練和部署更復雜,速度也受限。Faster R-CNN 代表了向更整合、更端到端的檢測系統邁出的決定性一步。

總結來說,Faster R-CNN 通過革命性的 RPN 和 Anchor 機制,并將 RPN 與 Fast R-CNN 檢測器基于共享的卷積特征進行整合,最終構建了一個高效、準確且相對統一的目標檢測框架,成為了后續許多現代檢測器的基礎。


🔗 方法流程圖

在這里插入圖片描述
在這里插入圖片描述


關鍵疑問解答

Q1、 Anchor 的來源、生成與訓練中的作用?

  • 來源Anchors預先定義好的超參數 (不同的尺度 Scales長寬比 Aspect Ratios),不是根據當前數據集實時生成的。其設定基于經驗或常見物體特性。
  • 生成Anchors 概念上是在 CNN 輸出的最后一個特征圖每一個空間位置上生成的。每個位置都有一整套 (k 個) 不同規格的 Anchors,它們的中心對應于特征圖位置映射回原圖的位置。這個生成發生在每次前向傳播時。
  • 訓練作用: Anchors 作為參考基準。訓練 RPN 的目標是:
    1、分類: 判斷每個 Anchor 是否覆蓋了一個物體 (Objectness Score),通過與 Ground Truth Boxes 計算 IoU 來標記 Anchor (正/負/忽略樣本),并計算分類損失
    2、回歸: 對于被標記為正樣本的 Anchor,學習預測出將其精確調整到對應 Ground Truth Box 所需的4 個偏移量 (dx, dy, dw, dh),并計算回歸損失 (通常用 Smooth L1 Loss)。網絡學習的是預測“修正量”,而不是修改 Anchor 本身。

Q2 Anchor 尺寸大于感受野如何工作?

Anchor 是預測的參考框架,RPN 的預測是基于其感受野內的特征進行的。

網絡學習的是將感受野內的局部特征與“應該使用哪種規格的 Anchor”以及“應該如何對該 Anchor 進行相對調整”這兩者關聯起來。

即使感受野小于 Anchor,內部特征也可能足夠指示一個大物體的存在及大致的調整方向。對于大物體,多個相鄰位置的預測會共同作用。【管中窺豹,可知豹外貌】

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

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

相關文章

Seaborn模塊練習題

1.使用tips數據集,創建一個展示不同時間段(午餐/晚餐)賬單總額分布的箱線圖 import seaborn as sns import matplotlib.pyplot as plt import pandas as pdsns.set_style("darkgrid") plt.rcParams["axes.unicode_minus"] Falsetips pd.read…

計算機網絡 | 應用層(1)--應用層協議原理

💓個人主頁:mooridy 💓專欄地址:《計算機網絡:自定向下方法》 大綱式閱讀筆記 關注我🌹,和我一起學習更多計算機的知識 🔝🔝🔝 目錄 1. 應用層協議原理 1.1 …

論文導讀 - 基于大規模測量與多任務深度學習的電子鼻系統實現目標識別、濃度預測與狀態判斷

基于大規模測量與多任務深度學習的電子鼻系統實現目標識別、濃度預測與狀態判斷 原論文地址:https://www.sciencedirect.com/science/article/abs/pii/S0925400521014830 引用此論文(GB/T 7714-2015): WANG T, ZHANG H, WU Y, …

React中createPortal 的詳細用法

createPortal 是 React 提供的一個實用工具,用于將 React 子元素渲染到 DOM 中的某個位置,而該位置與父組件不在同一個 DOM 層次結構中。這在某些特殊場景下非常有用,比如實現模態框、彈出菜單、固定定位元素等功能。 基本語法 JavaScript …

電池的壽命

思路: 首先,我們觀察發現:由于每枚電池的使用時間不同,而我們又要減少浪費才能使所有電池加起來用得最久,不難發現:當n2時,輸出較小值。 第一步:將電池分為兩組,使兩組…

LeetCode每日一題4.27

3392. 統計符合條件長度為 3 的子數組數目 問題 問題分析 統計符合條件的長度為 3 的子數組數目。具體條件是:子數組的第一個數和第三個數的和恰好為第二個數的一半。 思路 遍歷數組:由于子數組長度固定為 3,我們可以通過遍歷數組來檢查每…

Linux日志處理命令多管道實戰應用

全文目錄 1 日志處理1.1 實時日志分析1.1.1 nginx日志配置1.1.2 nginx日志示例1.1.3 日志分析示例 1.2 多文件合并分析1.3 時間范圍日志提取 2 問題追查2.1 進程級問題定位2.2 網絡連接排查2.3 硬件故障追蹤 3 數據統計3.1 磁盤空間預警3.2 進程資源消耗排名3.3 HTTP狀態碼統計…

0803分頁_加載更多-網絡ajax請求2-react-仿低代碼平臺項目

文章目錄 1 分頁1.1 url與分頁參數1.2 分頁組件與url1.3 列表頁引用分頁組件 2 加載更多2.1 狀態2.2 觸發時機2.3 加載數據2.4優化 結語 1 分頁 1.1 url與分頁參數 查詢問卷列表接口,添加分頁參數: page:當前頁碼(第幾頁&#…

【技術追蹤】基于擴散模型的腦圖像反事實生成與異常檢測(TMI-2024)

一種新穎的擴散模型雙重采樣策略,DDPM DDIM ~ 論文:Diffusion Models for Counterfactual Generation and Anomaly Detection in Brain Images 0、摘要 病理區域的分割掩模在許多醫學應用中很有用,例如腦腫瘤和中風管理。此外,疾…

第十六屆藍橋杯大賽軟件賽省賽第二場 C/C++ 大學 A 組

比賽還沒有開始,竟然忘記寫using namespace std; //debug半天沒看明白 (平時cv多了 然后就是忘記那個編譯參數,(好慘的開局 編譯參數-stdc11 以下都是賽時所寫代碼,賽時無聊時把思路都打上去了(除了倒數第二題&#…

CentOS 7上Memcached的安裝、配置及高可用架構搭建

Memcached是一款高性能的分布式內存緩存系統,常用于加速動態Web應用的響應。本文將在CentOS 7上詳細介紹Memcached的安裝、配置,以及如何實現Memcached的高可用架構。 (1)、搭建memcached 主主復制架構 Memcached 的復制功能支持…

告別進度失控:用燃盡圖補上甘特圖的監控盲區

在職場中,項目經理最頭疼的莫過于“計劃趕不上變化”。明明用甘特圖排好了時間表,任務卻總像脫韁野馬——要么進度滯后,要么資源分配失衡。甘特圖雖能直觀展示任務時間軸,但面對突發風險或團隊效率波動時,它更像一張“…

爬蟲-oiwiki

我們將BASE_URL 設置為 "https://oi-wiki.org/" 后腳本就會自動開始抓取該url及其子頁面的所有內容,并將統一子頁面的放在一個文件夾中 import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlparse import os import pd…

業務中臺與數據中臺:企業數字化轉型的核心引擎

前言:在當今數字化浪潮下,企業為了提升運營效率、加速創新步伐并更好地適應市場變化,業務中臺與數據中臺應運而生,成為企業架構中的關鍵組成部分。本文將深入探討業務中臺和數據中臺的簡介、發展史、技術流環節以及在實際生產中的…

django admin 去掉新增 刪除

在Django Admin中,你可以通過自定義Admin類來自定義哪些按鈕顯示,哪些不顯示。如果你想隱藏“新增”和“刪除”按鈕,可以通過重寫change_list_template或使用ModelAdmin的has_add_permission和has_delete_permission屬性來實現。 方法1&…

基于云原生架構的后端微服務治理實戰指南

一、引言:為什么在云原生時代更需要微服務治理? 在單體應用時代,開發和部署雖然簡單,但隨著系統規模的擴大,單體架構的維護成本急劇上升,部署頻率受限,模塊之間相互影響,最終導致系…

MIT6.S081 - Lab10 mmap(文件內存映射)

本篇是 MIT6.S081 2020 操作系統課程 Lab10 的實驗筆記,目標只有一個:實現文件映射到內存的功能,也就是 mmap。 作為一名 Android 開發者,我可太熟悉 mmap 這個詞兒了。Android 的 跨進程通信 Binder 驅動、圖形內存分配和管理、…

基于BenchmarkSQL的OceanBase數據庫tpcc性能測試

基于BenchmarkSQL的OceanBase數據庫tpcc性能測試 安裝BenchmarkSQL及其依賴安裝軟件依賴編譯BenchmarkSQLBenchmarkSQL props文件配置數據庫和測試表配置BenchmarkSQL壓測裝載測試數據TPC-C壓測(固定事務數量)TPC-C壓測(固定時長)生成測試報告重復測試流程梳理安裝Benchmar…

WinForm真入門(17)——NumericUpDown控件詳解

一、基本概念? NumericUpDown 是 Windows 窗體中用于數值輸入的控件,由文本框和上下調節按鈕組成。用戶可通過以下方式調整數值: 點擊調節按鈕增減數值鍵盤直接輸入使用方向鍵調整 適用于需要限制數值范圍或精確控制的場景(如年齡、參數配…

汽車自動駕駛介紹

0 Preface/Foreword 1 介紹 1.1 FSD FSD: Full Self-Driving,完全自動駕駛 (Tesla) 1.2 自動駕駛級別 L0 - L2:輔助駕駛L3:有條件自動駕駛L4/5 :高度/完全自動駕駛