4. 切片级与图块级数据组织
在数字病理AI训练中,一张全切片图像(WSI)动辄数万×数万像素,无法直接送入网络。工程上必须把“切片级”的全局坐标体系与“图块级”的局部训练样本解耦,再通过多分辨率采样和高效存储把二者连接起来。本节围绕这条数据链路展开。
一、切片级与图块级:两套坐标必须显式对齐
切片级坐标以WSI的Level 0(最高分辨率)像素为基准,原点在左上角,x向右、y向下,单位是像素。图块级坐标则是某个图块在其自身小图内的坐标,通常以图块左上角为原点。二者之间靠一个仿射关系连接:
level0_x = tile_x0 + local_x * (2 ** level)
level0_y = tile_y0 + local_y * (2 ** level)
# level 为下采样层级,level 0 为原始分辨率
# tile_x0, tile_y0 为该图块在 level 0 下的左上角坐标
例如在level 2(下采样4倍)下取一个256×256的图块,其左上角在level 2坐标为(1000, 800),则对应level 0的左上角为(4000, 3200),右下角为(4000+256×4, 3200+256×4)=(5024, 4224)。所有标注、掩膜、检测框都必须统一到同一坐标系后再做映射,否则会出现“图块对、标签错位”的隐蔽错误。工程上建议在数据集中固定记录level0_x0, level0_y0, level, tile_size四个字段,任何坐标转换都从这四个量出发。
二、多分辨率采样:金字塔层级与采样策略
WSI通常以金字塔形式存储,level 0为原始分辨率,level n为下采样2^n倍。多分辨率采样有两层含义:一是选择在哪个层级取图块,二是同一区域跨层级组合。前者决定图块的物理视野与像素密度,后者用于多尺度特征融合。
常见策略包括:固定层级采样(如统一在level 1取512×512,对应level 0的1024×1024视野)、按目标尺寸反推层级(希望图块覆盖2048×2048的level 0区域且输出512×512,则level=2)、以及多层级配对采样(同一中心点分别取level 0和level 2图块,用于超分或跨尺度一致性训练)。采样时还需处理边缘不足:当图块超出切片有效区域时,可选择丢弃、镜像填充或零填充,但必须与推理阶段保持一致。
三、数据存储格式:从容器到索引
WSI常见格式包括Aperio SVS、Hamamatsu NDPI、OME-TIFF等,它们本质上是“金字塔图像+元数据+索引”的容器。SVS基于TIFF,每个层级是一个IFD(图像文件目录),元数据中记录MPP(每像素微米数)、扫描倍率、各层级尺寸。OME-TIFF则用XML描述层级关系,更适合跨平台。图块级训练数据通常另存为LMDB、HDF5或分片PNG/JPEG,前者适合随机读取,后者便于分布式共享。
选择格式时要关注三点:是否支持随机访问、是否保留层级元数据、是否便于与标注对齐。若把图块预先裁剪成独立文件,务必在文件名或索引中保留level0_x0, level0_y0, level,否则后续无法回溯到原切片位置。
四、高效读取策略:缓存、预取与并行
训练时若每个batch都从磁盘随机读WSI,I/O会成为瓶颈。常用做法是:
- 层级缓存:把常用层级的图块解码后放入内存或SSD缓存,按LRU淘汰。
- 顺序预取:按扫描顺序预取相邻图块,利用磁盘顺序读优势。
- 多进程并行:用DataLoader的worker并行解码,每个worker独立打开文件句柄,避免锁竞争。
- 格式转换:把SVS转为分片LMDB,减少TIFF解码开销,实测可提升2~5倍吞吐(示例值,实际取决于硬件与切片尺寸)。
level0_x0, level0_y0, level, tile_size,任何坐标转换都从这四个量出发,避免多套坐标系混用。五、一个可执行的图块索引示例
下面是一个图块索引表的字段设计,可直接用于LMDB或CSV:
| 字段 | 含义 | 示例 |
|---|---|---|
| slide_id | 切片唯一标识 | TCGA-02-0001 |
| level0_x0 | 图块左上角在level 0的x | 4000 |
| level0_y0 | 图块左上角在level 0的y | 3200 |
| level | 下采样层级 | 2 |
| tile_size | 图块边长(像素) | 256 |
| label | 图块类别或掩膜路径 | tumor |
读取时,根据level打开对应层级,用level0_x0 / 2^level得到该层级下的读取起点,再读取tile_size大小的区域。若使用OpenSlide,可直接调用read_region((x, y), level, (w, h)),其中x、y为level 0坐标,OpenSlide会自动完成层级换算。这样,切片级坐标、金字塔层级与图块级像素就形成了一条可验证、可复现的数据链路。