YOLOv8自定义数据集训练实现安全帽检测

数据集地址
该图像数据集包含8000张图像,两个类别分别是安全帽与人、以其中200多张图像为验证集,其余为训练集。
模型训练
准备好数据集以后,直接按下面的命令行运行即可:
yolo train model=yolov8s.pt data=hat_dataset.yaml epochs=50 imgsz=640 batch=4
导出与测试
模型导出与测试
yolo export model=hat_best.pt format=onnxyolo predict model=hat_best.pt source=./hats
部署推理
转成onnx格式文件以后,基于openvino-python部署推理,相关代码如下
# read irmodel = 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:        breakcv.destroyallwindows()


滚珠螺母要怎么维护保养?
电缆外皮老化开裂怎么办
瑞士公司开发出NFC-UHF双功能纺织标签及打印机
iPhone 12 Pro屏幕成绩公布
魅族Lipro智能家居品牌分享会:黄章操刀 三年内做到中国前三
YOLOv8自定义数据集训练实现安全帽检测
GNSS技术助力航海业迈向新时代:海洋测绘与航行的创新应用
广凌智能电表管理系统:让校园用电更安全,监管更方便
江苏时代将向江西升华采购阴极活性材料磷酸铁锂
云天励飞AI芯片AI技术助力农博“丰”景
iOS11Beta3怎么样?继续修复iOS11Beta2的bug,增加直播功能,但升级后很尴尬,设置变成了全英文
6月LED台厂商营收稳定持平 下半年将面临严峻挑战
为单极性负电源增加一个高效的正电源轨
地物光谱仪应用于监测植被的变化
什么叫与逻辑阵列 与逻辑阵列的点有什么用
Ace独立后首款产品面世:OPPO Ace2玩家共创硬核玩法
特斯拉新型电池技术,让电池寿命延长至160万公里
【芯闻时译】荷兰政府发布半导体出口新措施
LC滤波器怎么设计,Q值怎么理解最简单
备受程序员们追捧的蚕蛹你了解多少?