【守护工地安全】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 点这里。

相关文章
|
6月前
|
监控 安全 自动驾驶
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
|
1月前
|
人工智能 算法 安全
基于YOLOV8的骑行智能守护实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
基于YOLOv8的骑行智能守护实时检测系统,通过图像处理和AI技术,实时监测电动车及骑行者头盔佩戴情况,提升道路安全。该系统支持图片、视频和摄像头实时检测,具备GUI界面,便于操作和展示结果。使用5448张真实场景图片训练,包含电动车和骑行者是否佩戴头盔的三类标注。系统基于Python和Pyside6开发,具备模型权重导入、检测置信度调节等功能。
47 0
基于YOLOV8的骑行智能守护实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
6月前
|
机器学习/深度学习 监控 算法
【传知代码】高速公路车辆速度检测软件-论文复现
该项目是高速公路车辆速度检测软件,融合了无人机、计算机视觉(YOLOv8)和机器学习,用于交通监控和数据收集。它通过无人机航拍获取车辆信息,使用Bytetrack进行跟踪,SG滤波器处理数据,计算速度和加速度,并将数据存储在Excel中。软件包含检测器、跟踪器和注册表组件,可在Pycharm环境中运行。部署时需配置相关依赖,通过主程序`main.py`启动,用户需标定参考距离、ROI和坐标系。随着技术进步,此类系统有望在交通管理中发挥更大作用。参考文献包括YOLOv8和ByteTrack的相关研究。源码和详情见原文链接。
【传知代码】高速公路车辆速度检测软件-论文复现
|
6月前
|
传感器 自动驾驶 算法
Apollo感知模块 :传感器| 目标监测| 障碍物识别 | 模型管理
Apollo感知模块 :传感器| 目标监测| 障碍物识别 | 模型管理
91 0
|
机器学习/深度学习 算法 数据可视化
项目实践 | 行人跟踪与摔倒检测报警(文末获取完整源码)
项目实践 | 行人跟踪与摔倒检测报警(文末获取完整源码)
189 0
|
机器学习/深度学习 算法 数据可视化
深度学习实战(四):行人跟踪与摔倒检测报警
 本项目的目的是为了给大家提供跟多的实战思路,抛砖引玉为大家提供一个案例,也希望读者可以根据该方法实现更多的思想与想法,也希望读者可以改进该项目种提到的方法,比如改进其中的行人检测器、跟踪方法、行为识别算法等等。
189 0
|
算法 固态存储 数据挖掘
智慧交通day02-车流量检测实现11:yoloV3模型
YOLOv3是YOLO (You Only Look Once)系列目标检测算法中的第三版,相比之前的算法,尤其是针对小目标,精度有显著提升。
331 0
|
传感器 编解码 人工智能
2022最新!更面向工业场景:基于视觉方案不同挑战下的车道检测与跟踪(上)
本文作者提出了一种鲁棒的车道检测和跟踪方法来检测车道线,该方法主要介绍了三个关键技术。首先,应用双边滤波器来平滑和保留边缘,引入了一个优化的强度阈值范围(OITR)来提高canny算子的性能,该算子检测低强度(有色、腐蚀或模糊)车道标记的边缘。第二,提出了一种稳健的车道验证技术,即基于角度和长度的几何约束(ALGC)算法,然后进行霍夫变换,以验证车道线的特征并防止不正确的车道线检测。最后,提出了一种新的车道线跟踪技术,即水平可调车道重新定位范围(HALRR)算法,该算法可以在左、右或两条车道标记在短时间内部分和完全不可见时跟踪车道位置。
2022最新!更面向工业场景:基于视觉方案不同挑战下的车道检测与跟踪(上)
|
编解码 人工智能 算法
2022最新!更面向工业场景:基于视觉方案不同挑战下的车道检测与跟踪(下)
本文作者提出了一种鲁棒的车道检测和跟踪方法来检测车道线,该方法主要介绍了三个关键技术。首先,应用双边滤波器来平滑和保留边缘,引入了一个优化的强度阈值范围(OITR)来提高canny算子的性能,该算子检测低强度(有色、腐蚀或模糊)车道标记的边缘。第二,提出了一种稳健的车道验证技术,即基于角度和长度的几何约束(ALGC)算法,然后进行霍夫变换,以验证车道线的特征并防止不正确的车道线检测。最后,提出了一种新的车道线跟踪技术,即水平可调车道重新定位范围(HALRR)算法,该算法可以在左、右或两条车道标记在短时间内部分和完全不可见时跟踪车道位置。
2022最新!更面向工业场景:基于视觉方案不同挑战下的车道检测与跟踪(下)
|
监控 算法 安全
Study-路面裂缝检测识别系统设计
Study-路面裂缝检测识别系统设计
335 0
Study-路面裂缝检测识别系统设计