Cellpose-SAM 细胞分割实战指南:从单张图到批量处理与自训模型
【免费下载链接】cellposea generalist algorithm for cellular segmentation with human-in-the-loop capabilities项目地址: https://gitcode.com/gh_mirrors/ce/cellpose
Cellpose-SAM 是一个开源深度学习细胞分割工具:输入荧光或明场显微图像,它自动计算流向场并输出细胞掩码,同时支持 2D、3D 体积数据以及在自有数据上的微调训练。
三步装好环境,五分钟跑起来 🖥️
Linux、Windows 与 macOS 都支持;8GB 内存即可运行,处理 3D 体积建议 16-32GB,Python 版本推荐 3.12(3.9 与 3.11 也可用)。
创建独立环境并安装带 GUI 的完整版本:
conda create -n cellpose python=3.12 conda activate cellpose python -m pip install 'cellpose[gui]'不需要图形界面时,最后一行换成python -m pip install cellpose。装完后无需手动下载预训练权重:首次运行会自动拉取并缓存到~/.cellpose/models/。
验证 GPU 加速:先装好 NVIDIA 驱动与 CUDA 库,Linux 上通过 pip 安装的 PyTorch 默认即为 GPU 版。打开 GUI 后若GPU复选框被勾选、终端打印出 CUDA 版本号,即说明生效;否则需卸载 CPU 版 torch 后按 PyTorch 官方命令重装,用conda list里 pytorch 版本带cuXX.X字样来确认。
pip 装不上时可用仓库自带的environment.yml直接创建环境:conda env create -f environment.yml。
单张图像的五步分割法 🎯
启动图形界面:
python -m cellpose几秒后窗口打开,终端会打印模型下载日志。随后按五步完成分割:
- 把
.tif/.png/.jpg/.gif图像拖入窗口; - 从模型库选预训练模型(内置
cyto、nuclei、cpsam等),多通道图把细胞质与细胞核通道分到 CHAN1/CHAN2——Cellpose-SAM 对通道顺序不敏感,颠倒也能识别; - 点
calibrate自动估算细胞大小,或直接填写cell diameter(模型训练直径均值约 30px,细胞偏大就填大值); - 点
run segmentation,勾选 MASKS ON 时图像上叠加显示掩码; - 按左右方向键切到文件夹里下一张图继续。
修正结果靠鼠标:右键画 ROI,Ctrl+左键删除错误掩码。结果写在图像旁的_seg.npy文件里——注意跑完模型不会自动落盘,按 Ctrl+S 保存。
Cellpose-SAM 算法总览:网络预测水平/垂直流向场,动态系统让像素"顺着流"汇聚到细胞中心,最终合并为掩码(f 面板)
两个阈值与一个迭代参数
| 参数 | 默认值 | 调整方向 |
|---|---|---|
flow_threshold | 0.4 | 漏检细胞调高;异形假阳性过多调低 |
cellprob_threshold | 0.0 | 漏检调低;暗区假阳性调高 |
niter | 随直径自适应 | 长条形细胞不收敛时给到 2000 左右 |
整文件夹批量处理:CLI 一条命令 ⌨️
GUI 一张张拖图不适合几十张以上的场景,CLI 可一次性处理整个目录:
python -m cellpose --dir ~/images/ --chan 2 --pretrained_model cpsam --diameter 30 --do_3D运行结束,目录里每个 tiff 旁多一个*_seg.npy。关键参数含义:
--chan:待分割通道(0 灰度、1 红、2 绿、3 蓝);--pretrained_model:模型名或完整路径,自训模型同样适用;--do_3D:把多 Z 的 tiff 当 3D 体积处理;--stitch_threshold:按相邻切片掩码 IoU 做缝合而非真 3D,适合 YZ/XZ 切片质量差的数据。
内置四个模型按骨干区分:cpsam与cpsam_v2基于 SAM,图块 256×256 不可改,其中 v2 版对低对比区域误检更少;cpdino、cpdino-vitb基于 DINOv3,图块默认 384×384,遇超大对象可通过bsize调大。
示例细胞分割输出:输入图像与各模型生成的掩码结果并排对比,可见掩码完整度差异
在 notebook 中把多张同尺寸图像打包成一个数组并调大batch_size,GPU 可跨图共享一个批次的图块,批量吞吐有明显提升。
分割效果不理想时:三个典型症状与对策 📋
细胞个头偏大。模型训练直径覆盖 7.5–120px(均值 30)。偏大的细胞填大diameter,图像会按比例下采样(如填 90 则缩到 1/3 分辨率),精度与速度都受益。
3D 结果破碎或出现环形伪影。开flow3D_smooth,它先对流向场做高斯平滑再跑动态系统;伪影集中在 Z 方向时可传[2, 0, 0]逐轴指定。各向异性体积(Z 向采样比 XY 粗)同时设anisotropy,例如 2.0 表示 Z 向采样密度是 XY 的一半。3D 模式不参考flow_threshold,去假阳性改用min_size。
各向切片质量差异大。默认 3D 实为 2.5D 策略:在 YX/YZ/XZ 切片算流向后取平均再三维动力学。GUI 左下角的 orthoview 可检查切片方向;若 YZ/XZ 不可用,关掉do_3D改走stitch_threshold缝合路线。
结果要进 ImageJ 做下游分析时,用 Ctrl+R 保存为标准 ImageJ ROI 格式即可直接导入,仓库还附带imagej_roi_converter.py转换脚本。
动态演示 Python 细胞分割结果到 ImageJ 分析工具链的无缝衔接过程
人机协同训练:把"能用"调到"刚刚好" 🔧
自有细胞系与成像方案下,微调比直接用内置模型更稳。GUI 内置了迭代式训练流程:
- 拖入一组风格相近的图像(同细胞类型、同成像协议);
- 从模型库选出最接近的内置模型跑一遍;
- 手绘加、Ctrl 删减,把掩码修对(自动存入
_seg.npy); - Models 菜单选
Train new model...(Ctrl+T),选定起点模型并命名; - 训完自动在文件夹下一张图上运行,回到第 3 步继续修正,循环迭代。
训练权重存到图像目录的models/子文件夹,GUI 自定义模型下拉框、CLI、notebook 都能按名字调用。
两个注意点:起点必须是内置cpsam模型;若从自训模型再训,网络会偏向早期图像,建议把待训图像全部放同一文件夹。3D 数据先运行make_train.py切出 YX/YZ/XZ 切片再按 2D 流程训练。
纯命令行训练同样可行,标签文件需与图像成对命名<name>_masks.tif(0=背景,1/2/3…=细胞编号):
python -m cellpose --train --dir ~/images/train/ --test_dir ~/images/test/ --n_epochs 100 --learning_rate 0.00001结束会打印训练/测试损失曲线,权重落到~/images/train/models/。验证达标后可用cellpose/export.py打包,上传 BioImage.IO 供他人复用。
体积装不进内存:分布式分割 📦
3D 数据超出内存时,cellpose.contrib.distributed_cellpose模块把数据切成重叠块,分块并行分割再拼回完整结果。输入需为 zarr 格式,模块自带单 tiff 或瓦片文件夹转 zarr 的辅助函数;支持前景掩码(跳过纯背景块)、预处理函数列表(高斯平滑、多通道堆叠)以及 LSF 集群调度。
正式跑之前先用process_block(test_mode=True)试算单个块,确认参数无误,再交给distributed_eval处理全量体积。
下一步:在 notebooks/ 目录运行test_Cellpose-SAM.ipynb示例数据验证环境,再按 docs/ 目录逐章深入;遇到问题到项目 issue 区提问。
【免费下载链接】cellposea generalist algorithm for cellular segmentation with human-in-the-loop capabilities项目地址: https://gitcode.com/gh_mirrors/ce/cellpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考