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ì)過程,包括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
要開始訓(xùn)練模型,我們首先需要安裝YOLOv5??梢酝ㄟ^以下命令安裝所需的依賴:
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ù)。
接下來,我們需要修改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
表示類別數(shù)量,names
表示類別名稱。
現(xiàn)在,我們可以開始訓(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)練過程中,模型的性能指標(biāo)和損失函數(shù)值將在命令行輸出。同時(shí),訓(xùn)練過程中的可視化結(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è)模型,接下來我們需要將其部署到實(shí)際場(chǎng)景中。我們可以使用Python和OpenCV庫構(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') # 打開攝像頭 cap = cv2.VideoCapture(0) while True: # 讀取攝像頭畫面 ret, frame = cap.read() # 檢測(cè)安全帽 results = model.detect(frame) # 在畫面上繪制檢測(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) # 顯示畫面 cv2.imshow('Helmet Detection', frame) # 按'q'鍵退出 if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() if __name__ == '__main__': main()
這個(gè)示例將打開計(jì)算機(jī)的攝像頭,并實(shí)時(shí)檢測(cè)畫面中的安全帽。檢測(cè)結(jié)果將以邊框和類別標(biāo)簽的形式顯示在畫面上。
總結(jié)
在本文中,我們介紹了如何使用YOLOv5構(gòu)建一個(gè)安全帽檢測(cè)和識(shí)別系統(tǒng)。我們從收集和準(zhǔn)備數(shù)據(jù)集開始,然后安裝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)正示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python函數(shù)參數(shù)分類使用與新特性詳細(xì)分析講解
在聲明函數(shù)的時(shí)候,一般會(huì)根據(jù)函數(shù)所要實(shí)現(xiàn)的功能來決定函數(shù)是否需要參數(shù)。在多數(shù)情況下,我們聲明的函數(shù)都會(huì)使用到參數(shù),這篇文章主要介紹了Python函數(shù)參數(shù)2023-01-01Django實(shí)現(xiàn)文件分享系統(tǒng)的完整代碼
這篇文章主要介紹了Django實(shí)現(xiàn)文件分享系統(tǒng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05python實(shí)現(xiàn)跨年煙花動(dòng)態(tài)效果
這篇文章主要介紹了python實(shí)現(xiàn)跨年煙花的動(dòng)態(tài)效果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01Python使用PySimpleGUI和Pygame編寫一個(gè)MP3播放器
這篇文章主要為大家詳細(xì)介紹了Python如何使用PySimpleGUI和Pygame編寫一個(gè)簡(jiǎn)單的MP3播放器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2023-11-11