【第五章:计算机视觉-计算机视觉在医学领域中应用】1.生物细胞检测实战-(3)基于YOLO的细胞检测实战:数据读取、模型搭建、训练与测试

部署运行你感兴趣的模型镜像

第五章:计算机视觉-计算机视觉在医学领域中应用

第一部分:生物细胞检测实战

第三节:基于YOLO的细胞检测实战:数据读取、模型搭建、训练与测试


一、项目背景

在医学影像分析中,生物细胞检测是一个极具挑战性的任务。显微镜图像中的细胞往往具有以下特征:

  • 形态差异显著(圆形、椭圆、不规则形)

  • 边界模糊、重叠严重

  • 光照和染色条件复杂

传统的图像分割或阈值法难以准确检测出每个细胞的位置与类别,因此我们采用深度学习中的YOLO目标检测算法,实现自动化细胞检测。

本节将基于 YOLOv8 架构,完成从数据准备 → 模型搭建 → 训练 → 测试 → 可视化的完整流程。


二、项目整体流程

本项目完整流程如下图所示:

显微镜图像 → 数据标注(Labelme/CVAT) → COCO格式数据集  
        ↓
数据加载(DataLoader) → YOLOv8模型构建 → 模型训练(Train)  
        ↓
模型测试(Test) → 性能评估(mAP, Precision, Recall) → 可视化(Detection Result)

三、数据集准备

1. 数据来源

我们使用公开的 Cell Detection Dataset (CBB) 或自定义采集的显微镜图像作为训练集。
数据格式如下:

cell_dataset/
 ├── images/
 │   ├── train/
 │   ├── val/
 │   └── test/
 ├── labels/
 │   ├── train/
 │   ├── val/
 │   └── test/
 └── data.yaml
2. 标注格式

YOLO数据标签采用TXT格式,每一行代表一个细胞目标:

<class_id> <x_center> <y_center> <width> <height>

所有坐标均为相对坐标(范围0~1)。
例如:

0 0.523 0.612 0.075 0.084
0 0.712 0.455 0.068 0.090
3. 数据配置文件(data.yaml)
train: ./cell_dataset/images/train
val: ./cell_dataset/images/val
test: ./cell_dataset/images/test

nc: 1
names: ['cell']

四、环境搭建

1. 安装依赖
pip install ultralytics
pip install opencv-python matplotlib
2. 检查GPU环境
import torch
print("CUDA Available:", torch.cuda.is_available())

输出为 True 则说明可使用GPU加速训练。


五、数据读取模块搭建

YOLO框架自带了数据加载模块(torch.utils.data.Dataset 封装),我们也可以手动验证加载情况。

from ultralytics import YOLO
import cv2
import matplotlib.pyplot as plt

# 载入数据样本查看
img_path = 'cell_dataset/images/train/sample1.jpg'
img = cv2.imread(img_path)[:, :, ::-1]
plt.imshow(img)
plt.title("Sample Cell Image")
plt.show()

这一步的目的是确认图片路径和标注是否正确加载。


六、模型搭建

YOLOv8 提供了多个模型版本(n/s/m/l/x),我们在实验中选择轻量化版本:

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov8n.pt')

# 修改检测头类别数量
model.model[-1].nc = 1   # 仅检测cell类

七、模型训练

1. 启动训练
yolo task=detect mode=train model=yolov8n.pt data=cell_dataset/data.yaml epochs=100 imgsz=640 batch=16

主要参数解释:

  • task=detect:目标检测任务

  • epochs=100:训练轮数

  • imgsz=640:输入图像尺寸

  • batch=16:每批训练样本数量

2. 训练过程输出

训练过程中会输出如下指标:

指标含义
box_loss边界框定位误差
cls_loss分类误差
dfl_loss边界框分布损失
mAP50IoU=0.5下的平均精度
mAP50-95不同IoU下的平均精度

可视化的 loss / mAP 曲线如下所示:

📊 训练曲线图(Loss 与 mAP 变化)
(可使用 matplotlib 绘制或查看 YOLO 输出目录中的 results.png

from PIL import Image
img = Image.open('runs/detect/train/results.png')
img.show()

八、模型测试与推理

训练完成后,可使用以下命令进行推理测试:

yolo task=detect mode=predict model=runs/detect/train/weights/best.pt source=cell_dataset/images/test/

执行后,检测结果将保存在:

runs/detect/predict/

我们可以可视化测试结果:

from IPython.display import Image
Image(filename='runs/detect/predict/sample1.jpg', width=600)

九、模型性能评估

YOLO框架自动计算各项指标(Precision、Recall、mAP)。
在医学细胞检测中,一般重点关注:

  • Precision(查准率):检测出的目标中有多少是真实细胞;

  • Recall(召回率):实际存在的细胞中有多少被检测出;

  • mAP(平均精度):综合衡量模型检测性能。

示例结果如下:

指标数值
Precision0.96
Recall0.91
mAP@0.50.94
mAP@0.5:0.950.87

十、模型部署与应用

在医学场景中,部署环节尤为重要。YOLOv8 模型可以导出为多种格式,适配不同硬件平台:

yolo export model=best.pt format=onnx
yolo export model=best.pt format=engine  # TensorRT

部署示例(ONNX Runtime推理):

import onnxruntime as ort
import cv2
import numpy as np

session = ort.InferenceSession("best.onnx")
img = cv2.imread("test_cell.jpg")
# 预处理与推理略

十一、小结

通过本节的实战,我们完成了:

  1. 医学细胞检测任务的数据集准备;

  2. 使用YOLOv8模型进行训练与推理;

  3. 评估了模型在细胞检测中的性能;

  4. 实现了可部署的推理模型。

YOLO凭借高效的结构与实时性,为自动化细胞分析提供了强大工具,极大提升了病理分析和生物实验的效率。

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值