我知道编辑这个网站吗?

SNT › 机器学习

此页面最后一次修改为version 5.1.0

SNT在两个上与深度学习(DL)分割工具(例如,cellposeCSBDeepDeepImageJnnU-NetStarDist等)集成:它们的输出(分割、概率图、检测到的坐标)成为SNT跟踪和分析工作输入的,而SNT的方向重建在curationrefinement,可以导出为真实标签以训练下一轮模型。对于更简单的经典机器学习替代方案,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 与 LabkitTrainable Weka Segmentation (TWS) 交互,两者都利用机器学习算法进行图像语义分割(即随机森林分类器)。这些工具之间的桥梁使得:

  • 将预训练模型导入SNT并直接加载语义分割的概率图作为辅助追踪层
  • 使用SNT路径训练模型

下面总结了 Labkit 和 TWS 之间的主要区别(从 SNT v5 开始)。请注意,这两种工具都使用 Weka framework 对图像进行分类。

  Labkit TWS  
图像尺寸 核外、多TB大图像数据 较小的图像(RAM限制)  
GPU 支持 通过 CLIJ2 没有  
架构基础 ImgLib2BigDataViewer 图像J  
支持多通道图像 是的 是(w/caveats  
支持延迟拍摄图像 是的 是(w/caveats  
脚本和IJ宏语言支持 是的。一些命令是可宏记录的 是的。GUI可宏记录 是的。
批处理 从 GUI 并通过宏和脚本 通过宏和脚本  
将预训练模型导入SNT 是的 是的  
直接加载SNT路径作为分类标签 是的 是的  

导入模型

Import weka model 可以通过Secondary layer menu导入模型。导入经过训练的模型后,会将其应用于正在跟踪的图像,并将生成的分类作为辅助跟踪图像加载。导入提示有以下选项:

  • 模型文件:要导入的文件。通常,带有.model 或 .classifier 扩展名(Labkit:JSON 编码;TWS:XML 编码)
  • 加载引擎:如何加载和应用模型。 LabkitLabkit 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都是一条记录,其中包含以下的检查名称、严重性(INFOWARNINGERROR)、一条人类义务的消息、一个可选的空间位置、路径的列表以及触发该边境的测量值和阈值。一旦注入,预测就会与助手自己的发现一起存在:它们可以是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)