DS数据代找

22 万 + 标记细胞核 NuCLS 数据集 1744 条目 + 3 级分类标注 + 6 折叠分割 | 乳腺癌细胞核检测 / 分类 / 分割 |

乳腺癌细胞核检测医学影像 / 计算机视觉22 万 + 标记细胞核 NuCLS 数

9.9

已售 0
3.05GB

数据标识:D17604257547430293

发布时间:2025/10/14

数据描述

一、引言

在乳腺癌病理诊断中,细胞核形态分析是判断病灶良恶性的核心依据 —— 病理医生需手动识别、标注切片中的细胞核类型(如肿瘤细胞、淋巴细胞),但该过程存在两大关键痛点:一是效率极低,单张数字病理切片(分辨率常达数万像素)的细胞核标注需耗时 2-4 小时,难以满足大规模临床样本分析需求;二是标注一致性差,不同医生对 “不典型细胞核” 的分类标准存在差异,Kappa 系数常低于 0.7,导致算法训练数据的标签噪声大;此外,现有细胞核数据集多存在 “规模小(万级以下)”“标注维度单一(仅检测无分类)”“未考虑机构成像差异” 等问题,无法支撑算法在不同医院的泛化应用。
NuCLS 数据集正是针对上述痛点设计:基于 TCGA 乳腺癌影像资源,由病理学家、住院医师及医学生联合标注,涵盖 22 万 + 标记细胞核,当前修正单评者子集含 59485 个细胞核标注;不仅提供 “检测(边界框)+ 分类(3 级标签)+ 分割(掩码)” 全维度数据,还按来源医院划分为 6 个折叠,确保算法能适应不同机构的成像差异。其核心目标是为乳腺癌细胞核相关计算机视觉算法提供 “大规模、高权威、强泛化” 的训练基础,降低算法开发门槛。

二、内容主体

(一)数据集核心信息

通过表格直观呈现关键参数,帮助用户快速判断数据与任务的匹配度,所有信息均量化、明确:
信息类别 具体内容(量化、明确)
基础属性 总数据量:220,000 + 个标记细胞核;当前子集:修正单评者子集(59,485 个细胞核,1,744 个数据条目);数据类型:乳腺癌组织细胞核相关影像(RGB 图、掩码图等);来源关联:基于 TCGA(癌症基因组图谱)乳腺癌影像资源构建
采集与标注信息 数据来源:TCGA 乳腺癌数字病理切片;标注者:病理学家、病理学住院医师、医学生(多角色协作);标注场景:数字切片存档中的细胞核区域,聚焦乳腺癌病理关键区域
标注情况 标注类型:多任务标注(1. 检测:边界框坐标;2. 分类:3 级标签体系;3. 分割:掩码图像);标注精度:0.2 微米 / 像素(坐标标注单位);标注完整性:每个条目含 RGB 图、掩码图、可视化叠加图及完整坐标标注
格式与规格 图像规格:分辨率单位 0.2 微米 / 像素(无固定像素尺寸,依视野范围而定);数据条目构成:file_name(唯一标识)、rgb_image(高分辨率 RGB 图)、mask_image(3 通道掩码)、visualization_image(叠加图)、annotation_coordinates(坐标 + 分类标注);适配工具:OpenCV/PIL(图像读取)、PyTorch/TensorFlow(模型训练)、datasets 库(数据加载)
数据划分 划分逻辑:按来源医院分为 6 个折叠(Fold),确保覆盖不同医疗机构的成像差异;各折叠数量:
 
train_fold_1 (1481 条)/test_fold_1 (263 条)、train_fold_2 (1239 条)/test_fold_2 (505 条)、train_fold_3 (1339 条)/test_fold_3 (405 条)、train_fold_4 (1450 条)/test_fold_4 (294 条)、train_fold_5 (1467 条)/test_fold_5 (277 条)、train_fold_999 (21 条)/test_fold_999 (7 条)(调试用)

(二)数据集核心优势

本数据集的核心竞争力在于 “规模权威性 + 标注维度完整性 + 泛化保障”,完美匹配乳腺癌细胞核检测、分类、分割的算法开发需求,具体优势如下:
  1. 规模领先且标注权威,数据可靠性高数据集含 22 万 + 标记细胞核,是当前乳腺癌细胞核领域规模最大的数据集之一(远超同类数据集 PanNuke 的 19 万细胞核);标注由病理团队协作完成,且经过 “修正单评者” 校验,避免单一标注者的主观偏差 —— 相比普通数据集 “仅学生标注”,其标签与临床病理标准的一致性更高(推测 Kappa 系数≥0.85),可直接用于高要求的算法训练与验证。
  2. 3 级分类标注体系,适配多粒度任务需求标注包含 “raw_classification(13 类,如 tumor、lymphocyte,细粒度)→main_classification(7 类,如 tumor_mitotic、nonTILnonMQ_stromal,中粒度)→super_classification(4 类,如 sTIL、nonTIL_stromal,粗粒度)” 三级体系:
  • 细粒度(13 类)可用于 “特异性细胞核识别”(如区分巨噬细胞与淋巴细胞);
  • 粗粒度(4 类)可用于 “快速病理分级”(如判断肿瘤浸润淋巴细胞 sTIL 数量);
  • 多粒度标签可灵活支撑不同算法任务,无需用户额外标注。
  1. 按医院折叠分割,解决跨机构泛化难题数据划分基于 “来源医院” 而非随机分割 —— 不同医院的病理切片成像设备(如不同品牌数字扫描仪)、染色工艺存在差异,导致同一类型细胞核的图像特征不同(如 A 医院图像偏亮,B 医院偏暗)。6 个折叠的设计可让算法在 “某几家医院数据训练,另一家医院数据测试”,有效模拟真实临床中 “算法从 A 医院推广到 B 医院” 的场景,训练出泛化能力更强的模型。
  2. 数据维度全,开箱即用降低预处理成本每个数据条目包含 “RGB 原图(细胞核原始外观)+ 掩码图(分割标签,第一通道类别、第二三通道细胞核唯一 ID)+ 可视化叠加图(辅助理解标注位置)+ 坐标标注(边界框 + 多边形坐标)”,无需用户手动关联 “图像 - 标签 - 坐标”;同时支持通过 datasets 库一键加载,省去数据下载、解压、格式转换的流程,新手可 10 分钟内启动算法开发。

(三)数据应用全流程指导(计算机视觉任务)

1. 数据加载与初探(基础操作)

功能目标:通过 datasets 库快速加载数据,了解数据结构,验证数据完整性。步骤 + 代码示例(Python)
# 1. 安装依赖库(首次使用需执行)
# !pip install datasets pillow opencv-python numpy

# 2. 导入工具库
from datasets import load_dataset
import matplotlib.pyplot as plt
import cv2
import numpy as np

# 3. 加载数据集(二选一:完整数据集/调试子集)
# 加载完整修正单评者数据集(约59k细胞核,1744条目,需较多存储空间)
dataset = load_dataset("minhanhto09/NuCLS_dataset", name="default")
# 加载调试子集(仅train_fold_999/test_fold_999,28条目,快速测试)
# dataset = load_dataset("minhanhto09/NuCLS_dataset", name="debug")

# 4. 查看数据集结构(训练/测试划分、条目数量)
print("数据集拆分:", dataset.keys())  # 输出:dict_keys(['train_fold_1', 'test_fold_1', ..., 'test_fold_999'])
print("train_fold_1条目数:", len(dataset["train_fold_1"]))  # 输出:1481
print("单条数据字段:", dataset["train_fold_1"][0].keys())  # 输出:file_name, rgb_image, mask_image, ...

# 5. 可视化单条数据(RGB图+掩码图+叠加图)
sample = dataset["train_fold_1"][0]
fig, axes = plt.subplots(1, 3, figsize=(15, 5))

# RGB图(PIL格式转OpenCV格式便于显示)
rgb_img = np.array(sample["rgb_image"])
axes[0].imshow(rgb_img)
axes[0].set_title("RGB原图")
axes[0].axis("off")

# 掩码图(第一通道:类别标签;第二三通道:细胞核唯一ID)
mask_img = np.array(sample["mask_image"])
axes[1].imshow(mask_img[:, :, 0], cmap="tab10")  # 显示类别标签通道
axes[1].set_title("掩码图(类别通道)")
axes[1].axis("off")

# 可视化叠加图
vis_img = np.array(sample["visualization_image"])
axes[2].imshow(vis_img)
axes[2].set_title("RGB+掩码叠加图")
axes[2].axis("off")

plt.tight_layout()
plt.show()

# 6. 查看标注坐标与分类标签(以第一个细胞核为例)
annotations = sample["annotation_coordinates"]
print("细胞核标注数量:", len(annotations))  # 输出该条目下的细胞核总数
print("第一个细胞核标签:")
print(f"- 细粒度分类(raw):{annotations[0]['raw_classification']}")
print(f"- 中粒度分类(main):{annotations[0]['main_classification']}")
print(f"- 粗粒度分类(super):{annotations[0]['super_classification']}")
print(f"- 边界框坐标(xmin, ymin, xmax, ymax):{annotations[0]['xmin']}, {annotations[0]['ymin']}, {annotations[0]['xmax']}, {annotations[0]['ymax']}")
 
关键说明:加载完整数据集前需确保存储空间充足(推测约 50-100GB,依图像分辨率而定);掩码图的第二、三通道用于区分同一类别下的不同细胞核(如两个 tumor 细胞核,ID 不同),在分割任务中需保留该信息以避免细胞核合并;标注坐标的 “xmin/ymin/xmax/ymax” 为像素单位,需与图像尺寸匹配(若图像 resize 需同步缩放坐标)。

2. 核心任务演示(2 个典型场景)

任务 1:细胞核检测(目标检测任务)
任务目标:识别图像中每个细胞核的位置(边界框),输出其粗粒度分类(super_classification,4 类)。模型选择:YOLOv8n(轻量级目标检测模型,适合小目标(细胞核)检测,训练速度快)代码示例(基于 Ultralytics YOLO)
# 1. 安装YOLO库
# !pip install ultralytics

# 2. 数据格式转换(YOLO要求:图像+标签文件(每行为“类别ID x_center y_center w h”))
import os
from ultralytics.data.utils import autosplit

# 定义类别映射(super_classification的4类→0-3ID)
super_class_map = {
    "sTIL": 0,
    "nonTIL_stromal": 1,
    "tumor": 2,
    "other": 3  # 覆盖剩余super分类(如数据集定义的其他类别)
}

# 创建YOLO格式数据集目录
yolo_data_dir = "nucls_yolo_data"
os.makedirs(os.path.join(yolo_data_dir, "images", "train"), exist_ok=True)
os.makedirs(os.path.join(yolo_data_dir, "labels", "train"), exist_ok=True)
os.makedirs(os.path.join(yolo_data_dir, "images", "val"), exist_ok=True)
os.makedirs(os.path.join(yolo_data_dir, "labels", "val"), exist_ok=True)

# 处理train_fold_1数据(示例:取前1000条为训练,剩余为验证)
train_sample = dataset["train_fold_1"].select(range(1000))
val_sample = dataset["train_fold_1"].select(range(1000, len(dataset["train_fold_1"])))

def convert_to_yolo(sample, save_dir, split):
    for idx, data in enumerate(sample):
        # 保存RGB图像
        img = np.array(data["rgb_image"])
        img_path = os.path.join(save_dir, "images", split, f"nucls_{idx}.jpg")
        cv2.imwrite(img_path, cv2.cvtColor(img, cv2.COLOR_RGB2BGR))  # OpenCV保存需BGR格式
        
        # 生成标签文件
        label_path = os.path.join(save_dir, "labels", split, f"nucls_{idx}.txt")
        with open(label_path, "w") as f:
            for ann in data["annotation_coordinates"]:
                # 获取粗粒度类别ID
                super_cls = ann["super_classification"]
                if super_cls not in super_class_map:
                    continue  # 跳过未定义类别
                cls_id = super_class_map[super_cls]
                
                # 图像尺寸(H, W)
                h, w = img.shape[0], img.shape[1]
                # 边界框坐标转换(xmin, ymin, xmax, ymax → x_center, y_center, w, h,归一化到0-1)
                x_center = (ann["xmin"] + ann["xmax"]) / (2 * w)
                y_center = (ann["ymin"] + ann["ymax"]) / (2 * h)
                bbox_w = (ann["xmax"] - ann["xmin"]) / w
                bbox_h = (ann["ymax"] - ann["ymin"]) / h
                
                # 写入标签(格式:cls_id x_center y_center w h)
                f.write(f"{cls_id} {x_center:.6f} {y_center:.6f} {bbox_w:.6f} {bbox_h:.6f}\n")

# 转换训练集与验证集
convert_to_yolo(train_sample, yolo_data_dir, "train")
convert_to_yolo(val_sample, yolo_data_dir, "val")

# 3. 编写YOLO配置文件(data.yaml)
yaml_content = f"""
path: {os.path.abspath(yolo_data_dir)}  # 数据集根路径
train: images/train  # 训练图像路径
val: images/val      # 验证图像路径

nc: 4  # 类别数量
names: ['sTIL', 'nonTIL_stromal', 'tumor', 'other']  # 类别名称
"""
with open(os.path.join(yolo_data_dir, "data.yaml"), "w") as f:
    f.write(yaml_content)

# 4. 训练YOLOv8n模型
from ultralytics import YOLO

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

# 训练(重点参数:imgsz=640(图像resize尺寸),epochs=50,batch=16,device=0(GPU))
results = model.train(
    data=os.path.join(yolo_data_dir, "data.yaml"),
    imgsz=640,
    epochs=50,
    batch=16,
    device=0,
    name="nucls_yolov8n_detection"
)

# 5. 验证模型性能(输出mAP50、召回率等指标)
val_results = model.val(data=os.path.join(yolo_data_dir, "data.yaml"), imgsz=640)
print(f"模型mAP50(目标检测关键指标):{val_results.box.map50:.4f}")
print(f"肿瘤细胞核(tumor)召回率:{val_results.box.recall[2]:.4f}")  # recall[2]对应tumor类别(ID=2)
 
关键说明:细胞核属于 “小目标”,训练时建议将imgsz设为 640 或更大(如 800),避免目标被过度压缩;需重点关注 “tumor” 类的召回率(临床需求≥0.95,避免漏检肿瘤细胞核);若训练数据不足,可使用 YOLO 的pretrained=True加载预训练权重,通过迁移学习提升性能。

验证报告

卖家暂未授权典枢平台对该文件进行数据验证,您可以向卖家

申请验证报告

data icon
22 万 + 标记细胞核 NuCLS 数据集 1744 条目 + 3 级分类标注 + 6 折叠分割 | 乳腺癌细胞核检测 / 分类 / 分割 |
9.9
已售 0
3.05GB
申请报告