扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

从0到1搞定医学影像分割!YOLOseg实战,不用懂复杂原理

03/17 10:11
232
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在工业级神经网络应用中,Yolo模型可能是最脍炙人口之一的模型结构,作为一种实时目标检测的革命性方案,它已经成为计算机视觉领域的标杆。

一个一个框框+目标的状态,但是事实上Yolo模型已经发展了很多的分支,例如分割与检测结合:Yolov8seg实现实例分割(Instance Segmentation) 语义分割分支,可同时输出掩码。

本期我们就介绍小白也能实现的,Yolo的实例分割检测。

1、数据集准备

首先我们需要准备我们的数据集,最近博主在进行一个医学检测项目,打算用到实例分割技术。

我们使用cmd安装Label-Studio来进行数据集准备:

pip install label-studiolabel-studio start

安装和启动label-studio

进入Label-studio之后,我们新建一个项目用来管理数据集:

导入我们需要的数据集,之后要配置一下标注配置,在Labeling Setup选择带掩码的实例分割:

添加我们要标注的名字。

接着我们开始图片的标注任务,

在标注任务中用多边形覆盖有效区域,接着导出Yolo格式的图片。

这样子我们就得到了图片和Yolo格式的标签。

2、环境准备

pip install --upgrade pippip install ultralytics torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118pip install opencv-python numpy pandas matplotlib

使用pip命令安装Pytorch环境和ultralytics即Yolo官方库,接着我们需要设置一下我们的目录:

path: F:CodePythonYoloAntibacterial zone mask train: data/images/train   val:   data/images/valnc: 2names:0: Area1: Yaoping

dataset.yaml

创建一个yaml文件用来配置数据集。

这个dataset的对应文件目录如上图所示,接着我们设置编写训练文件:

import osimport torchimport multiprocessingfrom pathlib import Pathfrom ultralytics import YOLO
CONFIG = {    "data":         "dataset.yaml",    # 模型:使用分割版本    "model":        "yolov8n-seg.pt",    # 训练基本参数    "epochs":       300,    "imgsz":        640,    "batch":        18,    "workers":      4,}def run():
    model = YOLO(CONFIG["model"])
    results = model.train(        data=CONFIG["data"],        epochs=CONFIG["epochs"],        imgsz=CONFIG["imgsz"],        batch=CONFIG["batch"],        workers=CONFIG["workers"],        val=True,        verbose=True,        plots=True,      # 保存训练曲线图        save=True,       # 保存 best.pt 和 last.pt        save_period=50,  # 每 50 轮额外保存一次检查点    )
if __name__ == "__main__":    multiprocessing.freeze_support()    run()

Train.py

构建一个基本的能够训练的脚本,接着开始模型训练,训练的结果会保存到run文件夹中。

3、模型查看与使用

等待模型训练完可以查看模型的训练结果,例如损失函数曲线:

在Weights文件夹中我们可以拿到我们的pt格式的yolo模型:

可以看到这个模型是一个640*640*3的RGB888输入,1*38*8400,8400个锚框的二分类带掩码的输出。

import cv2from ultralytics import YOLOdef run_inference():    #加载模型    model = YOLO("best.pt")    source = "images/0399bb1a-0260315082348_5_223.jpg",    results = model.predict(        source=source,        conf=0.25,  # 置信度过滤        save=True,  # 设置为 True 自动保存结果图        name="task_1",        exist_ok=True,        visualize=False,        line_width=2  # 增强结果图的可读性    )
if __name__ == "__main__":    run_inference()

简单的写一个测试脚本,可以看到模型的运行效果如下所示:

相关推荐