首頁 > 軟體

YOLOv5構建安全帽檢測和識別系統使用詳解

2023-04-04 06:01:00

引言

在這篇文章中,我將介紹如何使用YOLOv5構建一個佩戴安全帽檢測和識別系統。這個系統可以實時檢測影象上人物是否有未佩戴安全帽,並及時進行警告。文章將介紹系統的設計過程,包括YOLOv5的訓練、測試程式碼以及實際部署思路。

準備工作

首先,我們需要收集和準備資料集。資料集應包含各種場景、角度和光照條件下戴安全帽和不戴安全帽的員工照片。我們可以從網際網路上收集這些圖片,也可以在實際工地上拍攝。收集到足夠數量的圖片後,我們需要對它們進行標註。標註工具如labelImg可以方便地完成這一任務。完成標註後,我們需要將資料集劃分為訓練集和驗證集。

安裝YOLOv5

要開始訓練模型,我們首先需要安裝YOLOv5。可以通過以下命令安裝所需的依賴:

git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt

訓練模型

為了訓練模型,我們需要準備一個組態檔,其中包含訓練引數和模型結構。在YOLOv5的models目錄下,我們可以找到預定義的一些組態檔,如yolov5s.yaml。我們可以根據需要修改這些檔案,以適應我們的任務。

接下來,我們需要修改YOLOv5的資料組態檔,以指定我們的資料集路徑。在data目錄下,建立一個名為helmet_detection.yaml的檔案,內容如下:

train: ../dataset/train/
val: ../dataset/val/
nc: 2
names: ['no_helmet', 'helmet']

這裡,trainval分別表示訓練集和驗證集的路徑,nc表示類別數量,names表示類別名稱。

現在,我們可以開始訓練模型了。在命令列中,執行以下命令:

python train.py --img 640 --batch 16 --epochs 100 --data data/helmet_detection.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt

這個命令將使用YOLOv5s組態檔訓練一個安全帽檢測模型。我們可以根據硬體和資料集大小調整批次大小和訓練輪數。訓練過程中,模型的效能指標和損失函數值將在命令列輸出。同時,訓練過程中的視覺化結果將儲存在runs/train目錄下。

訓練完成後,我們可以在runs/train/exp/weights目錄下找到最終的模型權重檔案best.pt

測試模型

為了測試我們的模型,我們可以使用YOLOv5提供的detect.py指令碼。執行以下命令:

python detect.py --source ../dataset/val/ --weights runs/train/exp/weights/best.pt --conf 0.5

這個命令將在驗證集上執行我們的模型,並將檢測結果儲存在runs/detect目錄下。我們可以檢視這些結果,以評估模型在實際場景中的表現。

實際部署

現在我們已經訓練好了一個安全帽檢測模型,接下來我們需要將其部署到實際場景中。我們可以使用Python和OpenCV庫構建一個實時監控系統。以下是一個簡單的範例:

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()
        # 檢測安全帽
        results = model.detect(frame)
        # 在畫面上繪製檢測框
        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()

這個範例將開啟計算機的攝像頭,並實時檢測畫面中的安全帽。檢測結果將以邊框和類別標籤的形式顯示在畫面上。

總結

在本文中,我們介紹瞭如何使用YOLOv5構建一個安全帽檢測和識別系統。我們從收集和準備資料集開始,然後安裝YOLOv5,接著訓練和測試模型。最後,我們演示瞭如何將訓練好的模型部署到實際場景中。

以上就是YOLOv5構建安全帽檢測和識別系統使用詳解的詳細內容,更多關於YOLOv5安全帽檢測識別的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com