【YOLOv8系列】(六)毕设第二弹:YOLOv8+Pyqt5实现安全帽检测系统

目录

前言

 一、数据集获取与介绍 

二、模型训练

1.数据集划分

2. 新建data.yaml文件

3.模型训练 

4.模型效果预测

三、pyqt实现 

1.ui界面设计

2.功能实现

①图片检测

②文件夹检测

③视频检测

四.总结


前言

随着计算机视觉技术的发展,目标检测技术在各个领域得到了广泛应用。安全帽检测作为工业安全领域的重要应用之一,可以有效减少工地人员因未佩戴安全帽而发生的事故。在本文中,我将带领大家基于YOLOv8PyQt5开发一个智能化的安全帽检测系统。本项目适合毕业设计或有兴趣学习目标检测与界面开发的小伙伴,系统功能包括图像检测、视频检测、文件夹批量检测、摄像头实时检测等。

本系列其他文章:

【YOLOv8系列】(一)YOLOv8介绍:实时目标检测的最新突破-CSDN博客

【YOLOv8系列】(二)YOLOv8环境配置,手把手嘴对嘴保姆教学-CSDN博客

【YOLOv8系列】(三)YOLOv8应用实践:从识别到分类再到分割的全方位视觉解决方案_yolov8 分类-CSDN博客

【YOLOv8系列】(四)YOLOv8使用自己的数据集进行模型训练,成就感满满-CSDN博客

【YOLOv8系列】(五)毕设实战:YOLOv8+Pyqt5实现智能车牌检测与识别系统_python怎么使用yolov8识别图片-CSDN博客

 一、数据集获取与介绍 

在工业领域,安全帽佩戴的检测需要一个包含大量真实场景的数据集,以确保模型在实际应用中的泛化能力。常见的安全帽检测数据集一般包含工地或施工现场的图片,这些图片包含各种角度、不同光照、复杂背景下的人物和安全帽。我们需要确保数据集具备多样性,以提升模型的鲁棒性。本系统使用的数据集包含5000张图片进行标注、并划分成训练集以及验证集。

数据集目录如下所示:

HelmetDetection
├── annotations
│   ├── hard_hat_workers0.xml
│   ├── ............................................
├──images
│   ├──hard_hat_workers0.jpg
│   ├── .....................................
├── label_list.txt
├── vaild.txt
└── train.txt

有需要的小伙伴可以点击我上传的资源进行数据集下载,自行进行训练。

https://download.csdn.net/download/weixin_44765053/89725820?spm=1001.2014.3001.5501icon-default.png?t=O83Ahttps://download.csdn.net/download/weixin_44765053/89725820?spm=1001.2014.3001.5501

二、模型训练

1.数据集划分

按照数据集里面的train.txt以及valid.txt内容所示进行训练集以及验证集划分

2. 新建data.yaml文件

新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。YOLOv8在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml的具体内容如下:

train: .\dataset\helmet\train  # train images
val: .\dataset\helmet\val  # val images
test:  # val images (optional)

# number of classes
nc: 2

# Classes
names: ['Helmet', 'head']

3.模型训练 

使用以下代码进行YOLOv8模型训练,具体内容可以看这篇

【YOLOv8系列】(四)YOLOv8使用自己的数据集进行模型训练,成就感满满_yolov8训练自己的数据集-CSDN博客

#coding:utf-8
from ultralytics import YOLO
 
# 加载预训练模型
model = YOLO("yolov8n.pt")
# Use the model
if __name__ == '__main__':
    # Use the model
    results = model.train(data='/helmet/data.yaml', epochs=300, batch=4)  # 训练模型

4.模型效果预测

使用以下代码进行predict

from ultralytics import YOLO

model = YOLO('best.pt')
if __name__ == '__main__':
    results = model.predict(source='test.jpg')
    results[0].show()

执行上述代码后,会将执行的结果直接标注在图片上,结果如下: 

可以看到,模型的预测效果还是不错的。置信度都在90%左右,满足我们使用。

三、pyqt实现 

1.ui界面设计

使用Qt designer进行ui界面设计,具体pycharm配置过程可以参考我这篇文章

PyCharm专业版配置PyQt5/QtDesigner/PyUic完整教程_pyuic5支持什么版本python-CSDN博客

大致界面如下所示:

包含 :

QLabel,显示图像、序号、类别、置信度等

QTableWidget,显示序号、类别、置信度等识别信息

QPushButton,选择图片、文件夹、视频或者摄像头检测,保存识别csv

2.功能实现

①图片检测

    def detectImage(self, imagePath):
        frame = cv2.imread(imagePath)
        results = self.model(frame)
        self.displayResults(frame, results)

 效果如下所示:

安全帽图片检测

②文件夹检测

    def detect_folder(self):
        image_extensions = ('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff')
        image_paths = [os.path.join(self.source, f) for f in os.listdir(self.source) if
                       f.lower().endswith(image_extensions)]
        for image_path in image_paths:
            image = cv2.imread(image_path)
            results = self.model(frame)
            self.displayResults(frame, results)

效果如下所示:

安全帽文件夹检测

③视频检测

    def detectVideo(self):
        ret, frame = self.cap.read()
        if ret:
            results = self.model(frame)
            self.displayResults(frame, results)
        else:
            self.timer.stop()
            self.cap.release()

效果如下所示:

安全帽视频检测

四.总结

        在本博客中,我们详细介绍了一个基于YOLOv8模型的安全帽检测系统。系统以模块化的方式设计,充分采用了合理的架构设计,带来良好的可维护性和可扩展性。其用户界面友好,能够提供实时的安全帽检测和识别结果展示,便于保存和管理检测结果和设置。

        该系统支持摄像头、视频、图像和批量文件等多种输入源,能够满足用户在不同场景下的需求。在后面可以添加更多预训练模型,增加检测和识别的种类;优化用户界面,增强个性化设置;并积极聆听用户反馈,以期不断改进系统,以更好地满足用户的需求。

由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

如果以上内容对您有帮助,可以三连打赏订阅本专栏哦, 谢谢~

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

到点就困告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值