Synapse腹部CT多器官分割数据集png图片+掩码图片+颜色映射表

医学图像多器官分割数据集

数据集概述

本数据集为医学图像语义分割数据集,包含来自 18 个病例 的共 2,211 张 切片图像及其对应的分割掩码,适用于多器官/多结构自动分割任务的训练与评估。

原图:

掩码图像:

掩码图像RGB格式:


基本信息

属性
总图像数 2,211 张
病例数 18 个
图像分辨率 512 × 512 像素
图像格式 PNG
图像类型 灰度图(8-bit,单通道)
分割类别数 8 类(含背景)
训练集 1,658 张(75%)
测试集 553 张(25%)

目录结构

复制代码
data/
├── images/          # 原始灰度图像(2,211 张)
├── masks/           # 标签掩码 - 索引格式(2,211 张,单通道,像素值 0-7)
├── masks_rgb/       # 标签掩码 - RGB 可视化格式(2,211 张,三通道彩色图)
├── color_map.txt    # 类别颜色映射表
├── train.txt        # 训练集文件列表
├── test.txt         # 测试集文件列表

文件命名规范

文件命名格式为:case{病例编号}_slice{切片编号}.png

  • 病例编号 :4 位数字(如 00050040
  • 切片编号 :3 位数字(如 000142

示例:case0006_slice109.png 表示第 6 号病例的第 109 张切片。


病例分布

病例 切片数 病例 切片数
case0005 117 case0026 131
case0006 131 case0027 88
case0007 163 case0028 89
case0009 149 case0030 153
case0010 148 case0031 93
case0021 143 case0033 104
case0023 96 case0034 98
case0024 124 case0037 99
--- --- case0039 90
--- --- case0040 195

分割标签与颜色映射

数据集包含 8 个分割类别,标签定义及颜色映射如下:

标签值 颜色 RGB 值 说明
0 ⬛ 黑色 (0, 0, 0) 背景
1 ⬜ 白色 (255, 255, 255) 类别 1
2 🟥 红色 (0, 0, 255) 类别 2
3 🟩 绿色 (0, 255, 0) 类别 3
4 🟦 蓝色 (255, 0, 0) 类别 4
5 🟨 黄色 (0, 255, 255) 类别 5
6 🟪 紫色 (255, 0, 255) 类别 6
7 🩵 青色 (255, 255, 0) 类别 7

注意color_map.txt 中的 RGB 值采用 OpenCV 的 BGR 格式。


掩码文件格式

数据集提供两种掩码格式:

masks/ --- 索引格式

  • 格式 :单通道灰度图(Mode: L
  • 像素值:0--7,对应上表中的标签值
  • 用途:直接用于模型训练,可作为交叉熵损失等标准分割损失的输入

masks_rgb/ --- RGB 可视化格式

  • 格式 :三通道彩色图(Mode: RGB
  • 像素值:按颜色映射表着色
  • 用途:可视化展示、结果对比、论文插图

数据集划分

数据集已预先划分好训练集与测试集:

  • train.txt:1,658 个文件名,每行一个,用于模型训练
  • test.txt:553 个文件名,每行一个,用于模型评估

文件列表中的文件名为 images/ 目录下的文件名,对应的掩码文件在 masks/masks_rgb/ 目录中具有相同的文件名。


类别分布(不均衡)

各标签在掩码中的像素占比存在明显不均衡:

标签 近似像素占比
0(背景) ~92%
5 ~1.8%
4 ~0.25%
3 ~0.19%
7 ~0.29%
1 ~0.15%
6 ~0.10%
2 ~0.06%

建议在训练时采用 加权损失函数(如 Weighted Cross-Entropy、Dice Loss 或 Focal Loss)来缓解类别不均衡问题。


使用示例

PyTorch Dataset 示例

python 复制代码
import os
import torch
import numpy as np
from PIL import Image
from torch.utils.data import Dataset

class SegmentationDataset(Dataset):
    def __init__(self, root_dir, split='train', transform=None):
        self.root_dir = root_dir
        self.transform = transform
        self.split = split

        # 读取文件列表
        list_file = os.path.join(root_dir, f'{split}.txt')
        with open(list_file, 'r') as f:
            self.filenames = [line.strip() for line in f if line.strip()]

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

    def __getitem__(self, idx):
        fname = self.filenames[idx]

        # 读取图像和掩码
        image = Image.open(os.path.join(self.root_dir, 'images', fname))
        mask = Image.open(os.path.join(self.root_dir, 'masks', fname))

        image = np.array(image)
        mask = np.array(mask)  # 像素值 0-7

        if self.transform:
            image, mask = self.transform(image, mask)
        else:
            image = torch.from_numpy(image).unsqueeze(0).float() / 255.0
            mask = torch.from_numpy(mask).long()

        return image, mask

# 使用
dataset = SegmentationDataset('path/to/data', split='train')

可视化掩码示例

python 复制代码
import matplotlib.pyplot as plt
from PIL import Image

# 读取原始图像和 RGB 掩码
image = Image.open('images/case0006_slice109.png')
mask_rgb = Image.open('masks_rgb/case0006_slice109.png')

fig, axes = plt.subplots(1, 2, figsize=(10, 5))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('原始图像')
axes[0].axis('off')

axes[1].imshow(mask_rgb)
axes[1].set_title('分割掩码(RGB)')
axes[1].axis('off')

plt.tight_layout()
plt.show()

注意事项

  1. 像素值范围:原始图像为 8-bit 灰度图,像素值范围 0, 255,输入模型前建议归一化至 0, 1
  2. 类别不均衡:背景像素占约 92%,前景类别占比很小,请采用适当的损失函数或数据增强策略
  3. 数据划分:训练集与测试集已固定划分,请勿混用以保证实验公平性
  4. 掩码使用 :训练时请使用 masks/ 目录下的索引格式掩码,masks_rgb/ 仅供可视化使用
    数据集地址:https://download.csdn.net/download/FL1623863129/90010785
相关推荐
进击的横打几秒前
【人工智能】Agent 变慢变贵?用「精准路由」把前置判断时间砍掉 85%
人工智能
是Dream呀5 分钟前
5人设计组远程连工作站靠抢?用ToDesk团队设计版搭_数位板映射+多屏+权限_协同工作流
人工智能·ai·远程工作·todesk
跨境技工小黎6 分钟前
LLM蜜罐系统是什么?AI爬虫如何精准绕过?
开发语言·人工智能·python
hongyucai7 分钟前
通用分类算法的建模过程
人工智能·分类·数据挖掘
葡萄城技术团队9 分钟前
表格智能体系列 · 2:AI 怎么“看到“你的表格
人工智能
一航jason9 分钟前
AIOS 岗位技能技术栈与开源工程全景
人工智能·ai·ai编程·ai-native
SZ_WSKY10 分钟前
拆解微型滑台的“生命周期”:非标自动化产线背后的精度损耗与维护真相
人工智能·科技·机器人·自动化·制造
王志来1379447300816 分钟前
多元场景催生工控服务器机箱差异化需求匀天以柔性适配回应行业挑战
运维·服务器·人工智能·python
狂师16 分钟前
UI自动化测试提效必备Skill!一套CI流水线编排 Skill 可以直接抄了...
人工智能·agent·测试
YOLO数据集集合20 分钟前
建筑物损伤分割与检测数据集 | 建筑损伤检测 结构病害 实例分割 混凝土缺陷
yolo·目标检测·计算机视觉·分类·建筑缺陷·建筑裂缝·建筑外立面