【守护工地安全】YOLOv8实现安全帽检测

简介: 【守护工地安全】YOLOv8实现安全帽检测

数据集

该图像数据集包含8000张图像,两个类别分别是安全帽与人、以其中200多张图像为验证集,其余为训练集。

模型训练

准备好数据集以后,直接按下面的命令行运行即可:

yolo train model=yolov8s.pt data=hat_dataset.yaml epochs=50 imgsz=640 batch=4

导出与测试

下面的命令行,导出模型为ONNX格式,同时预测模型的实际推理能力

yolo export model=hat_best.pt format=onnx
yolo predict model=hat_best.pt source=./hats

### 部署推理

转成ONNX格式文件以后,基于OpenVINO-Python部署推理,相关代码如下

# Read IR
model = ie.read_model(model="hat_best.onnx")
compiled_model = ie.compile_model(model=model, device_name="CPU")
output_layer = compiled_model.output(0)

capture = cv.VideoCapture("D:/images/video/hat_test.mp4")
while True:
    _, frame = capture.read()
    if frame is None:
        print("End of stream")
        break
    bgr = format_yolov8(frame)
    img_h, img_w, img_c = bgr.shape

    start = time.time()
    image = cv.dnn.blobFromImage(bgr, 1 / 255.0, (640, 640), swapRB=True, crop=False)

    res = compiled_model([image])[output_layer] # 1x84x8400
    rows = np.squeeze(res, 0).T
    class_ids = []
    confidences = []
    boxes = []
    x_factor = img_w / 640
    y_factor = img_h / 640

    for r in range(rows.shape[0]):
        row = rows[r]
        classes_scores = row[4:]
        _, _, _, max_indx = cv.minMaxLoc(classes_scores)
        class_id = max_indx[1]
        if (classes_scores[class_id] > .25):
            confidences.append(classes_scores[class_id])
            class_ids.append(class_id)
            x, y, w, h = row[0].item(), row[1].item(), row[2].item(), row[3].item()
            left = int((x - 0.5 * w) * x_factor)
            top = int((y - 0.5 * h) * y_factor)
            width = int(w * x_factor)
            height = int(h * y_factor)
            box = np.array([left, top, width, height])
            boxes.append(box)

    indexes = cv.dnn.NMSBoxes(boxes, confidences, 0.25, 0.45)
    for index in indexes:
        box = boxes[index]
        color = colors[int(class_ids[index]) % len(colors)]
        cv.rectangle(frame, box, color, 2)
        cv.rectangle(frame, (box[0], box[1] - 20), (box[0] + box[2], box[1]), color, -1)
        cv.putText(frame, class_list[class_ids[index]], (box[0], box[1] - 10), cv.FONT_HERSHEY_SIMPLEX, .5, (0, 0, 0))
    end = time.time()
    inf_end = end - start
    fps = 1 / inf_end
    fps_label = "FPS: %.2f" % fps
    cv.putText(frame, fps_label, (20, 45), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

    cv.imshow("YOLOv8 hat Detection", frame)
    cc = cv.waitKey(1)
    if cc == 27:
        break
cv.destroyAllWindows()

认真学习 YOLOv8 点这里。

相关文章
|
Ubuntu Unix Linux
Linux Ubuntu man文档的图文安装教程
Linux Ubuntu man文档的图文安装教程
531 0
|
消息中间件 存储 缓存
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍(1)
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍
3950 0
|
3月前
|
Linux Docker 容器
docker下部署 vLLM 启动Qwen3-VL-32B-Instruct模型
本文介绍在CentOS系统、A10 6×24G显卡环境下,通过Docker部署vLLM并启动Qwen3-VL-32B-Instruct大模型的完整流程,涵盖镜像拉取、容器配置、多卡并行与显存优化设置,支持32K上下文,附带启动脚本及调用验证示例。
5318 2
|
8月前
|
机器学习/深度学习 监控 安全
基于YOLOv8的有无戴安全帽检测识别项目
本项目通过集成 YOLOv8 强大的目标检测能力与 PyQt5 的可视化界面,构建了一个 实用性强、易于部署、安全帽自动识别系统。无论是单张图片、视频监控,还是实时摄像头输入,该系统均可稳定工作,准确判断佩戴与未佩戴状态,极大减轻了传统人工巡查压力。
基于YOLOv8的有无戴安全帽检测识别项目
|
5月前
|
数据采集 传感器 安全
工业粉尘检测数据集:从数据采集到模型训练(4000 张图片已划分、已标注)| 适用与目标检测
本数据集包含4000张已标注、已划分的粉尘图像,训练集与验证集按3:1比例分布,支持YOLO、COCO等格式,适用于目标检测、环境监测及AIoT应用,助力工业安全与智能感知研究。
工业粉尘检测数据集:从数据采集到模型训练(4000 张图片已划分、已标注)| 适用与目标检测
|
12月前
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
921 85
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的安全帽目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的安全帽目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
|
存储 人工智能 Java
【图文详解】基于Spring AI的旅游大师应用开发、多轮对话、文件持久化、拦截器实现
【图文详解】基于Spring AI的旅游大师应用开发、多轮对话、文件持久化、拦截器实现
|
机器学习/深度学习 人工智能 算法
基于YOLOv8的工业安全帽实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
基于YOLOv8的工业安全帽实时检测系统,通过7581张图片训练,实现工作场所安全帽佩戴检测,降低工伤事故。系统支持图片、视频和摄像头实时检测,具备GUI界面,易于操作。使用Python和Pyside6开发,提供模型训练、评估和推理功能。
2712 1
基于YOLOv8的工业安全帽实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
机器学习/深度学习 算法 网络架构
YOLOv5改进 | 2023主干篇 | FasterNeT跑起来的主干网络( 提高FPS和检测效率)
YOLOv5改进 | 2023主干篇 | FasterNeT跑起来的主干网络( 提高FPS和检测效率)
786 0

热门文章

最新文章