首页 > 其他分享 >OpenCV学堂 | YOLOv8实战 | 荧光显微镜细胞图像检测

OpenCV学堂 | YOLOv8实战 | 荧光显微镜细胞图像检测

时间:2024-10-26 21:18:49浏览次数:7  
标签:box int class YOLOv8 OpenCV model cv 荧光 row

本文来源公众号“OpenCV学堂”,仅用于学术分享,侵权删,干货满满。

原文链接:YOLOv8实战 | 荧光显微镜细胞图像检测

数据集地址

该图像数据集是 U2OS 细胞高通量化学筛选的一部分,其中包含 200 种生物活性化合物的示例。治疗效果最初是使用细胞绘画测定(荧光显微镜)成像的。该数据集仅包括每种化合物的单个视场的 DNA 通道。这些图像呈现了各种核表型,代表了高通量化学扰动。该数据集的主要用途是研究分割算法,该算法可以以准确的方式分离单个细胞核实例,而不管它们的形状和细胞密度如何。该集合有大约 23,000 个手动注释的单个细胞核,以建立用于分割评估的数据集合。

https://bbbc.broadinstitute.org/BBBC039

模型训练

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

yolo train model=yolov8s.pt data=bbbc022_dataset.yaml epochs=25 imgsz=640 batch=1

导出与测试

模型导出与测试

yolo export model=bbbc022_best.pt format=onnxyolo predict model=bbbc022_best.pt source=D:\tensor_cv2.jpg

部署推理

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

ie = Core()
for device in ie.available_devices:
    print(device)

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

frame = cv.imread("D:/tensor_cv2.jpg")
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)]
    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("YOLOv8+OpenVINO2023 BBBC Count", frame)
cv.waitKey(0)
cv.destroyAllWindows()

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

标签:box,int,class,YOLOv8,OpenCV,model,cv,荧光,row
From: https://blog.csdn.net/csdn_xmj/article/details/143085520

相关文章

  • 深度学习Python停车场智能车牌识别系统opencv流量费用时间AI源码
    随着智能交通技术的发展,停车场智能车牌识别系统逐渐成为现代停车管理的重要工具。该系统利用深度学习和计算机视觉技术,实现对车辆车牌的自动检测与识别,从而提高停车场的管理效率和用户体验。系统架构与功能模块车牌检测:系统首先利用目标检测算法(如YOLO或FasterR-CNN)对停车......
  • YoloV8改进策略:卷积篇|大感受野的小波卷积
    论文介绍论文背景:近年来,人们尝试增大卷积神经网络(CNNs)的核大小以模仿视觉转换器(ViTs)自注意力模块的全局感受野,但这种方法很快便达到了上限并饱和。论文提出了一种新的解决方案,即利用小波变换(WT)获得非常大的感受野。WTConv层:论文提出了一种新层,称为WTConv,该层使用WT来有效地......
  • 利用飞腾派进行OpenCV开发
    实验目标:完成飞腾平台OpenCV开发。实验大纲:Mat数据结构加载、显示、保存图像读写像素RGB图像分离彩色图转灰度图Mat数据结构Mat是一个类,由两个数据部分组成:矩阵头(大小,通道,数据类型等)和数据块(像素值)。创建示例如下:Matimg;//创建无初始化矩阵Matimg1(2,3,......
  • Python OpenCV图像复原
    文章目录一、理论背景二、去噪方法三、具体实现步骤四、模糊处理(可选)五、注意事项PythonOpenCV图像复原是一个涉及去除噪声、模糊等失真的过程,旨在恢复图像的原始质量。以下是一个详细的案例教程,包括理论背景和具体实现步骤。一、理论背景图像噪声:图像噪声是图......
  • <项目代码>YOLOv8火焰烟雾识别<目标检测>
     YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如FasterR-CNN),YOLOv8具有更高的检测速度和实时性。1.数据集介绍数据集详情可以参考博主写的文章<数据集>YOLO火焰烟雾......
  • 搭建YOLOv8实现裂缝缺陷识别全流程教程:从源码下载到模型测试
    教程目的:yolov8的安装配置到训练模型,并完成使用模型进行识别前提注意:yolov8要求Python需要版本必需大于等于3.10,我用的Python3.12.3,这里分享下Python3.12.3的安装器=>夸克网盘分享以及教程中用到的yolov8源码、权重文件、GPU配套版本的Torch=> 夸克网盘分享大致步骤1.......
  • 【C#】搭建环境之CSharp+OpenCV
    在我们使用C#编程中,对图片处理时会用到OpenCV库,以及其他视觉厂商提供的封装库,这里因为OpenCV是开源库,所以在VS资源里可以直接安装使用,这里简单说明一下搭建的步骤及实现效果,留存。1.项目创建1.1创建Windows应用窗体打开vs2022程序,我电脑安装的是这个版本,但对本次说明......
  • 20个基础到进阶版的OpenCV4.9.0趣味项目(C++版)(八)——石头、剪刀、布识别手势识别(传统方
    20个基础到进阶版的OpenCV4.9.0趣味项目(C++版)(八)——石头、剪刀、布识别手势识别(传统方法)文章目录20个基础到进阶版的OpenCV4.9.0趣味项目(C++版)(八)——石头、剪刀、布识别手势识别(传统方法)一、引言二、核心知识1.YCrCb空间转换和提取1)YCrCb色彩空间:2)分割:2.凸包凸包计算......
  • 从零开始学习 YOLOv8:目标检测与车牌识别实例
    1.引言什么是目标检测?目标检测就像是在寻找隐藏的宝藏。想象一下,你在一个巨大的图画里,里面藏着无数的物体,而你的任务是迅速找到其中的几样,比如说,一只流浪的小猫和一辆红色的小轿车。目标检测就是让计算机“眼明手快”,准确找出这些目标,甚至告诉你“喵,那个小猫正躲在花丛......
  • 2024小白YOLOv8环境配置
    目录前言一、PyCharm的安装1.下载 2.安装步骤二、配置YOLOv8的虚拟环境1.Anaconda中创建一个虚拟环境 2.Pycharm中使用虚拟环境(1)下载YOLOv8开源包(要挂梯子)(2)在设置中找到解释器,选择创建好的YOLOv8环境(3)配置终端的启动路径(4)启动终端,下载YOLOv8依赖包 (5)下载权重......