YOLO 目標檢測:YOLOv3網絡結構、特征輸出、FPN、多尺度預測

文章目錄

  • 一、YOLOV3
    • 1、網絡結構
      • 1.1 整體結構
      • 1.2 主干網絡
      • 1.3 特征輸出
      • 1.4 特征融合
        • FPN(Feature Pyramid Networks)
        • FPN 融合
        • 上采樣融合
    • 2、多尺度預測
    • 3、損失函數
    • 4、性能對比

一、YOLOV3

YOLOv3(You Only Look Once v3)是YOLO系列中的第三代版本,旨在提高目標檢測的精度和速度。YOLOv3通過一些創新和改進使得其在速度和精度上有顯著提升。

  • YOLOv3 論文地址:【https://arxiv.org/pdf/1804.02767】
  • YOLOv3 論文中文翻譯地址:【https://blog.csdn.net/yegeli/article/details/109751358】
  • YOLOv3 最顯著的改進就是在 3 個尺度上以相同的方式進行目標的檢測,每種 3 個錨框,共 9 個。這使其可以檢測到不同規模的目標

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

1、網絡結構

1.1 整體結構

  • 輸入層:輸入圖像尺寸為 416×416×3,表示輸入的是一個RGB圖像,大小為416x416像素。

    • 416×416×3416 是圖像的高度和寬度,3 是顏色通道(RGB)。
  • Darknet53:是YOLOv3的特征提取網絡,相比于YOLOv2使用的Darknet19,它更加深度,包含了 53個卷積層,并且去除了全連接層(FC層)。

      • 主要通過 殘差連接(residual connections) 來防止梯度消失。
      • 這一部分負責提取圖像的高層特征。
  • CBL(卷積+批歸一化+激活函數)

    • CBL = Conv + Batch Normalization + Leaky ReLU
      • Conv:卷積層,用于提取局部特征。
      • Batch Normalization:標準化每一層的輸入,減少訓練時的協方差偏移,提高訓練穩定性。
      • Leaky ReLU:作為激活函數,Leaky ReLU可以避免ReLU激活函數中出現的“死亡神經元”問題,允許有小的負值輸出。
  • resunit(殘差單元):由 CBLAdd 操作組成。

    • Add 操作:實現了殘差連接,將輸入特征直接與輸出特征相加,避免信息丟失,保持深層網絡訓練的有效性。
      • 該部分幫助網絡通過跳躍連接學習殘差,從而增強梯度傳播,解決深層網絡中梯度消失的問題。
  • resn(殘差模塊):resn 是 Yolov3 中的大組件,n 表示這個 Res-block 里含有多少個 Res-unit,組成如下:

    • 一個 padding
    • 一個 CBL
    • N 個殘差組件
  • concat(拼接操作)

    • 將 Darknet-53 的中間層和后面的某一層的上采樣進行張量拼接,達到多尺度特征融合的目的。這與殘差層的 add 操作是不一樣的,拼接會擴充張量維度,而 add 直接相加不會導致張量維度的改變,例如 104×104×128 和 104×104×128 拼接,結果是 104×104×256
  • 上采樣:上采樣(Upsampling)是一個關鍵的技術,用于實現多尺度特征融合,從而提高模型對不同尺度目標的檢測能力

    • 多尺度特征融合:YOLOv3 在多個尺度上進行目標檢測,通過上采樣將低分辨率的特征圖放大到高分辨率,與更高分辨率的特征圖進行融合,從而捕捉到更多的細節信息,有助于模型更好地檢測不同尺度的目標,尤其是小
  • 多尺度輸出

    • 網絡在三個不同尺度上進行目標檢測:
      • 13×13×255:高層特征圖,適用于檢測大物體。
      • 26×26×255:中層特征圖,適用于中等尺寸的物體。
      • 52×52×255:低層特征圖,適用于檢測小物體。
      • 每個特征圖的輸出大小為 H×W×(B×5 + C),其中 H×W 是特征圖的大小,B 是每個格子上的預測框數,5 是每個框的屬性(中心點坐標、寬高和置信度),C 是類別數。

1.2 主干網絡

  1. 輸入層
  • 輸入尺寸: 416×416×3,表示輸入的是一個416x416的RGB圖像。
  • 卷積層 1:第一個卷積層有 32個3x3的濾波器,該層的輸出尺寸為 256×256,也就是圖像經過卷積處理后的尺寸。
  1. 特征提取(多層卷積)
  • 第二層卷積:輸入尺寸 208×208×64,進行卷積操作后輸出尺寸為 128×128
  • 第3層卷積:接著進行一個 1x1卷積,輸出 128×128
  • 殘差塊(Residual):接下來,應用了一個 3x3的卷積,通過殘差連接(skip connection)優化特征圖的傳遞,輸出仍為 128×128
  1. 更深層的卷積塊
  • 通過多次卷積塊的堆疊,網絡逐步提取圖像的高層特征。
    • 104×104×128 經過 3x3卷積1x1卷積 后輸出 64×64
    • 重復類似的操作,輸出逐步減小,特征圖的深度逐漸增大。
  1. 中間特征提取
  • 特征圖尺寸
    • 通過更深的網絡,特征圖進一步縮小到 52×52×25626×26×512
  • 在這個階段,網絡繼續通過卷積層提取更多抽象的特征,并通過 殘差單元(Residual Unit) 來加深網絡。
  1. 輸出特征圖
  • 在輸出階段,YOLOv3會通過三個不同尺度的特征圖進行目標檢測:
    • Scale 1: 對應 13×13×1024 特征圖,適合檢測大物體。
    • Scale 2: 對應 26×26×512 特征圖,適合檢測中等物體。
    • Scale 3: 對應 52×52×256 特征圖,適合檢測小物體。
  1. YOLO Detection
  • 最后的輸出層包括 卷積操作Conv),用于生成最終的預測框和類別概率。
  • Softmax層:用于歸一化類別的輸出,確保輸出的概率和為1。

1.3 特征輸出

。YOLOv3采用了 多尺度檢測(Multi-Scale Detection),通過三個不同尺寸的特征圖來捕捉不同大小的物體。

Scale 3 — 大物體檢測(52×52×255

  • 輸出尺寸52×52×255,即每個格子(52x52)上有 255 個值,包含 4個坐標(bounding box位置)、1個置信度(bounding box是否包含物體)、和 80個類別的概率
  • 適用于檢測 小物體,尤其是在較高層的特征圖中。

Scale 2 — 中物體檢測(26×26×255

  • 輸出尺寸26×26×255,這個特征圖對應較小的物體,包含與Scale 3類似的信息。
  • 用于檢測中等大小的物體,網絡在這里提取到的特征較為復雜,但分辨率較低。

Scale 1 — 小物體檢測(13×13×255

  • 輸出尺寸13×13×255,這個特征圖是最小的,適用于檢測 大物體
  • 適用于捕捉較大物體的特征,因為其分辨率最低,但每個格子對應的區域較大,能夠涵蓋更大的物體。
  1. 特征融合的方式:
    • 在YOLOv3中,不同尺度的特征圖逐層融合。這通過將較小特征圖的高分辨率特征與較大特征圖的深層次特征進行結合,增強了網絡對不同尺度目標的敏感性。

1.4 特征融合

在目標檢測任務中,不同尺度的目標(如遠處的小人和近處的大車)對特征提取的要求不同:

  • 小物體檢測: 小物體的特征通常較為細節化,并且位于圖像的較低層次。低分辨率的特征圖無法充分表達這些細節,因此需要將高分辨率的特征圖與低分辨率特征圖融合,才能更好地捕捉小物體的特征。
  • 大物體檢測: 大物體通常占據較大的區域,因此低分辨率的特征圖能夠更好地捕捉大物體的信息。通過融合較高層次的特征(如13×13的特征圖)與層次的細節特征(如52×52的特征圖),可以顯著提升對大物體的檢測精度。
FPN(Feature Pyramid Networks)

是一種常用的特征融合技術,它通過利用從不同深度網絡層次提取的特征來增強網絡的多尺度特征表達能力。FPN 主要用于 從淺層到深層 融合特征,以更好地檢測各種尺度的物體。

FPN 的主要目標是通過 自上而下的路徑自下而上的路徑 來融合不同尺度的特征圖。這一過程有助于提升檢測小物體和大物體的能力。

  1. 自上而下(Top-down)路徑
  • 自上而下路徑通過對高層特征圖進行 上采樣,將其逐漸恢復到較低層次的尺寸(高分辨率),使得它們能夠與較低層的特征圖結合。
  • 這個過程通常通過 轉置卷積(Deconvolution)上采樣(Upsampling) 來完成。
  • 這樣高層的抽象特征可以被引入到低層的具體特征中,增加對小物體的敏感性。
  1. 自下而上(Bottom-up)路徑
  • 自下而上路徑是通過 卷積操作 來提取低層的特征圖,使其逐步變得更加抽象,增強對大物體的表達能力。
  • 低層特征圖的尺寸較大,但在細節上更為豐富,適合檢測小物體。自下而上的路徑逐漸減少特征圖的空間尺寸并增加通道數。
  1. 融合(融合上下層的特征)
  • 自上而下路徑和自下而上的路徑相結合時,FPN通過 特征拼接加法操作,將來自不同層次的信息融合在一起。
  • 這種融合的目的是整合淺層的高分辨率細節和深層的抽象信息,從而形成更具辨識度和多尺度特征表達的特征圖。
  1. 卷積層和檢測
  • 在每個融合后的特征圖上,FPN通常會執行卷積操作,以進一步提取多尺度的信息。
  • 最終,這些特征圖會送入檢測頭進行目標檢測任務,生成邊界框和類別預測。

在YOLOv3中:

  1. 三尺度輸出:YOLOv3在三個不同尺度的特征圖上進行目標檢測,這和FPN的目標非常相似。
  2. 特征融合:在YOLOv3中,較高層次的特征圖會進行上采樣,然后與低層次的特征圖進行拼接,以便融合不同層次的特征信息。

觀察下面四張圖:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

  • 圖 a:特征化圖像金字塔

    • 當我們要檢測不同的尺度目標時,需要把圖像送入不同的尺度

    • 需要根據不同的尺度圖片一次進行預測

    • 需要多少個不同尺度就需要預測多少次,效率較低

  • 圖 b:單特征映射

    • 得到一個特征圖并進行預測

    • 特征丟失,對于小目標效果不好

  • 圖 c:金字塔特征層次結構

    • 把圖像傳給 backbone,在傳播的過程中分別進行預測

    • 相互之間獨立,特征沒有得到充分利用

  • 圖 d:特征金字塔網絡

    • 不是簡單的在不同特征圖上進行預測
    • 會對不同的特征圖進行融合后再進行預測
FPN 融合
  • 和前面描述的一樣,為了進一步降低模型的復雜度進而提升速度,YOLOv3 選擇了重用主干網絡所提取的不同尺寸的特征圖,主要是 8 倍、16 倍以及 32 倍下采樣的特征圖,同時采用了 FPN 的設計思想,分別對 16 倍、32 倍以及各自上采樣后的結果進行了融合,但是也對其進行了一定的改進,在傳統的 FPN 中,特征圖通常是通過 加法(Add) 來進行融合的。但在 YOLOv3 中,作者選擇使用 通道拼接(Concatenate) 來代替加法操作,這是為了:
    • 增加特征圖的通道數:使得模型能夠捕捉到更多的信息
    • 避免信息丟失:加法操作可能會導致某些重要信息被掩蓋,而拼接則保留了所有原始信息
  • 1×1 卷積完成通道的一致性
  • 2×up(上采樣)完成尺寸的一致性

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

上采樣融合
  • 特征融合更有利于檢測各種尺寸的物體,下圖是特征融合架構圖:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

2、多尺度預測

在傳統的目標檢測任務中,網絡往往在一個固定尺度上進行預測。但實際應用中,目標的尺寸差異很大,因此,如果只在一個尺度的特征圖上進行預測,可能無法準確檢測到小物體或大物體。多尺度預測(Multi-Scale Prediction)通過在多個尺度的特征圖上同時進行預測,解決了這一問題。多尺度預測可以讓網絡在不同的特征圖上做出預測,從而能夠同時捕捉到不同尺寸物體的特征。

在YOLOv3中,多尺度預測 是通過在不同尺度的特征圖上同時進行目標檢測來實現的。具體來說,YOLOv3有三個不同尺寸的特征圖,每個特征圖都會進行目標檢測預測。這種設計使得YOLOv3能夠在處理不同大小的物體時表現得更加精確和高效。

YOLOv3的多尺度預測流程:

  1. 特征提取:YOLOv3首先通過Darknet-53提取特征,得到多個尺寸的特征圖(例如:52x52x25626x26x51213x13x1024)。
  2. 上采樣:較高層(低分辨率)特征圖通過上采樣操作增大其尺寸,以便與較低層(高分辨率)的特征圖進行融合。
  3. 拼接:將不同尺度的特征圖進行拼接(concatenate),將細節信息和高層抽象信息結合在一起,從而獲得更豐富的特征表示。
  4. 預測:在三個不同尺度的特征圖上,網絡分別進行目標檢測預測,包括邊界框、類別、置信度等。
    • 13×13×255:用于大物體的檢測。
    • 26×26×255:用于中物體的檢測。
    • 52×52×255:用于小物體的檢測。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

多尺度預測的輸出

YOLOv3的每個尺度的輸出形狀為 H×W×(B×5 + C),其中:

  • H×W 是特征圖的空間尺寸。
  • B 是每個網格(grid)單元中預測的邊界框數量(YOLOv3中通常是3個框)。
  • 每個框包含 4個位置參數x, y, w, h),1個置信度(bounding box是否包含物體),以及 C個類別概率(每個物體類別的概率,YOLOv3使用80個類別)。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

3、損失函數

在目標檢測任務中,損失函數 是用于評估模型預測與真實標簽之間差異的重要指標。對于YOLOv3模型來說,損失函數的設計要同時考慮物體的定位(位置損失)、置信度(置信度損失)以及類別(類別損失)的預測。YOLOv3的損失函數是由三部分組成的:定位損失置信度損失類別損失

  • 定位損失(Localization Loss)
  • 置信度損失(Confidence Loss)
  • 類別損失(Classification Loss)

1.定位損失是指預測的邊界框和真實邊界框之間的差異。它反映了模型對物體位置的預測誤差。

  • 計算方式: YOLOv3使用 均方誤差(MSE) 來衡量預測框與真實框之間的差距。具體來說,定位損失包括以下四個部分:
    • 中心點誤差:預測框的中心點(x, y)與真實框的中心點之間的誤差。
    • 寬度誤差:預測框的寬度(w)與真實框的寬度之間的誤差。
    • 高度誤差:預測框的高度(h)與真實框的高度之間的誤差。
    • IoU損失(Intersection over Union):YOLOv3還通過 IoU損失 來計算預測框與真實框的重疊度,作為定位損失的一個重要組成部分。

2.置信度損失衡量了模型對每個邊界框是否包含物體的預測能力。YOLOv3會預測每個格子是否包含目標物體(置信度)。置信度損失是基于 二元交叉熵 來計算的,包含兩種情況:

  1. 物體存在時的置信度:如果該框中有物體,模型應該預測較高的置信度。
  2. 物體不存在時的置信度:如果該框沒有物體,模型的置信度應該接近0。

3.類別損失衡量了模型預測的物體類別與真實類別之間的差異。YOLOv3采用 交叉熵損失(cross-entropy loss)來計算預測的類別概率與真實類別標簽之間的差異。

4、性能對比

  • AP50:IoU 閾值為 0.5 時的 AP 測量值
  • AP75:IoU 閾值為 0.75 時的 AP 測量值
  • APs:對于小目標的 AP 值
  • APm:對于中等目標的 AP 值
  • APL:對于大目標的 AP 值

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

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

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

相關文章

【GIS圖像處理】有哪些SOTA方法可以用于將1.5米分辨率遙感圖像超分辨率至0.8米精度的?

針對將1.5米分辨率遙感圖像超分辨率至0.8米的需求,當前主流方法可分為以下幾類,結合最新研究進展和實際應用場景,具體技術方案及SOTA方法如下: 一、基于Transformer的高效建模 1. Top-k標記選擇Transformer(TTST) 核心機制:通過動態選擇前k個關鍵標記(token),消除冗…

【電力電子】逆變器控制策略:PQ Droop下垂控制、電壓電流雙環控制與SPWM調制

逆變器中的 PQ Droop 控制。 1. PQ Droop 控制的定義 PQ Droop(有時也稱為功率下垂控制,Power Droop Control)是微電網、并聯系統或逆變器并網運行中常用的一種分布式功率控制方法。 P-Droop(有功下垂):通過調節逆變器輸出頻率與有功功率之間的關系實現功率分配。 Q-Dro…

【LeetCode 熱題 100】5. 最長回文子串——中心擴散法

Problem: 5. 最長回文子串 文章目錄整體思路完整代碼時空復雜度時間復雜度:O(N^2)空間復雜度:O(1)整體思路 這段代碼旨在解決經典的 “最長回文子串” (Longest Palindromic Substring) 問題。問題要求在一個給定的字符串 S 中,找到一個最長…

六、練習3:Gitee平臺操作

練習3:Gitee平臺操作 練習目標 掌握Gitee平臺的基本操作,包括創建倉庫、推送代碼、團隊協作等。 練習步驟 步驟1:Gitee賬號準備 訪問 gitee.com注冊賬號(如果還沒有)登錄Gitee 步驟2:配置SSH密鑰 # …

Git軟件版本控制

軟件版本控制作用:軟件源碼版本管理、多人協作開發、版本多分支開發、代碼回滾(回退)等功能。集中式版本控制:將代碼倉庫放在一臺服務器上,開發時要依賴這臺服務器。優點:簡單、方便管理、適合中小型項目缺…

生產環境Spark Structured Streaming實時數據處理應用實踐分享

生產環境Spark Structured Streaming實時數據處理應用實踐分享 一、業務場景描述 我們所在的電商平臺需要實時監控用戶行為數據(如點擊、下單、支付等),基于事件級別的流式數據進行實時統計、會話聚合、漏斗分析,并將結果推送到Da…

海康相機開發---HCNetSDK

HCNetSDK(Hikvision Network Software Development Kit)是海康威視專為旗下安防監控設備打造的二次開發工具包,是連接上層應用與海康設備的核心橋梁。其封裝了設備底層通信協議(包括私有協議與部分標準協議)&#xff0…

構建無廣告私人圖書館Reader與cpolar讓電子書庫隨身攜帶

文章目錄前言:告別書荒,拯救靈魂的“摸魚神器”1、關于Reader:小而美的開源在線閱讀器2、Docker部署3、簡單使用reader和添加書源4.群暉安裝Cpolar工具5.創建reader閱讀器的公網地址6.配置固定公網地址前言:告別書荒,拯…

amd cpu是x86架構嗎

是的,AMD CPU屬于x86架構?,其64位擴展(x86-64)最初由AMD設計并成為行業標準。? ?AMD與x86架構的關系? ?技術淵源?:AMD自1976年起通過技術授權成為x86架構的合法制造商,與英特爾共同主導x86市場。2003…

vercel上線資源無法加載

背景:在本地跑開發服務器沒問題,但是部署到 vercel 上就有問題上一次出現類似問題是在更新游戲引擎方法后本地可以跑但是上線沒有成功,當時是因為 runner.html 是在部署時通過腳本從遠端倉庫拉取的,所以解決方案:1.更新…

Node.js 的模塊化規范是什么?CommonJS 和 ES6 模塊有什么區別?

目錄 一、為什么需要模塊化? 二、Node.js 的模塊化規范 三、CommonJS 模塊化 1. 基本語法 2. 特點 3. 缺點 四、ES6 模塊(ESM) 1. 基本語法 2. 特點 3. 在 Node.js 中的使用 五、CommonJS 和 ES6 模塊的區別 六、實際開發中的選擇…

設計模式:代理模式(Proxy Pattern)

文章目錄一、代理模式的定義二、實例分析三、示例代碼一、代理模式的定義 代理模式是一種結構型設計模式,它為某個對象提供一個代理或占位符,以控制對這個對象的訪問。簡單來說代理對象在客戶端和目標對象之間起到中介作用,客戶端并不會直接操…

數據類型序列化-封裝

/// <summary> /// 定義泛型接口 /// </summary> /// <typeparam name"T">T</typeparam> public interface ISettingValue<T> {/// <summary>/// value/// </summary>T DoubleValue { get; }/// <summary>/// key//…

PitVis-2023挑戰賽:內鏡下垂體瘤手術視頻中的手術流程識別|文獻速遞-深度學習人工智能醫療圖像

Title題目PitVis-2023 challenge: Workflow recognition in videos of endoscopic pituitary surgeryPitVis-2023挑戰賽&#xff1a;內鏡下垂體瘤手術視頻中的手術流程識別01文獻速遞介紹內鏡視覺挑戰賽與PitVis-2023挑戰賽背景及核心內容 “內鏡視覺&#xff08;EndoVis&#…

2025年8月個人工作生活總結

本文為 2025年8月工作生活總結。研發編碼 無處不在的AI 現在很多地方都在推AI&#xff0c;廣西的人工智能走在前列&#xff0c;要賦能各行各業。至于我&#xff0c;主要就是在寫點代碼&#xff0c;寫點交差的文檔。其實現在我已經有點分析哪些代碼哪些文字是AI寫的了。我工作用…

Dubbo常見面試題

1、默認使用的是什么通信框架&#xff0c;還有別的選擇嗎? 默認也推薦使用netty框架&#xff0c;還有mina。 2、服務調用是阻塞的嗎&#xff1f; 默認是阻塞的&#xff0c;可以異步調用&#xff0c;沒有返回值的可以這么做。 3、一般使用什么注冊中心&#xff1f;還有別的…

簡單的加密算法

// 加密函數&#xff08;32位版本&#xff09; //這里的 data 是ID&#xff0c; dword encrypt(dword data, dword key, int shift) {data ^ key; // 第一步&#xff1a;異或混淆// 循環左移&#xff08;shift范圍1-31&#xff09;return (data << sh…

升級的MS9125S USB投屏控制芯片(VGAHD輸出)

MS9125S是一款USB單芯片投屏器&#xff0c;內部集成了USB 2.0控制器和數據收發模塊、視頻DAC、HD接口和音視頻處理模塊&#xff0c;支持壓縮視頻傳輸。MS9125S可以通過USB接口顯示或者擴展PC、智能手機、平板電腦的顯示信息到更大尺寸的顯示設備上&#xff0c;支持VGA和HD視頻接…

求歐拉回路:Hierholzer算法圖解模擬

代碼模板&#xff1a;List<Integer> resultList new ArrayList<>();List<Integer> hierholzer() {dfs(0);resultList.add(0);// 數組反轉Collections.reverse(resultList);return resultList; }void dfs(int start) {for(int end : G[start]) {if(!vis[star…

Kafka面試精講 Day 2:Topic、Partition與Replica機制

【Kafka面試精講 Day 2】Topic、Partition與Replica機制 在“Kafka面試精講”系列的第二天&#xff0c;我們將深入剖析Kafka最核心的三大數據組織機制&#xff1a;Topic&#xff08;主題&#xff09;、Partition&#xff08;分區&#xff09;與Replica&#xff08;副本&#x…