門戶網(wǎng)站建設(shè)中存在的問題刷贊網(wǎng)站推廣永久
前言
前面簡單介紹了YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)和創(chuàng)新點(直通車:【YOLO系列】YOLOv5超詳細解讀(網(wǎng)絡(luò)詳解))
在接下來我們會進入到Y(jié)OLOv5更深一步的學(xué)習(xí),首先從源碼解讀開始。
因為我是純小白,剛開始下載完源碼時真的一臉懵,所以就先從最基礎(chǔ)的項目目錄結(jié)構(gòu)開始吧~因為相關(guān)解讀不是很多,所以有的是我根據(jù)作者給的英文文檔自己翻譯的,如有不對之處歡迎大家指正呀!這篇只是簡單介紹每個文件是做什么的,大體上了解這個項目,具體的代碼詳解后期會慢慢更新,也歡迎大家關(guān)注我的專欄,和我一起學(xué)習(xí)呀!
源碼下載地址:mirrors / ultralytics / yolov5 · GitCode
目錄
前言
?一、項目目錄結(jié)構(gòu)
?1.1?.github文件夾
?1.2?datasets
?1.3?data文件夾
?1.4?models文件夾
?1.5?runs文件夾
?1.6?utils文件夾
?1.7其他一級目錄文件
?一、項目目錄結(jié)構(gòu)
?
?將源碼下載好并配置好環(huán)境之后,就可以看到Y(jié)OLOv5的整體目錄如上圖所示。
接下來我們逐一分析
?1.1?.github文件夾
?
?github是存放關(guān)于github上的一些“配置”的,這個不重要,我們可以不管它。
1.2?datasets
?
我們剛下載下來的源碼是不包含這個文件夾的,datasets用來存放自己的數(shù)據(jù)集,分為images和labels兩部分。同時每一個文件夾下,又應(yīng)該分為train,val。.cache文件為緩存文件,將數(shù)據(jù)加載到內(nèi)存中,方便下次調(diào)用快速??梢宰悦?#xff0c;比如我的火焰數(shù)據(jù)集就叫“fire_yolo_format”。
?1.3?data文件夾
??
data文件夾主要是存放一些超參數(shù)的配置文件(如.yaml文件)是用來配置訓(xùn)練集和測試集還有驗證集的路徑的,其中還包括目標檢測的種類數(shù)和種類的名稱;還有一些官方提供測試的圖片。YOLOv5 有大約 30 個超參數(shù)用于各種訓(xùn)練設(shè)置。更好的初始猜測會產(chǎn)生更好的最終結(jié)果,因此在演化之前正確初始化這些值很重要。
如果是訓(xùn)練自己的數(shù)據(jù)集的話,那么就需要修改其中的yaml文件。不過要注意,自己的數(shù)據(jù)集不建議放在這個路徑下面,建議把數(shù)據(jù)集放到Y(jié)OLOv5項目的同級目錄下面。
詳解:
- hyps文件夾? ?# 存放yaml格式的超參數(shù)配置文件
-
hyps.scratch-high.yaml? #?數(shù)據(jù)增強高,適用于大型型號,即v3、v3-spp、v5l、v5x
-
hyps.scratch-low.yaml? # 數(shù)據(jù)增強低,適用于較小型號,即v5n、v5s
-
hyps.scratch-med.yaml??# 數(shù)據(jù)增強中,適用于中型型號。即v5m
-
- images? # 存放著官方給的兩張測試圖片
- scripts? # 存放數(shù)據(jù)集和權(quán)重下載shell腳本
- download_weights.sh? #?下載權(quán)重文件,包括五種大小的P5版和P6版以及分類器版
-
get_coco.sh?? #?下載coco數(shù)據(jù)集
-
get_coco128.sh? #?下載coco128(只有128張)
-
Argoverse.yaml? #?后面的每個.yaml文件都對應(yīng)一種標準數(shù)據(jù)集格式的數(shù)據(jù)
- coco.yaml ? # COCO數(shù)據(jù)集配置文件
- coco128.yaml ? # COCO128數(shù)據(jù)集配置文件
- voc.yaml ? # VOC數(shù)據(jù)集配置文件
?1.4?models文件夾
?
models是模型文件夾。里面主要是一些網(wǎng)絡(luò)構(gòu)建的配置文件和函數(shù),其中包含了該項目的四個不同的版本,分別為是s、m、l、x。從名字就可以看出,這幾個版本的大小。他們的檢測速度分別都是從快到慢,但是精確度分別是從低到高。如果訓(xùn)練自己的數(shù)據(jù)集的話,就需要修改這里面相對應(yīng)的yaml文件來訓(xùn)練自己模型。
詳解:
- hub? # 存放yolov5各版本目標檢測網(wǎng)絡(luò)模型配置文件
- anchors.yaml? # COCO數(shù)據(jù)的默認錨點
- yolov3-spp.yaml? # 帶spp的yolov3
- yolov3-tiny.yaml? # 精簡版yolov3
- yolov3.yaml? # yolov3
- yolov5-bifpn.yaml? # 帶二值fpn的yolov5l
- yolov5-fpn.yaml? # 帶fpn的yolov5
- yolov5-p2.yaml? # (P2, P3, P4, P5)都輸出,寬深與large版本相同,相當(dāng)于比large版本能檢測更小物體
- yolov5-p34.yaml? # 只輸出(P3, P4),寬深與small版本相同,相當(dāng)于比small版本更專注于檢測中小物體
- yolov5-p6.yaml? # (P3, P4, P5, P6)都輸出,寬深與large版本相同,相當(dāng)于比large版本能檢測更大物體
- yolov5-p7.yaml? # (P3, P4, P5, P6, P7)都輸出,寬深與large版本相同,相當(dāng)于比large版本能檢測更更大物體
- yolov5-panet.yaml? # 帶PANet的yolov5l
- yolov5n6.yaml? # (P3, P4, P5, P6)都輸出,寬深與nano版本相同,相當(dāng)于比nano版本能檢測更大物體,anchor已預(yù)定義
- yolov5s6.yaml? # (P3, P4, P5, P6)都輸出,寬深與small版本相同,相當(dāng)于比small版本能檢測更大物體,anchor已預(yù)定義
- yolov5m6.yaml?? # (P3, P4, P5, P6)都輸出,寬深與middle版本相同,相當(dāng)于比middle版本能檢測更大物體,anchor已預(yù)定義
- yolov5l6.yaml?? # (P3, P4, P5, P6)都輸出,寬深與large版本相同,相當(dāng)于比large版本能檢測更大物體,anchor已預(yù)定義,推測是作者做實驗的產(chǎn)物
- yolov5x6.yaml?? # (P3, P4, P5, P6)都輸出,寬深與Xlarge版本相同,相當(dāng)于比Xlarge版本能檢測更大物體,anchor已預(yù)定義
- yolov5s-ghost.yaml? ?# backbone的卷積換成了GhostNet形式的yolov5s,anchor已預(yù)定義
- yolov5s-transformer.yaml? # backbone最后的C3卷積添加了Transformer模塊的yolov5s,anchor已預(yù)定義
- _int_.py? ?#?空的
- common.py ? # 放的是一些網(wǎng)絡(luò)結(jié)構(gòu)的定義通用模塊,包括autopad、Conv、DWConv、TransformerLayer等
- experimental.py ? # 實驗性質(zhì)的代碼,包括MixConv2d、跨層權(quán)重Sum等
- tf.py??# tensorflow版的yolov5代碼
- yolo.py? # yolo的特定模塊,包括BaseModel,DetectionModel,ClassificationModel,parse_model等
- yolov5l.yaml ? # yolov5l網(wǎng)絡(luò)模型配置文件,large版本,深度1.0,寬度1.0
- yolov5m.yaml ? # yolov5m網(wǎng)絡(luò)模型配置文件,middle版本,深度0.67,寬度0.75
- yolov5n.yaml ? # yolov5n網(wǎng)絡(luò)模型配置文件,nano版本,深度0.33,寬度0.25
- yolov5s.yaml ? # yolov5s網(wǎng)絡(luò)模型配置文件,small版本,深度0.33,寬度0.50
- yolov5x.yaml ? # yolov5x網(wǎng)絡(luò)模型配置文件,Xlarge版本,深度1.33,寬度1.25
1.5?runs文件夾
runs是我們運行的時候的一些輸出文件。每一次運行就會生成一個exp的文件夾。
?詳解:
- detect? ?# 測試模型,輸出圖片并在圖片中標注出物體和概率
- train? ? # 訓(xùn)練模型,輸出內(nèi)容,模型(最好、最新)權(quán)重、混淆矩陣、F1曲線、超參數(shù)文件、P曲線、R曲線、PR曲線、結(jié)果文件(loss值、P、R)等expn
?- expn? ?#?第n次實驗數(shù)據(jù)
- confusion_matrix.png? ?# 混淆矩陣
- P_curve.png? ?# 準確率與置信度的關(guān)系圖線
- R_curve.png? # 精準率與置信度的關(guān)系圖線
- PR_curve.png? #??精準率與召回率的關(guān)系圖線
- F1_curve.png? ?# F1分數(shù)與置信度(x軸)之間的關(guān)系
- labels_correlogram.jpg? ?#?預(yù)測標簽長寬和位置分布
- ?results.png? ?#?各種loss和metrics(p、r、mAP等,詳見utils/metrics)曲線
- results.csv? # 對應(yīng)上面png的原始result數(shù)據(jù)
- hyp.yaml? #? 超參數(shù)記錄文件
- opt.yaml? # 模型可選項記錄文件
- train_batchx.jpg? # 訓(xùn)練集圖像x(帶標注)
- val_batchx_labels.jpg? # 驗證集圖像x(帶標注)
- val_batchx_pred.jpg? # 驗證集圖像x(帶預(yù)測標注)
- weights? #? 權(quán)重
- ???????best.pt? # 歷史最好權(quán)重
- last.pt? ?# 上次檢測點權(quán)重
- labels.jpg? #?4張圖, 4張圖,(1,1)表示每個類別的數(shù)據(jù)量
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1,2)真實標注的 bounding_box
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2,1) 真實標注的中心點坐標
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2,2)真實標注的矩陣寬高??????????????
1.6?utils文件夾
? ?
?utils工具文件夾。存放的是工具類的函數(shù),里面有l(wèi)oss函數(shù),metrics函數(shù),plots函數(shù)等等。
? ? 詳解:
- aws? ?#? 恢復(fù)中斷訓(xùn)練,和aws平臺使用相關(guān)的工具
- flask_rest_api? # 和flask 相關(guān)的工具
- google_app_engine? ?# 和谷歌app引擎相關(guān)的工具
- loggers? ? # 日志打印
- _init_.py? ? #?notebook的初始化,檢查系統(tǒng)軟件和硬件
- activations.py? #??激活函數(shù)
- augmentations? # 存放各種圖像增強技術(shù)
- autoanchor.py? ? #? 自動生成錨框
- autobatch.py? ?# 自動生成批量大小
- benchmarks.py? ?#? 對模型進行性能評估(推理速度和內(nèi)存占用上的評估)
- callbacks.py? ?#? 回調(diào)函數(shù),主要為logger服務(wù)
- datasets? # dateset和dateloader定義代碼
- downloads.py? ?#??谷歌云盤內(nèi)容下載
- general.py? ?# 全項目通用代碼,相關(guān)實用函數(shù)實現(xiàn)
- loss.py? ?#? 存放各種損失函數(shù)
- metrics.py? ?# 模型驗證指標,包括ap,混淆矩陣等
- plots.py? ?#? 繪圖相關(guān)函數(shù),如繪制loss、ac曲線,還能單獨將一個bbox存儲為圖像
- torch_utils.py? ?#?輔助函數(shù)
1.7其他一級目錄文件
?詳解:
- .dockerignore? ?#?docker的ignore文件
- .gitattributes? ?#?用于將.ipynb后綴的文件剔除GitHub語言統(tǒng)計
- .gitignore? ?#??docker的ignore文件
- CONTRIBUTING.md? # markdown格式說明文檔
- detect.py? ?# 目標檢測預(yù)測腳本
- export.py? #? 模型導(dǎo)出
- hubconf.py? # pytorch hub相關(guān)
- LICENSE? ? # 證書
- README.md? ? # markdown格式說明文檔
- requirements.txt? # 可以通過pip install requirement進行依賴環(huán)境下載
- setup.cfg? #? 項目打包文件
- train.py? ?# 目標檢測訓(xùn)練腳本
- tutorial.ipynb? #? 目標檢測上手教程
- val.py? # 目標檢測驗證腳本
- yolov5s.pt? ?#? coco數(shù)據(jù)集模型預(yù)訓(xùn)練權(quán)重,運行代碼的時候會自動從網(wǎng)上下載
本文參考:
YOLOV5學(xué)習(xí)筆記(四)——項目目錄及代碼講解
?YOLOv5-6.2版本代碼Project逐文件詳解