介绍使用napari中的sam4is插件调用SAM快速分割图像中的物体。

使用 SAM 进行分割和 cellpose 等基于 U-Net 的原理是截然不同的。SAM 反倒是和 ChatGPT 之类的比较像,用户需要提供 prompt(不太准确的点选或框选),然后模型 output 的是图像分割的 mask。这里以细胞明场图像的分割为例。

之前已经安装好了 napari 和相应的插件👆,接下来操作步骤具体如下:

  1. 打开一张 8-bit 或者 RGB 的tif单页图像,支持拖拽放入 napari 窗口。注意不支持多页的 stack tif。
  2. 打开 napari 中的 SAM 插件,右侧出现 SAM Widget。左侧默认创建好了多个 SAM 开头的图层。
  3. 在 napari左下角点击 🏷按钮创建一个 Labels 图层。
  4. 在 napari 右侧的 SAM Widget 中选择模型并 load model

    1. 注意首次使用会自动下载SAM模型权重,比较费时间
    2. 不同电脑配置加载模型也需要一些时间
  5. 检查或修改SAM Widget 中其它配置:

    1. 确认 input 的是指定的原始图像图层
    2. 选择 labels 模式,并勾选 instance labels
    3. 确认 ouput 的是指定的 Labels 图层
  6. 使用点选作为 prompt:

    1. 切换到 SAM-Positive 图层,napari左上角选择➕的点选工具,在图像中指定对象内部点击,SAM模型会自动预测,并跳转到 SAM-Predict 图层。如果结果OK,按快捷键 a 接受该结果;如果结果不完整,还有残缺,可以在残缺部分增加点选,再按 a 接收;如果始终无法得到满意的结果,按r 拒绝,或者后面进一步修改。
    2. a 完成一个实例的分割后,切换到 SAM-Positive 充分下一个实例的分割,重复步骤 6.1 即可。
  7. 保存 Labels 图层,选中该图层,Ctrl+S 即可保存。默认保存为 32-bit 的 TIFF 文件。可使用 python 中 skimage 模块打开并进一步处理。
import matplotlib.pyplot as plt
from skimage import io
a = io.imread('1-m.tif')
plt.imshow(a)
plt.show()

通过上述代码可查看mask图像如下:

得益于SAM模型强大的通用性和准确性,这个工具一方面适合任意类型的较小规模成像数据样本(几十到数百)的的快速图像分割,另一方面也是很好的图像分割数据标注工具(方便去做迁移学习)。总的来说,值得推荐大家使用。

附此demo电脑的配置:

  • OS: Windows 11
  • CPU: AMD Ryzen 9 7900X 12-Core, 4.7 GHz
  • RAM: 64 GB, DDR5
  • GPU: NVIDIA RTX 4000 Ada, 20 GB
  • NVIDIA Driver: 552.74
  • CUDA Version: 12.4
最后修改:2024 年 09 月 18 日
请大力赞赏以支持本站持续运行!