专栏名称: OpenCV学堂
一个致力于计算机视觉OpenCV原创技术传播的公众号!OpenCV计算机视觉与tensorflow深度学习相关算法原创文章分享、函数使用技巧、源码分析与讨论、,计算机视觉前沿技术介绍,技术专家经验分享,人才交流,学习交流。
目录
相关文章推荐
半月谈  ·  美国暂停对乌克兰军事援助 ·  16 小时前  
侠客岛  ·  代表委员的建议能被采纳吗? ·  昨天  
中国政府网  ·  召开在即!这些要点带你提前掌握 ·  2 天前  
学习大国  ·  习近平:经济工作必须统筹好几对重要关系 ·  4 天前  
51好读  ›  专栏  ›  OpenCV学堂

YOLO11 自定义数据集从训练到部署

OpenCV学堂  · 公众号  ·  · 2024-10-02 21:51

正文

点击上方 蓝字 关注我们

微信公众号: OpenCV学堂

关注获取更多计算机视觉与深度学习知识

数据集地址

数据集包含 360 张红血细胞图像及其注释文件,分为训练集与验证集。训练文件夹包含 300 张带有注释的图像。测试和验证文件夹都包含 60 张带有注释的图像。我们对原始数据集进行了一些修改以准备此 CBC 数据集,并将数据集分成三部分。在360张涂片图像中,首先使用300张带注释的血细胞图像作为训练集,然后将其余60张带有注释的图像用作测试集。CBC数据集地址如下:
https://github.com/MahmudulAlam/Complete-Blood-Cell-Count-Dataset

模型训练

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

yolo train model=yolo11n.pt data=cbc_dataset.yaml epochs=25 imgsz=640 batch=4



导出与测试

模型导出与测试

yolo export model=cbc_11.pt format=onnxyolo predict model=cbc_11.pt source=./cbc



部署推理

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

frame = cv.imread(os.path.join("D:/cbc_analysis/data/", f))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] # 1x84x8400rows = np.squeeze(res, 0).Tclass_ids = []confidences = []boxes = []x_factor = img_w / 640y_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)]rr = int((box[2] + box[3])/4)cv.circle(frame, (box[0]+int(box[2]/2), box[1]+int(box[3]/2)), rr-4, color, 2)cv.putText(frame, class_list[class_ids[index]], (box[0] + int(box[2] / 2), box[1] + int(box[3] / 2)), cv.FONT_HERSHEY_SIMPLEX, .5, (0, 0, 0))cv.putText(frame, "gloomyfish@2024", (20, 45), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

cv.imshow("YOLO11+OpenVINO2024 RBC(Red Blood Cell) Count", frame)cv.imwrite("D:/rbc_result.jpg", frame)cv.waitKey(0)






OpenCV4系统化学习


深度学习系统化学习

推荐阅读

OpenCV4.8+YOLOv8对象检测C++推理演示







请到「今天看啥」查看全文