从 H&E 到五类组织区域:BCSS 分割项目与留出核验
以三个患者ROI训练五类区域模型,在第四位患者上查看分割图、面积和逐类IoU。
把一张H&E区域图转换成带类别的组织分割图,并检查每类面积和真实标注的重叠。这个案例使用BCSS的四位患者ROI,完成一个可复算、可继续修改的五类组织项目。

1. 下载四个ROI与固定划分
下载最小复现包(约16 MB)。inputs包含4张ROI、4张标签图和 split.json。图像通过BCSS官方项目链接的公开Digital Slide Archive取得,每张最长边768像素;标签来自同一官方服务的明确闭合标注多边形。
| 划分 | 患者ROI |
|---|---|
| 训练 | TCGA-A1-A0SK、TCGA-A1-A0SP、TCGA-A2-A04P |
| 留出 | TCGA-A2-A04Q |
在插件“数据与范围”选本地执行和新工作目录,通过“+ 增加数据”绑定解压后的 inputs文件夹。图像、掩膜、划分一起绑定,输出目录另行选择。
类别ID为1肿瘤、2间质、3淋巴细胞浸润、4坏死或碎屑、9脂肪,0为本次不评价区域。包内保留公开多边形几何与 derive_tissue_masks.py,运行后可重新生成标签并核对像素一致性。
2. 配置环境并写清目标
本次复用CPU环境:Python 3.12、NumPy 2.2.6、SciPy 1.15.3、scikit-image 0.25.2、scikit-learn 1.6.1、Pandas 2.2.3、Matplotlib 3.10.3、Pillow 11.2.1、joblib 1.6.0。选择已有兼容环境或为此项目准备独立环境后,提交以下需求:
请对绑定的BCSS四个ROI建立五类组织区域分割项目。保持split.json中的三患者训练、一患者留出,0和冲突像素忽略。独立使用多尺度颜色纹理特征与ExtraTrees分类器,每训练ROI每类最多4000像素、64棵树、最大深度16、随机种子20261015。冻结模型后处理留出ROI,输出语义图、叠加图、类别面积、混淆矩阵、每类IoU/Dice、训练支持数和PathoWish汇总报告。测试无真值支持的类别明确标出。
点击“下一步:核对需求”,确认输入和执行环境,提交建模。
3. 从区域标注语义组织自己的代码
在阶段1阅读《Structured crowdsourcing enables convolutional segmentation of histology images》开放全文,核对类别含义、标注审核和评价单位。需要加入文献时,在阶段2“参考文献与自备材料”添加PDF。
本项目采用区域监督和逐类重叠评价原则,独立实现63维多尺度RGB、HED、HSV均值与标准差特征,然后训练ExtraTrees。论文的完整卷积网络训练环境作为方法参考;当前实现只使用本次实际需要的通用库。
在阶段2检查固定划分、五类映射和三个执行步骤后确认开发。训练读取训练掩膜,推理只读取留出H&E与训练模型,评价才读取留出掩膜。阶段4会核对真实执行记录及结果图表。
4. 读懂这次留出结果
留出ROI有517,346个有效标注像素,70,942个像素忽略。像素准确率为50.27%;有真值支持的三个类别宏平均IoU为0.2913,包含坏死误报的四个非空并集类别宏平均IoU为0.2185。脂肪既无真值也无预测,不参与这两个平均。
| 类别 | 留出真值像素 | 有效范围内预测像素 | IoU | Dice |
|---|---|---|---|---|
| 肿瘤 | 134,127 | 148,005 | 0.4362 | 0.6074 |
| 间质 | 5,178 | 0 | 0 | 0 |
| 淋巴细胞浸润 | 378,041 | 194,698 | 0.4378 | 0.6090 |
| 坏死/碎屑 | 0 | 174,643 | 0 | 0 |
| 脂肪 | 0 | 0 | 空并集,未定义 | 分母为0,未定义 |

预测图呈现了肿瘤与淋巴浸润的主要区域,也把不少有效组织误分为坏死;间质没有被识别出来。坏死的174,643个预测像素是本次评价范围内的误报,它们同时计入真实类别的错误,未因该类真值为零而从总评价中删掉。下一轮可以补充独立患者的间质和混合组织训练样本,保留当前结果作为基线。
5. 查看报告和项目模块
“结果与图表”中的“查看本次报告”汇总图、表和方法选择。点击“打开结果文件夹”,查看 area.csv、metrics.csv、confusion.csv、类别标签PNG和 tissue-model.joblib。面积表使用整个ROI作为分母,评价表使用明确有效标注作为范围,两者用途不同。
点击“打开项目代码”,可从 features.py、train.py、infer.py、evaluate.py继续调整。需要精确复算下载包时,先运行 python run_case.py核对输入,再运行 python run_case.py --run。新产物保存在 project/artifacts/versions,原始 results保持可比较。
方法与核验记录
四个ROI按官方清单顺序预先选择,前三个训练、第四个留出;没有根据评价结果更换患者。原论文把无其它标注的区域默认定义为间质,本例采用更窄的明确多边形范围,未将所有未标注区域补成间质。标签采用偶奇规则保留孔洞,同类环相抵、跨类重叠记0;各ROI的冲突像素为643、337、580、309。
独立核验重新生成四张标签并确认像素完全一致,重新计算有效像素准确率与各非空并集类别IoU,确认训练与留出患者不交叉、输入哈希保持不变。独立评审还纠正了首版“真值为零即不计算IoU”的定义:新子版本逐字节复用原模型和预测,重新运行评价,把坏死误报计为IoU/Dice=0,并分别报告两个宏平均。项目保留了训练、推理、模型评审与自动报告。本次测试通过插件的项目后端执行;以上界面步骤供用户复现。
来源:Amgad等,*Structured crowdsourcing enables convolutional segmentation of histology images*. Bioinformatics, 2019, btz083。BCSS数据及标注使用CC0 1.0,官方数据仓库与NuCLS论文的数据可用性声明提供许可依据。包内保存请求URL、来源校验、原始几何和派生标签规则。