深度學習筆記36-yolov5s.yaml文件解讀

  • ??🍨?本文為🔗365天深度學習訓練營中的學習記錄博客
  • 🍖?原作者:K同學啊

yolov5s.yaml源文件

yolov5s.yaml源文件的代碼如下

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc: 20 #80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]],  # cat head P5[-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

可以看到大致分為這四個部分:? ??Parametersanchorbackbonehead

Parameters

這一部分是yolov5s.yamlyolov5m.yamlyolov5l.yamlyolov5x.yaml幾個文件之間主要的不同點,有不同的寬度與深度。

nc: 20 #80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

nc:分類的數量,根據你自己訓練的數據集當中的數量進行修改
depth__multiple:控制子模塊的數量
width_multiple:控制卷積核的數量

在Yolov5中,網絡的不斷加深,也在不斷增加網絡特征提取和特征融合的能力。

anchors

這里是anchors,原譯為拋錨,這里是因為yolov5增加了自適應錨定框(Auto Learning Bounding Box Anchors)

anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32

anchor一共有三行,分別在圖片當中大,中,小的目標進行計算,

  • 第一行在最大特征圖上,小數值檢測大目標
  • 第二行在圖片第二大的特征圖上
  • 第三行在最小的特征圖上,大數值檢測小目標

anchor每一行都是六個數,這與寬高并沒有聯系,這主要來自于anchor的生成原理

  • yolov5 初始化了 9 個 anchors,在三個 Detect 層使用(3個feature map)中使用,每個 feature map 的每個 grid cell 都有三個 anchor 進行預測

對于輸出層(Prediction),經過特征提取和計算操作的時候,會生成不同特定大小的特征608/8=76,608/16=38,608/32=19

  • 以上的數據都是依靠作者的經驗得到的三組anchors,這對于大部分的數據已經使用,但是為了精進,yolov5的代碼提供了k-means和遺傳算法計算符合當前數據集最合適的anchors,可以在autoanchor.py當中進行查看
    ?

Backbone

# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]

參數解釋

  1. from:表示當前模塊的來源取自于哪一層的輸出,比如-1表示取自上一層的輸出
  2. number:表示當前選擇的模塊需要重復的次數,比如3就是要重復3次,但這只是理論上的重復次數,具體還要看depth_multiple共同決定網絡模型的深度
  3. module:模塊類名,根據給到的類名到common.py當中尋找相應的類進行模塊化的搭建網絡
  4. args:是一個list,模塊搭建所需要的參數,channel(通道數),bias(偏差,殘差)等
  5. Focus:對特征圖進行切片操作,[64,3]得到[3,32,3],即輸入channel=3(RGB),輸出為64*0.50(width_multiple)=32,3為卷積核尺寸
  6. Conv:nn.conv(kenel_size=1,stride=1,groups=1,bias=False)+Bn+Leaky_ReLu.[-1, 1, Conv, [128, 3, 2]]具體主要含義是指輸入來自上一層,模塊數量(number)為1個,子模塊為Conv,網絡中最終有128*0.5=32個卷積核,卷積核尺寸為3,stride=2。
  7. BottleNeckCSP:借鑒CSPNet網絡結構,由3個卷積層和X個殘差模塊Concat組成,若有False,則沒有殘差模塊,那么組成結構為nn.conv+Bn+Leaky_ReLu
  8. SPP:[-1, 1, SPP, [1024, [5, 9, 13]]]表示5×5,9×9,13×13的最大池化方式,進行多尺度融合

Head

# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]],  # cat head P5[-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

總結

學習了YOLOv5s.yaml文件,基本了解了每個部分的內容和每一塊代碼的意義。

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

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

相關文章

PostgreSQL 大對象管理指南:pg_largeobject 從原理到實踐

概述 有時候,你可能需要在 PostgreSQL 中管理大對象,例如 CLOB、BLOB 和 BFILE。PostgreSQL 中有兩種處理大對象的方法:一種是使用現有的數據類型,例如用于二進制大對象的 bytea 和用于基于字符的大對象的 text;另一種…

算法第四題移動零(雙指針或簡便設計),鏈路聚合(兩個交換機配置)以及常用命令

save force關閉導出dis vlandis ip int bdis int bdis int cudis thisdis ip routing-table(查路由表)int bridge-aggregation 1(鏈路聚合,可以放入接口,然后一起改trunk類。)穩定性高

告別繁瑣配置!Retrofit-Spring-Boot-Starter讓HTTP調用更優雅

01 引言 之前分享過一篇文章【像調用接口一樣調用第三方API】,今天迎來了新成員Retrofit。 retrofit-spring-boot-starter 是一個基于 Spring Boot 的 starter,它簡化了 Retrofit 在 Spring 環境中的集成和使用。Retrofit 本身是一個類型安全的 HTTP 客…

60_基于深度學習的羊群計數統計系統(yolo11、yolov8、yolov5+UI界面+Python項目源碼+模型+標注好的數據集)

目錄 項目介紹🎯 功能展示🌟 一、環境安裝🎆 環境配置說明📘 安裝指南說明🎥 環境安裝教學視頻 🌟 二、數據集介紹🌟 三、系統環境(框架/依賴庫)說明🧱 系統環…

代理服務器是什么?怎么選擇?

代理服務器是一種位于用戶設備與目標網絡之間的中間服務器,通過接收用戶請求、轉發至目標網絡并將結果返回給用戶,實現“用戶→代理服務器→目標網絡”的間接訪問。其核心功能圍繞“網絡優化”“訪問控制”與“身份隱藏”展開,為個人與企業用…

代碼隨想錄刷題Day56

子集 這道題求子集,集合的基本運算之一,按照高中數學學習集合的知識,可以把這個找冪集的過程按照元素的個數來劃分步驟。也就是先找零個元素的子集,再找一個元素的子集,再找兩個元素的子集...一直到找N個元素的集合為…

pycharm——關于Pyqt5

PyQt5新手教程(七萬字) import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QLabel, QInputDialog, QColorDialog, QFontDialog, QFileDialog, QProgressDialog, QMessageBox from PyQt5.QtCore i…

P2678 [NOIP 2015 提高組] 跳石頭

P2678 [NOIP 2015 提高組] 跳石頭 判斷條件該怎么寫

小麥矩陣系統:一鍵批量發,多賬號同步不掉鏈

隨著互聯網的發展和社交平臺的普及,企業和個人用戶越來越依賴社交媒體平臺來進行信息傳播、品牌宣傳以及市場推廣。在這個信息高速流動的時代,如何更高效地管理多個社交平臺的賬號,并保持信息的同步與流暢傳播,成為了許多企業面臨…

JavaScript經典面試題二(函數和作用域)

目錄 一、閉包,使用場景 1.閉包的定義 2.閉包的實現原理 3.閉包的應用場景 (1)數據封裝與私有變量 (2)函數柯里化 (3)事件處理與回調 (4)模塊化開發 4.注意事項 …

Linux防火墻iptables

目錄 一,Iptables概述 二,iptables組成 1,表 2,鏈 3,鏈表對應關系 4,數據包過濾的匹配流程 5,規則匹配策略 三,iptables防火墻配置 1,iptables命令 2&#xff…

[優選算法專題二——NO.16最小覆蓋子串]

題目鏈接 LeetCode最小覆蓋子串 題目描述 代碼編寫 、關鍵注意點 僅統計目標相關字符:通過 hash1.count(in) 判斷字符是否在 t 中,避免無關字符(如 s 中的 D、E)干擾統計,提升效率。count 的更新時機:僅當…

考研408計算機網絡近年第34題真題解析(2021-2024.34)

(2021.34)此題已明確為差分曼徹斯特編碼,通常第一個時間間隙可能不太好判斷,因為0,或1可以變化,但差分曼徹斯特編碼的其它位置可以判斷,圖中黃色數字的時間間隙位置,開始位置和前面一…

微信小程序開發教程(八)

目錄:1.全局配置-tabBar2.小程序的頁面配置3.數據請求-GET和POST請求4.數據請求-request請求的注意事項1.全局配置-tabBar注意tabar頁面必須放到Page頭部位置2.小程序的頁面配置3.數據請求-GET和POST請求4.數據請求-request請求的注意事項

日語學習-日語知識點小記-構建基礎-JLPT-N3階段(29):文法運用第9回3+(考え方11)

日語學習-日語知識點小記-構建基礎-JLPT-N3階段(31):文法運用第9回31、前言(1)情況說明(2)工程師的信仰2、知識點1ー 復習2ー 單詞訓練3、單詞(1)日語單詞  …

小鵬汽車在 VLA(視覺 - 語言 - 動作)算法模型框架細節與原理

小鵬汽車的 VLA(視覺 - 語言 - 動作)算法模型框架是其端到端自動駕駛系統的核心,融合了多模態感知、語言推理與動作生成能力。以下是其技術細節與原理的深度解析: 一、整體架構:混合式端到端設計 小鵬 VLA 采用云端基座…

京東商品詳情 API 全解析:合規對接與 B2C 場景實戰指南

在 B2C 電商運營中,商品詳情數據是支撐店鋪管理、庫存調控、營銷決策的核心基礎。京東商品詳情 API 作為官方合規的數據獲取通道,不僅能穩定返回商品標題、價格、庫存等關鍵信息,還針對 B2C 場景新增了預售鎖庫、次日達標識等特色字段。本文從…

【Visual Studio 2017 和 2019下載】

Visual Studio 2017 和 2019下載VS2017下載地址:VS2019下載地址:VS2017下載地址: Visual Studio 2017 Community 鏈接 Visual Studio 2017 Enterprise 鏈接 VS2019下載地址: Visual Studio 2019 Community 鏈接 Visual Studio …

Python 輕松實現替換或修改 PDF 文字

在日常開發或文檔處理過程中,經常會遇到需要對 PDF 文檔中的文字進行修改的場景。例如更新合同條款、修正報表數據,或者批量替換文件中的特定內容。由于 PDF 格式以固定排版為特點,直接修改文字不像 Word 那樣直觀,因此需要借助專…

CI/CD流水線優化實戰:從30分鐘到5分鐘的效能革命

關鍵詞:CI/CD優化、GitHub Actions、Jenkins、自動化部署、流水線加速 一、引言:CI/CD流水線為何需要優化? 在現代軟件開發中,CI/CD(持續集成/持續交付)已成為DevOps實踐的核心環節。然而,許多團隊的流水線存在效率低下問題,??平均構建時間超過30分鐘??,嚴重制約…