医学图像多器官分割数据集
数据集概述
本数据集为医学图像语义分割数据集,包含来自 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 位数字(如
0005、0040) - 切片编号 :3 位数字(如
000、142)
示例: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()
注意事项
- 像素值范围:原始图像为 8-bit 灰度图,像素值范围 0, 255,输入模型前建议归一化至 0, 1
- 类别不均衡:背景像素占约 92%,前景类别占比很小,请采用适当的损失函数或数据增强策略
- 数据划分:训练集与测试集已固定划分,请勿混用以保证实验公平性
- 掩码使用 :训练时请使用
masks/目录下的索引格式掩码,masks_rgb/仅供可视化使用
数据集地址:https://download.csdn.net/download/FL1623863129/90010785