DS数据代找

verify-tag5000 张训练验证 + 1800 张测试乳腺 X 光图像数据集 | 224×224×3 格式 + Density1-4 密度 + 良恶性标签 | 乳腺癌检测模型训练 | 医学影像 / 计算机视觉

乳腺癌检测模型训练医学影像计算机视觉 1800 张测试乳腺 X 光图像数据集

1.9

已售 0
1.36MB

数据标识:D17603480504518384

发布时间:2025/10/13

数据描述

一、引言

在乳腺癌早期筛查领域,乳腺 X 光影像(钼靶) 是临床常用的核心检测手段 —— 通过分析乳腺密度分布与病变特征,可提前发现良性结节或恶性肿瘤,显著提升患者生存率。当前,基于计算机视觉的乳腺癌检测模型开发面临两大核心痛点:一是高质量标注数据稀缺,多数数据集仅包含良恶性分类,缺乏临床关键的 “乳腺密度分级” 标签(Density1-D4),导致模型难以贴合实际诊疗逻辑;二是数据规格不统一,不同来源的乳腺 X 光图像分辨率、通道数差异大,预处理阶段需额外投入大量时间做格式适配;三是测试场景缺失,较少数据集提供未标注测试图像,无法模拟模型在真实临床 “无标注推理” 场景下的泛化能力。
本乳腺 X 光图像数据集正是针对上述痛点设计:提供约 6800 张统一规格(224×224×3)的图像,其中 5000 张已标注(含 Density1-D4 密度分级 + 良恶性分类)用于训练验证,1800 张未标注图像用于测试,既满足模型全流程开发需求,又能支撑临床级检测任务的落地验证,为乳腺癌检测计算机视觉模型提供 “数据规模 + 标签维度 + 场景适配” 的三重保障。

二、内容主体

(一)数据集核心信息

通过表格直观呈现关键参数,帮助用户快速判断数据与模型需求的匹配度,所有信息均量化、明确:
信息类别 具体内容(量化、明确)
基础属性 数据总量:约 6800 张(训练验证集约 5000 张 + 测试集约 1800 张);数据类型:乳腺 X 光彩色图像;采集用途:乳腺癌检测模型的训练、验证与无标注测试
采集信息 采集场景:乳腺 X 光筛查临床场景;采集环境:标准医学影像拍摄环境(参数未公开);采集设备:未公开(符合临床乳腺 X 光拍摄标准)
标注情况 标注范围:仅训练验证集标注,测试集未标注;标注类型:双维度标注(1. 密度分级:Density1-Density4,数字越大密度越高;2. 病变性质:良性 Benign / 恶性 Malignant);标注精度:未公开(默认符合临床标注规范)
格式与规格 图像分辨率:224 像素 ×224 像素;通道数:3 通道(RGB 格式);文件格式:未明确(推测为 JPG/PNG 等主流图像格式);适配工具:OpenCV、PIL(读取),PyTorch/TensorFlow(模型输入)
数据划分 训练验证集:约 5000 张(已标注,具体训练 / 验证比例可用户自行划分,推荐 7:3);测试集:约 1800 张(未标注,用于模型泛化能力评估)

(二)数据集核心优势

本数据集的核心竞争力在于 “标签维度全 + 场景覆盖准 + 使用门槛低”,完美匹配乳腺癌检测计算机视觉模型的开发需求,具体优势如下:
  1. 双维度标签体系,贴合临床诊疗逻辑数据集不仅包含 “良性 / 恶性” 核心分类标签,还新增临床关键的 “乳腺密度分级”(Density1-D4)—— 乳腺密度是乳腺癌筛查的重要参考指标(密度越高,病变检出难度越大),双标签结合可让模型同时学习 “密度特征” 与 “病变特征”,避免单一分类标签与临床实际需求脱节,提升模型的临床实用价值。
  2. 数据规模充足,覆盖模型全开发流程
  • 训练验证阶段:5000 张已标注图像可支撑模型从 “初始训练” 到 “参数调优” 的全周期需求,避免因数据量不足导致的模型过拟合;
  • 测试阶段:1800 张未标注图像模拟真实临床场景(医生仅获取图像,无预设标签),可用于评估模型 “无标注推理” 的稳定性,填补多数数据集 “仅关注训练精度,忽视测试泛化” 的短板。
  1. 规格统一,大幅降低预处理成本
     
    所有图像均统一为 224×224×3 格式,无需用户手动调整分辨率或通道数(如将单通道灰度图转为 3 通道、将不同尺寸图像 resize 至统一规格),可直接适配 ResNet、EfficientNet、ViT 等主流视觉模型的输入要求,预计节省 40% 以上的预处理时间,让开发者聚焦模型设计而非数据格式适配。

(三)数据应用全流程指导(计算机视觉模型开发)

1. 数据预处理(核心:读取 + 标准化 + 划分)

功能目标:将图像转为模型可输入的张量格式,消除像素值量级差异,划分训练 / 验证集,为模型训练做准备。步骤 + 代码示例(Python)
# 1. 导入工具库
import os
import cv2
import numpy as np
from sklearn.model_selection import train_test_split
from torch.utils.data import Dataset, DataLoader

# 2. 定义数据路径与标签映射(需根据实际文件结构调整)
train_val_dir = "path/to/train_validation_images"  # 5000张已标注图像路径
test_dir = "path/to/test_images"  # 1800张未标注图像路径

# 标签映射:密度分级(D1-D4)+良恶性(B=Malignant,M=Benign)→ 统一标签(如D1B=0,D1M=1...D4M=7)
label_map = {
    "D1B": 0, "D1M": 1,
    "D2B": 2, "D2M": 3,
    "D3B": 4, "D3M": 5,
    "D4B": 6, "D4M": 7
}

# 3. 自定义数据集类(读取图像+标注)
class BreastXRayDataset(Dataset):
    def __init__(self, image_dir, label_map=None, is_test=False, transform=None):
        self.image_dir = image_dir
        self.image_names = os.listdir(image_dir)
        self.label_map = label_map
        self.is_test = is_test  # 测试集无标注,返回图像名
        self.transform = transform

    def __len__(self):
        return len(self.image_names)

    def __getitem__(self, idx):
        img_name = self.image_names[idx]
        img_path = os.path.join(self.image_dir, img_name)
        
        # 读取图像(224×224×3),OpenCV默认BGR,转为RGB
        img = cv2.imread(img_path)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # 适配多数模型的RGB输入要求
        img = np.array(img, dtype=np.float32)
        
        # 标准化:像素值从[0,255]转为[0,1](或用ImageNet均值方差标准化,视模型而定)
        img = img / 255.0
        
        # 处理标签(训练验证集)或返回图像名(测试集)
        if not self.is_test:
            # 假设图像名包含标签(如"D1B_001.jpg"),提取标签部分
            label_str = img_name.split("_")[0]  # 需根据实际命名规则调整
            label = self.label_map[label_str]
            return img.transpose(2, 0, 1), label  # 转为[C, H, W]格式(适配PyTorch)
        else:
            return img.transpose(2, 0, 1), img_name

# 4. 划分训练集与验证集(7:3)
# 先获取训练验证集所有图像名与标签
all_labels = [label_map[img_name.split("_")[0]] for img_name in os.listdir(train_val_dir)]
train_names, val_names, train_labels, val_labels = train_test_split(
    os.listdir(train_val_dir), all_labels, test_size=0.3, random_state=42, stratify=all_labels
)

# 5. 创建DataLoader(批量加载数据)
train_dataset = BreastXRayDataset(
    image_dir=train_val_dir, label_map=label_map, is_test=False, transform=None
)
val_dataset = BreastXRayDataset(
    image_dir=train_val_dir, label_map=label_map, is_test=False, transform=None
)
test_dataset = BreastXRayDataset(
    image_dir=test_dir, label_map=None, is_test=True, transform=None
)

train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False, num_workers=4)
test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False, num_workers=4)
 
关键说明:若使用预训练模型(如 ResNet50),建议将标准化改为 “ImageNet 均值方差”(均值 =[0.485, 0.456, 0.406],方差 =[0.229, 0.224, 0.225]),避免预训练权重与数据分布不匹配;图像名标签提取逻辑需根据实际文件命名规则调整(如 “D2M_123.png” 需确保标签部分提取准确)。

2. 核心任务演示(2 个主流场景)

任务 1:乳腺图像 8 分类(D1B-D4M)
模型选择:EfficientNet-B0(轻量高效,适合医学影像小样本场景,可通过迁移学习提升性能)代码示例(PyTorch)
import torch
import torch.nn as nn
from torch.optim import Adam
from torchvision.models import efficientnet_b0

# 1. 加载预训练模型并修改输出层(原输出1000类,改为8类)
model = efficientnet_b0(pretrained=True)  # 加载ImageNet预训练权重
in_features = model.classifier[1].in_features
model.classifier[1] = nn.Linear(in_features, 8)  # 8类:D1B-D4M
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

# 2. 定义损失函数与优化器
criterion = nn.CrossEntropyLoss()  # 多分类交叉熵损失
optimizer = Adam(model.parameters(), lr=1e-4)  # 学习率1e-4,平衡收敛与震荡

# 3. 模型训练(简化版,实际需加早停、学习率衰减)
num_epochs = 20
for epoch in range(num_epochs):
    model.train()
    train_loss = 0.0
    train_acc = 0.0
    
    # 训练循环
    for imgs, labels in train_loader:
        imgs, labels = imgs.to(device), labels.to(device)
        
        # 前向传播
        outputs = model(imgs)
        loss = criterion(outputs, labels)
        
        # 反向传播与优化
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
        # 计算训练损失与准确率
        train_loss += loss.item() * imgs.size(0)
        _, preds = torch.max(outputs, 1)
        train_acc += torch.sum(preds == labels.data)
    
    # 计算epoch平均损失与准确率
    train_loss = train_loss / len(train_loader.dataset)
    train_acc = train_acc.double() / len(train_loader.dataset)
    
    # 验证阶段
    model.eval()
    val_loss = 0.0
    val_acc = 0.0
    with torch.no_grad():
        for imgs, labels in val_loader:
            imgs, labels = imgs.to(device), labels.to(device)
            outputs = model(imgs)
            loss = criterion(outputs, labels)
            
            val_loss += loss.item() * imgs.size(0)
            _, preds = torch.max(outputs, 1)
            val_acc += torch.sum(preds == labels.data)
    
    val_loss = val_loss / len(val_loader.dataset)
    val_acc = val_acc.double() / len(val_loader.dataset)
    
    # 打印日志
    print(f"Epoch {epoch+1}/{num_epochs}")
    print(f"Train Loss: {train_loss:.4f}, Train Acc: {train_acc:.4f}")
    print(f"Val Loss: {val_loss:.4f}, Val Acc: {val_acc:.4f}\n")

# 4. 测试集推理(无标注,保存预测结果)
model.eval()
test_preds = []
test_img_names = []
with torch.no_grad():
    for imgs, img_names in test_loader:
        imgs = imgs.to(device)
        outputs = model(imgs)
        _, preds = torch.max(outputs, 1)
        
        test_preds.extend(preds.cpu().numpy())
        test_img_names.extend(img_names)

# 保存测试集预测结果(图像名+预测标签)
result_df = pd.DataFrame({
    "image_name": test_img_names,
    "predicted_label": [list(label_map.keys())[list(label_map.values()).index(p)] for p in test_preds]
})
result_df.to_csv("breast_xray_test_predictions.csv", index=False)
 
关键说明:医学影像模型建议使用 “迁移学习”(加载预训练权重),避免因数据量不足导致过拟合;训练过程中可加入 “早停机制”(如 val_loss 连续 3 个 epoch 不下降则停止训练),防止模型过度训练;8 分类任务的评估需关注 “每类准确率”(如 D4M 类样本可能较少,需单独分析其召回率,避免漏诊恶性病例)。

3. 效果可视化与部署建议

  • 效果可视化
    1. 混淆矩阵:展示 8 分类或二分类任务中 “每类预测正确 / 错误的数量”,重点关注恶性类(M)的误判情况;
    2. 图像预测标注:选取测试集中的典型图像(如 D4M 恶性高密度、D1B 良性低密度),在图像上标注 “预测标签 + 置信度”,直观展示模型判断逻辑;
    3. 学习曲线:绘制训练 / 验证集的损失与准确率曲线,判断模型是否过拟合(如训练准确率持续上升,验证准确率下降则为过拟合)。
  • 部署建议
    1. 模型轻量化:若需部署到基层医院的边缘设备(如超声仪器),可使用 TensorRT 对模型量化加速(如从 FP32 转为 FP16),降低推理 latency;
    2. 临床辅助定位:建议在输出 “良恶性” 结果的同时,标注 “可疑病变区域”(可结合目标检测模型如 YOLOv8 定位病变),为医生提供更具体的参考;
    3. 合规性:使用前需通过医学伦理审核,明确模型仅为 “临床辅助工具”,不可替代医生最终诊断。

(四)数据集样例展示(8 类图像说明)

图像类别 类别含义 核心特征描述
D1B Density1(低密度)+ 良性 乳腺组织密度低,脂肪成分多,图像整体偏亮,无明显异常阴影,良性结节边界清晰
D2B Density2(中低密度)+ 良性 乳腺组织含少量纤维腺体,密度中等,良性结节呈圆形或椭圆形,无毛刺边缘
D3B Density3(中高密度)+ 良性 乳腺组织纤维腺体成分较多,密度较高,良性病变(如囊肿)呈均匀低密度影
D4B Density4(高密度)+ 良性 乳腺组织密度极高,纤维腺体占比大,良性结节在高密度背景下较难识别,需结合边界特征
D1M Density1(低密度)+ 恶性 低密度背景下,恶性肿瘤呈不规则阴影,边缘有毛刺,内部密度不均
D2M Density2(中低密度)+ 恶性 中低密度背景中,恶性病变表现为 “星芒状” 阴影,伴随局部结构扭曲
D3M Density3(中高密度)+ 恶性 中高密度背景下,恶性肿瘤与周围组织密度差异较小,需通过 “边界模糊”“钙化点” 识别
D4M Density4(高密度)+ 恶性 极高密度背景下,恶性病变易被掩盖,常表现为局部腺体结构紊乱或微小钙化簇
标注说明:8 类图像覆盖 “密度分级(D1-D4)” 与 “病变性质(良恶性)” 的所有组合,其中 D4M(高密度恶性)是临床诊断难度最高的类别,也是模型训练的重点关注对象,需确保该类样本在训练集中的代表性(建议占比不低于 10%)。

验证报告

以下为卖家选择提供的数据验证报告:

data icon
5000 张训练验证 + 1800 张测试乳腺 X 光图像数据集 | 224×224×3 格式 + Density1-4 密度 + 良恶性标签 | 乳腺癌检测模型训练 | 医学影像 / 计算机视觉
1.9
已售 0
1.36MB
申请报告