目錄
一、R-CNN
1、R-CNN概述
2、R-CNN 模型總體流程
3、核心模塊詳解
(1)候選框生成(Selective Search)
(2)深度特征提取與微調
2.1 特征提取
2.2 網絡微調(Fine-tuning)
(3)后端分類與邊框回歸
3.1 SVM 分類器
3.2 邊框回歸(BBox Regression)
4、訓練與推理流程一覽
5、模型性能與瓶頸
6、對后續模型的啟示
二、SPPNet
1、模型動機
2、網絡整體結構
3、數學原理與細節
4、訓練與微調策略
5、性能評估
6、優缺點與局限
(1)優點
(2)缺點
7、對后續模型的啟示
三、FastRCNN
1、Fast R-CNN 概述
2、網絡結構
3、關鍵技術點
4、訓練與推理流程
5、優缺點分析
6、后續演進
四、FasterRCNN
1、Faster R-CNN 概述
2、整體網絡結構
3、關鍵技術點
(1)區域建議網絡(RPN)
(2)多任務聯合訓練
(3)RoI Pooling 與后端 Head
4、訓練與推理流程
(1)訓練階段
(2)推理階段
5、優勢與挑戰
(1)優點
(2)缺點
6、后續演進
五、YOLO
1、YOLO 概述
2、基礎網絡結構(以 YOLOv1 為例)
3、關鍵技術點
4、訓練與推理流程
5、優缺點分析
6、后續演進與分支
六、SSD
1、模型動機
2、網絡整體結構
3、關鍵技術點
4、訓練與推理流程
5、性能與優缺點
6、后續演進
七、DETR
1、動機背景
2、整體架構概覽
3、核心組件詳解
(1)Object Queries
(2)注意力機制
(3)位置編碼(Positional Encoding)
(4)匈牙利匹配(Hungarian Matching)
(5)Set Prediction Loss
4、訓練與推理流程
5、優缺點對比
6、后續改進與演進
一、R-CNN
1、R-CNN概述
R-CNN由Ross Girshick等人在2014年提出,是首批將深度卷積神經網絡引入目標檢測的經典方法。它將對象檢測問題分解為“候選區域生成+分類+回歸”三步走流程,有效地利用了深度特征,顯著提升了檢測精度,但也暴露出計算效率低的問題。
2、R-CNN 模型總體流程
R-CNN 將目標檢測拆分為三大階段:
-
候選框生成(Selective Search)
-
深度特征提取 & 微調(CNN + Fine-tune)
-
后端分類與回歸(SVM + BBox Regression)
在推理時,依次執行以上三步,最終得到檢測框與類別。
3、核心模塊詳解
(1)候選框生成(Selective Search)
-
原理:結合圖像分割(Felzenszwalb 算法)和貪心區域合并,先基于顏色、紋理、尺寸、填充比等多種相似度逐層合并超像素;
-
輸出:每幅圖約 2,000 個高召回率的候選框,IoU 覆蓋率可達 90% 以上。loU:交并比
-
復雜度:O(n log n),在 CPU 上每圖耗時 ≈2 秒。
? ? ??
(2)深度特征提取與微調
2.1 特征提取
-
網絡結構:采用 ImageNet 上預訓練的 AlexNet 或 ZF-Net,去掉最后的分類層,僅保留到 fc7(4096 維特征)。
-
輸入處理:對每個候選框執行:
-
裁剪:從原圖裁剪出 bbox 區域;
-
Warp:雙線性插值將裁剪區域縮放至固定的 227×227;
-
前向傳播:單獨將每個 patch 送入 CNN,提取 fc7 特征。
-
-
計算量:每個候選框一次完整的 227×227→conv→pool→fc 計算,推理時≈2,000次,導致極高的計算開銷。
2.2 網絡微調(Fine-tuning)
-
目標:使預訓練分類網絡更適應目標檢測的特征分布;
-
流程:
-
用候選框 patch 及其對應的真實標簽(正樣本 IoU ≥0.5,負樣本 IoU ≤0.3)構成訓練集;
-
定義多分類交叉熵損失,微調網絡最后兩層(fc6、fc7)及分類層;
-
學習率較小(如原 lr 的 0.1–0.01),以防過擬合。
-
-
效果:特征在檢測任務上表現更優,但訓練時間仍需數小時至十數小時。
(3)后端分類與邊框回歸
3.1 SVM 分類器
-
訓練:對每個類別訓練一個 one-vs-all 線性 SVM,損失:
-
xi?:CNN 提取的 4096 維特征;
-
:正負樣本標簽;
-
C:正則化權重。
-
-
樣本:正樣本 IoU ≥0.5,負樣本 IoU ∈ [0.1, 0.5);對負樣本進行難例挖掘(bootstrapping),過濾易分類樣本。
3.2 邊框回歸(BBox Regression)
-
目標:將候選框
校正到更精確的 ground-truth 框
;
-
回歸參數:
-
學習:對每個類別訓練一個線性回歸器,最小化平滑 L1 損失:
4、訓練與推理流程一覽
階段 | 步驟 |
---|---|
訓練 | 1. 生成候選框; 2. 裁剪 Warp → CNN 微調; 3. 提取 fc7 特征 → 訓練 SVM; 4. 用正樣本訓練邊框回歸器。 |
推理 | 1. 生成候選框; 2. 對每個框 Warp → CNN 前向 → 提取特征; 3. SVM 分類得分 + 回歸偏移; 4. NMS 去重。 |
5、模型性能與瓶頸
-
檢測精度
-
在 PASCAL VOC 2007 上,R-CNN mAP 可達 58.5%(AlexNet)、62.2%(ZF-Net);
-
-
速度與資源
-
訓練:微調+特征提取+SVM 訓練,整個流水線需數天;
-
推理:每張圖約需 47s(CPU)或 10s(GPU);
-
存儲:需緩存所有候選框的 4096D 特征(數 GB)。
-
-
瓶頸分析
-
重復卷積:2000 個候選框各自前向,卷積計算完全冗余;
-
多階段訓練:微調、特征提取、SVM、回歸器四步不同目標,難以端到端優化;
-
候選框依賴:Selective Search 慢且無法并行 GPU 加速。
-
6、對后續模型的啟示
-
共享特征計算:Fast R-CNN 引入 RoI Pooling,整圖一次卷積后共享特征,解決了重復計算;
-
端到端訓練:Fast R-CNN 及 Faster R-CNN 通過多任務損失實現單階段訓練;
-
候選框網絡化:Faster R-CNN 的 RPN 將 region proposal 也集成到網絡,進一步加速;
-
空間對齊精度:Mask R-CNN 用 RoIAlign 消除量化誤差,提升小目標檢測與分割精度。
二、SPPNet
1、模型動機
傳統 CNN(如 AlexNet、ZF-Net)在處理目標檢測或圖像檢索時,需要將輸入裁剪或變形到固定尺寸,才能接入全連接層。這帶來兩個主要問題:
-
形變失真:對長寬比差異大的圖像或候選區域,Warp 變形會丟失部分幾何信息;
-
重復計算:R-CNN 對每個候選框都要做一次完整的前向傳播,極其低效。
SPPNet 的核心動機便是:
- 一張圖片直接全部進行卷積,卷積后再考慮從特征圖上裁剪2000個子特征圖,比R-CNN計算2000次卷積計算量減少了很多。裁剪子特征圖是依照原圖的2000個候選框所在原圖的位置,在總的特征圖上進行裁剪作為某個候選框的特征圖。這時候,不同候選框的特征圖的大小是不相同的。多尺度池化統一特征圖大小。
-
解除輸入尺寸限制;
-
在 卷積特征圖 上直接進行多尺度池化,實現對不同大小 ROI 的統一表征;
-
保留 CNN 的強大特征表達,同時大幅減少重復計算。
2、網絡整體結構
輸入:任意尺寸圖像│
多層卷積 + 池化 → 特征圖 F(尺寸為 H×W×C)│
┌──────────────────────────────────────────┐
│ 空間金字塔池化層 SPP(F) │
│ ┌── Level 1: 1×1 劃分 → 每格 max-pool │
│ ├── Level 2: 2×2 劃分 → 每格 max-pool │
│ ├── Level 3: 3×3 劃分 → 每格 max-pool │
│ └── Level 4: 6×6 劃分 → 每格 max-pool │
└──────────────────────────────────────────┘│
向量拼接 → 固定長度特征向量│
FC6 → FC7 → 分類 & 邊框回歸
-
卷積主干:通常使用與 R-CNN 相同的預訓練網絡(AlexNet、ZF-Net),只去掉最后的 FC 層。
-
SPP 層:在 F 上以多種網格尺寸(如 1×1、2×2、3×3、6×6)做 max-pooling,每個尺度產生
?個區域的池化值,并將所有尺度結果串聯。
-
輸出維度:若 F 的通道數為 C,則各尺度輸出通道總數為
該固定長度特征向量即可接入后續 FC。
3、數學原理與細節
-
SPP 池化區域計算
對于特征圖大小為 (H,W),在第?級金字塔(劃分為
?)中,第
個子網格的空間范圍為
對此區域在通道維做 max-pooling,得到一個長度為 C 的向量。
-
梯度反向傳播
SPP 層中每個子網格的 max-pooling 對應一個可微分的操作,最大值所在位置在反向時獲得梯度,其他位置梯度為 0。這樣上層的損失能正確傳至主干網絡。 -
與單尺度池化的比較
-
傳統 RoI Pooling 僅做單個尺度(如 7×7)池化;
-
SPP 在多個尺度融合上下文信息,兼具全局與局部表征,有助于多尺寸目標的檢測。
-
4、訓練與微調策略
-
預訓練
-
在 ImageNet 上訓練主干卷積部分,得到基礎權重。
-
-
候選框生成
-
使用 Selective Search 或 EdgeBoxes 等算法生成 Region Proposals。
-
-
共享卷積特征提取
-
整圖一次前向卷積,得到特征圖 F;
-
對每個 RoI 在 F 上進行 SPP 池化,避免了 R-CNN 對每個 RoI 重復前向。
-
-
FC 層微調
-
將 SPP 層輸出送入 FC6、FC7,聯合微調這些層及主干的后幾層;
-
損失函數同 Fast R-CNN,包含分類交叉熵與回歸平滑 L1,兩者加權求和。
-
-
學習率與訓練批次
-
通常先凍結 backbone,僅微調 FC;
-
再放開 backbone 后幾層,使用較小學習率(如 0.001→0.0001)做細調;
-
每批采樣若干圖像和若干 RoI(例如 2 圖 × 128 RoI)。
-
5、性能評估
方法 | PASCAL VOC07 mAP | GPU 推理速度 |
---|---|---|
R-CNN | 58.5% (AlexNet) | ≈0.5 FPS |
SPPNet | 59.2% (ZF-Net) | ≈8 FPS |
Fast R-CNN | 66.9% (ZF-Net) | ≈5 FPS |
-
SPPNet 相比 R-CNN,在 mAP 上持平或略增,同時速度提升約 16 倍。
-
與后來端到端的 Fast R-CNN 相比,SPPNet 在速度上仍有優勢,但準確率略低,因為 RoI Pooling 的設計及訓練流程更成熟。
6、優缺點與局限
(1)優點
-
任意尺寸支持:無需裁剪 Warp,圖像及 RoI 保持原始比例;
-
多尺度上下文融合:不同金字塔層兼顧全局與細節;
-
高效共享計算:整圖卷積一次完成,大幅降低重復量。
(2)缺點
-
外部候選框依賴:仍需 Selective Search,速度瓶頸未徹底解決;
-
金字塔固定模式:預設的層數和網格尺寸不夠自適應;
-
內存與計算:SPP 輸出維度大(如 C×50),可能導致 FC 計算量和內存占用增加。
7、對后續模型的啟示
-
RoI Pooling:Fast R-CNN 將 SPP 簡化為單尺度,使代碼實現更直觀;
-
RPN:Faster R-CNN 繼承 SPPNet 的共享特征思想,把候選框生成也 “網絡化”;
-
RoIAlign:Mask R-CNN 在 Pooling 對齊上更精細,解決量化誤差;
-
自適應池化:后續工作(如 TridentNet)探索動態或可學習的多尺度池化方案。
三、FastRCNN
1、Fast R-CNN 概述
????????Fast R-CNN 由 Ross Girshick 于 2015 年提出,旨在在保持高精度的同時,進一步加速 R-CNN 系列模型的檢測速度。它結合了 R-CNN 和 SPPNet 的思想,引入了 RoI Pooling 操作,使得所有候選區域共享整圖一次卷積特征,并能在網絡端到端地聯合訓練分類和回歸分支。
改進點:提出一個Rol pooling,然后整合整個模型,把CNN、SPP變換層、分類器、bbox回歸幾個模塊一起訓練。
2、網絡結構
整體可分為以下幾個模塊(見下圖示意):
輸入圖像─────────────────────────────────┐│ │
卷積 / 池化 層(backbone,如 VGG16)│ 候選框
特征圖 ──────┐│ │RoI Pooling ───────────────────┴│全連接層(FC6→FC7)│┌────────┴────────┐│ │
分類分支 (Softmax) 邊框回歸分支 (BBox Regression)
-
Backbone(主干網絡)
-
常用 VGG16、ZFNet 等預訓練網絡的前若干層(直到 conv5)
-
對整張圖只做一次前向傳播,輸出高維特征圖。
-
-
Region Proposals
-
輸入:使用外部算法(如 Selective Search)生成約 2,000 個候選框。
-
這些候選框具有相對原圖的坐標位置。
-
-
RoI Pooling 層
-
輸入:主干網絡產生的特征圖 + 各 ROI 坐標
-
操作:將每個 ROI 在特征圖上按照預定分辨率(如 7×7)劃分網格,并在每個網格中進行最大池化。
-
輸出:對于每個 ROI 都得到一個固定尺寸(7×7×C)的特征塊。
-
-
全連接層 & Head
-
Flatten → FC6 → FC7:將每個 ROI 的池化特征扁平化,經兩層全連接得到 4096 維向量。
-
雙分支輸出:
-
分類分支:Softmax 輸出 K+1 類別(K 個目標類別 + 背景)。
-
回歸分支:每個前景類別都有一組 4 維回歸參數,用于微調 ROI 的坐標。
-
-
3、關鍵技術點
-
RoI Pooling
-
核心價值:使得來自不同大小 ROI 的特征都能被池化為相同尺寸,簡化后續全連接處理;
-
高效共享:所有 ROI 共享同一次卷積特征,大幅減少重復計算,整體速度可提升到 5–10 FPS。
-
-
端到端多任務聯合訓練
-
損失函數
-
p:預測的類別概率分布;
-
u:真實類別標簽;
-
t:預測的回歸偏移;
-
v:真實偏移目標;
-
?:交叉熵損失,
?:平滑 L1 損失,只對前景 ROI 生效(u≥1指示函數)。
-
-
優勢:分類和回歸在同一網絡中共同優化,特征能同時兼顧兩者需求。
-
-
Mini-batch 設計
-
每次迭代從若干圖像中采樣固定數量的 RoI(如 2 圖像、每圖 128 個 RoI),保持訓練穩定;
-
正負樣本比通常設為 1:3,并使用 IoU 閾值(正樣本 IoU ≥ 0.5,負樣本 IoU ≤ 0.5)。
-
-
Backpropagation 流向
-
RoI Pooling 可視為可微分操作,其梯度能“準確地”分配回對應的特征圖單元;
-
既更新全連接層,也更新 backbone 的卷積層,實現真正的端到端微調。
-
4、訓練與推理流程
-
訓練階段
-
預訓練:在 ImageNet 上訓練 backbone 網絡;
-
生成候選框:對訓練集產生 RoI;
-
特征與 RoI Pooling:整圖卷積 → RoI Pooling 得到固定特征;
-
前向+損失:過 FC → 計算分類與回歸損失;
-
反向傳播:梯度通過 FC、RoI Pooling 傳至卷積層,聯合更新所有參數。
-
-
推理階段
-
對輸入圖像生成 RoI;
-
整圖一次卷積 → 特征圖;
-
對每個 RoI 做 Pooling → FC → 得到各類別得分和回歸偏移;
-
對每個類別應用偏移校正并執行 NMS,輸出最終檢測結果。
-
5、優缺點分析
-
優點
-
速度大幅提高:共享卷積計算 + RoI Pooling,整體檢測速度可達 5–10 FPS;
-
端到端訓練:分類與回歸任務在同一框架內聯合優化,簡化流程;
-
簡單實用:只需替換 R-CNN 中的特征抽取與 SVM、回歸器,結構清晰。
-
-
缺點
-
仍依賴外部候選框:Selective Search 速度瓶頸未解;
-
Pool 格網量化誤差:RoI Pooling 的離散網格可能丟失對齊精度,尤其對細小目標不友好;
-
內存與計算:處理數千 RoI 時,后端 FC 計算仍然較重。
-
6、后續演進
-
Faster R-CNN(2015)
-
用 RPN 取代外部候選框,真正實現端到端、實時化的候選區域生成。
-
-
Mask R-CNN(2017)
-
引入 RoIAlign,消除量化誤差;新增實例分割分支。
-
-
Cascade R-CNN、Libra R-CNN 等
-
針對不同 IoU 閾值的多級檢測頭設計;對樣本分布進行均衡處理。
-
四、FasterRCNN
1、Faster R-CNN 概述
????????Faster R-CNN 由 Shaoqing Ren 等人在 2015 年提出,可看作 Fast R-CNN 與區域建議網絡(RPN, Region Proposal Network)的有機結合。相比于依賴外部候選框生成(Selective Search)的 Fast R-CNN,Faster R-CNN 通過 RPN 在共享特征上實時生成高質量的候選區域,真正實現了端到端、近實時的目標檢測。
2、整體網絡結構
-
Backbone:常用 VGG16、ResNet-50/101 等,提取整圖卷積特征。
-
RPN(Region Proposal Network):在特征圖上滑動窗口,生成候選框及其前景概率和邊框回歸偏移。
-
RoI Pooling:對 RPN 輸出的候選框,在共享特征圖上做固定尺寸(如 7×7)的池化。
-
FC Head:對每個 RoI 池化特征經過兩層全連接后,分別輸出類別概率和更精細的邊框回歸。
3、關鍵技術點
(1)區域建議網絡(RPN)
-
滑動窗口與 Anchor
-
在特征圖的每個位置,用大小(如 1282、2562、5122 像素)和比例(1:1、1:2、2:1)預定義 9 個 anchor。
-
每個 anchor 對應兩個任務:對象/背景分類、4 個坐標偏移的邊框回歸。
-
-
共享特征
-
RPN 與后續檢測頭共享 backbone 提取的特征,避免重復計算。
-
-
RPN 損失
-
?:第 i 個 anchor 預測為前景的概率;
-
?:真實標簽(前景=1/背景=0);
-
? vs.
?:預測與真實的邊框偏移;
-
只對前景 anchor 計算回歸損失。
-
(2)多任務聯合訓練
-
端到端優化:RPN 與 Fast R-CNN 檢測頭可交替迭代訓練,也可使用“近端微調”方式在一次網絡中聯合優化。
-
共享梯度:RPN 的梯度會反向傳至 backbone,檢測頭的梯度同樣更新 backbone,共享特征更加適應檢測任務。
(3)RoI Pooling 與后端 Head
-
RoI Pooling:將任意尺寸的候選框映射到特征圖后,以固定網格(一般為 7×7)做 max-pooling,輸出尺寸一致的特征塊。
-
FC Head:兩層全連接后分出兩個分支——分類分支(Softmax over K+1 類)與回歸分支(每類 4 維偏移)。
4、訓練與推理流程
(1)訓練階段
-
預訓練 Backbone:在 ImageNet 分類數據集上預訓練。
-
訓練 RPN:在 detection 數據集上,僅微調 RPN 分支與 backbone,生成高質量 proposals。
-
訓練檢測頭:用 RPN 提供的 proposals 訓練 Fast R-CNN Head,微調 backbone & FC Head。
-
迭代優化:可交替重復上兩步,使 RPN 與檢測頭協同進化,最終得到統一網絡。
(2)推理階段
-
整圖卷積:輸入一次圖像,得到特征圖。
-
RPN 預測:在特征圖上滑窗,輸出候選框及前景分數,經過 NMS 篩選前 300–600 個 proposals。
-
RoI Pooling + FC Head:對每個 proposal 池化并過 FC,輸出最終類別分數與回歸偏移,并再次做 NMS,輸出最終檢測結果。
5、優勢與挑戰
(1)優點
-
速度提升:RPN 輕量高效,可達 5–7 FPS(ResNet-50),極大優于前代。
-
端到端訓練:檢測網絡完整一體,特征更具針對性;
-
高精度:基于 anchor 的多尺度、多長寬比設計,對各種尺寸目標均表現良好。
(2)缺點
-
Anchor 設計依賴:需要手動設定 anchor 尺度與比例,不同數據集需調參;
-
RoI Pooling 對齊誤差:離散量化導致精度損失,尤其小物體,后續 Mask R-CNN 引入 RoIAlign 予以改進;
-
訓練復雜度:RPN 與檢測頭的多階段或交替訓練流程較 Fast R-CNN 略繁瑣。
6、后續演進
-
Mask R-CNN(2017)
-
用 RoIAlign 代替 RoI Pooling,消除量化誤差;
-
在檢測基礎上增加實例分割分支。
-
-
RetinaNet(2017)
-
單階段檢測網絡,引入 Focal Loss 處理正負樣本極度不平衡問題。
-
-
Cascade R-CNN(2018)
-
多級檢測頭,逐級提高 IoU 閾值,增強高質量檢測框性能。
-
-
DetectoRS、HTC、Sparse R-CNN…
-
持續在 backbone、proposal-free 設計、注意力機制等方面探索,推動檢測性能與效率雙提升。
-
五、YOLO
1、YOLO 概述
????????YOLO 系列模型由 Joseph Redmon 等人在 2016 年首次提出,其核心理念是將目標檢測視為一個單一的回歸問題——從整張圖像直接回歸出邊界框坐標和類別概率,無需候選區域生成或后續分類器,因而具有極高的推理速度。自第一代 YOLO(YOLOv1)以來,YOLO 在速度與精度的權衡上持續改進,目前已發展到 YOLOv5、YOLOX、YOLOv7 乃至 Ultralytics 等多個分支。
2、基礎網絡結構(以 YOLOv1 為例)
YOLOv1 網絡可分為三部分:
輸入:整張 RGB 圖像(例如 448×448)│
24 層卷積 + 若干池化 → 特征圖(7×7×1024)│
卷積層降維(1×1 conv) → (7×7×B*(5+C))│
重塑 → → S × S × (B×5 + C) 輸出張量
-
S×S 網格劃分
將輸入圖像劃分為 S×S(如 7×7)個網格,每個網格只預測 B(如 2)個邊界框及對應置信度,以及 C(如 20)類的條件概率。 -
每個網格輸出
-
邊界框參數:4 個坐標 (x,y,w,h),相對于網格單元歸一化;
-
置信度:
??;
-
類別概率:
,通過 Softmax 輸出。
-
3、關鍵技術點
-
單階段回歸檢測
-
與兩階段(R-CNN 系列)不同,YOLO 僅一次網絡前向就直接預測邊框與類別,避免重復特征計算,極大提高速度。
-
-
統一損失函數
? ? ? ? ? ? ? ? ? ? ? ?-
通過對坐標、置信度、類別三部分加權求和,實現回歸與分類的聯合優化。
-
采用
? 和
? 調節正負樣本損失權重。
-
-
多尺度預測
-
后續版本(YOLOv2、YOLOv3)在不同尺度上預測特征圖(如 13×13、26×26、52×52),更好地檢測大、中、小目標。
-
引入 Feature Pyramid Network(FPN)思想,通過上采樣與跳躍連接融合多層特征。
-
-
Anchor 機制(YOLOv2 及之后)
-
為每個網格預定義 K 個 anchor(典型為 5),每個 anchor 預測偏移量,增強對不同長寬比目標的適應性。
-
Anchor 尺度通過 k-means 聚類數據集標注框獲得。
-
-
Darknet 主干網絡
-
YOLOv2 引入 Darknet-19,YOLOv3 升級為 Darknet-53,均采用大量 3×3、1×1 卷積與殘差連接,兼顧速度與表達能力。
-
4、訓練與推理流程
-
訓練階段
-
數據增強:隨機縮放、裁剪、翻轉、色彩變換等,提升魯棒性;
-
預訓練:先在 ImageNet 上預訓練主干網絡;
-
微調:在 COCO 或 VOC 等檢測數據集上微調全網權重;
-
學習率策略:采用階梯衰減或余弦退火等動態調整。
-
-
推理階段
-
輸入預處理:統一縮放到固定尺寸(如 416×416)并歸一化;
-
單次前向:網絡輸出多尺度或單尺度預測張量;
-
解碼邊框:根據網格、anchor 與網絡預測偏移,恢復為原圖坐標;
-
置信度過濾 & NMS:剔除低置信度(如 <0.5)預測,按類別進行非極大值抑制,輸出最終檢測結果。
-
5、優缺點分析
-
優點
-
極高速度:YOLOv3 在 GPU 上可達 45 FPS(416×416),適合實時應用;
-
端到端訓練:無須外部候選框算法,框架簡潔;
-
統一回歸:檢測與定位同框完成,模型緊湊。
-
-
缺點
-
定位精度較低:尤其小目標與重疊目標,因網格劃分粗糙導致漏檢或定位偏差;
-
類別不平衡:前背景樣本差異大,YOLOX 等后續通過 Decoupled Head、SimOTA 策略改進;
-
尺度泛化:早期版本單尺度預測,對不同分辨率目標兼容性差。
-
6、后續演進與分支
-
YOLOv4 / YOLOv5(2020)
-
引入 CSPDarknet、Mosaic 數據增強、CIoU Loss、SPP 模塊、PANet 等技術,進一步提升精度與速度平衡。
-
-
YOLOX(2021)
-
采用 anchor-free 設計,Decoupled Head、SimOTA 訓練方案、EMA、SiLU 激活;
-
在 COCO 上取得 AP 50:50–95 達到 50+ 的水平。
-
-
YOLOv7 / YOLOv8(2022–2023)
-
發布多項結構與訓練技巧創新,如 E-ELAN、Dynamic Head、自動混合精度;
-
Ultralytics YOLOv8 以 PyTorch 實現,接口友好并支持多任務(分類、檢測、分割、分割跟蹤)。
-
六、SSD
1、模型動機
SSD 于 2016 年由 Wei Liu 等人提出,旨在在保持較高檢測精度的同時,實現真正的單階段、單次前向檢測。相比于兩階段方法(Faster R-CNN)和早期單階段方法(YOLOv1/2):
-
兩階段:精度高但慢;
-
YOLOv1:速度快但對小目標、聚集目標精度不足;
-
SSD:引入多尺度特征圖與多比例默認框(default boxes),在速度和精度間取得平衡。
2、網絡整體結構
-
主干網絡(Backbone)
-
通常選用 VGG16 (去掉最后的池化層和全連接層)作為基礎特征提取器。
-
在 conv4_3、fc7(通過 1×1+3×3 conv 將原 fc6/fc7 轉為卷積層)等多層均保留特征。
-
-
附加特征層(Extra Feature Layers)
-
在 backbone 之后,依次添加若干卷積層(例如 conv8_2、conv9_2、…conv11_2),每層特征圖分辨率依次減半。
-
例如 SSD300 在輸入 300×300 時,依次產生 38×38、19×19、10×10、5×5、3×3、1×1 的特征圖。
-
-
多尺度預測(Multi-scale Prediction)
-
每個特征圖位置生成若干個默認框(Default Boxes,也稱 anchor):
-
不同寬高比(如 1:1、2:1、1:2、3:1、1:3);
-
不同尺度(結合當前層與下一層分辨率計算)。
-
-
并行預測:在每個位置,通過 3×3 卷積同時輸出類別得分分支(K+1 個通道)和邊框偏移分支(4 個通道 × default boxes 數量)。
-
-
輸出張量
-
將所有尺度、所有位置、所有默認框的預測拼接,形成一個統一的輸出向量,然后進行后處理(置信度過濾+NMS)。
-
3、關鍵技術點
-
Default Boxes 的設計
-
在第 m 個尺度特征圖(大小
)上,定義 k 個默認框;每個默認框對應特定的尺度
? 和一組長寬比
。
-
默認框中心與特征圖網格中心對齊,尺度按公式
線性計算。
-
-
多尺度、多比例覆蓋
-
不同層的不同分辨率、不同框比例,聯合覆蓋各類大小和形狀的目標。
-
conv4_3 層對小目標敏感;更深層對大目標更具語義。
-
-
端到端多任務損失
-
?:平滑 L1 損失,對預測框偏移與對應 ground-truth 回歸;
-
?:分類交叉熵,對正負樣本類別預測;
-
?:指示默認框 i 與真實框 j 的匹配關系;
-
通過硬負例挖掘(Online Hard Example Mining)將負樣本比例限制在正樣本的 3 倍內,平衡訓練。
-
-
硬負例挖掘
-
對所有未匹配正樣本的默認框,按分類損失排序,挑選前
?剩余框數
作為負樣本,用于訓練。
-
-
尺度歸一化
-
對 conv4_3 層特征做 L2 正則化并乘以可學習縮放因子,以緩解淺層特征通道數較小、梯度傳播不均的問題。
-
4、訓練與推理流程
-
訓練階段
-
默認框與真實框匹配:IoU ≥ 0.5 的默認框標為正樣本;后者隨機補足。
-
計算損失:多任務損失按正負樣本加權求和;
-
反向傳播:同時優化 backbone、附加層、輸出分支;
-
數據增強:隨機裁剪、顏色抖動、翻轉、縮放,提高模型魯棒性。
-
-
推理階段
-
單次前向:輸入整圖(如 300×300)→ 特征圖 → 并行預測;
-
解碼偏移:將網絡學到的偏移還原到默認框,得到最終預測框坐標;
-
置信度過濾:丟棄低于閾值(如 0.5)的預測;
-
NMS:對每個類別執行非極大抑制,保留最高置信度的若干框。
-
5、性能與優缺點
模型 | 輸入尺寸 | PASCAL VOC07 mAP | COCO AP@[.5:.95] | 推理速度(FPS@Titan X) |
---|---|---|---|---|
SSD300 | 300×300 | 77.5% | 23.2% | ~59 |
SSD512 | 512×512 | 79.5% | 26.8% | ~22 |
-
優點
-
真正單階段:無外部 proposal,速度快;
-
多尺度特征融合:對各大小目標均有較好覆蓋;
-
端到端訓練:簡單統一的多任務優化。
-
-
缺點
-
小目標檢測弱:300×300 分辨率下,對極小目標仍然不夠敏感;
-
長尾樣本不平衡:類別不均衡需額外策略;
-
依賴錨框設計:手工設定尺度與比例,需針對數據集調優。
-
6、后續演進
-
DSSD(2017)
-
在 SSD 基礎上加入多尺度 deconvolution 和擴張卷積,提升小目標檢測精度。
-
-
RefineDet(2018)
-
兩段式單階段:先粗略篩選,然后精細定位并分類,結合了兩階段與單階段優點。
-
-
RetinaNet(2017)
-
引入 Focal Loss,解決極度正負樣本不平衡,AP 表現超越 SSD。
-
-
YOLO 系列進化
-
后綴如 YOLOv4/5/6/7 在 anchor-free、解耦頭、SimOTA 等方面不斷優化,進一步推動單階段檢測性能。
-
七、DETR
1、動機背景
傳統目標檢測框架(R-CNN 系列、SSD、YOLO 等)大多依賴先驗框(anchor)或候選區生成,并通過 NMS(非極大值抑制)來去重,實現復雜且多階段的流水線訓練。DETR(End-to-End Object Detection with Transformers)由 Facebook AI Research 于 2020 年提出,首創將 Transformer 架構直接應用于目標檢測,實現端到端、無錨框、無 NMS 的統一檢測框架。
2、整體架構概覽
輸入圖片 → Backbone CNN → Flatten+Position Embedding → Transformer Encoder ↓ Transformer Decoder (object queries) ↓ 線性頭:分類分支 + 邊框回歸分支 ↓ Hungarian Matcher + Set Prediction Loss → 端到端優化
-
Backbone CNN
-
通常使用 ResNet-50/101 等提取二維特征圖(如 1/32 下采樣尺寸的 C×H×W)。
-
-
位置編碼與扁平化
-
將特征圖扁平為長度為
的序列,并加上可學習的 2D 位置編碼。
-
-
Transformer Encoder
-
多層自注意力(Multi-Head Self-Attention)+ 前饋網絡,對圖像特征進行全局上下文建模。
-
-
Transformer Decoder
-
預設 M 個object queries(可學習向量),每個 query 通過交叉注意力(Cross-Attention)“查詢”編碼器輸出,生成對一個目標的預測。
-
-
輸出 Head
-
對每個 query 輸出一個 (C+1)-維分類分數(包含背景類“無目標”)和一個 4 維邊框坐標(歸一化到 [0,1])。
-
-
集匹配損失(Set Prediction Loss)
-
采用匈牙利算法(Hungarian Matching)將 M 個預測與真實目標進行一一匹配;
-
匹配后,對分類和回歸損失進行加權求和,端到端反向傳播,無需 NMS。
-
3、核心組件詳解
(1)Object Queries
-
預定義 M?個長度為 d 的向量(如 M=100,d=256),并隨訓練學習;
-
每個 query 在 decoder 中與編碼器特征做多輪交互,最終對應一個檢測框或“空”(no object)。
(2)注意力機制
-
自注意力(Self-Attention):在 encoder/de-coder 內部,建模各位置與各 query 之間的全局關系;
-
交叉注意力(Cross-Attention):decoder 中,query 對編碼器所有位置的加權聚合,學習“在哪里有物體”。
(3)位置編碼(Positional Encoding)
-
將二維網格位置映射為與特征同維度的向量,并與特征相加;
-
保持空間位置信息,使注意力機制區分不同區域。
(4)匈牙利匹配(Hungarian Matching)
-
對 M 個預測與 K 個 ground-truth 目標,構建 M×K?的匹配成本矩陣:
結合分類是否正確與邊框回歸誤差,用匈牙利算法求最優一一匹配對;
-
未匹配的預測被視為背景(類別損失只計算為“無目標”)。
(5)Set Prediction Loss
-
匹配后,對每對 (i,j) 預測與真實目標計算:
-
分類損失:交叉熵;
-
回歸損失:平滑
? + GIoU Loss(在 DETR 后續版本中引入)。
-
-
損失總和:
4、訓練與推理流程
-
訓練
-
將批量圖像送入 backbone,提取特征并加位置編碼;
-
編碼器多層自注意力處理,得到全局特征表示;
-
decoder 交叉注意力將 object queries 轉化為 M 條預測;
-
匈牙利匹配,計算 set prediction loss;
-
端到端反向傳播,更新 backbone、Transformer、object queries。
-
-
推理
-
單次前向得到 M 個分類分數與邊框;
-
選取分類分數最高的前 N′ 條(如 top-100)非背景預測;
-
直接輸出,無需 NMS。
-
5、優缺點對比
方面 | 優勢 | 局限 |
---|---|---|
簡潔性 | 端到端一體化,無需候選框、錨框、NMS 等繁瑣步驟 | 訓練收斂慢,需大批量數據和更長訓練 |
全局交互 | Transformer 自注意力學習全局上下文,利于復雜場景下檢測 | 計算與內存開銷高,尤其大分辨率/大特征圖尺寸時 |
可擴展性 | 容易結合多任務(如 Mask DETR、Deformable DETR、Conditional DETR 等) | 原始 DETR 在小目標檢測、密集目標場景(人群、車流)效果欠佳 |
推理效率 | 無需 NMS,后處理簡單 | Transformer decoder 層數和 query 數量直接影響推理速度 |
6、后續改進與演進
-
Deformable DETR
-
引入可學習的可變形 attention,僅在若干關鍵位置采樣特征,大幅加速收斂和推理。
-
-
Conditional DETR
-
將位置信息條件化注入 decoder 查詢,增強查詢與特征的對齊,加速訓練收斂。
-
-
DN-DETR (Denoising DETR)
-
在訓練中加入帶噪聲的查詢與目標標簽對,用“去噪”任務輔助收斂。
-
-
Mask-DETR
-
在 DETR 基礎上加上實例分割分支,實現端到端的檢測+分割。
-
-
Sparse DETR / Efficient DETR
-
通過稀疏化多頭注意力或采用更輕量設計,降低計算量,提升推理速度。
-