YOLOv5構(gòu)建安全帽檢測(cè)和識(shí)別系統(tǒng)使用詳解
引言
在這篇文章中,我將介紹如何使用YOLOv5構(gòu)建一個(gè)佩戴安全帽檢測(cè)和識(shí)別系統(tǒng)。這個(gè)系統(tǒng)可以實(shí)時(shí)檢測(cè)圖像上人物是否有未佩戴安全帽,并及時(shí)進(jìn)行警告。文章將介紹系統(tǒng)的設(shè)計(jì)過(guò)程,包括YOLOv5的訓(xùn)練、測(cè)試代碼以及實(shí)際部署思路。
準(zhǔn)備工作
首先,我們需要收集和準(zhǔn)備數(shù)據(jù)集。數(shù)據(jù)集應(yīng)包含各種場(chǎng)景、角度和光照條件下戴安全帽和不戴安全帽的員工照片。我們可以從互聯(lián)網(wǎng)上收集這些圖片,也可以在實(shí)際工地上拍攝。收集到足夠數(shù)量的圖片后,我們需要對(duì)它們進(jìn)行標(biāo)注。標(biāo)注工具如labelImg可以方便地完成這一任務(wù)。完成標(biāo)注后,我們需要將數(shù)據(jù)集劃分為訓(xùn)練集和驗(yàn)證集。
安裝YOLOv5
要開(kāi)始訓(xùn)練模型,我們首先需要安裝YOLOv5。可以通過(guò)以下命令安裝所需的依賴(lài):
git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt
訓(xùn)練模型
為了訓(xùn)練模型,我們需要準(zhǔn)備一個(gè)配置文件,其中包含訓(xùn)練參數(shù)和模型結(jié)構(gòu)。在YOLOv5的models目錄下,我們可以找到預(yù)定義的一些配置文件,如yolov5s.yaml。我們可以根據(jù)需要修改這些文件,以適應(yīng)我們的任務(wù)。
接下來(lái),我們需要修改YOLOv5的數(shù)據(jù)配置文件,以指定我們的數(shù)據(jù)集路徑。在data目錄下,創(chuàng)建一個(gè)名為helmet_detection.yaml的文件,內(nèi)容如下:
train: ../dataset/train/ val: ../dataset/val/ nc: 2 names: ['no_helmet', 'helmet']
這里,train和val分別表示訓(xùn)練集和驗(yàn)證集的路徑,nc表示類(lèi)別數(shù)量,names表示類(lèi)別名稱(chēng)。
現(xiàn)在,我們可以開(kāi)始訓(xùn)練模型了。在命令行中,運(yùn)行以下命令:
python train.py --img 640 --batch 16 --epochs 100 --data data/helmet_detection.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt
這個(gè)命令將使用YOLOv5s配置文件訓(xùn)練一個(gè)安全帽檢測(cè)模型。我們可以根據(jù)硬件和數(shù)據(jù)集大小調(diào)整批次大小和訓(xùn)練輪數(shù)。訓(xùn)練過(guò)程中,模型的性能指標(biāo)和損失函數(shù)值將在命令行輸出。同時(shí),訓(xùn)練過(guò)程中的可視化結(jié)果將保存在runs/train目錄下。
訓(xùn)練完成后,我們可以在runs/train/exp/weights目錄下找到最終的模型權(quán)重文件best.pt。
測(cè)試模型
為了測(cè)試我們的模型,我們可以使用YOLOv5提供的detect.py腳本。運(yùn)行以下命令:
python detect.py --source ../dataset/val/ --weights runs/train/exp/weights/best.pt --conf 0.5
這個(gè)命令將在驗(yàn)證集上運(yùn)行我們的模型,并將檢測(cè)結(jié)果保存在runs/detect目錄下。我們可以查看這些結(jié)果,以評(píng)估模型在實(shí)際場(chǎng)景中的表現(xiàn)。
實(shí)際部署
現(xiàn)在我們已經(jīng)訓(xùn)練好了一個(gè)安全帽檢測(cè)模型,接下來(lái)我們需要將其部署到實(shí)際場(chǎng)景中。我們可以使用Python和OpenCV庫(kù)構(gòu)建一個(gè)實(shí)時(shí)監(jiān)控系統(tǒng)。以下是一個(gè)簡(jiǎn)單的示例:
import cv2
from yolov5 import YOLOv5
def main():
# 加載模型
model = YOLOv5('runs/train/exp/weights/best.pt')
# 打開(kāi)攝像頭
cap = cv2.VideoCapture(0)
while True:
# 讀取攝像頭畫(huà)面
ret, frame = cap.read()
# 檢測(cè)安全帽
results = model.detect(frame)
# 在畫(huà)面上繪制檢測(cè)框
for result in results:
x, y, w, h, cls, conf = result
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, f'{cls}: {conf:.2f}', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# 顯示畫(huà)面
cv2.imshow('Helmet Detection', frame)
# 按'q'鍵退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
這個(gè)示例將打開(kāi)計(jì)算機(jī)的攝像頭,并實(shí)時(shí)檢測(cè)畫(huà)面中的安全帽。檢測(cè)結(jié)果將以邊框和類(lèi)別標(biāo)簽的形式顯示在畫(huà)面上。
總結(jié)
在本文中,我們介紹了如何使用YOLOv5構(gòu)建一個(gè)安全帽檢測(cè)和識(shí)別系統(tǒng)。我們從收集和準(zhǔn)備數(shù)據(jù)集開(kāi)始,然后安裝YOLOv5,接著訓(xùn)練和測(cè)試模型。最后,我們演示了如何將訓(xùn)練好的模型部署到實(shí)際場(chǎng)景中。
以上就是YOLOv5構(gòu)建安全帽檢測(cè)和識(shí)別系統(tǒng)使用詳解的詳細(xì)內(nèi)容,更多關(guān)于YOLOv5安全帽檢測(cè)識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Opencv實(shí)現(xiàn)傾斜圖片轉(zhuǎn)正示例
本文主要介紹了Opencv實(shí)現(xiàn)傾斜圖片轉(zhuǎn)正示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Python函數(shù)參數(shù)分類(lèi)使用與新特性詳細(xì)分析講解
在聲明函數(shù)的時(shí)候,一般會(huì)根據(jù)函數(shù)所要實(shí)現(xiàn)的功能來(lái)決定函數(shù)是否需要參數(shù)。在多數(shù)情況下,我們聲明的函數(shù)都會(huì)使用到參數(shù),這篇文章主要介紹了Python函數(shù)參數(shù)2023-01-01
Django實(shí)現(xiàn)文件分享系統(tǒng)的完整代碼
這篇文章主要介紹了Django實(shí)現(xiàn)文件分享系統(tǒng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
python實(shí)現(xiàn)跨年煙花動(dòng)態(tài)效果
這篇文章主要介紹了python實(shí)現(xiàn)跨年煙花的動(dòng)態(tài)效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
Python使用PySimpleGUI和Pygame編寫(xiě)一個(gè)MP3播放器
這篇文章主要為大家詳細(xì)介紹了Python如何使用PySimpleGUI和Pygame編寫(xiě)一個(gè)簡(jiǎn)單的MP3播放器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2023-11-11
使用豆瓣源來(lái)安裝python中的第三方庫(kù)方法
這篇文章主要介紹了使用豆瓣源來(lái)安裝python中的第三方庫(kù)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

