怎么做百度口碑网站,如何理解电子商务网站建设与管理,盐城市城乡和住房建设厅网站,怎么打击对手网站排名血细胞计数是医学上一种重要的检测手段#xff0c;用于评估患者的健康状况#xff0c;诊断疾病#xff0c;以及监测治疗效果。而目标检测是一种计算机视觉技术#xff0c;用于在图像中识别和定位特定的目标。在血细胞计数中#xff0c;目标检测技术可以发挥重要作用。 首先… 血细胞计数是医学上一种重要的检测手段用于评估患者的健康状况诊断疾病以及监测治疗效果。而目标检测是一种计算机视觉技术用于在图像中识别和定位特定的目标。在血细胞计数中目标检测技术可以发挥重要作用。 首先血细胞计数通常需要处理大量的血液样本手动计数每个细胞既耗时又容易出错。使用目标检测算法可以自动识别和计数图像中的血细胞大大提高了计数的准确性和效率。 其次不同的血细胞如红细胞、白细胞和血小板具有不同的形态和大小这使得使用传统的图像处理方法进行区分和计数变得困难。目标检测算法可以通过训练识别不同血细胞的特征准确地区分和计数各种血细胞。 此外目标检测算法还可以处理一些特殊情况如细胞重叠、不规则形状、染色不均等。这些情况可能会影响手动计数的准确性和可靠性。 最后使用目标检测进行血细胞计数可以帮助医生更准确地分析和解读血液样本从而为患者提供更准确的诊断和治疗方案。这有助于提高医疗质量和患者满意度。 综上所述使用目标检测对血细胞计数具有重要的意义可以提高计数的准确性和效率为医生提供更可靠的诊断依据有助于提高医疗质量。 本文介绍使用yolov8进行血细胞检测的方法其效果如下图 一、安装YoloV8
yolov8官方文档主页 - Ultralytics YOLOv8 文档
安装部分参考官方安装教程
二、数据集准备
本文使用的数据集是BCCD数据集该数据集包含3个类别白细胞WBC、红细胞RBC和血小板Platelets。该数据集共364张图片其中训练集包含205张图片验证集包含87张图片测试集包含72张图片。
示例图片如下 该数据集为VOC格式本文提供转换好的BCCD数据集YOLO8格式可以直接用于训练Yolov8模型。BCCD-yolov8数据集
三、模型训练
1、数据集配置文件
在ultralytics/ultralytics/cfg/datasets目录下添加bccd.yaml添加以下内容path修改为自己的路径
# Ultralytics YOLO , AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train datacoco.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco ← downloads here (20.1 GB)# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: datasets/medical/BCCD-yolov8 # dataset root dir
train: images/train # train images (relative to path) 118287 images
val: images/val # val images (relative to path) 5000 images
test: images/test # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794# Classes
names:0: WBC1: RBC2: Platelets
2、修改模型配置文件
在ultralytics/ultralytics/cfg/models/v8目录下添加yolov8n_neu.yaml添加以下内容
# Ultralytics YOLO , AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 3 # number of classes
scales: # model compound scaling constants, i.e. modelyolov8n.yaml will call yolov8.yaml with scale n# [depth, width, max_channels]n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers, 3157200 parameters, 3157184 gradients, 8.9 GFLOPss: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients, 28.8 GFLOPsm: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients, 79.3 GFLOPsl: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPsx: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, nearest]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2f, [512]] # 12- [-1, 1, nn.Upsample, [None, 2, nearest]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 3, C2f, [256]] # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]] # cat head P4- [-1, 3, C2f, [512]] # 18 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]] # cat head P5- [-1, 3, C2f, [1024]] # 21 (P5/32-large)- [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)3、训练模型
使用如下命令训练模型相关路径更改为自己的路径建议绝对路径
yolo detect train projectmedical_output namebccd_yolo8 exist_okTrue optimizerauto valTrue ampTrue epochs100 imgsz640 modelultralytics/cfg/models/medical/yolov8.yaml dataultralytics/cfg/datasets/bccd.yaml4、验证模型
使用如下命令验证模型相关路径根据需要修改
yolo detect val modelmedical_output/bccd_yolo8/weights/best.pt dataultralytics/ultralytics/cfg/datasets/bccd.yaml其精度如下
# Ultralytics YOLOv8.0.222 Python-3.9.18 torch-2.1.2cu118 CUDA:0 (NVIDIA GeForce RTX 4090, 24210MiB)
# YOLOv8 summary (fused): 168 layers, 3006233 parameters, 0 gradients, 8.1 GFLOPs
# val: Scanning /home/yq/aitools/datasets/medical/BCCD-yolov8/labels/val.cache... 87 images, 0 backgrounds, 0 corrupt: 100%|██████████| 87/87 [00:00?, ?it/s]
# Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 6/6 [00:1000:00, 1.81s/it]
# all 87 1137 0.833 0.901 0.908 0.612
# WBC 87 87 0.971 1 0.987 0.776
# RBC 87 967 0.745 0.832 0.86 0.604
# Platelets 87 83 0.783 0.87 0.878 0.456
# Speed: 2.3ms preprocess, 6.2ms inference, 0.0ms loss, 6.4ms postprocess per image
四、推理
训练好了模型可以使用如下代码实现推理将权重放到同级目录
from PIL import Image
from ultralytics import YOLO# 加载预训练的YOLOv8n模型
model YOLO(weights/best.pt)image_path BloodImage_00014.jpg
results model(image_path) # 结果列表# 展示结果
for r in results:im_array r.plot() # 绘制包含预测结果的BGR numpy数组im Image.fromarray(im_array[..., ::-1]) # RGB PIL图像im.show() # 显示图像im.save(results.jpg) # 保存图像
本文提供训练好的权重以及推理代码【BCCD_yolov8训练结果及预测代码】