個(gè)人網(wǎng)站做什么好北京做網(wǎng)站公司哪家好
《博主簡(jiǎn)介》
小伙伴們好,我是阿旭。專注于人工智能、AIGC、python、計(jì)算機(jī)視覺相關(guān)分享研究。
?更多學(xué)習(xí)資源,可關(guān)注公-仲-hao:【阿旭算法與機(jī)器學(xué)習(xí)】,共同學(xué)習(xí)交流~
👍感謝小伙伴們點(diǎn)贊、關(guān)注!
《------往期經(jīng)典推薦------》
一、AI應(yīng)用軟件開發(fā)實(shí)戰(zhàn)專欄【鏈接】
項(xiàng)目名稱 | 項(xiàng)目名稱 |
---|---|
1.【人臉識(shí)別與管理系統(tǒng)開發(fā)】 | 2.【車牌識(shí)別與自動(dòng)收費(fèi)管理系統(tǒng)開發(fā)】 |
3.【手勢(shì)識(shí)別系統(tǒng)開發(fā)】 | 4.【人臉面部活體檢測(cè)系統(tǒng)開發(fā)】 |
5.【圖片風(fēng)格快速遷移軟件開發(fā)】 | 6.【人臉表表情識(shí)別系統(tǒng)】 |
7.【YOLOv8多目標(biāo)識(shí)別與自動(dòng)標(biāo)注軟件開發(fā)】 | 8.【基于YOLOv8深度學(xué)習(xí)的行人跌倒檢測(cè)系統(tǒng)】 |
9.【基于YOLOv8深度學(xué)習(xí)的PCB板缺陷檢測(cè)系統(tǒng)】 | 10.【基于YOLOv8深度學(xué)習(xí)的生活垃圾分類目標(biāo)檢測(cè)系統(tǒng)】 |
11.【基于YOLOv8深度學(xué)習(xí)的安全帽目標(biāo)檢測(cè)系統(tǒng)】 | 12.【基于YOLOv8深度學(xué)習(xí)的120種犬類檢測(cè)與識(shí)別系統(tǒng)】 |
13.【基于YOLOv8深度學(xué)習(xí)的路面坑洞檢測(cè)系統(tǒng)】 | 14.【基于YOLOv8深度學(xué)習(xí)的火焰煙霧檢測(cè)系統(tǒng)】 |
15.【基于YOLOv8深度學(xué)習(xí)的鋼材表面缺陷檢測(cè)系統(tǒng)】 | 16.【基于YOLOv8深度學(xué)習(xí)的艦船目標(biāo)分類檢測(cè)系統(tǒng)】 |
17.【基于YOLOv8深度學(xué)習(xí)的西紅柿成熟度檢測(cè)系統(tǒng)】 | 18.【基于YOLOv8深度學(xué)習(xí)的血細(xì)胞檢測(cè)與計(jì)數(shù)系統(tǒng)】 |
19.【基于YOLOv8深度學(xué)習(xí)的吸煙/抽煙行為檢測(cè)系統(tǒng)】 | 20.【基于YOLOv8深度學(xué)習(xí)的水稻害蟲檢測(cè)與識(shí)別系統(tǒng)】 |
21.【基于YOLOv8深度學(xué)習(xí)的高精度車輛行人檢測(cè)與計(jì)數(shù)系統(tǒng)】 | 22.【基于YOLOv8深度學(xué)習(xí)的路面標(biāo)志線檢測(cè)與識(shí)別系統(tǒng)】 |
23.【基于YOLOv8深度學(xué)習(xí)的智能小麥害蟲檢測(cè)識(shí)別系統(tǒng)】 | 24.【基于YOLOv8深度學(xué)習(xí)的智能玉米害蟲檢測(cè)識(shí)別系統(tǒng)】 |
25.【基于YOLOv8深度學(xué)習(xí)的200種鳥類智能檢測(cè)與識(shí)別系統(tǒng)】 | 26.【基于YOLOv8深度學(xué)習(xí)的45種交通標(biāo)志智能檢測(cè)與識(shí)別系統(tǒng)】 |
27.【基于YOLOv8深度學(xué)習(xí)的人臉面部表情識(shí)別系統(tǒng)】 | 28.【基于YOLOv8深度學(xué)習(xí)的蘋果葉片病害智能診斷系統(tǒng)】 |
29.【基于YOLOv8深度學(xué)習(xí)的智能肺炎診斷系統(tǒng)】 | 30.【基于YOLOv8深度學(xué)習(xí)的葡萄簇目標(biāo)檢測(cè)系統(tǒng)】 |
31.【基于YOLOv8深度學(xué)習(xí)的100種中草藥智能識(shí)別系統(tǒng)】 | 32.【基于YOLOv8深度學(xué)習(xí)的102種花卉智能識(shí)別系統(tǒng)】 |
33.【基于YOLOv8深度學(xué)習(xí)的100種蝴蝶智能識(shí)別系統(tǒng)】 | 34.【基于YOLOv8深度學(xué)習(xí)的水稻葉片病害智能診斷系統(tǒng)】 |
35.【基于YOLOv8與ByteTrack的車輛行人多目標(biāo)檢測(cè)與追蹤系統(tǒng)】 | 36.【基于YOLOv8深度學(xué)習(xí)的智能草莓病害檢測(cè)與分割系統(tǒng)】 |
37.【基于YOLOv8深度學(xué)習(xí)的復(fù)雜場(chǎng)景下船舶目標(biāo)檢測(cè)系統(tǒng)】 | 38.【基于YOLOv8深度學(xué)習(xí)的農(nóng)作物幼苗與雜草檢測(cè)系統(tǒng)】 |
39.【基于YOLOv8深度學(xué)習(xí)的智能道路裂縫檢測(cè)與分析系統(tǒng)】 | 40.【基于YOLOv8深度學(xué)習(xí)的葡萄病害智能診斷與防治系統(tǒng)】 |
41.【基于YOLOv8深度學(xué)習(xí)的遙感地理空間物體檢測(cè)系統(tǒng)】 | 42.【基于YOLOv8深度學(xué)習(xí)的無人機(jī)視角地面物體檢測(cè)系統(tǒng)】 |
43.【基于YOLOv8深度學(xué)習(xí)的木薯病害智能診斷與防治系統(tǒng)】 | 44.【基于YOLOv8深度學(xué)習(xí)的野外火焰煙霧檢測(cè)系統(tǒng)】 |
45.【基于YOLOv8深度學(xué)習(xí)的腦腫瘤智能檢測(cè)系統(tǒng)】 | 46.【基于YOLOv8深度學(xué)習(xí)的玉米葉片病害智能診斷與防治系統(tǒng)】 |
47.【基于YOLOv8深度學(xué)習(xí)的橙子病害智能診斷與防治系統(tǒng)】 | 48.【基于深度學(xué)習(xí)的車輛檢測(cè)追蹤與流量計(jì)數(shù)系統(tǒng)】 |
49.【基于深度學(xué)習(xí)的行人檢測(cè)追蹤與雙向流量計(jì)數(shù)系統(tǒng)】 | 50.【基于深度學(xué)習(xí)的反光衣檢測(cè)與預(yù)警系統(tǒng)】 |
51.【基于深度學(xué)習(xí)的危險(xiǎn)區(qū)域人員闖入檢測(cè)與報(bào)警系統(tǒng)】 | 52.【基于深度學(xué)習(xí)的高密度人臉智能檢測(cè)與統(tǒng)計(jì)系統(tǒng)】 |
53.【基于深度學(xué)習(xí)的CT掃描圖像腎結(jié)石智能檢測(cè)系統(tǒng)】 | 54.【基于深度學(xué)習(xí)的水果智能檢測(cè)系統(tǒng)】 |
55.【基于深度學(xué)習(xí)的水果質(zhì)量好壞智能檢測(cè)系統(tǒng)】 | 56.【基于深度學(xué)習(xí)的蔬菜目標(biāo)檢測(cè)與識(shí)別系統(tǒng)】 |
57.【基于深度學(xué)習(xí)的非機(jī)動(dòng)車駕駛員頭盔檢測(cè)系統(tǒng)】 | 58.【太基于深度學(xué)習(xí)的陽能電池板檢測(cè)與分析系統(tǒng)】 |
59.【基于深度學(xué)習(xí)的工業(yè)螺栓螺母檢測(cè)】 | 60.【基于深度學(xué)習(xí)的金屬焊縫缺陷檢測(cè)系統(tǒng)】 |
61.【基于深度學(xué)習(xí)的鏈條缺陷檢測(cè)與識(shí)別系統(tǒng)】 | 62.【基于深度學(xué)習(xí)的交通信號(hào)燈檢測(cè)識(shí)別】 |
63.【基于深度學(xué)習(xí)的草莓成熟度檢測(cè)與識(shí)別系統(tǒng)】 | 64.【基于深度學(xué)習(xí)的水下海生物檢測(cè)識(shí)別系統(tǒng)】 |
65.【基于深度學(xué)習(xí)的農(nóng)作物類別檢測(cè)與識(shí)別系統(tǒng)】 |
二、機(jī)器學(xué)習(xí)實(shí)戰(zhàn)專欄【鏈接】,已更新31期,歡迎關(guān)注,持續(xù)更新中~~
三、深度學(xué)習(xí)【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫系列】專欄【鏈接】
五、YOLOv8改進(jìn)專欄【鏈接】,持續(xù)更新中~~
六、YOLO性能對(duì)比專欄【鏈接】,持續(xù)更新中~
《------正文------》
基本功能演示
基于YOLO11/v10/v8/v5深度學(xué)習(xí)的危險(xiǎn)駕駛行為檢測(cè)識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)【python源碼+Pyqt5界面+數(shù)據(jù)集+訓(xùn)練代碼】
摘要:隨著道路交通安全意識(shí)的日益增強(qiáng),如何有效預(yù)防交通事故成為了社會(huì)關(guān)注的重點(diǎn)之一,危險(xiǎn)駕駛行為檢測(cè)識(shí)別的重要性在于它能夠主動(dòng)識(shí)別并警示駕駛員的不當(dāng)行為,從而減少由這些行為引發(fā)的交通事故。本文基于
YOLOv11/v10/v8/v5的深度學(xué)習(xí)框架
,通過6157
張危險(xiǎn)駕駛行為
的相關(guān)圖片,訓(xùn)練了可進(jìn)行危險(xiǎn)駕駛行為
目標(biāo)檢測(cè)的模型,可以分別檢測(cè)4種類別:['喝飲料','吃東西','用手機(jī)','抽煙']
,同時(shí)全面對(duì)比分析了YOLOv5n、YOLOv8n、YOLOv10n、YOLO11這4種模型在驗(yàn)證集上的評(píng)估性能表現(xiàn)
。最終基于訓(xùn)練好的模型制作了一款帶UI界面的危險(xiǎn)駕駛行為檢測(cè)識(shí)別系統(tǒng)
,更便于進(jìn)行功能的展示。該系統(tǒng)是基于python
與PyQT5
開發(fā)的,支持圖片
、視頻
以及攝像頭
進(jìn)行目標(biāo)檢測(cè)
,并保存檢測(cè)結(jié)果
。本文提供了完整的Python代碼和使用教程,給感興趣的小伙伴參考學(xué)習(xí),完整的代碼資源文件獲取方式見文末。
文章目錄
- 基本功能演示
- 研究背景
- 主要工作內(nèi)容
- 一、軟件核心功能介紹及效果演示
- 軟件主要功能
- 界面參數(shù)設(shè)置說明
- 檢測(cè)結(jié)果說明
- 主要功能說明
- (1)圖片檢測(cè)說明
- (2)視頻檢測(cè)說明
- (3)攝像頭檢測(cè)說明
- (4)保存圖片與視頻檢測(cè)說明
- 二、YOLOv5/v8/v10/11介紹
- 二、模型訓(xùn)練、評(píng)估與推理
- 1. 數(shù)據(jù)集準(zhǔn)備與訓(xùn)練
- 2.模型訓(xùn)練
- 3. 訓(xùn)練結(jié)果評(píng)估
- 4. 使用模型進(jìn)行推理
- 三、YOLOv5/v8/v10/11性能對(duì)比分析
- 1.常用評(píng)估參數(shù)介紹
- 2. 模型訓(xùn)練過程對(duì)比
- 3.各模型性能評(píng)估
- 4.模型總體性能對(duì)比
- 四、可視化系統(tǒng)制作
- Pyqt5詳細(xì)介紹
- 系統(tǒng)制作
- 【獲取方式】
點(diǎn)擊跳轉(zhuǎn)至文末《完整相關(guān)文件及源碼》獲取
研究背景
隨著道路交通安全意識(shí)的日益增強(qiáng),如何有效預(yù)防交通事故成為了社會(huì)關(guān)注的重點(diǎn)之一。基于YOLO深度學(xué)習(xí)框架開發(fā)的危險(xiǎn)駕駛行為檢測(cè)識(shí)別系統(tǒng),專門針對(duì)駕駛員在行車過程中常見的四種危險(xiǎn)行為——喝飲料、吃東西、使用手機(jī)和抽煙進(jìn)行識(shí)別,該系統(tǒng)的應(yīng)用可以顯著提高道路安全性,減少因分心駕駛導(dǎo)致的事故。此外,它還能作為輔助工具,幫助交通管理部門及車隊(duì)運(yùn)營(yíng)者加強(qiáng)安全管理,保障公眾的生命財(cái)產(chǎn)安全。
其主要應(yīng)用場(chǎng)景有:
車隊(duì)管理
:公共交通公司、物流公司等可以通過安裝此系統(tǒng)來監(jiān)控司機(jī)的行為,確保他們?cè)隈{駛過程中遵守安全規(guī)定,降低事故率。
警務(wù)執(zhí)法
:交通警察可以在巡邏車上安裝該系統(tǒng),以輔助識(shí)別道路上駕駛員的不當(dāng)行為,及時(shí)提醒或處罰違規(guī)者。
駕駛員培訓(xùn)
:駕校及駕駛培訓(xùn)機(jī)構(gòu)可以在教學(xué)車輛上安裝該系統(tǒng),用來評(píng)估學(xué)員在實(shí)際駕駛中的行為表現(xiàn),糾正不良習(xí)慣。
自動(dòng)駕駛輔助
:在自動(dòng)駕駛技術(shù)尚未完全成熟的過渡期,該系統(tǒng)可作為自動(dòng)駕駛輔助設(shè)備的一部分,監(jiān)測(cè)車內(nèi)駕駛員狀態(tài),確保系統(tǒng)切換到人工駕駛模式時(shí)的安全性。
數(shù)據(jù)分析與研究
:交通規(guī)劃部門及研究機(jī)構(gòu)可以利用該系統(tǒng)收集的數(shù)據(jù),分析駕駛員行為模式,為制定更有效的交通安全政策提供依據(jù)。
綜上所述,該危險(xiǎn)駕駛行為檢測(cè)識(shí)別系統(tǒng)的重要性在于它能夠主動(dòng)識(shí)別并警示駕駛員的不當(dāng)行為,從而減少由這些行為引發(fā)的交通事故。
通過在多種場(chǎng)景下的應(yīng)用,不僅提高了駕駛員的安全意識(shí),還加強(qiáng)了交通管理部門的監(jiān)管能力。長(zhǎng)遠(yuǎn)來看,這樣的技術(shù)有助于營(yíng)造一個(gè)更加安全和諧的道路交通環(huán)境。隨著技術(shù)的進(jìn)步和社會(huì)對(duì)交通安全重視程度的加深,該系統(tǒng)將在保障道路安全方面發(fā)揮更加積極的作用。
主要工作內(nèi)容
本文的主要內(nèi)容包括以下幾個(gè)方面:
搜集與整理數(shù)據(jù)集:
搜集整理實(shí)際場(chǎng)景中危險(xiǎn)駕駛行為
的相關(guān)數(shù)據(jù)圖片,并進(jìn)行相應(yīng)的數(shù)據(jù)處理,為模型訓(xùn)練提供訓(xùn)練數(shù)據(jù)集;訓(xùn)練模型:
基于整理的數(shù)據(jù)集,根據(jù)最前沿的YOLOv11/v10/v8/v5目標(biāo)檢測(cè)技術(shù)
訓(xùn)練目標(biāo)檢測(cè)模型,實(shí)現(xiàn)對(duì)需要檢測(cè)的對(duì)象進(jìn)行有效檢測(cè)的功能;模型性能對(duì)比:對(duì)訓(xùn)練出的4種模型在驗(yàn)證集上進(jìn)行了充分的結(jié)果評(píng)估和對(duì)比分析
,主要目的是為了揭示每個(gè)模型在關(guān)鍵指標(biāo)(如Precision、Recall、mAP50和mAP50-95等指標(biāo))上的優(yōu)劣勢(shì)
。這不僅幫助我們?cè)趯?shí)際應(yīng)用中選擇最適合特定需求的模型,還能夠指導(dǎo)后續(xù)模型優(yōu)化和調(diào)優(yōu)工作,以期獲得更高的檢測(cè)準(zhǔn)確率和速度。最終,通過這種系統(tǒng)化的對(duì)比和分析,我們能更好地理解模型的魯棒性、泛化能力以及在不同類別上的檢測(cè)表現(xiàn),為開發(fā)更高效的計(jì)算機(jī)視覺系統(tǒng)提供堅(jiān)實(shí)的基礎(chǔ)。
可視化系統(tǒng)制作:
基于訓(xùn)練出的目標(biāo)檢測(cè)模型
,搭配Pyqt5
制作的UI界面,用python
開發(fā)了一款界面簡(jiǎn)潔的軟件系統(tǒng),可支持圖片、視頻以及攝像頭檢測(cè)
,同時(shí)可以將圖片或者視頻檢測(cè)結(jié)果進(jìn)行保存
。其目的是為檢測(cè)系統(tǒng)提供一個(gè)用戶友好的操作平臺(tái),使用戶能夠便捷、高效地進(jìn)行檢測(cè)任務(wù)。
軟件初始界面如下圖所示:
檢測(cè)結(jié)果界面如下:
一、軟件核心功能介紹及效果演示
軟件主要功能
1. 可用于危險(xiǎn)駕駛行為
檢測(cè)與識(shí)別,分為4個(gè)檢測(cè)類別:['喝飲料','吃東西','用手機(jī)','抽煙']
;
2. 支持圖片、視頻及攝像頭
進(jìn)行檢測(cè),同時(shí)支持圖片的批量檢測(cè)
;
3. 界面可實(shí)時(shí)顯示目標(biāo)位置
、目標(biāo)總數(shù)
、置信度
、用時(shí)
等信息;
4. 支持圖片
或者視頻
的檢測(cè)結(jié)果保存
;
5. 支持將圖片的檢測(cè)結(jié)果保存為csv文件
;
界面參數(shù)設(shè)置說明
置信度閾值:也就是目標(biāo)檢測(cè)時(shí)的conf參數(shù),只有檢測(cè)出的目標(biāo)框置信度大于該值,結(jié)果才會(huì)顯示;
交并比閾值:也就是目標(biāo)檢測(cè)時(shí)的iou參數(shù),對(duì)檢測(cè)框重疊比例iou大于該閾值的目標(biāo)框進(jìn)行過濾【也就是說假如兩檢測(cè)框iou大于該值的話,會(huì)過濾掉其中一個(gè),該值越小,重疊框會(huì)越少】;
檢測(cè)結(jié)果說明
顯示標(biāo)簽名稱與置信度:
表示是否在檢測(cè)圖片上標(biāo)簽名稱與置信度,顯示默認(rèn)勾選,如果不勾選則不會(huì)在檢測(cè)圖片上顯示標(biāo)簽名稱與置信度;
總目標(biāo)數(shù)
:表示畫面中檢測(cè)出的目標(biāo)數(shù)目;
目標(biāo)選擇
:可選擇單個(gè)目標(biāo)進(jìn)行位置信息、置信度查看。
目標(biāo)位置
:表示所選擇目標(biāo)的檢測(cè)框,左上角與右下角的坐標(biāo)位置。默認(rèn)顯示的是置信度最大的一個(gè)目標(biāo)信息;
主要功能說明
功能視頻演示見文章開頭,以下是簡(jiǎn)要的操作描述。
(1)圖片檢測(cè)說明
點(diǎn)擊打開圖片
按鈕,選擇需要檢測(cè)的圖片,或者點(diǎn)擊打開文件夾
按鈕,選擇需要批量檢測(cè)圖片所在的文件夾,操作演示如下:
點(diǎn)擊目標(biāo)下拉框后,可以選定指定目標(biāo)的結(jié)果信息進(jìn)行顯示。
點(diǎn)擊保存
按鈕,會(huì)對(duì)檢測(cè)結(jié)果進(jìn)行保存,存儲(chǔ)路徑為:save_data
目錄下,同時(shí)會(huì)將圖片檢測(cè)信息保存csv文件
。
注:1.右側(cè)目標(biāo)位置默認(rèn)顯示置信度最大一個(gè)目標(biāo)位置,可用下拉框進(jìn)行目標(biāo)切換。所有檢測(cè)結(jié)果均在左下方表格中顯示。
(2)視頻檢測(cè)說明
點(diǎn)擊視頻
按鈕,打開選擇需要檢測(cè)的視頻,就會(huì)自動(dòng)顯示檢測(cè)結(jié)果,再次點(diǎn)擊可以關(guān)閉視頻。
點(diǎn)擊保存
按鈕,會(huì)對(duì)視頻檢測(cè)結(jié)果進(jìn)行保存,存儲(chǔ)路徑為:save_data
目錄下。
(3)攝像頭檢測(cè)說明
點(diǎn)擊打開攝像頭
按鈕,可以打開攝像頭,可以實(shí)時(shí)進(jìn)行檢測(cè),再次點(diǎn)擊,可關(guān)閉攝像頭。
(4)保存圖片與視頻檢測(cè)說明
點(diǎn)擊保存
按鈕后,會(huì)將當(dāng)前選擇的圖片【含批量圖片】或者視頻
的檢測(cè)結(jié)果進(jìn)行保存,對(duì)于圖片圖片檢測(cè)還會(huì)保存檢測(cè)結(jié)果為csv文件
,方便進(jìn)行查看與后續(xù)使用。檢測(cè)的圖片與視頻結(jié)果會(huì)存儲(chǔ)在save_data
目錄下。
【注:暫不支持視頻文件的檢測(cè)結(jié)果保存為csv文件格式。】
保存的檢測(cè)結(jié)果文件如下:
圖片文件保存的csv文件內(nèi)容如下,包括圖片路徑、目標(biāo)在圖片中的編號(hào)、目標(biāo)類別、置信度、目標(biāo)坐標(biāo)位置
。
注:其中坐標(biāo)位置是代表檢測(cè)框的左上角與右下角兩個(gè)點(diǎn)的x、y坐標(biāo)。
二、YOLOv5/v8/v10/11介紹
關(guān)于YOLOv5/v8/v10/v11模型的詳細(xì)介紹可以參考之前分享的博客文章《YOLOv5/v8/v10/v11詳細(xì)介紹:網(wǎng)絡(luò)結(jié)構(gòu),創(chuàng)新點(diǎn)》
,地址:
https://a-xu-ai.blog.csdn.net/article/details/143272589
二、模型訓(xùn)練、評(píng)估與推理
本文主要基于YOLOv5n、YOLOv8n、YOLOv10n
、YOLO11n
這4種模型進(jìn)行模型的訓(xùn)練,訓(xùn)練完成后對(duì)4種模型在驗(yàn)證集上的表現(xiàn)進(jìn)行全面的性能評(píng)估及對(duì)比分析。模型訓(xùn)練和評(píng)估流程基本一致,包括:數(shù)據(jù)集準(zhǔn)備、模型訓(xùn)練、模型評(píng)估。
下面主要以最新的YOLO11為例進(jìn)行訓(xùn)練過程的詳細(xì)講解,YOLOv5、YOLOv8與YOLOv10的訓(xùn)練過程類似。
1. 數(shù)據(jù)集準(zhǔn)備與訓(xùn)練
通過網(wǎng)絡(luò)上搜集關(guān)于實(shí)際場(chǎng)景中農(nóng)作物
的相關(guān)圖片,并使用Labelimg標(biāo)注工具對(duì)每張圖片進(jìn)行標(biāo)注,分3個(gè)檢測(cè)類別
,分別是['棉花','水稻','小麥']
。
通過隨機(jī)上下左右翻轉(zhuǎn)、灰度處理、亮度處理等預(yù)處理手段進(jìn)行了數(shù)據(jù)集的數(shù)據(jù)增強(qiáng)。
最終數(shù)據(jù)集一共包含6157張圖片
,其中訓(xùn)練集包含5363張圖片
,驗(yàn)證集包含524張圖片
,測(cè)試集包含270張圖片
。
部分圖像及標(biāo)注如下圖所示:
數(shù)據(jù)集各類別數(shù)目分布情況如下:
2.模型訓(xùn)練
準(zhǔn)備好數(shù)據(jù)集后,將圖片數(shù)據(jù)以如下格式放置在項(xiàng)目目錄中。在項(xiàng)目目錄中新建datasets
目錄,同時(shí)將檢測(cè)的圖片分為訓(xùn)練集與驗(yàn)證集放入Data
目錄下。
同時(shí)我們需要新建一個(gè)data.yaml
文件,用于存儲(chǔ)訓(xùn)練數(shù)據(jù)的路徑及模型需要進(jìn)行檢測(cè)的類別。YOLOv11在進(jìn)行模型訓(xùn)練時(shí),會(huì)讀取該文件的信息,用于進(jìn)行模型的訓(xùn)練與驗(yàn)證。data.yaml
的具體內(nèi)容如下:
train: D:\2MyCVProgram\2DetectProgram\DangerousDrivingBehaviorDetection_v11\datasets\Data\train
val: D:\2MyCVProgram\2DetectProgram\DangerousDrivingBehaviorDetection_v11\datasets\Data\valid
test: D:\2MyCVProgram\2DetectProgram\DangerousDrivingBehaviorDetection_v11\datasets\Data\testnc: 4
names: ['drinking', 'eating', 'mobile use', 'smoking']
注:train與val后面表示需要訓(xùn)練圖片的路徑,建議直接寫自己文件的絕對(duì)路徑。
數(shù)據(jù)準(zhǔn)備完成后,通過調(diào)用train.py
文件進(jìn)行模型訓(xùn)練,epochs
參數(shù)用于調(diào)整訓(xùn)練的輪數(shù),batch
參數(shù)用于調(diào)整訓(xùn)練的批次大小【根據(jù)內(nèi)存大小調(diào)整,最小為1】,optimizer
設(shè)定的優(yōu)化器為SGD
,訓(xùn)練代碼如下:
#coding:utf-8
from ultralytics import YOLO
import matplotlib
matplotlib.use('TkAgg')# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/11/yolo11.yaml"
#數(shù)據(jù)集配置文件
data_yaml_path = 'datasets/Data/data.yaml'
#預(yù)訓(xùn)練模型
pre_model_name = 'yolo11n.pt'if __name__ == '__main__':#加載預(yù)訓(xùn)練模型model = YOLO(model_yaml_path).load(pre_model_name)#訓(xùn)練模型results = model.train(data=data_yaml_path,epochs=150, # 訓(xùn)練輪數(shù)batch=4, # batch大小name='train_v11', # 保存結(jié)果的文件夾名稱optimizer='SGD') # 優(yōu)化器
模型常用訓(xùn)練超參數(shù)參數(shù)說明:
YOLO11 模型的訓(xùn)練設(shè)置包括訓(xùn)練過程中使用的各種超參數(shù)和配置
。這些設(shè)置會(huì)影響模型的性能、速度和準(zhǔn)確性。關(guān)鍵的訓(xùn)練設(shè)置包括批量大小、學(xué)習(xí)率、動(dòng)量和權(quán)重衰減。此外,優(yōu)化器、損失函數(shù)和訓(xùn)練數(shù)據(jù)集組成的選擇也會(huì)影響訓(xùn)練過程。對(duì)這些設(shè)置進(jìn)行仔細(xì)的調(diào)整和實(shí)驗(yàn)對(duì)于優(yōu)化性能至關(guān)重要。
以下是一些常用的模型訓(xùn)練參數(shù)和說明:
參數(shù)名 | 默認(rèn)值 | 說明 |
---|---|---|
model | None | 指定用于訓(xùn)練的模型文件。接受指向 .pt 預(yù)訓(xùn)練模型或 .yaml 配置文件。對(duì)于定義模型結(jié)構(gòu)或初始化權(quán)重至關(guān)重要。 |
data | None | 數(shù)據(jù)集配置文件的路徑(例如 coco8.yaml ).該文件包含特定于數(shù)據(jù)集的參數(shù),包括訓(xùn)練數(shù)據(jù)和驗(yàn)證數(shù)據(jù)的路徑、類名和類數(shù)。 |
epochs | 100 | 訓(xùn)練總輪數(shù)。每個(gè)epoch代表對(duì)整個(gè)數(shù)據(jù)集進(jìn)行一次完整的訓(xùn)練。調(diào)整該值會(huì)影響訓(xùn)練時(shí)間和模型性能。 |
patience | 100 | 在驗(yàn)證指標(biāo)沒有改善的情況下,提前停止訓(xùn)練所需的epoch數(shù)。當(dāng)性能趨于平穩(wěn)時(shí)停止訓(xùn)練,有助于防止過度擬合。 |
batch | 16 | 批量大小,有三種模式:設(shè)置為整數(shù)(例如,’ Batch =16 ‘), 60% GPU內(nèi)存利用率的自動(dòng)模式(’ Batch =-1 ‘),或指定利用率分?jǐn)?shù)的自動(dòng)模式(’ Batch =0.70 ')。 |
imgsz | 640 | 用于訓(xùn)練的目標(biāo)圖像尺寸。所有圖像在輸入模型前都會(huì)被調(diào)整到這一尺寸。影響模型精度和計(jì)算復(fù)雜度。 |
device | None | 指定用于訓(xùn)練的計(jì)算設(shè)備:單個(gè) GPU (device=0 )、多個(gè) GPU (device=0,1 )、CPU (device=cpu ),或蘋果芯片的 MPS (device=mps ). |
workers | 8 | 加載數(shù)據(jù)的工作線程數(shù)(每 RANK 多 GPU 訓(xùn)練)。影響數(shù)據(jù)預(yù)處理和輸入模型的速度,尤其適用于多 GPU 設(shè)置。 |
name | None | 訓(xùn)練運(yùn)行的名稱。用于在項(xiàng)目文件夾內(nèi)創(chuàng)建一個(gè)子目錄,用于存儲(chǔ)訓(xùn)練日志和輸出結(jié)果。 |
pretrained | True | 決定是否從預(yù)處理模型開始訓(xùn)練??梢允遣紶栔?#xff0c;也可以是加載權(quán)重的特定模型的字符串路徑。提高訓(xùn)練效率和模型性能。 |
optimizer | 'auto' | 為訓(xùn)練模型選擇優(yōu)化器。選項(xiàng)包括 SGD , Adam , AdamW , NAdam , RAdam , RMSProp 等,或 auto 用于根據(jù)模型配置進(jìn)行自動(dòng)選擇。影響收斂速度和穩(wěn)定性 |
lr0 | 0.01 | 初始學(xué)習(xí)率(即 SGD=1E-2 , Adam=1E-3 ) .調(diào)整這個(gè)值對(duì)優(yōu)化過程至關(guān)重要,會(huì)影響模型權(quán)重的更新速度。 |
lrf | 0.01 | 最終學(xué)習(xí)率占初始學(xué)習(xí)率的百分比 = (lr0 * lrf ),與調(diào)度程序結(jié)合使用,隨著時(shí)間的推移調(diào)整學(xué)習(xí)率。 |
3. 訓(xùn)練結(jié)果評(píng)估
在深度學(xué)習(xí)中,我們通常用損失函數(shù)下降的曲線來觀察模型訓(xùn)練的情況。YOLOv8在訓(xùn)練時(shí)主要包含三個(gè)方面的損失:定位損失(box_loss)、分類損失(cls_loss)和動(dòng)態(tài)特征損失(dfl_loss),在訓(xùn)練結(jié)束后,可以在runs/
目錄下找到訓(xùn)練過程及結(jié)果文件,如下所示:
各損失函數(shù)作用說明:
定位損失box_loss
:預(yù)測(cè)框與標(biāo)定框之間的誤差(GIoU),越小定位得越準(zhǔn);
分類損失cls_loss
:計(jì)算錨框與對(duì)應(yīng)的標(biāo)定分類是否正確,越小分類得越準(zhǔn);
動(dòng)態(tài)特征損失(dfl_loss)
:DFLLoss是一種用于回歸預(yù)測(cè)框與目標(biāo)框之間距離的損失函數(shù)。在計(jì)算損失時(shí),目標(biāo)框需要縮放到特征圖尺度,即除以相應(yīng)的stride,并與預(yù)測(cè)的邊界框計(jì)算Ciou Loss,同時(shí)與預(yù)測(cè)的anchors中心點(diǎn)到各邊的距離計(jì)算回歸DFLLoss。
本文訓(xùn)練結(jié)果如下:
我們通常用PR曲線
來體現(xiàn)精確率和召回率的關(guān)系,本文訓(xùn)練結(jié)果的PR曲線如下。mAP
表示Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數(shù)表示判定iou為正負(fù)樣本的閾值。mAP@.5:表示閾值大于0.5的平均mAP,可以看到本文模型目標(biāo)檢測(cè)的mAP@0.5
值為0.955
,結(jié)果還是很不錯(cuò)的。
模型驗(yàn)證集上的評(píng)估結(jié)果如下:
4. 使用模型進(jìn)行推理
模型訓(xùn)練完成后,我們可以得到一個(gè)最佳的訓(xùn)練結(jié)果模型best.pt
文件,在runs/train/weights
目錄下。我們可以使用該文件進(jìn)行后續(xù)的推理檢測(cè)。
圖片檢測(cè)代碼如下:
#coding:utf-8
from ultralytics import YOLO
import cv2# 所需加載的模型目錄
path = 'models/best.pt'
# 需要檢測(cè)的圖片地址
img_path = "TestFiles/image5_png.rf.3469984b0350c705a0d8d2cb792a4f3c.jpg"# 加載預(yù)訓(xùn)練模型
model = YOLO(path, task='detect')# 檢測(cè)圖片
results = model(img_path)
print(results)
res = results[0].plot()
# res = cv2.resize(res,dsize=None,fx=2,fy=2,interpolation=cv2.INTER_LINEAR)
cv2.imshow("YOLOv8 Detection", res)
cv2.waitKey(0)
執(zhí)行上述代碼后,會(huì)將執(zhí)行的結(jié)果直接標(biāo)注在圖片上,結(jié)果如下:
更多檢測(cè)結(jié)果示例如下:
三、YOLOv5/v8/v10/11性能對(duì)比分析
本文在介紹的數(shù)據(jù)集上分別訓(xùn)練了YOLOv5n、YOLOv8n、YOLOv10n、YOLO11n
這4種模型用于對(duì)比分析,訓(xùn)練輪數(shù)為150個(gè)epoch
。主要分析這4種模型的訓(xùn)練結(jié)果在Precision(精確度)
、Recall(召回率)
、mAP50
、mAP50-95
、F1-score
等性能指標(biāo)上的表現(xiàn),以選出更適合本數(shù)據(jù)集的最優(yōu)模型。
4種模型基本信息如下:
Model | size (pixels) | mAPval 50-95 | params (M) | FLOPs (B) |
---|---|---|---|---|
YOLOv5n | 640 | 34.3 | 2.6 | 7.7 |
YOLOv8n | 640 | 37.3 | 3.2 | 8.7 |
YOLOv10n | 640 | 38.5 | 2.7 | 6.7 |
YOLOv11n | 640 | 39.5 | 2.6 | 6.5 |
FlOPs(floating point operations):浮點(diǎn)運(yùn)算次數(shù),用于衡量算法/模型的復(fù)雜度。
params (M):表示模型的參數(shù)量
這3種模型都是各個(gè)YOLO系列種最小尺寸結(jié)構(gòu)的模型,在模型參數(shù)與計(jì)算量上都相差不大,屬于同一個(gè)級(jí)別的模型,因此能夠進(jìn)行橫向的對(duì)比分析。
1.常用評(píng)估參數(shù)介紹
-
Precision(精確度):
-
精確度是針對(duì)預(yù)測(cè)結(jié)果的準(zhǔn)確性進(jìn)行衡量的一個(gè)指標(biāo),它定義為預(yù)測(cè)為正例(即預(yù)測(cè)為目標(biāo)存在)中真正正例的比例。
-
公式:
-
其中,TP(True Positives)是正確預(yù)測(cè)為正例的數(shù)量,FP(False Positives)是錯(cuò)誤預(yù)測(cè)為正例的數(shù)量。
-
-
Recall(召回率):
-
召回率衡量的是模型檢測(cè)到所有實(shí)際正例的能力,即預(yù)測(cè)為正例的樣本占所有實(shí)際正例的比例。
-
公式:
-
其中,FN(False Negatives)是錯(cuò)誤預(yù)測(cè)為負(fù)例(即漏檢)的數(shù)量。
-
-
mAP50(平均精度,Mean Average Precision at Intersection over Union 0.5):
- mAP50是目標(biāo)檢測(cè)中一個(gè)非常重要的指標(biāo),它衡量的是模型在IoU(交并比)閾值為0.5時(shí)的平均精度。IoU是一個(gè)衡量預(yù)測(cè)邊界框與真實(shí)邊界框重疊程度的指標(biāo)。
- mAP50通常在多個(gè)類別上計(jì)算,然后取平均值,得到整體的平均精度。
- 計(jì)算方法:對(duì)于每個(gè)類別,首先計(jì)算在IoU閾值為0.5時(shí)的精度-召回率曲線(Precision-Recall Curve),然后計(jì)算曲線下的面積(AUC),最后對(duì)所有類別的AUC取平均值。
這三個(gè)指標(biāo)共同提供了對(duì)目標(biāo)檢測(cè)模型性能的全面評(píng)估:
- 精確度(Box_P)關(guān)注預(yù)測(cè)的準(zhǔn)確性,即減少誤檢(FP)。
- 召回率(Box_R)關(guān)注檢測(cè)的完整性,即減少漏檢(FN)。
- mAP50提供了一個(gè)平衡精確度和召回率的指標(biāo),同時(shí)考慮了模型在不同類別上的表現(xiàn)。
在實(shí)際應(yīng)用中,根據(jù)具體需求,可能會(huì)更側(cè)重于精確度或召回率,例如在需要減少誤報(bào)的場(chǎng)合,可能會(huì)更重視精確度;而在需要確保所有目標(biāo)都被檢測(cè)到的場(chǎng)合,可能會(huì)更重視召回率。mAP50作為一個(gè)綜合指標(biāo),能夠幫助研究者和開發(fā)者平衡這兩個(gè)方面,選擇最合適的模型。
- mAP50-95:
- 這是衡量目標(biāo)檢測(cè)模型在不同IoU閾值下性能的指標(biāo)。IoU是預(yù)測(cè)的邊界框與真實(shí)邊界框之間的重疊程度,mAP50-95計(jì)算了從IoU為0.5到0.95的范圍內(nèi),模型的平均精度。
- 精度-召回率曲線在不同的IoU閾值上繪制,然后計(jì)算曲線下的面積(AUC),最后取這些AUC的平均值,得到mAP50-95。
- 這個(gè)指標(biāo)反映了模型在不同匹配嚴(yán)格度下的性能,對(duì)于評(píng)估模型在實(shí)際應(yīng)用中的泛化能力非常重要。
- F1分?jǐn)?shù):
-
這是精確度和召回率的調(diào)和平均數(shù),能夠平衡兩者的影響,是一個(gè)綜合考慮精確度和召回率的指標(biāo)。
-
公式:
-
當(dāng)精確度和召回率差距較大時(shí),F1分?jǐn)?shù)能夠提供一個(gè)更全面的模型性能評(píng)估。
-
2. 模型訓(xùn)練過程對(duì)比
YOLOv5n、YOLOv8n、YOLOv10n、YOLO11n
這4種模型的訓(xùn)練過程損失曲線與性能曲線如下。
訓(xùn)練過程的損失曲線對(duì)比如下:
訓(xùn)練過程中的精確度(Precision)、召回率(Recall)、平均精確度(Mean Average Precision, mAP)等參數(shù)的對(duì)比如下:
直觀的從曲線上看,4種模型在模型精度上看,差別不是很大。下面對(duì)具體的性能數(shù)值進(jìn)行詳細(xì)分析。
3.各模型性能評(píng)估
在YOLOv5n、YOLOv8n、YOLOv10n、YOLO11n
這3種模型訓(xùn)練完成后,我們可以通過驗(yàn)證集對(duì)各個(gè)模型分別進(jìn)行性能評(píng)估。
YOLOv5n模型在驗(yàn)證集上的性能評(píng)估結(jié)果如下:
表格列說明:
Class:表示模型的檢測(cè)類別名稱;
Images:表示驗(yàn)證集圖片數(shù)目;
Instances:表示在所有圖片中目標(biāo)數(shù);
P:表示精確度Precison;
R:表示召回率Recall;
mAP50:表示IoU(交并比)閾值為0.5時(shí)的平均精度。
mAP50-95:表示從IoU為0.5到0.95的范圍內(nèi)【間隔0.05】,模型的平均精度。
表格行說明:
第一行all,除Instances是
所有類別目標(biāo)數(shù)之和
,其他參數(shù)表示所有類別對(duì)應(yīng)列參數(shù)的平均值
;
其他行,表示每一個(gè)類別對(duì)應(yīng)參數(shù)的值。
YOLOv8n模型在驗(yàn)證集上的性能評(píng)估結(jié)果如下:
YOLOv10n模型在驗(yàn)證集上的性能評(píng)估結(jié)果如下:
YOLO11模型在驗(yàn)證集上的性能評(píng)估結(jié)果如下:
4.模型總體性能對(duì)比
下面我們從總體的平均指標(biāo)上對(duì)YOLOv5n、YOLOv8n、YOLOv10n、YOLO11n
這4種模型進(jìn)行對(duì)比分析。
下表是YOLOv5n、YOLOv8n、YOLOv10n、YOLO11n
這4不同模型目標(biāo)檢測(cè)結(jié)果的整體性能平均指標(biāo)對(duì)比情況:
Model | Precision | Recall | mAP50 | mAP50-95 | F1-score |
---|---|---|---|---|---|
YOLOv5n | 95.10 | 91.70 | 95.60 | 61.30 | 93.40 |
YOLOv8n | 95.60 | 91.80 | 96.00 | 62.30 | 93.70 |
YOLOv10n | 92.60 | 92.10 | 95.30 | 61.10 | 92.30 |
YOLO11n | 94.80 | 92.20 | 95.50 | 62.00 | 93.50 |
為了方便更加直觀的查看與對(duì)比各個(gè)結(jié)果,同樣我們將表格繪制成圖表的形式進(jìn)行分析。
從提供的數(shù)據(jù)中,我們可以分析并得出以下結(jié)論:
- 整體性能比較:YOLOv8n在精度(Precision)、mAP50以及mAP50-95指標(biāo)上都略優(yōu)于其他模型,顯示出其在目標(biāo)檢測(cè)任務(wù)上的綜合性能是最優(yōu)的。
- mAP50與mAP50-95:mAP50是檢測(cè)目標(biāo)時(shí)準(zhǔn)確度的指標(biāo),而mAP50-95則提供了更全面的準(zhǔn)確度評(píng)估,因?yàn)樗紤]了從50%到95%的所有IoU閾值。YOLOv8n在這兩個(gè)指標(biāo)上都有最好的表現(xiàn),說明它在不同IoU閾值下的檢測(cè)準(zhǔn)確度是最高的。
- F1-score:F1-score是精度和召回率的調(diào)和平均數(shù),用于評(píng)估模型的綜合性能。YOLOv8n的F1-score最高,表明它在平衡精度和召回率方面表現(xiàn)最佳。
- 模型選擇建議:如果需要一個(gè)在目標(biāo)檢測(cè)任務(wù)上表現(xiàn)最佳的模型,YOLOv8n是一個(gè)不錯(cuò)的選擇。然而,如果YOLOv8n的某些特定方面(如速度、內(nèi)存使用等)不符合項(xiàng)目需求,可以考慮YOLOv5n或YOLOv11n,它們?cè)谛阅苌弦卜浅=咏?/li>
- YOLOv10n的性能分析:YOLOv10n在所有指標(biāo)上的表現(xiàn)都是最低的,可能需要進(jìn)一步分析其訓(xùn)練過程、數(shù)據(jù)集或模型結(jié)構(gòu),以確定性能不佳的原因。
綜上所述,YOLOv8n在提供的指標(biāo)上表現(xiàn)最佳,但在實(shí)際應(yīng)用中,還需要考慮其他因素,如模型大小、推理速度和部署成本等。
當(dāng)然,我們除了從整體的平均指標(biāo)上對(duì)比之外,也可以單獨(dú)對(duì)比相同類別在不同模型上的指標(biāo)表現(xiàn),以查看不同模型在各個(gè)類別上的優(yōu)劣勢(shì)。 此處不再贅述。
四、可視化系統(tǒng)制作
基于上述訓(xùn)練出的目標(biāo)檢測(cè)模型,為了給此檢測(cè)系統(tǒng)提供一個(gè)用戶友好的操作平臺(tái),使用戶能夠便捷、高效地進(jìn)行檢測(cè)任務(wù)。博主基于Pyqt5開發(fā)了一個(gè)可視化的系統(tǒng)界面,通過圖形用戶界面(GUI),用戶可以輕松地在圖片、視頻和攝像頭實(shí)時(shí)檢測(cè)之間切換,無需掌握復(fù)雜的編程技能即可操作系統(tǒng)?!鞠到y(tǒng)詳細(xì)展示見第一部分內(nèi)容】
Pyqt5詳細(xì)介紹
關(guān)于Pyqt5的詳細(xì)介紹可以參考之前的博客文章:《Python中的Pyqt5詳細(xì)介紹:基本機(jī)構(gòu)、部件、布局管理、信號(hào)與槽、跨平臺(tái)》
,地址:
https://a-xu-ai.blog.csdn.net/article/details/143273797
系統(tǒng)制作
博主基于Pyqt5框架開發(fā)了此款危險(xiǎn)駕駛行為檢測(cè)識(shí)別系統(tǒng)
,即文中第一部分的演示內(nèi)容,能夠很好的支持圖片、視頻及攝像頭進(jìn)行檢測(cè),同時(shí)支持檢測(cè)結(jié)果的保存
。
通過圖形用戶界面(GUI),用戶可以輕松地在圖片、視頻和攝像頭實(shí)時(shí)檢測(cè)之間切換,無需掌握復(fù)雜的編程技能即可操作系統(tǒng)。這不僅提升了系統(tǒng)的可用性和用戶體驗(yàn),還使得檢測(cè)過程更加直觀透明,便于結(jié)果的實(shí)時(shí)觀察和分析。此外,GUI還可以集成其他功能,如檢測(cè)結(jié)果的保存與導(dǎo)出、檢測(cè)參數(shù)的調(diào)整,從而為用戶提供一個(gè)全面、綜合的檢測(cè)工作環(huán)境,促進(jìn)智能檢測(cè)技術(shù)的廣泛應(yīng)用。
關(guān)于該系統(tǒng)涉及到的完整源碼、UI界面代碼、數(shù)據(jù)集、訓(xùn)練代碼、訓(xùn)練好的模型、測(cè)試圖片視頻等相關(guān)文件,均已打包上傳,感興趣的小伙伴可以通過下載鏈接自行獲取。
【獲取方式】
關(guān)注下方名片G-Z-H:【阿旭算法與機(jī)器學(xué)習(xí)】,并發(fā)送【源碼】即可獲取下載方式
本文涉及到的完整全部程序文件:包括python源碼、數(shù)據(jù)集、訓(xùn)練好的結(jié)果文件、訓(xùn)練代碼、UI源碼、測(cè)試圖片視頻等(見下圖),獲取方式見文末:
注意:該代碼基于Python3.9開發(fā),運(yùn)行界面的主程序?yàn)?code>MainProgram.py,其他測(cè)試腳本說明見上圖。為確保程序順利運(yùn)行,請(qǐng)按照
程序運(yùn)行說明文檔txt
配置軟件運(yùn)行所需環(huán)境。
關(guān)注下方名片GZH:【阿旭算法與機(jī)器學(xué)習(xí)】,并發(fā)送【源碼】即可獲取下載方式