此页面最后一次修改为version 5.1.0。
SNT在两个上与深度学习(DL)分割工具(例如,cellpose、CSBDeep、DeepImageJ、nnU-Net、StarDist等)集成:它们的输出(分割、概率图、检测到的坐标)成为SNT跟踪和分析工作输入的,而SNT的方向重建在curation和refinement,可以导出为真实标签以训练下一轮模型。对于更简单的经典机器学习替代方案,SNT 还通过Labkit/TWS嵌入集成(随机森林)分类器。以下部分概述了如何在 SNT 中使用模型预测,以及如何使用 SNT 为任一模型系列生成训练数据。
生成训练数据
SNT 的重建、分割和注释工具对于下游模型生成训练数据也很有用。 SNT 生成的数据非常适合作为基本事实:它的存储在调整坐标中,记录来源元数据,支持post-hoc refinements,并且可以在用于训练下游模型之前在Curation Assistant中进行审查。
这些方面在文档的其他地方都有介绍:
-
分割网络的像素级标签:路径管理器的§§§0§§菜单将指定的路径作为分类器标签导出到Labkit/TWS中。有关基于Weka的工作流程,请参见下面的Training Models;相同的导出标签可以重新用于任何使用二进制图形类的U-Net式训练器
-
用于自动细化的路径迭代:Refine/Fit命令将每个节点捕获到信号中心线上,并根据侧面强度分布重新计算每个节点的半径。结果是拥抱实际神经突袭的几何形状,是表明踪剂的第一个猜测,在导出之前提高了质量标签
-
用于手动细化的编辑工具:SNT的Edit Mode (⇧ Shift + E)支持每个节点操作:直接在图像上插入、删除、重定向或paint延伸路径。可以校正自动跟踪信号或导入的路径以精确匹配底层,从而产生比原始自动跟踪更高保真度的地面实况
-
交叉突检测:crossover detector在3D中紧密标记神经但未拓扑连接的位置。在导出之前检查并解决这些问题可以防止歧义泄漏到训练数据集中
- 策划重建:可以将Curation Assistant中审查的路径导出(其接受/拒绝状态保留在路径标签中)作为学习正确拓扑的训练模型的正面示例,或用于QC分类器训练的简短示例。助手和训练管道之间的可编写脚本的桥梁有助于实现这一点,例如:
import sc.fiji.snt.Tree import sc.fiji.snt.analysis.curation.CurationTags def tree = Tree.fromFile("/path/to/annotated/file.traces") def p = CurationTags.partitionByReviewStatus(tree) println "${p.positive().size()} +, ${p.negative().size()} -, ${p.unsure().size()} ?, ${p.unreviewed().size()}" - 检测器的仅坐标标签:Seeded Tracing Assistant的导出命令写入CSV文件,任何细胞或端点检测模型都可以将其作为正例食物。 手动注释、ROI导出和标签图像导出种子都可以以相同的可导出格式存储
嵌入式工具:Labkit 和 TWS
SNT 与 Labkit 和 Trainable Weka Segmentation (TWS) 交互,两者都利用机器学习算法进行图像语义分割(即随机森林分类器)。这些工具之间的桥梁使得:
- 将预训练模型导入SNT并直接加载语义分割的概率图作为辅助追踪层
- 使用SNT路径训练模型
下面总结了 Labkit 和 TWS 之间的主要区别(从 SNT v5 开始)。请注意,这两种工具都使用 Weka framework 对图像进行分类。
| Labkit | TWS | ||
|---|---|---|---|
| 图像尺寸 | 核外、多TB大图像数据 | 较小的图像(RAM限制) | |
| GPU 支持 | 通过 CLIJ2 | 没有 | |
| 架构基础 | ImgLib2 和 BigDataViewer | 图像J | |
| 支持多通道图像 | 是的 | 是(w/caveats) | |
| 支持延迟拍摄图像 | 是的 | 是(w/caveats) | |
| 脚本和IJ宏语言支持 | 是的。一些命令是可宏记录的 | 是的。GUI可宏记录 | 是的。 |
| 批处理 | 从 GUI 并通过宏和脚本 | 通过宏和脚本 | |
| 将预训练模型导入SNT | 是的 | 是的 | |
| 直接加载SNT路径作为分类标签 | 是的 | 是的 |
导入模型
可以通过Secondary layer menu导入模型。导入经过训练的模型后,会将其应用于正在跟踪的图像,并将生成的分类作为辅助跟踪图像加载。导入提示有以下选项:
- 模型文件:要导入的文件。通常,带有.model 或 .classifier 扩展名(Labkit:JSON 编码;TWS:XML 编码)
- 加载引擎:如何加载和应用模型。 Labkit、Labkit w/ GPU 加速 或 可训练 Weka 分割 (TWS)。注意:具有 GPU 加速 的 Labkit 需要 CLIJ2 访问权限,以及 CLIJ2 兼容显卡
- 加载为:概率(p-map)或分区图像。如果是概率图像,则需要在后续提示中选择与神经突信号相关的类别
- 显示:是否应立即显示分类图像。注意:可以随时使用View›菜单完成此操作
训练模型
要跟踪路径转换为训练标签,只需选择感兴趣的路径并在路径管理器的§§2§§菜单中运行相应的命令即可。这将启动预加载从指定路径生成的标签的 Labkit/TWS 的新实例。 来自不同通道的路径被分为不同的分类类别 (即每个通道1个类别)。请注意,Labkit和TWS处理SNT生成标签的方式存在一些(次要)特性: | | Labkit | TWS | |—————————————————-|————————————————————————|—————————————————————————————————————————————————————————————————————-| |单节点路径 |有效标签 |通常会跳过 | | Hyperstacks(具有 CT 尺寸的图像)|显示者 BigDataViewer | CT维度在TWS窗口中显示为简单的堆栈。 IJ 的Process命令可用于重新应用原始图像布局来输出图像 |
脚本
SNT 的神经解剖学template collection中有几个处理图像分类的例子,即:
- 将 Weka 模型跟踪图像:如何演示如何将先前存在的 Weka 模型应用到正在跟踪的图像
-
- Weka 分类器*:详细训练说明如何使用跟踪路径和 ROI Weka 模型
使用深度学习预测
概率图
分割网络的每体素概率输出可以作为secondary tracing layer与图像原始一起加载。 然后,SNT 的autotracers可以使用概率图作为主要信号(直接跟踪网络的预测)或作为自动跟踪过程中指导修剪和提示扩展的分数图(请参阅Branch Filtering and Scoring)。 通过半自动跟踪,可以使用主选项卡中的Interactive Tracing小部件打开辅助层。使用auto-tracing,得分图被加载/选择为parameter。
请注意,支持任何可以保存概率图的工具(Labkit/TWS、自定义 PyTorch/TensorFlow 脚本):SNT 可以看到结果图像。
种子点
许多深度学习检测器输出催化剂,或_候选位置_:体细胞中心、候选轴突终止、分支点等的列表。 SNT 通过 Seeded Tracing Assistant 消耗这些信息,其中每个候选位置/遮光罩对象作为一个 3D 点,具有关联的置信度、任选磁盘以及自由格式的“类型”和“源”字段。 加载后,种子可以是:
- Filtered并以互动方式策划
- 用于根自动跟踪:例如,cellpose mask 可用于在自动跟踪时指定体细胞位置multiple cells
- 启动单细胞追踪的端点目标
- 设置软吸引子,通过预测位置偏置自动跟踪的路由
有关完整的工作流程,请参阅Seeded Tracing。请注意,检测器本身可以生成 CSV 列表或标签图像(自动获取质心)的任何东西。
质量控制地点
Curation Assistant接受DL标记的“可疑”位置(例如,来自之前审查的重建的模型)作为警告:每个预测训练位置都显示在助手的warnings table中以供人工审查,反映了助手自己的live monitors如何报告基于规则的检查中的问题。
程序化输入是通过CurationManager#addWarnings(List<Warning>)进行的。每Warning都是一条记录,其中包含以下的检查名称、严重性(INFO、WARNING、ERROR)、一条人类义务的消息、一个可选的空间位置、路径的列表以及触发该边境的测量值和阈值。一旦注入,预测就会与助手自己的发现一起存在:它们可以是filtered by severity,在劳动力上导航到,标记为接受/拒绝/不确定downstream training,并从警告表中批量访问。
import sc.fiji.snt.analysis.curation.PlausibilityCheck.Warning
import sc.fiji.snt.analysis.curation.PlausibilityCheck.Severity
import sc.fiji.snt.util.PointInImage
// `predictions` is whatever a detector emits per suspect location
def warnings = predictions.collect { p ->
new Warning("DL-QC", Severity.WARNING,
"Predicted error (score=${p.score})",
new PointInImage(p.x, p.y, p.z), // location
p.nearbyPaths, // List<Path> list of affected paths
p.score, 0.5) // measured value, threshold
}
ui.getCurationManager().addWarnings(warnings)
这将 Curation Assistant 变成了任何 QC 模型的通用目标,该模型返回已完成重建的空间预测,包括在先前的 curation pass 生成的 Seed Review 导出上的训练模型,从而关闭了审查并重新训练之间的反馈循环。
参考文献
Weka framework的描述如下:
- Eibe Frank、Mark A. Hall 和 Ian H. Witten (2016)。 WEKA 工作台。 《数据挖掘:实用机器学习工具和 技术”,摩根考夫曼,第四版,2016年。(PDF)

