诸氏鲻虾虎鱼(M. chulae)基因组项目 · 核型图像
核型难题:工具与资料调研
在 GitHub、arXiv、bioRxiv、PubMed、PyPI、Hugging Face、BioImage.IO 上检索能够处理这批核型照片的工具、预训练权重与公开标注数据集,并把候选工具实际跑在我们自己的图上验证。
一、调研方法
先把要解决的问题量化,再检索。下面每一项都是在我们自己的照片上量出来的,检索时作为硬约束交给每一路检索——不满足这些条件的工具,再有名也不收录。
| 维度 | 实测值 | 它会卡住哪类工具 |
|---|---|---|
| 有效分辨率 | 点扩散 FWHM ≈ 12–14 px 单条染色体宽 ≈ 2.3 个分辨单元 | 缩到 1/4 再放大回来 PSNR 仍 38.9 dB,说明 3/4 的线性分辨率是空的。分裂相在源照片里只占 226×183 px,手上的图是约 6× 数码放大。 |
| 染色体宽度 | 8.9 – 28.0 px | 低于多数分割模型的工作尺度(≈30 px),置信度达不到阈值就不产生实例。 |
| 信噪比 | 1.8 – 4.7 | 四张代表图里只有一张(SNR 4.7 / 宽 28 px)能被较好识别。 |
| 曝光饱和 | 约 29% 染色质像素压到纯黑 0 密团芯部 49% 落在灰阶 0–4 | "两条重叠处光密度加倍"这个判别"一层还是两层"的物理信号被烧掉。唯一未压黑的一张上,密团/单条光密度比 = 1.62(理论 2×),说明信号本可采到。 |
| 染色方式 | Giemsa 实心深染,无 G 带 | 没有带型可追踪染色体身份。多数染色体分割模型训练于 G 带图像。 |
| 拥挤程度 | 77% 染色质在 5 个重叠密团 最大一团占全片 37% 密团内仅 11% 像素亮度回升 | 密团内部几乎没有可见缝隙——不是算法没找到分界,是分界在像素层面不存在。 |
检索平台与关键词。GitHub 用 gh search repos / gh api 按 star 排序取回并拉取每个仓库的 star、license、最后提交时间与 README 首段;论文与工具在 arXiv、bioRxiv、PubMed / Europe PMC、PyPI、Hugging Face、BioImage.IO 上交叉核验。关键词照录:
六个检索方向。
- 不需要我们自备训练数据的方案:已发布预训练权重的染色体分割模型,或 SAM / SAM2 系的可提示分割,或少样本、零样本方法。
- 针对细长、可交叉、带缢痕物体的实例分割——不限染色体领域,含神经突起、根系、纤维、线虫、丝状菌等同构问题。
- 人机配合的标注与计数工具:可点选、半自动、支持重叠标注、可导出点位坐标。
- 公开的染色体标注数据集,尤其含重叠标注、非人类物种、低分辨率的,可用于迁移学习。
- 图像层面的补救:过曝压黑的恢复、低分辨率显微图像的超分与去卷积。
- 方法论资料:"多少个分裂相才能定核型数"的标准、"重叠染色体不可数"的处理惯例、鱼类核型制片规范。
三道核验闸门。只做关键词检索会收回一份看着丰富、实际不能用的清单,所以每条候选必须过三道:
- 拉真实元数据,不信描述。用
gh api取 star、license、最后提交、README 首段;权重是否存在,分别查 GitHub Releases、Zenodo、Hugging Face、BioImage.IO 四路。"ChromoSIS 代码疑未放全""PatchPerPix 零权重"都是这一步查出来的。 - 对抗核验。每条主张交给 3 个独立核验者去反驳,需 2/3 判定反驳成立才推翻。这道闸门挡掉了五条听起来合理的说法,包括"Omnipose 的距离场机制正好能修复圆团先验""PatchPerPix 正是为我们这种失败模式设计的"——两条都被 3 票全否。
- 拿我们自己的图实测。清单只能证明工具存在,证明不了对我们的图有用。所以把最该行的候选直接跑在自己的核型图上,固定参数、不逐图调参、不向任何目标数凑。结果见下节。
收录与判定标准。每条必须注明:有无可直接使用的预训练权重、许可证、最近更新时间、star 数、是否需要我们自备训练数据;并直接回答"对我们这批 9–28 px 宽、无带纹、29% 过曝、77% 重叠的图能不能用"。严格区分"论文有但代码/权重没有"与"拿来就能跑"。允许否定结论——如果结论是没有工具能用,直接写,不凑清单。
二、调研结果
没有任何「拿来就能跑」的染色体实例分割方案。而且比"没有权重"更致命的是:能装上的工具在表示层面就无法输出"同一个像素同时属于两条染色体"——这恰恰是占 77% 染色质的 5 个密团唯一缺的信息。
所有候选只落在两个桶里:必须我们自己标注,或论文有、代码和权重根本没放。交叉印证:BioImage.IO 全库 157 条目 / 44 个 model 中,chromosome、karyotype 命中 0 次(对照 stardist 129 次、cellpose 26 次)。
结构性阻断:每像素只能属于一个实例。这是全部调研中最重要的一条,而且是作者自陈,不是第三方推测。Omnipose 在 Nature Methods 正文逐字写着:
"Although Omnipose is designed to be trainable for any cell morphology or imaging modality, like all segmentation algorithms operating in 2D, Omnipose is limited in its ability to handle object overlap and self-contact (boundary intersection)."
核查过 2026 年当前的 affinity segmentation 文档,它解决的是边界的表示与遍历,每像素仍只属一个物体——这不是一条过时的结论。同系另外两个一样:Sketchpose 自陈形式化被限制在二维双标签,且 napari 界面强制笔画不重叠;micro-sam 的输出提交到 napari Labels 层,每像素一个整数。另一项佐证:Europe PMC 全文检索 omnipose AND (chromosome OR karyotype OR metaphase) 得 32 条命中,全部是细菌拟核语境,真核中期分裂相应用 0 例。
全部候选工具的逐条评估。
| 工具 | 预训练权重 | 许可证 / star / 更新 | 需自备 训练数据 | 对我们这批图能不能用 |
|---|---|---|---|---|
| 可提示分割 / 人机配合 | ||||
| micro-sam(μSAM) | 有,域为光镜细胞核与电镜细胞器,无染色体权重 | MIT · 701★ v1.8.6 @2026-07-17 仓库 07-21 有 push |
否 | 唯一能马上装上用的。可提示分割 + napari 点选。精度在我们这批图上至今无人实测;每像素单标签,对 77% 重叠密团无能为力。 |
| napari-sketchpose | 可用随机或已有权重起步 | GPL-3.0 · 在 Bitbucket 无 star PyPI v0.1.8 @2023-12 论文版代码 @2025-06 |
是,压到几分钟涂鸦 | 边训边画,可优先标注模型出错处。但形式化只做二标签划分,重叠像素无解;且涂鸦范式预设标注者看得见正确边界——我们 29% 染色质为纯黑,人也画不出密团内的正确笔画。 |
| napari-kics | 不适用(半自动测量) | BSD-3 · pip / conda | 否 | 物种无关,不绑人类染色体形态。前提是已有一张排好的核型图——而我们卡在"排不出来"这一步。 |
| 细长物体实例分割 | ||||
| Omnipose | 15 个 checkpoint(细菌/线虫/植物/cyto2),无一在域内 | MIT · 150★ pushed 2026-05-02 |
是 | 不能直接用。作者原话:"要分割我们模型未涵盖的图像(如细胞类型、成像方式),应自行整理训练数据"——我们的 Giemsa 明场中期相在这两个轴上都不属于任何已有域。且作者自陈无法处理重叠。 |
| PatchPerPix | 0 个 release、0 份权重 (GitHub / Zenodo / HF / BioImage.IO 四路查证均无) |
MIT · 35★ pushed 2023-06-27(停更 3 年) |
是,且必须含重叠标注 | 唯一架构上支持重叠(配置 overlapping_inst = true),但陷入死循环:能标出重叠真值的图必须够清晰,而够清晰就不需要这个工具了。 |
| Adaptive Omnipose | 无 | ISBI 2024 发表 2.4 年仍无代码 |
是(还需源域全量标注) | 穷举核查:全文 grep 无任何代码链接、gh search 两组查询 0 结果、HF papers 404、作者实验室 12 个仓库均无。只在细菌与线虫间测过迁移,细菌→Giemsa 染色体的域漂移远大于它评测过的任何一组。 |
| 染色体专用:去重叠与实例分割 | ||||
| ChromSeg(HKU-BAL) | 无(含 345 张标注图) | Python · ★7 | 是 | 已实测:在其自带高分辨率 G 带例图上正常拆出单条,喂我们 256 px 密团则输出碎片与空白,没有一条能算重建出的单条染色体。 |
| ChromoSIS(CVIU-CSU) | 代码疑未放全(仅 README) | upd 2026-05 | 是 | 仓库近乎占位,无法评估。 |
| AMFL / MACS-Net 等 | 无 | 多个小仓库 | 是 | 重叠分割研究群,成熟度低于 ChromSeg,同样需重训。 |
| Cascade Mask R-CNN (zoeyzhangzz / MMDetection) |
无 | 配方式仓库 | 是 | 是"实例分割→数 mask"路线的起步模板,但训练数据仍要我们自己造。 |
| 检测 / 计数 | ||||
| DeepACEv2 | 无公开代码 | IEEE TMI 2020 | — | 染色体计数方法学的奠基工作,但 GitHub 上叫 DeepACE 的仓库全是耳蜗与乙酰化,与染色体无关。只能当方法参考。 |
| Aycromo | 权重为人类数据 | 未标注 License · upd 2026-06 | 是 | 最接近开箱即用的桌面 App(YOLOv8 / v11),但须用鱼的中期相图重训。 |
| ChromosomeDetectionYOLOv8 | BioImLab 人类数据 | Jupyter · upd 2026-06 | 是 | 可当"如何训一个染色体检测器"的现成配方,换成鱼的标注即可——问题仍是标注。 |
| 通用分割器 | ||||
| Cellpose / Cellpose-SAM | 有通用权重 | 开源 · 活跃 | 否 | 已实测,结构性失败。见下节。 |
| MetaChrome | 以 Cellpose 为底座 | MIT · PyPI · napari | 底座可重训 | 偏 FISH 与着丝粒定量,底座即 Cellpose,继承同样的圆团先验问题。 |
| StarDist | 有通用权重 | 开源 · 活跃 | 建议重训 | 星凸多边形假设,擅长密集近圆目标;染色体是弯曲长条,不满足星凸性。 |
| Ilastik | 不适用(交互式) | 开源 | 少量标注 | 零代码快速试手可以,但同样受限于原图分辨率与重叠。 |
| 公开数据集 | ||||
| AutoKary2022 | — | MIT · ICME 2023 | — | 人类密集实例标注,可作预训练底料,但仍需少量鱼图微调——而鱼图标注造不出来。 |
| CloudDataLab 临床数据集 | — | Jupyter · ★10 | — | 数据集 + 多基线,适合横向比较,同上。 |
| 鱼类 / 非人类核型公开数据 | — | — | — | 未发现。BioImage.IO 全库 chromosome / karyotype 命中 0。 |
| 闭源商业系统 | ||||
| MetaSystems Ikaros / Metafer ASI GenASIs、Leica CytoVision |
闭源 | 按 license 锁定 | — | 临床金标准,但只做人类、闭源、无法适配鱼的染色体形态。列出仅为完整。 |
把候选真跑在我们自己的图上的结果。清单只能证明工具存在,证明不了对我们的图有用,所以做了实测,固定参数、不逐图调参:
- Cellpose-SAM,同一套固定参数跑 6 张:分割数 10 / 15 / 35 / 42 / 45 / 49,而两次独立盲计数落在 37–48。最低的两张不是"数少了"而是认错了对象——圈出的绝大多数是间期细胞核。
- Cellpose 输出的形状常常不是染色体。在 K03 上,76 个实例的长短轴比中位仅 1.76,只有 4% 超过 2.5;而中期染色体典型是 3–8。原因是其机制为每像素预测指向"所属物体中心"的流向量再聚类,内建"每个物体一个紧凑中心"的假设,与杆状 / V 形带缢痕的染色体冲突。⚠ 后续补测发现这一数字随图变化很大——在 K06 上 Cellpose 给出中位 2.71、61.2% 超过 2.5。所以"圆团化"是随图变化的,不是普遍行为,见第四节的更正。
- 漏检与工作尺度直接相关。四张代表图中,唯一被较好识别的是宽 28 px / SNR 4.7 的那张;宽 9–10 px 的图上因低于模型工作尺度而大量漏检。
- ChromSeg:自带例图正常,我们的密团输出碎片。
- 自建阈值管线(Otsu + 连通域 + 分水岭):三版均失败——尺度基准被碎屑带偏、骨架拓扑判据不适用(姐妹染色单体使单条骨架天然分叉)、过度拆分与严重欠标并存。
文献层面这仍是未解问题。最接近的公开基准 FISBe(细长、互相交叉的神经元)上,三个基线最好只到 S=0.35 / avF1=0.34(PatchPerPix),论文逐字写"extensive further method development is necessary",榜单至今未被刷新。需打的折扣:FISBe 是 3D 多色果蝇神经元,难点在长程依赖建模;我们的难点是 2D 局部重叠判别——所以这是强类比证据,不是关于染色体的直接证据。
六个方向的答案。
| 方向 | 答案 |
|---|---|
| ① 免训练数据的方案 | 不存在。没有任何已发布染色体预训练权重的实例分割模型。可提示分割(micro-sam)可用,但无域内权重,精度未知。 |
| ② 细长交叉物体分割 | 仍是开放问题。Omnipose 明确宣称解决细长物体,但作者同时自陈无法处理重叠;真核中期分裂相应用 0 例。 |
| ③ 人机配合工具 | 只有两件可安装(micro-sam、napari-sketchpose),但都不支持重叠标注,也都不导出点位坐标。 |
| ④ 公开标注数据集 | 未发现可用于迁移的鱼类或非人类核型公开标注数据。 |
| ⑤ 图像层面补救 | 压黑到纯 0 的像素不含可恢复信息,超分与去卷积在此只能是幻觉性补全。不建议用它生成"看起来更清楚"的图去支撑计数。 |
| ⑥ 方法论资料 | 未产出通过核验的 ISCN / 鱼类细胞遗传学计数标准条目,如实标注为缺口。 |
结论:瓶颈在采集端,不在算法端。
算法侧的期望上限很低,原因可证:所有可安装工具每像素单实例,重叠区无论怎么调参只能被划分、不能被表达;唯一支持重叠的方案需要我们造不出的重叠真值,形成循环依赖;最近的公开基准显示即便投入大量标注,细长交叉任务的 SOTA 也只到 avF1≈0.34。
而我们自己实测的一个数字指出了方向:唯一未压黑的那张图上,密团 / 单条光密度比 = 1.62(理论 2×)——判别"一层还是两层"的物理信号本来是可以采到的,是曝光与染色把它烧掉了。
所以优先级应从"换工具"转向"改采集":降曝光保住光密度线性(染色体落中灰 60–120 而非压到 0)、提高放大倍数使单条宽度超过 2–3 个分辨单元、优化低渗与滴片减少重叠。这三条比任何现成算法更能改变结局。
这一段是全部结论中唯一的推断级结论:没有任何一条通过核验的主张直接陈述它,所引来源只支撑其前提。其余各条均有一手来源。
还没做的。方向 ⑥ 是本轮缺口,值得单独检索一轮。另外 micro-sam 在我们图上的实测是目前唯一有价值的未知数——核验时"它的自动模式会像 Cellpose 一样失败"这条推断被 3 票全否,也就是说没人试过,装上跑一次成本很低。
三、最适合的工具
先把本项目对工具的硬要求列出来。这五条不是从工具功能倒推的,每一条都来自这个项目已经踩过的坑或已经量出的数据。
| 硬要求 | 为什么必须满足 |
|---|---|
| ① 不需要我们自备训练数据 | 29% 染色质压到纯黑、密团内仅 11% 亮度回升,人也标不出重叠处的正确边界,造不出训练真值。 |
| ② 能在 9–28 px 宽、SNR 1.8–4.7 上工作 | 这是四张代表图的实测区间,低于多数模型的工作尺度。 |
| ③ 能如实记录"这里分不开" | 77% 染色质在 5 个重叠密团里。强行给一个数就是猜——本项目已经栽过:两次独立标注总数都约 42,但逐点比对时 20 px 容差下只有 9/40 落在同一条染色体上,总数吻合是两类误差相互抵消的巧合。 |
| ④ 能导出点位坐标 | 验收标准是"两人独立标注的逐点位置是否落在同一条染色体上",不是总数是否接近。只交总数无法核验。 |
| ⑤ 人在判断回路里 | 全自动路径已被结构性排除(每像素单实例,表达不了重叠)。"一条还是两条"只能人判,且相当一部分位置人也判不了——工具必须允许人说"不知道"。 |
全部候选逐条对照。
| 工具 | ①免训练 数据 | ②工作 尺度 | ③记录 不可分 | ④导出 点位 | ⑤人在 回路 |
|---|---|---|---|---|---|
| hexing(本项目自建交互标注工具) | ✓ | ✓ 不做自动分割,不受尺度限制 | △ 目前无此功能,可加 | ✓ 存点位 JSON | ✓ |
| micro-sam | ✓ | ? 未实测 | ✗ napari Labels 层每像素单标签 | ✗ | ✓ |
| napari-sketchpose | △ 压到几分钟涂鸦 | ? | ✗ 二标签划分 | ✗ | ✓ |
| napari-kics | ✓ | ✗ 需已排好的核型图,我们卡在排不出来 | ✗ | ? | ✓ |
| Cellpose / Omnipose / StarDist | ✗ 无域内权重 | ✗ 实测漏检 | ✗ | ✗ | ✗ |
| PatchPerPix | ✗ 须自备重叠真值 | ? | ✓ 唯一支持重叠 | ✗ | ✗ |
| ChromSeg / Aycromo / YOLOv8 等 | ✗ 均需重训 | ✗ 实测出碎片 | ✗ | ✗ | ✗ |
结论:没有任何一个现成工具满足全部五条。最适合本项目的是「自建 hexing 为主体 + micro-sam 作分割辅助」的两层组合。
主体用 hexing,理由是它独占第 ④ 条。调研核实的结论是:可安装的开源人机配合工具只有 micro-sam 与 napari-sketchpose 两件,而两者都不导出点位坐标、也都不支持重叠标注。而点位导出恰恰是本项目验收所必需的——没有它,就无法计算两名标注者的物体级一致率,也就无法区分"真的数对了"和"两类误差抵消的巧合"。hexing 已经具备上传、点选自动引线编号、缩放平移、撤销、重排、存/载点位 JSON、导出标注图。
micro-sam 作为分割辅助接进来,替换现在的"点一下放一个编号点"。它是全部调研中唯一可立即安装、不需自备训练数据的可提示分割方案(MIT,701★,v1.8.6 @2026-07-17,仓库持续更新,Nature Methods 2025)。接进来之后,人点一下,机器给出贴合边界的 mask 而不只是一个点——人的判断仍然是决定性的,机器只负责把边界画准。
要补的两个功能。
- 不确定区标记(第 ③ 条,当前缺口)。允许框出一片区域标为"重叠,分不开",并单独记录"估计内含 N–M 条"。这样交付的是"确定 X 条 + 不确定区 Y 处",而不是一个假装精确的总数。
- 点选即分割(接 micro-sam)。当前点一下只放一个编号点,边界靠人眼看;接入后点一下即得贴合的轮廓,可当场判断机器圈的和自己想的是不是同一条。
第一步成本很低。micro-sam 在我们这批图上的表现至今无人实测——对抗核验时"它的自动模式会像 Cellpose 一样失败"这条推断被 3 票全否,也就是说没有证据说它会失败,也没有证据说它能成。装上、在最清晰的几张上跑一次可提示模式,就能知道这条路值不值得走。
需要说清的边界。即使这套组合做好,它交付的也是"人在可判断处的精准标注 + 不可判断处的如实留白",不是一个能裁决 2n=44 还是 46 的数字——密团里"一条还是两条"的信息在像素层面不存在,任何工具都变不出来。要拿到那个数字,只能改采集(降曝光、提倍率、优化铺片),或走核型之外的路径。
四、本项目的结果
把第三节的判断付诸实测。装上 micro-sam 1.8.6,用光镜域权重 vit_b_lm 的自动实例分割,固定参数跑 4 张代表图,不逐图调参、不向任何目标数凑。选图覆盖最好与最差:K03(SNR 4.7 / 宽 28 px,此前表现最好)、K01(此前漏检最严重)、K22、K06(即反复分析的 _59133)。
| 图 | Cellpose-SAM | micro-sam vit_b_lm | ||||
|---|---|---|---|---|---|---|
| 实例数 | 长短轴比中位 | >2.5 占比 | 实例数 | 长短轴比中位 | >2.5 占比 | |
| K01 | 17 | 1.91 | 23.5% | 66 | 1.70 | 19.7% |
| K03 | 76 | 1.76 | 3.9% | 76 | 1.70 | 2.6% |
| K06 | 49 | 2.71 | 61.2% | 57 | 2.18 | 36.8% |
| K22 | — | — | — | 48 | 1.99 | 33.3% |
速度差一个数量级:micro-sam 每张 8–10 秒,Cellpose 每张 98–133 秒(同一台机器,均为 CPU)。
覆盖率是决定性的改善。在此前漏检最严重的 K01 上,实例数从 17 → 66。这不是数字游戏——看轮廓图:Cellpose 版整片视野只圈住十几条,micro-sam 版几乎每条染色体都有自己的轮廓,而且轮廓贴着 V 形、杆状、钩状的真实形态走。
Cellpose-SAM:17 条
micro-sam:66 条
在 K06 上同样成立。这张图我们此前用自建阈值管线只标出 11 条、其余整片划为"重叠不可靠分";micro-sam 给出 57 条独立轮廓。
K06(_59133):micro-sam 57 条;同一张图,自建阈值管线只标出 11 条。
但形状保真度没有改善,某些图上还更差。长短轴比是判定"输出的是染色体还是圆团"的指标(中期染色体典型 3–8)。micro-sam 的中位落在 1.70–2.18,超过 2.5 的只占 2.6%–36.8%。更要紧的是:在 K06 上 Cellpose 反而更细长(中位 2.71、61.2% 超过 2.5,对比 micro-sam 的 2.18 / 36.8%)。micro-sam 赢在覆盖率,不赢在形状。
这里必须修正第二节的一处说法。此前写"Cellpose 输出实例的长短轴比中位仅 1.76、只有 4% 超过 2.5,即它把染色质切成了细胞大小的圆团"——这个数字只在 K03 上测过。补测后发现 Cellpose 在 K06 上给出中位 2.71、61.2% 超过 2.5。
所以正确的说法是:"圆团化"是随图变化的,不是 Cellpose 的普遍行为。原来的表述从单张图过度概括了。这个结论已在此更正,以实测为准。
没有解决的仍然没有解决。micro-sam 的输出同样是每像素单标签,重叠密团依旧只能被划分、不能被表达。轮廓图上仍可见:少数染色体未被圈到、部分轮廓一次圈住两条相贴的、以及密团处的边界是算法划的而非真实分界。第二节那条结构性结论不受本次实测影响。
结论:micro-sam 可以作为标注底座,值得接入。调研时它是"唯一可立即安装、不需自备训练数据、但在我们图上无人实测"的候选,对抗核验也没能断言它必败。现在实测过了:它在覆盖率上大幅优于此前所有方案,速度快一个数量级,形状保真度不如预期但可接受。把它接进 hexing 作"点选即分割"的那一层,是当前投入产出比最高的一步。
下一步。把这 4 张扩到全部 36 张(按 10 秒/张,约 6 分钟);把 micro-sam 接进 hexing 替换"点一下放一个编号点";补上不确定区标记。然后按事先约定的验收标准做两人独立标注,比对逐点位置而非总数。