YOLOv8 : 網絡結構

一. YOLOv8網絡結構

1. Backbone

YOLOv8的Backbone同樣參考了CSPDarkNet-53網絡,我們可以稱之為CSPDarkNet結構吧,與YOLOv5不同的是,YOLOv8使用C2f(CSPLayer_2Conv)代替了C3模塊(如果你比較熟悉YOLOv5的網絡結構,那YOLOv8的網絡結構理解起來就easy了)。

如圖1所示為YOLOv8網絡結構圖(引用自MMYOLO),對比圖2的YOLOv5結構圖,可以看到基本的架構是類似的。

這里值得注意的是,很多博文中寫到YOLOv8使用了CSPDarkNet53作為backbone,當然是可以用的,但是官方代碼中明顯不是套用的CSPDarkNet53網絡結構。事實上,YOLOv5的主干也并非是CSPDarkNet53網絡。

圖1 YOLOv8網絡架構

圖2 YOLOv5網絡架構

2. Neck

YOLOv8的Neck使用的也是類似于YOLOv5的PAN-FPN,稱作雙流FPN,高效,速度快。

3. Head

與之前的YOLOv6,YOLOX類似,使用了Decoupled Head,YOLOv3、YOLOv4、YOLOv5均使用Coupled Head。

YOLOv8也使用3個輸出分支,但是每一個輸出分支又分為2部分,分別來分類和回歸邊框(參照圖1的Decoupled Head)。

二. 細說Backbone

前面講到,YOLOv8的Backbone類似于YOLOv5的Backbone,不同點是將C3換成了C2F,以及將第一個Convolution層設置為kernel size等于3,stride為2(YOLOv5的Kernel Size為6,padding為2)。

1. C2F與C3對比

那么C2F與C3單元相比,有什么優勢呢?我們先上各自的網絡結構圖。如圖3為C3結構圖,圖4為C2F結構圖。

圖4中,每一個Bottleneck的輸入Tensor的Channel都只有上一級的0.5倍,因此計算量明顯降低。從另一方面講,梯度流的增加,也能夠明顯提升收斂速度和收斂效果。

圖3 C3單元

圖4 C2F單元

2. Bottleneck

YOLOv8的C2F使用了Bottleneck單元,但需要注意的是,Darknet所引入的Bottleneck不同于ResNet的Bottleneck。如圖5和圖6分別為Darknet的Bottleneck和ResNet的Bottelneck。

由圖5和圖6可以看出,Darknet的Bottleneck單元并未使用最后的1*1卷積進行通道的恢復,而是直接在中間的3*3卷積中進行了恢復。

此處大家進記住一點即可,Bottleneck可以大大減少參數,降低計算量。

圖5 Darknet Bottleneck

圖6 ResNet Bottleneck

三. Neck

YOLOv8的Neck采用了PANet結構。如圖7為網絡局部圖。

由圖7可以看出,Backbone最后經過了一個SPPF(SPP Fast,圖示Layer9),之后H和W已經經過了32被的下采樣。對應的,Layer4經過了8被下采樣,Layer6經過了16背的下采樣。設定輸入為640*640,得到Layer4、Layer6、Layer9的分辨率分別為80*80、40*40和20*20。

Layer4、Layer6、Layer9作為PANnet結構的輸入,經過上采樣,通道融合,最終將PANet的三個輸出分支送入到Detect head中進行Loss的計算或結果解算。

與FPN(單向,自上而下)不同,PANet是一個雙向通路網絡。與FPN相比,PANet引入了自下向上的路徑,使得底層信息更容易傳遞到高層頂部(紅色曲線標注路線)。

圖7 YOLOv8 Neck(PANet)

四. Detect Head

YOLOv8采用了類似于YOLOX的Decoupled Head,將回歸分支和預測分支進行分離。Decoupled Head的有點可以參考YOLOX的論文中提到的,收斂更快,效果更好。

需要特別提及的是,YOLOv8的Detect Head中,針對回歸分支使用了DFL策略,之前的目標檢測網絡將回歸坐標作為一個確定性單值進行預測,DFL將坐標轉變成了一個分布。

DFL理論主要用來解決邊界模糊的問題。詳細了解可以參考論文“Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection”。

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

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

相關文章

【GitHub】Pycharm本地項目打包上傳到Github倉庫的操作步驟

文章目錄 1、Pycharm端的設置操作2、Github端的設置操作3、Pycharm上配置Github4、Git本地項目至GitHub倉庫5、前往Github中查看確認6、常見報錯 1、Pycharm端的設置操作 通過CtrlAltS快捷組合鍵的方式,打開設置,導航到版本控制一欄中的Git,…

Gin安裝解決國內go 與 熱加載

get 方式安裝超時問題,國內直接用官網推薦的下面這個命令大概率是安裝不成功的 go get -u github.com/gin-gonic/gin 可以在你的項目目錄下執行下面幾個命令: 比如我的項目在E:\Oproject\zl cmd E:\Oproject\zl>就在目錄下執行 go env -w GO111…

回歸預測 | MATLAB實現GRU門控循環單元多輸入多輸出

回歸預測 | MATLAB實現GRU門控循環單元多輸入多輸出 目錄 回歸預測 | MATLAB實現GRU門控循環單元多輸入多輸出預測效果基本介紹程序設計往期精彩參考資料 預測效果 基本介紹 MATLAB實現GRU門控循環單元多輸入多輸出,數據為多輸入多輸出預測數據,輸入10個…

pytorch安裝VAE項目詳解

安裝VAE項目 一、 基本環境二、代碼來源三、搭建conda環境四、下載數據集五、啟動項目六、其他相關問題 一、 基本環境 工具版本號OSwin 11pycharm2020.1GPU3050 二、代碼來源 github地址為: https://github.com/AntixK/PyTorch-VAE/blob/8700d245a9735640dda458d…

ZooKeeper的應用場景(集群管理、Master選舉)

5 集群管理 隨著分布式系統規模的日益擴大,集群中的機器規模也隨之變大,因此,如何更好地進行集群管理也顯得越來越重要了。 所謂集群管理,包括集群監控與集群控制兩大塊,前者側重對集群運行時狀態的收集,后…

08 - 追加commit和修改最新的commit message

查看所有文章鏈接:(更新中)GIT常用場景- 目錄 文章目錄 1. 追加提交2. 修改最新的commit message 1. 追加提交 將改動追加到上一次的commit 現在我已經修改了Readme文件并且已經add、commit操作,但是還沒有push到遠程倉庫&#x…

【左神算法刷題班】第17節:在有序二維數組中查找目標值、等于目標字符串的子序列個數

第17節 題目1:在有序二維數組中查找目標值 給定一個每一行有序、每一列也有序,整體可能無序的二維數組 再給定一個數num, 返回二維數組中有沒有num這個數 例子 數組如下,找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …

“心理健康人工智能產學研創新聯盟”揭牌成立|深蘭科技

8月14日上午,“2023樹洞救援年會”在上海舉行,會上舉行了“心理健康人工智能產學研創新聯盟”的簽約和揭牌儀式。“樹洞行動救援團”創始人深蘭科技科學院智能科學首席科學家、荷蘭阿姆斯特丹自由大學人工智能系終身教授黃智生,深蘭科技集團創…

華納云:ubuntu啟動寶塔的方法是什么

要在Ubuntu上啟動寶塔面板(BT Panel),請按照以下步驟操作: 下載并安裝寶塔面板: 在終端中執行以下命令,以下載并運行寶塔面板的安裝腳本: sudo su wget -O install.sh http://download.bt.c…

Git 常用操作

一、Git 常用操作 1、Git 切換分支 git checkout命令可以用于三種不同的實體:文件,commit,以及分支。checkout的意思就是對于一種實體的不同版本之間進行切換的操作。checkout一個分支,會更新當前的工作空間中的文件,…

68 # 中間層如何請求其他服務

前端 ajax 有跨域問題,可以先訪問中間層,在通過 node 去請求別的服務端口,可以解決跨域問題 編寫中間層調用 // 中間層的方式const http require("http");// http.get 默認發送 get 請求 // http.request 支持其他請求格式 postl…

Java基礎知識實際應用(學生信息管理系統、猜拳小游戲、打印日歷)

一、Java學生信息管理系統 這個系統包含了添加、修改、刪除、查詢和顯示所有學生信息等功能。您可以在此基礎上進行修改和完善,以適應您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…

haproxy負載均衡

1、配置環境 作用環境windows測試  192.168.33.158 172.25.0.11 haproxy負載均衡haproxy:2.8.1,centos7172.25.0.31web服務器1--rs1Apache:2.4,redhat9172.25.0.32web服務器2--rs2Apache:2.4 , redhat9 2、…

Azure使用CLI創建VM

使用CLI創建VM之前,確保資源中的IP資源已經釋放掉了,避免創建的過程中沒有可以利用的公共IP地址打開 cloudshell ,并輸入創建CLI的命令如下,-n指定名稱,-g指定資源組,image指定鏡像,admin-usernam指定用戶名…

【滴滴提前批】移掉 K 位數字

題目 給你一個以字符串表示的非負整數 num 和一個整數 k ,移除這個數中的 k 位數字,使得剩下的數字最小。請你以字符串形式返回這個最小的數字。 示例 1 : 輸入:num "1432219", k 3 輸出:"1219&quo…

Maven進階1 -- 分模塊開發、依賴管理、聚合與繼承、屬性、版本管理、多環境開發、跳過測試

目錄 1.分模塊開發 將原始模塊按照功能拆分成若干個子模塊&#xff0c;方便模塊間的相互調用&#xff0c;接口共享。 案例&#xff1a;拆分一下這個SSM整合案例 ①創建maven模塊 demo項目下的pom.xml文件&#xff08;主要看一下依賴&#xff09; <dependencies><!…

【wiki】電競助手掉落提醒 EsportsHelper「Webhook」「釘釘」「飯碗警告」「企業微信」「Discord」

介紹 本項目鏈接 Github電競助手鏈接 github上項目電競助手(EsportsHelper)的掉落提醒配置教程,當有掉寶的時候會發送你信息提示. 至于這個腳本是怎么使用的簡單說一下,就是通過自動觀看英雄聯盟直播 從而獲取獎勵(僅限直營服),有興趣的可以去github上看readme,非常詳細,支持…

stable-diffusion-webui啟動No Python at ‘C:\xxx\xxx\python.exe‘

打開webui.bat 把 if not defined VENV_DIR (set "VENV_DIR%~dp0%venv") 中的%~dp0venv改成自己python的安裝路徑就行獲取直接set值即可 如 set VENV_DIRD:\Users\xxx\AppData\Local\Programs\Python\Python310 另外就是直接運行webui-user.bat也可以 如果運行…

javaScript:數組檢測

目錄 一.前言 二.數組檢測方法 1.every&#xff08;&#xff09; 2.some&#xff08;&#xff09; 3.filter&#xff08;&#xff09; 一.前言 數組檢測是指在編程中對數組進行驗證和檢查的過程。數組檢測可以涉及以下方面&#xff1a; 確定數組的存在&#xff1a;在使用數…

【Linux】進程通信篇Ⅱ:共享內存、消息隊列、信號量

文章目錄 一、共享內存1.1 一些接口1. shmget 函數&#xff1a;申請一個 system v 的共享內存塊2. ftok 函數&#xff1a;設置唯一標識碼3. shmctl 函數&#xff1a;控制 system v 的共享內存塊&#xff08;可以刪除、查看...&#xff09;4. shmat 函數&#xff1a;將進程與共享…