ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cellpose 3D 分割完全指南:从 Z-stack 输入到三维动力学分割与模型训练

Cellpose 3D 分割完全指南:从 Z-stack 输入到三维动力学分割与模型训练 人工智能深度学习计算机视觉图像处理科研生物信息学【免费下载链接】cellposea generalist algorithm for cellular segmentation with human-in-the-loop capabilities项目地址https://gitcode.com/gh_mirrors/ce/cellpose点击查看免费下载导读本文是围绕 Cellpose 官方文档 docs/do3d.rst 展开的 3D 分割实战指南覆盖三维图像的输入格式约定、GUI / CLI / notebook 三种运行方式下的关键参数z_axis、channel_axis、anisotropy、do_3D、flow3D_smooth、stitch_threshold、min_size等以及使用cellpose/gui/make_train.py从 z-stack 制作 2D 训练切片并微调模型的全流程。读完本文你将掌握如何正确加载多平面 Tiff、如何判断三维分割失败的根源、如何用各向异性参数校正采样密度差异以及如何将三维数据转化为可训练的二维切片数据。一、三维分割的输入格式与轴约定1.1 支持的多平面 / 多通道输入Cellpose 的三维分割以 z-stack 图像为输入。多平面、多通道的 Tiff 文件在 GUI 中直接拖拽即可加载在 notebook 中也可直接读取若要打开带 z-stack 支持的 GUI需使用python -m cellpose --Zstack该参数在 cellpose/cli.py 中被定义为--Zstackrun GUI in 3D mode。多平面图像的 shape 应为nplanes x channels x nY x nX4 维含通道或nplanes x nY x nX3 维灰度 z-stack在 Python 中可用tifffile直接检查你的 Tiff 是否符合约定import tifffile data tifffile.imread(img.tif) print(data.shape)若拖拽 Tiff 到 GUI 后无法正常工作最常见的原因就是 shape 不符合上述约定。一旦拖拽成功GUI 中可以看到多平面图像GUI 会自动执行 3D 分割并展示结果处理进度会实时打印在命令行中。官方文档明确建议使用 GPU 以加快处理速度。1.2 在 CLI 与 notebook 中指定z_axis与channel_axis在 CLI / notebook 中必须显式指定两个 0-based 轴参数channel_axis图像中对应通道维度的轴z_axis图像中对应 Z 维度的轴。例如一张 shape 为(1024, 1024, 2, 105, 1)、含 2 个通道的图像可指定channel_axis2、z_axis3。这两个参数既可以在命令行通过--channel_axis、--z_axis传入见 cellpose/cli.py也可以在调用CellposeModel.eval()时作为参数传入见 cellpose/models.py。在 CLI 内部当开启--do_3D或--stitch_threshold时cellpose/main.py 会按以下逻辑读取图像if channel_axis or z_axis is None: image io.imread_3D(image_name) # 自动猜测轴 else: image io.imread(image_name) # 显式轴由 transforms.convert_image() 处理通道重排 if channel_axis is None: channel_axis 3 if z_axis is None: z_axis 01.3 便捷函数cellpose.io.imread_3D作为便捷入口cellpose/io.py 中的imread_3D会自动猜测图像轴灰度图3 维数组假设 axis 0 为 Z 轴即Z x Y x X多通道图4 维数组通道轴取尺寸最小的维度去掉通道轴后Z 轴取剩余的第一个维度。例如Z x C x Y x X会被推断为channel_axis1、z_axis0。如果图像不满足这些约定例如通道数不是最小的维度请改用cellpose.io.imread读取原始数据并在model.eval中手动指定z_axis和channel_axis。imread_3D的轴推断逻辑在源码中清晰可见cellpose/io.py# 灰度图z_axis 猜为 0 if img.ndim 3: channel_axis None z_axis 0 # 多通道图channel_axis 取最小维度z_axis 取剩余第一个维度 elif img.ndim 4: channel_axis np.argmin(dimension_lengths) dimensions list(range(img.ndim)) dimensions.pop(channel_axis) z_axis dimensions[0]1.4 各向异性anisotropyZ 与 XY 采样密度不一致体积堆栈在 XY 方向与 Z 方向的采样间距通常不同因此 CLI / notebook 提供了anisotropy参数来校正采样差异例如 Z 方向的采样密度只有 X、Y 的一半时设anisotropy2.0算法会在 Z 方向做 2 倍上采样。该参数在 cellpose/cli.py 中默认值为1.0在 cellpose/models.py 中默认值为None。三维推理时模型内部会按各向异性与缩放因子重排图像尺寸见 cellpose/models.pyif rescale ! 1.0 or (anisotropy is not None and anisotropy ! 1.0): new_shape (int(Lz * anisotropy * rescale), int(Ly * rescale), int(Lx * rescale))二、三维分割的核心设置与原理2.1do_3D2.5D 流计算 3D 动力学GUI 的默认分割方式是2.5D 分割在每一张 YX、ZY、ZX 切片上分别计算流flows将三者平均后再在 3D 空间执行动力学dynamics得到掩膜。这在 cellpose/core.py 的run_3D中实现网络会依次以(YX, ZY, ZX)三个视角转置图像运行前向并把三个视角的流与 cellprob 累积到[Z x Y x X x 4]的输出中。notebook 中指定do_3DTrueCLI 中指定--do_3D见 cellpose/cli.py。注意CLI 开启后会尽量将文件夹内所有 Tiff 按 3D 堆栈处理。调用示例notebookfrom cellpose import models model models.CellposeModel(devicecuda, pretrained_modelcpsam_v2) masks, flows, styles model.eval(image, do_3DTrue, channel_axis3, z_axis0, anisotropy1.0, flow3D_smooth0, min_size15)2.2flow3D_smooth抑制 Z 轴碎片化与环状伪影如果分割结果出现大量碎片化细胞可以在 3D 动力学之前对流做高斯平滑flow3D_smooth指定的是高斯滤波的标准差默认0.0不平滑。如果掩膜出现环状伪影增大flow3D_smooth通常可以消除。flow3D_smooth支持按 ZYX 三轴分别指定平滑强度传入长度为 3 的列表即可例如flow3D_smooth [2, 0, 0]只对 Z 轴流做 2 像素标准差的高斯平滑。CLI 中对应参数--flow3D_smoothnargs见 cellpose/cli.py官方帮助文本中的示例为--flow3D_smooth 2 1 1。源码层面的处理逻辑位于 cellpose/models.py标量会被自动扩展为三元组长度为 1 的列表会重复三次只有长度恰为 3 且存在大于 0 的值时才执行gaussian_filter(dP, [0, *flow3D_smooth])首维 0 表示不沿通道/时间维平滑if isinstance(flow3D_smooth, (int, float)): flow3D_smooth [flow3D_smooth] * 3 if isinstance(flow3D_smooth, list) and len(flow3D_smooth) 1: flow3D_smooth flow3D_smooth * 3 if len(flow3D_smooth) 3 and any(v 0 for v in flow3D_smooth): dP gaussian_filter(dP, [0, *flow3D_smooth])当然平滑只是缓解手段。官方文档同样建议必要时直接基于你三维数据的 2D 切片重新训练模型见下文第三节从源头改善分割质量。2.3 网络对图像尺寸的缩放diameter 与diam_mean网络会依据用户提供的直径diameter与模型内置的diam_mean30缩放图像例如输入直径 90 时图像会被下采样 3 倍从而显著提升运行速度。值得注意的是新的 Cellpose-SAMcpsam模型对直径不敏感因此这一步是可选的——这也是 Cellpose 4.x 默认预训练模型改为cpsam_v2的原因之一见 cellpose/cli.py。2.4 3D 分割会忽略flow_threshold改用min_size去伪官方文档指出3D 分割忽略flow_threshold因为在其 3D 测试体积上该阈值未能有效过滤假阳性。与之相对设置min_size是去除假阳性掩膜的有效手段。但需要注意当使用stitch_threshold时min_size是逐切片per slice生效的如果你有真正的 3D 最小尺寸需求需要在拼接后自行移除不符合尺寸的掩膜。源码印证在 cellpose/models.py当stitch_threshold 0且nimg 1时min_size会先被置为-1即拼接阶段关闭 per-plane 最小尺寸过滤拼接完成后再对整体掩膜应用一次min_sizecellpose/models.py# turn off min_size for 3D stitching min_size0 min_size if stitch_threshold 0 or nimg 1 else -1 ... if stitch_threshold 0 and nimg 1: masks utils.stitch3D(masks, stitch_thresholdstitch_threshold) masks utils.remove_small_masks(masks, min_sizemin_size)2.5 当 YZ / XZ 切片不可用时改用 2D 分割 stitch_thresholdYZ 与 XZ 切片上的图像质量可能与 XY 差异较大导致这些方向无法用于 3D 分割。官方建议分割失败时先在 GUI 左下角开启orthoviews正交视图检查 YZ / XZ 两个维度的体积形态。若确认该方向不可用可关闭 3D 分割do_3DFalse改为stitch_threshold0的拼接模式Cellpose 先在每个 XY 切片上生成 2D ROI再跨切片拼接当前切片与下一切片上掩膜的 IoU大于等于stitch_threshold时判定为同一细胞并连接成三维体。CLI 中对应参数为--stitch_threshold默认0.0见 cellpose/cli.py在model.eval中则通过stitch_threshold参数开启同时do_3D会被自动置真以输出三维掩膜见 cellpose/models.py。三、面向三维分割的训练数据制备与模型微调3.1 用make_train.py从 z-stack 制作 2D 训练切片训练 3D 分割模型的首选路线是先对 z-stack 数据在YX、YZ、XZ三个方向截取 2D 训练切片脚本位于 cellpose/gui/make_train.py。官方文档明确建议如果三维分割碎片化严重应训练一个基于你 3D 数据 2D 切片的新模型来提升效果。运行前先查看完整帮助python cellpose\gui\make_train.py --help完整参数说明如下与文档一致并补充默认值usage: make_train.py [-h] [--dir DIR] [--image_path IMAGE_PATH] [--look_one_level_down] [--img_filter IMG_FILTER] [--channel_axis CHANNEL_AXIS] [--z_axis Z_AXIS] [--chan CHAN] [--chan2 CHAN2] [--invert] [--all_channels] [--anisotropy ANISOTROPY] [--sharpen_radius SHARPEN_RADIUS] [--tile_norm TILE_NORM] [--nimg_per_tif NIMG_PER_TIF] [--crop_size CROP_SIZE] 输入图像参数input image arguments --dir DIR 包含待处理/训练数据的文件夹 --image_path IMAGE_PATH 若指定了 --image_path 而未指定 --dir则对单张图像运行此选项下不能训练 --look_one_level_down 同时处理当前文件夹的所有子目录 --img_filter IMG_FILTER 只处理以该字符串结尾的图像 --channel_axis CHANNEL_AXIS 图像中对应通道维度的轴 --z_axis Z_AXIS 图像中对应 Z 维度的轴脚本默认 0 --chan CHAN 分割的通道0: GRAY, 1: RED, 2: GREEN, 3: BLUE。默认: 0 --chan2 CHAN2 细胞核通道细胞质分割时可选0: NONE, 1: RED, 2: GREEN, 3: BLUE。默认: 0 --invert 反转灰度通道 --all_channels 使用图像中的全部通道使用自有模型处理特殊通道图像时 --anisotropy ANISOTROPY 三维体积的各向异性 --seg_masks 使用保存在 _seg.npy 文件中的 3D 掩膜生成 2D _seg.npy 文件 算法参数algorithm arguments --sharpen_radius SHARPEN_RADIUS 高通滤波半径。默认: 0.0 --tile_norm TILE_NORM 分块归一化块大小。默认: 0 --nimg_per_tif NIMG_PER_TIF 每个 tiff 在 XY 方向保存的切片数。默认: 10 --crop_size CROP_SIZE 随机裁剪尺寸。默认: 512注意make_train.py源码中的默认轴约定是ZXYC见 cellpose/gui/make_train.py--channel_axis与--z_axis可在不符合约定时手动指定脚本内部正是通过cellpose.io.imread_3D读取数据cellpose/gui/make_train.py。3.2 各向异性体积的处理若体积是各向异性的需要设置--anisotropy为Z 方向像素尺寸与 YX 方向像素尺寸之比。官方示例YX 方向像素尺寸 1.0 µm、Z 方向 5.0 µm 时设--anisotropy 5。这样生成的切片会按比例校正三个方向的采样避免训练数据中细胞形态失真。典型调用python -m cellpose.gui.make_train --dir /path/to/zstacks \ --channel_axis 3 --z_axis 0 --anisotropy 5 \ --img_filter _stack --nimg_per_tif 10 --crop_size 512若仓库以包方式安装也可写为python -m cellpose.gui.make_train脚本入口见 cellpose/gui/make_train.py。3.3 在 GUI 中标注切片并重新训练切片生成后把切片所在文件夹中的图像直接拖拽进 GUI开始标注labeling你的 2D 切片然后点击 GUI 中的Train选项微调模型即可。更详细的训练建议可参考 Cellpose2 教程与 docs/train.rst。训练完成后将新模型用于原始 3D 堆栈的do_3DTrue推理即可获得针对你数据形态优化的三维分割结果。四、完整工作流速查以下是将 3D 分割落地到实际数据的最小步骤清单检查数据形状tifffile.imread(img.tif).shape确认符合nplanes x channels x nY x nX或nplanes x nY x nXGUI 快速验证python -m cellpose --Zstack后拖入 Tiff观察命令行进度与 3D 分割结果CLI / notebook 正式运行指定--z_axis、--channel_axis需要时加--anisotropyCLI 用--do_3Dnotebook 用do_3DTrue结果不理想时碎片化 / 环状伪影 → 增大flow3D_smooth可[2, 1, 1]按轴分别调假阳性偏多 → 调大min_size注意 stitch 模式下它逐切片生效3D 最小尺寸需事后处理YZ / XZ 方向质量差 → 关闭do_3D改用stitch_threshold0的 2D 拼接路线仍不理想→ 用make_train.py生成 YX/YZ/XZ 三方向切片各向异性数据记得传--anisotropy在 GUI 中标注并用 Train 微调模型再对 3D 堆栈重新推理。相关配套文档可继续参阅 docs/inputs.rst输入格式、docs/train.rst训练指南与 docs/outputs.rst结果保存注意 3D 掩膜只能以 TIF 而非 PNG 保存见 cellpose/io.py。赞分享人工智能深度学习计算机视觉图像处理科研生物信息学【免费下载链接】cellposea generalist algorithm for cellular segmentation with human-in-the-loop capabilities项目地址https://gitcode.com/gh_mirrors/ce/cellpose点击查看免费下载相关推荐Cellpose 2在3D Z-stack细胞图像分割中的模型微调指南Cellpose 2在3D Z stack细胞图像分割中的模型微调指南 背景与需求 在生物医学图像分析领域3D Z stack成像技术能够通过多层扫描获取细胞人工智能深度学习计算机视觉图像处理科研生物信息学Cellpose项目中肌肉纤维细胞分割模型训练指南Cellpose项目中肌肉纤维细胞分割模型训练指南 概述 在生物医学图像分析领域Cellpose是一个广泛使用的深度学习工具专门用于细胞分割任务。本文针对使人工智能深度学习计算机视觉图像处理科研生物信息学Cellpose细胞分割模型终极指南从入门到精通Cellpose细胞分割模型终极指南从入门到精通 Cellpose是一款基于深度学习的细胞分割模型专门用于生物图像分析中的细胞识别与分割任务。该模型通过先进人工智能深度学习计算机视觉图像处理科研生物信息学上一篇PiKVM ATX 控制器接线指南为 DIY IP-KVM 搭建远程开关机电路下一篇TorchTitan 实验区experiments完全指南贡献规范与 graph_trainer、torchft、HF Backend、TitanRL 四大实验深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表