Python----目標檢測(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理與網絡結構)

一、《YOLOv3:AnIncrementalImprovement》

1.1、基本信息

  • 標題:YOLOv3: An Incremental Improvement

  • 作者:Joseph Redmon, Ali Farhadi

  • 機構:華盛頓大學(University of Washington)

  • 發表時間:2018年

  • 代碼地址:Joseph Redmon - Survival Strategies for the Robot Rebellion

論文地址:

?????????[1804.02767] YOLOv3: An Incremental Improvement

????????我們對YOLO進行了一些更新!我們做了一些小的設計更改來使其更好。我們還訓練了這個新的網絡,非常不錯。它比上次稍大,但更加準確。不過它依然很快,請放心。在320x320的情況下,YOLOv3在28.2 mAP中以22毫秒的速度運行,準確性與SSD相當,但快了三倍。當我們查看老舊的5IOUmAP檢測指標時,YOLOv3表現得相當不錯。在Titan X上實現了579AP50,而RetinaNet在198毫秒內實現了575AP50,性能相似,但快了3.8倍。像往常一樣,所有代碼可以在Joseph Redmon - Survival Strategies for the Robot Rebellion上找到。?

1.2、主要內容

核心改進

????????結合殘差網絡(ResNet)思想,提出新的主干網絡?Darknet-53(53層卷積),兼顧速度與性能。

????????采用?多尺度預測(3種尺度),融合淺層細粒度特征與深層語義特征,提升小目標檢測能力。

????????使用?維度聚類生成錨框(9個聚類,分3個尺度),通過邏輯回歸預測目標存在概率。

性能表現

????????速度:在Titan X GPU上,320×320分辨率下僅需22毫秒,比RetinaNet快3.8倍。

????????精度:AP50指標達57.9,與RetinaNet(57.5)相當,但速度顯著占優。

????????局限性:高IOU閾值(如AP75)下性能較弱,邊界框精確定位能力不足。

失敗嘗試

????????線性激活替代sigmoid導致mAP下降。

????????Focal Loss未提升性能(可能與YOLOv3的獨立目標性預測機制沖突)。

????????雙IOU閾值訓練策略效果不佳。

1.3、作用影響

技術貢獻

????????推動實時目標檢測的實用化,平衡速度與精度,適用于嵌入式設備和實時系統。

????????Darknet-53成為高效主干網絡設計的參考,影響后續輕量化模型(如YOLOv4、YOLOv5)。

行業影響

????????廣泛應用于安防監控、自動駕駛、工業檢測等對實時性要求高的場景。

????????引發對目標檢測評估指標的反思(如AP50 vs. COCO復雜指標)。

1.4、對未來展望

????????那么,其他那些為視覺研究提供大量資金的人是軍方,他們從來沒有做過任何可怕的事情,比如用新技術殺死很多人,哦等等.....我對大多數使用計算機視覺的人充滿希望,他們只是用它做快樂、好的事情,比如在國家公園里計算斑馬的數量,或者跟蹤它們的貓在家里游蕩。但是計算機視覺已經在被用于有問題的用途,作為研究人員,我們有責任至少考慮我們的工作可能造成的傷害,并考慮減少它的方式。我們欠世界這么多。

二、YOLOV3

????????下圖中可以看到,2018年測試性能的數據集變成了COCO數據集,可以看到 YOLOV3的速度是非常快的,但是它的mAP并不是非常的高(mAP50 95)。

????????下圖中可以看到,當IOU=0.5的時候,即mAP-50時,可以看到YOLOV3的速 度不僅快的,而且還非常準。?

2.1、輸入處理(Input)

????????YOLOV3在輸入上沒做任何的變化。

2.2、骨干網絡(Backbone)

修改骨干網絡為darknet53

?????????YOLOv3的Backbone在YOLOv2的基礎上設計了Darknet-53結構。 Darknet-53結構引入了ResNet的殘差思想,類似于ResNet。

????????同時,darknet53網絡并沒有池化層(池化層指的是下采樣的池化,并不是 全局平均池化)。?

2.3、Neck結構

????????YOLOv3引入了FPN的思想,以支持后面的Head側采用多尺度來對不同size 的目標進行檢測,越精細的grid cell就可以檢測出越精細的目標物體。 YOLOv3設置了三個不同的尺寸,分別是19×19,38×38和76×76,他們之間 的比例為1:2:4。

其中,在Neck結構CBL*5中,5層CBL分別是:1x1,3x3,1x1,3x3,1x1 的卷積。

在Neck結構CBL中,是1x1的卷積。 輸入時608,

經過Backbone的第一個Res8之后,得到的特征張量縮放比為 8:608/8=76,即76x76x256。

經過Backbone的第二個Res8之后,得到的特征張量縮放比為16: 608/1638,即38x38x512。

Concat是在通道上進行相加。

Neck結構的基礎上順勢而為融合了3個尺度,在多個尺度的融合特征圖上分 別獨立做檢測,19x19的檢測大尺寸物體,38x38的檢測中尺寸物體, 76x76的檢測小尺寸物體。

2.4、?檢測頭(Head)

????????255是與Anchor Box有關的,那么在YOLOV3中,Anchor Box的尺寸也是有 聚類算法產生的,經過聚類算法,有9個尺寸的Anchor Box,分別為: (10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90), (156x198),(373x326),YOLOV3會在三個預測特征層上進行預測,所以每 個預測特征層都有3個Anchor Box(按照先后順序排好的,3個為一組,也 就是每個預測特征層有3個Anchor Box)。

特征圖層特征圖大小Anchor Box尺寸(修正后)Anchor Box數量
特征圖層1(大目標)13x13(116x90),(156x198),(373x326)13x13x3
特征圖層2(中目標)26x26(30x61),(62x45),(59x119)26x26x3
特征圖層3(小目標)52x52(10x13),(16x30),(33x23)52x52x3

?那么COCO數據集有80類,3x(4+1+80)就得到255了。

三、正負樣本分配

3.1、正樣本分配原則

????????與GT BOX的IOU最大的Anchor Box最為正樣本。 如果一個Anchor Box與GT BOX的IOU不是最大的,但是又大于某個閾值, 那么就丟掉,既不是正樣本又不是負樣本。

3.2、負樣本分配原則

????????除去正樣本和丟棄的樣本剩下的就是負樣本。 如果某個Anchor Box不是正樣本,那么它就沒有定位損失和類別損失, 只有置信度損失。

????????其實我們可以看出來,這種正負樣本分配的方式時有問題的,他會導致正負 樣本數量失衡,從而影響訓練結果,所以在幾年前人們用YOLOV3的時候, 他們選擇正樣本的方式是:只要某個grid cell中的Anchor Box和GT BOX的 IOU大于某個閾值就視為正樣本,這樣正樣本的數量就更多了。

四、損失函數

????????原文中沒有詳細的給出,這里根據源碼給出:

????????YOLOV3的損失函數也包括三部分:定位損失、置信度損失、類別損失。

????????其中定位損失與YOLOV2是完全一致的。

????????但是置信度損失、類別損失采用了邏輯回歸的策略,正常情況下,要實現多 分類是由Softmax+多元交叉熵組成,但是在YOLOV2中,采用的是 Softmax+回歸的思想,這本身就很奇怪了,但是YOLOV3更為震撼,它用了 Softmax+二元交叉熵來解決該問題。

????????損失函數用了多個獨立的用于多標簽分類的Logistic分類器,取消了類別之 間的互斥(即one-hot),可以使網絡更加靈活。YOLOv2使用Softmax+回 歸器,認為一個檢測框只屬于一個類別,每個檢測框分配到概率最大的類 別。但實際場景中一個檢測框可能含有多個物體或者有重疊的類別標簽。 Logistic分類器主要用到Sigmoid函數,可以將輸入約束在0到1的范圍內,當 一張圖像經過特征提取后的某一檢測框類別置信度經過sigmoid函數約束后 如果大于設定的閾值,就表示該檢測框負責的物體屬于該類別。

4.1、置信度損失

4.2、分類損失

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

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

相關文章

50天50個小項目 (Vue3 + Tailwindcss V4) ? | Form Wave(表單label波動效果)

📅 我們繼續 50 個小項目挑戰!—— FormWave組件 倉庫地址:https://github.com/SunACong/50-vue-projects 項目預覽地址:https://50-vue-projects.vercel.app/ 🎯 組件目標 構建一個美觀、動態的登錄表單&#xff0…

【數據結構】--二叉樹--堆(上)

一、樹的概念和結構 概念: 樹是一種非線性的數據結構,他是由n(n>0)個有限結點組成一個具有層次關系的集合。其叫做樹,是因為他倒過來看就和一棵樹差不多,其實際上是根在上,樹枝在下的。 樹的特點: 1…

linux有效裁剪視頻的方式(基于ffmpeg,不改變分辨率,幀率,視頻質量,不需要三方軟件)

就是在Linux上使用OBS Studio錄制一個講座或者其他視頻,可能總有些時候會多錄制一段時間,但是如果使用剪映或者PR這樣的工具在導出的時候總需要煩惱導出的格式和參數,比如剪映就不支持mkv格式的導出,導出成mp4格式的視頻就會變得很…

SystemVerilog—Interface語法(一)

SystemVerilog中的接口(interface)是一種用于封裝多模塊間通信信號和協議的復合結構,可顯著提升代碼復用性和維護效率。其核心語法和功能如下: 一、接口的基本定義 1. 聲明語法 接口通過interface關鍵字定義,支持信…

android binder(四)binder驅動詳解

ref: Android10.0 Binder通信原理(五)-Binder驅動分析_binder: 1203:1453 ioctl 40046210 77004d93f4 return-CSDN博客 https://juejin.cn/post/7214342319347712057#heading-0 第6課第1節_Binder系統_驅動情景分析_數據結構_嗶哩嗶哩_bilibili

QT/c++航空返修數據智能分析系統

簡介 1、區分普通用戶和管理員 2、界面精美 3、功能豐富 4、使用cppjieba分詞分析數據 5、支持數據導入導出 6、echarts展示圖表 效果展示 演示鏈接 源碼獲取 int main(){ //非白嫖 printf("📡:%S","joyfelic"); return 0; }

ToolsSet之:數值提取及批處理

ToolsSet是微軟商店中的一款包含數十種實用工具數百種細分功能的工具集合應用,應用基本功能介紹可以查看以下文章: Windows應用ToolsSet介紹https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Number菜單下的Numeric Batch是一個數…

Ubuntu20.04 LTS 升級Ubuntu22.04LTS 依賴錯誤 系統崩潰重裝 Ubuntu22.04 LTS

服務器系統為PowerEdge R740 BIOS Version 2.10.2 DELL EMC 1、關機 開機時連續按鍵盤F2 2、System Setup選擇第一個 System BIOS 3、System BIOS Setting 選擇 Boot Setting 4、System BIOS Setting-Boot Setting 選擇 BIOS Boot Settings 5、重啟 開啟時連續按鍵盤F11 …

(javaSE)Java數組進階:數組初始化 數組訪問 數組中的jvm 空指針異常

數組的基礎 什么是數組呢? 數組指的是一種容器,可以用來存儲同種數據類型的多個值 數組的初始化 初始化:就是在內存中,為數組容器開辟空間,并將數據存入容器中的過程。 數組初始化的兩種方式:靜態初始化,動態初始化 數組的靜態初始化 初始化…

支持向量機(SVM)例題

對于圖中所示的線性可分的20個樣本數據,利用支持向量機進行預測分類,有三個支持向量 A ( 0 , 2 ) A\left(0, 2\right) A(0,2)、 B ( 2 , 0 ) B\left(2, 0\right) B(2,0) 和 C ( ? 1 , ? 1 ) C\left(-1, -1\right) C(?1,?1)。 求支持向量機分類器的線…

UE特效Niagara性能分析

開啟Niagara調試器 開啟顯示概覽 界面顯示 🟩 上方綠色面板:Niagara DebugHud 這是 HUD(調試視圖) 模式下的性能統計顯示,內容如下: 項目含義SystemFilter: ShockWave_01當前選中的 Niagara 粒子系統名稱…

碳中和新路徑:鐵電液晶屏如何破解高性能與節能矛盾?

一、顯示技術困局:當 “高刷” 遭遇 “高耗” 在元宇宙、電競產業蓬勃發展的當下,顯示設備的刷新率與能耗成為行業痛點。傳統液晶受 “邊緣場效應” 制約,刷新率長期停滯在 300Hz 以下,動態畫面拖影問題顯著;同時&…

Vue3+SpringBoot全棧開發:從零實現增刪改查與分頁功能

前言 在現代化Web應用開發中,前后端分離架構已成為主流。本文將詳細介紹如何使用Vue3作為前端框架,SpringBoot作為后端框架,實現一套完整的增刪改查(CRUD)功能,包含分頁查詢、條件篩選等企業級特性。 技術棧介紹 前端&#xff1…

IBM 與嘉士伯(Carlsberg)攜手推進 SAP S/4HANA 數字化轉型,打造啤酒行業新范式

在啤酒釀造擁有悠久傳統的同時,嘉士伯也在積極擁抱前沿技術,邁出數字化轉型的堅實步伐。2025年,嘉士伯宣布與 IBM 建立多年的合作伙伴關系,在其西歐業務中全面部署 SAP S/4HANA,旨在提升企業的運營效率、敏捷性和創新能…

深度解析 Nginx 配置:從性能優化到 HTTPS 安全實踐

引言 Nginx 作為高性能的 Web 服務器和反向代理,其配置靈活性和強大功能備受開發者青睞。本文基于一份生產環境的 Nginx 配置文件,詳細拆解其核心配置邏輯,涵蓋性能優化、HTTPS 安全配置、反向代理及靜態資源處理等關鍵環節,幫助…

傳送文件利器wormhole的使用方法

傳送文件利器wormhole的使用方法 wormhole文件傳送工具是基于python的一個快捷的傳送工具,在安裝此工具之前首先要部署好python環境。 安裝的過程如下: 1.部署好python 環境 LINUX系統自帶PYTHON環境,直接安裝即可。 WINDOWS系統需要安裝py…

LangChain輸出格式化實踐:提升測試工程師LLM開發效率的完整指南

引言 在基于LangChain的LLM測試開發中,輸出格式化是連接大模型推理能力與自動化測試系統的關鍵環節。通過結構化輸出(如JSON),測試工程師可快速將LLM生成的測試用例、缺陷報告等結果對接至CI/CD流水線。本文系統解析LangChain內置…

Go 語言 + Word 文檔模板:WordZero 引擎如何讓企業文檔處理效率提升 300%?

前言 在企業級應用開發中,自動化生成Word文檔一直是個令人頭疼的需求。傳統的方案要么依賴于復雜的Office COM組件,要么使用功能有限的第三方庫。今天為大家介紹一個純Go語言實現的Word操作庫——WordZero,特別是其強大的模板引擎功能&#…

Eclipse 修改字符集

Eclipse 修改字符集 在軟件開發過程中,字符集的設置對于代碼的正確顯示和運行至關重要。Eclipse 作為一款流行的集成開發環境(IDE),提供了方便的字符集修改功能。本文將詳細講解如何在 Eclipse 中修改字符集,以確保項目文件的正確處理。 1. 引言 在 Java 開發中,常見的…

C++ 游戲開發詳細流程

🧠 第一階段:項目規劃與架構設計 關鍵詞:系統性、模塊化、可擴展性 1.1 目標明確 游戲類型:2D / 2.5D / 3D / VR平臺選擇:PC、主機、移動設備多人/單人:是否含網絡模塊(決定是否使用 socket、U…