本文介绍下今年更新的cellpose-sam的试用情况。
背景介绍
cellpose将SAM融入得到了cellpose-sam,提升了细胞图像分割的泛化能力。
其中SAM是meta公司推出的一款基座模型,号称能够分割一切(Segment Anything Model, SAM)。由于SAM训练于在meta自建的SA-1B数据集,包含1100万张图像和超过10亿个分割掩码(masks),因此该模型号称具备“零样本泛化能力”。这意味着你几乎不需要再训练,只要点一点图片中感兴趣的物体,SAM就能把这个物体分割出来。
这么好用的东西自然很快得到了大力推广,但发现在专业成像领域效率也不是那么好。所以手快的,比如医学影像图像分割的那帮人(可能人多钱给够),迅速跟进就微调模型搞了一些新的SAM变种模型。现如今生物成像领域的工作也陆续出来了,之前已经介绍了micro-SAM,这里再介绍cellpose-sam。
cellpose-sam的论文先发了bioRxiv预印刊,标题非常抓人:Cellpose-SAM: superhuman generalization for cellular segmentation。超越人类的泛化能力,大概可以理解为,一般情况下它比人还分得好。
Cellpose-SAM这样一个新模型简单来说就是把SAM的编码器和cellpose之前的解码器拼起来,然后利用现有的大量细胞成像数据微调了下。当然了这里面还是有不少适配性的修改,最终使得Cellpose-SAM既能够继承SAM的泛化能力,又能够specialized到细胞成像领域,使得最终细胞图像分割的泛化能力得到进一步增强。
但就像我之前介绍的一篇文章👆说的,实际上AI模型再好,泛化能力终究有限。而用户第一手的数据时常会和模型接触到的数据相差较大,这个时候大概率模型分割效果会不太行。因为从本质上看,绝大部分神经网络模型比如这里的U-Net、SAM啥的就是一些统计学,通过训练掌握了已有数据的特征概率分布,一旦遇到很新的从未见过的数据,就容易抓瞎。
大语言模型(比如Grok,Gemini2.5)这里不好评价,因为从使用者的角度出发,至少我自己的感受是: 确实有点神。
cellpose-sam在非细胞数据上的分割测试
废话少说,先上数据直接看看Cellpose-SAM的分割能力是否有显著改善。
我这里使用的数据是接近矩形的一种纳米结构,这个和细胞图像差别还是比较大的,刚好用于检验cellpose这几代模型在其它类别图像上的泛化能力。从上面的大图来看,整体上三代模型都能够对这类图像进行较好的分割,但是放大到局部,就能看出一些问题了:
我截取了右下角的部分,可以看到 cyto2 算是分割结果最符合人类专家的要求的;而到 cyto3,它分割的mask在感兴趣物体的边缘处理上有些误差,而且甚至会把一个分成两个,效果差了一些;到了最新的cellpose-sam,甚至在背景的区域也出现了一些mask,这就是典型的幻觉。
所以结论就是,cellpose-sam虽然继承了SAM的强大先验,但也可能继承了它的幻觉。不过好在cellpose-sam和之前的cellpose一样,可以进行微调训练来解决特定数据分割不准确的情况。
cellpose-sam安装
友情提示,由于cellpose的gui略有变化,cellpose-sam的安装最好是新建一个虚拟环境,从而避免对已有的cellpose造成影响。此外SAM模型比较大,最好安装GPU支持,显卡显存8GB以上。具体命令如下(请依次执行):
conda create -n cellpose4 python=3.10
conda activate cellpose4
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
python -m pip install cellpose[gui]
命令说明:
- 创建cellpose-sam的运行环境,推荐python版本为3.10
- 激活并进入新建的环境
安装gpu版本的torch,由于我的cuda driver版本是 12.4,向下兼容11.8,所以安装这个
- cuda驱动版本可以通过
nvidia-smi
查看 - 安装torch的命令可以在pytorch官网复制
- cuda驱动版本可以通过
- 安装带有用户界面的cellpose
- 完成安装后输入 cellpose 即可打开软件界面了。需要注意的是,现在万剑归一,似乎只有一个CPSAM模型了,不像以前的版本还有一个model zoo。