用 Ultralytics YOLO 训练脑肿瘤检测模型:Brain Tumor 数据集结构与 YOLO26 实战指南
本文以 Ultralytics 官方文档中的 Brain Tumor(脑肿瘤)检测数据集为主线,完整覆盖数据集的结构、类别划分、YAML 配置定义,以及使用 YOLO26 完成 100 个 epoch 训练与微调模型推理的 Python / CLI 两种实操方式。结合 brain-tumor.yaml 与框架中数据集加载源码,读者可以掌握医学影像目标检测从配置解析、自动下载数据到训练、验证和推理的完整链路。
一、数据集概述:1,116 张 MRI/CT 医学影像
Ultralytics 的 Brain Tumor 数据集是一个面向医疗影像的目标检测数据集,包含 1,116 张医学影像(MRI 磁共振与 CT 扫描),分为两个预定义的子集:
| 子集 | 图像数 | 标注 |
|---|---|---|
| Train(训练集) | 893 | 有 |
| Validation(验证集) | 223 | 有 |
每张图像标注两个类别之一:
negative:无脑肿瘤的图像positive:显示存在脑肿瘤的图像
这种二分类标注方式让检测模型既能定位肿瘤位置,也能标记未出现肿瘤的扫描图像。
该数据集支持的应用场景包括:
- 早期诊断:通过计算机视觉自动定位肿瘤,辅助医生尽早发现病灶;
- 治疗规划:精确定位肿瘤以辅助手术规划;
- 疗效监测:纵向追踪治疗过程中肿瘤变化;
- 医学研究:支撑肿瘤学与神经科学领域的科研分析。
数据集在首次使用 data="brain-tumor.yaml" 训练时会自动下载(约 4.21 MB),无需任何手动准备。数据集在 LICENSE 声明的 AGPL-3.0 许可下提供。
二、Dataset YAML:数据集配置的完整定义
所有关键配置都定义在 ultralytics/cfg/datasets/brain-tumor.yaml 中,文件内容如下:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# Brain-tumor dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/brain-tumor
# Example usage: yolo train data=brain-tumor.yaml
# parent
# ├── ultralytics
# └── datasets
# └── brain-tumor ← downloads here (4.21 MB)
# 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: brain-tumor # dataset root dir
train: images/train # train images (relative to 'path') 893 images
val: images/val # val images (relative to 'path') 223 images
# Classes
names:
0: negative
1: positive
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/brain-tumor.zip
各配置项含义:
| 配置项 | 取值 | 说明 |
|---|---|---|
path |
brain-tumor |
数据集根目录名。相对路径会解析到全局数据集目录(DATASETS_DIR,默认为 datasets/ 下) |
train |
images/train |
训练图像目录,相对 path,含 893 张图 |
val |
images/val |
验证图像目录,相对 path,含 223 张图 |
names |
0: negative、1: positive |
类别索引到名称的映射,nc 由框架自动推导为 2 |
download |
assets 的 zip 地址 | 数据缺失时的自动下载地址 |
框架如何解析这份 YAML
训练入口在 ultralytics/engine/trainer.py 的 BaseTrainer.get_dataset() 中:当 task 为 detect 时,调用 check_det_dataset(self.args.data) 完成数据集的检查与解析。
check_det_dataset 的核心逻辑位于 ultralytics/data/utils.py,对本文档中的 brain-tumor.yaml 而言,关键行为有:
- 裸名称自动补全:传入
data="brain-tumor"时会自动尝试补为brain-tumor.yaml(源码中允许coco8 -> coco8.yaml这类写法); - 字段校验:要求
train与val两个键必须存在,names与nc至少提供其一,并保证两者长度一致——brain-tumor.yaml 只提供names,框架自动设置data["nc"] = len(data["names"])即 2; - 路径解析:若
path是相对路径且本地不存在,会回落到DATASETS_DIR(由SETTINGS["datasets_dir"]决定,见 ultralytics/utils/init.py),并把train/val拼接为绝对路径; - 自动下载:当验证集路径不存在且
download字段以http开头、以.zip结尾时,调用safe_download下载并解压到DATASETS_DIR——这就是文档所说"首次训练自动下载 4.21 MB"的实现来源; - 字体检查:按
names是否为纯 ASCII 选择下载Arial.ttf或Arial.Unicode.ttf,用于后续结果可视化。
因此整个数据集"零手动安装"的体验,本质上是 YAML 的 path + download 两个字段与上述加载逻辑配合的结果。
三、训练 YOLO26:Python 与 CLI 两种用法
官方文档给出的标准训练配置是:100 个 epoch、图像尺寸 640,使用预训练权重 yolo26n.pt 启动训练(预训练模型对医学影像这类小数据集尤为重要)。
Python 方式
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="brain-tumor.yaml", epochs=100, imgsz=640)
CLI 方式
# Start training from a pretrained *.pt model
yolo detect train data=brain-tumor.yaml model=yolo26n.pt epochs=100 imgsz=640
训练参数与默认值
文档示例只显式传入了 epochs 和 imgsz,其余参数来自 ultralytics/cfg/default.yaml 的默认配置,与脑肿瘤训练相关的主要默认值有:
| 参数 | 默认值 | 说明 |
|---|---|---|
epochs |
100 | 训练轮数(本例显式指定 100) |
imgsz |
640 | 训练/验证输入边长(本例显式指定 640) |
batch |
16 | 批大小,也可用 0.0–1.0 的小数触发 AutoBatch 按显存自动选择 |
patience |
100 | 早停耐心值:验证指标连续 N 轮不提升则提前停止 |
close_mosaic |
10 | 最后 10 个 epoch 关闭 mosaic 增强 |
mosaic |
1.0 | mosaic 增强概率 |
完整的可训练参数列表见文档中 Train 参数页 的说明(对应仓库内 default.yaml 全量注释)。
关于 Mosaic 增强与医学影像
官方文档特别展示了该数据集训练批次的 Mosaiced Image 示例:Mosaicing 在训练时把多张图像拼合为一张,提高每个 batch 的多样性,使模型对不同尺寸、形状和位置的肿瘤泛化更好。这也是为什么 close_mosaic=10 这个默认参数值得留意——它在训练末期关闭拼图,让模型在接近真实单图分布的状态下完成收敛,对肿瘤这种边界敏感的目标定位通常有益。
四、微调后模型的推理(Inference)
训练完成后(例如产物 best.pt),可以直接加载微调模型对脑肿瘤扫描做推理:
Python 方式
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/best.pt") # load a brain-tumor fine-tuned model
# Inference using the model
results = model.predict("https://ultralytics.com/assets/brain-tumor-sample.jpg")
CLI 方式
# Start prediction with a finetuned *.pt model
yolo detect predict model='path/to/best.pt' imgsz=640 source="https://ultralytics.com/assets/brain-tumor-sample.jpg"
推理输入支持本地文件路径、目录或 URL。预测结果 results 中包含边界框、类别(negative/positive)与置信度,可进一步用于区域统计或后续可视化(model.predict(..., save=True) 会保存叠加标注的结果图)。
五、验证与数据集浏览
- 验证:
yolo detect val data=brain-tumor.yaml model=path/to/best.pt可单独在 223 张验证图上评估模型; - 数据集浏览:官方建议在 Ultralytics Platform 上查看该数据集的标注叠加图、类别分布与边界框热力图,再克隆到自己的云环境训练(见 数据集总览 中的 Brain-tumor 条目)。
六、常见问题(FAQ 精编)
Q1:数据集如何划分? 1,116 张图像分为 893 张训练集与 223 张验证集,均带标注。该比例划分支持构建稳健的脑肿瘤检测模型。
Q2:如何获取数据集?
无需手动下载。首次使用 data="brain-tumor.yaml" 训练时,框架检测到本地缺失(结合上文 check_det_dataset 逻辑)后会自动从 Ultralytics 官方 assets 下载约 4.21 MB 的压缩包并解压到全局 DATASETS_DIR。
Q3:如何训练? 即第三节给出的 Python / CLI 两种方式(100 epochs、imgsz=640),完整参数清单参见 Train 页。
Q4:如何推理?
即第四节示例,加载微调后的 best.pt 对单张 MRI/CT 图或扫描目录做预测。
Q5:在哪里可以找到数据集 YAML?
仓库内 ultralytics/cfg/datasets/brain-tumor.yaml,包含 path、train、val、names 与 download 全部字段。
七、引用与致谢
数据集以 AGPL-3.0 许可发布(见 LICENSE)。若在研究或开发工作中使用该数据集,请按下式引用:
@dataset{Ultralytics_Brain_Tumor_Dataset_2023,
author = {Ultralytics},
title = {Brain Tumor Detection Dataset},
year = {2023},
publisher = {Ultralytics},
url = {https://docs.ultralytics.com/datasets/detect/brain-tumor}
}
八、小结
Brain Tumor 数据集是 Ultralytics 仓库内一个规模适中、开箱即用的医学影像目标检测基准:二分类(negative/positive)、893/223 训练验证划分、YAML 自描述 + 自动下载,使其成为验证 YOLO 系列模型在医疗场景落地路径的合适起点。按本文配置执行 yolo detect train data=brain-tumor.yaml model=yolo26n.pt epochs=100 imgsz=640 即可完成完整训练流程;需要进一步调优时,可对照 ultralytics/cfg/default.yaml 中各参数的注释逐项调整,或参考 YOLO26 模型文档 了解可用的模型规模与任务头。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00