wplll

该方案将 3D tomogram 的体素级分割结果转化为可提交的粒子中心坐标。核心由多 GPU TensorRT 推理、 空间 TTA、连通域实例化和类别化过滤组成。

1. 整体架构流程

CZII – CryoET Object Identification 要求在 3D tomogram 中找五类计分蛋白复合体的中心点。输入是 multiscale OME-NGFF Zarr;训练数据 有四种过滤版本,但 rerun 测试只提供 denoised 版本。评测以 0.5 × particle radius 作为点匹配 距离,并使用微平均 (F_4):hard 类的权重更高,漏检的代价远大于额外候选。

网络先输出 dense segmentation 概率,再由后处理生成稀疏的、带类别的 (x, y, z) 粒子列表。

denoised Zarr volume
  -> 3D sliding-window segmentation + TTA
  -> 各类别概率体 / argmax 标签
  -> 连通域实例化
  -> 类别阈值 + 最小体素数过滤
  -> component centroid × 10,ZYX 转 XYZ
  -> submission.csv

2. 推理与模型融合(TTA)

我使用 CZIi infer: fewer models and extensive TTA 通过 TensorRT 引擎完成多 GPU 推理。体积采用滑窗处理,随后在空间维度进行翻转 TTA:轴 [2][3][4][3,4],并叠加 rot90k=1/2/3。各变换预测先反变换回原坐标系,再做融合、softmax 和 后处理。

连通域由 cc3d.connected_components 产生。代码为每类设置了概率阈值 0.8,并以不同的最小 体素数过滤:

类别索引 最小连通域体素数
1 2
2 33
3 78
4 42
5 400

最后取每个保留组件的质心,坐标乘以 10 后从数组常用的 ZYX 顺序转换为提交所需的 XYZ。 这个转换很小,却是整个任务最容易造成“可视化合理、提交全错”的接口:必须以原始数据的 voxel spacing 和 sample submission 做逐字段校验。

3. 实例化与后处理

五类颗粒的尺度和可分性不同,因此后处理按类别设定连通域体积阈值。上述 {2, 33, 78, 42, 400}0.8 的概率阈值共同决定候选保留规则。调参时可同时观察:

完整推理链使用测试期可用的 denoised Zarr;其余过滤版本可用于训练增强、教师模型或预训练信号。

4. 方案设计要点

“多模型分割 → CC3D → 按体素数过滤 → 质心”构成了这一类方案的核心结构。第二名方案以 MONAI UNet baseline 为起点,也采用了相同的实例化主线;可阅读 其 write-up

5. 工程实现要点

  1. 保存每个 TTA 分支反变换后的 shape,确认融合前均回到同一个 ZYX 网格。
  2. 用一个已知 component 验证 centroid -> ×10 -> XYZ 的数值和列顺序。
  3. 统计每类阈值过滤前后的组件数及 (F_4) 变化,而不是只保留总体 Dice。
  4. 以 tomogram 为分组单位做 CV;不同过滤版本不能穿越训练/验证边界形成泄漏。

6. 提交生成

每个滑窗应记录原始窗口起点、有效写入区域和权重图。重叠区域若只是覆盖写入,窗口边界的概率会出现 条纹;应先在概率空间做加权累积和归一化,再做 softmax 与连通域。这样模型融合、TTA 与窗口融合的 顺序才不会被混在一起。

组件过滤应输出每类的候选数、过滤前后体素数、质心和被拒绝原因。对一个被过滤掉的 hard 类颗粒, 可以追溯它是概率不足、体积不足还是被相邻组件吞并;这比只观察最终 F4 更能定位阈值是否过于保守。

提交前用少量已知点做三项断言:Zarr 读取 shape 与滑窗重建 shape 相同;反变换后的 TTA 概率图可 逐体素对齐;最终 CSV 的 experiment, particle_type, x, y, z 列顺序、单位和样本数满足官方模板。

项目链接