细胞分割与Cellpose

基于显微镜图像的单细胞分析是目前生命科学领域的前沿和热点问题。细胞分割能对成像图片进行批量处理,将其形态、位置、RNA 表达和蛋白质表达等信息赋予识别出的每个细胞。比如:

对于多光子钙成像分析,需要识别出单个神经元,才能提取每个神经元的钙荧光信号,进行下游的处理和分析;

对于空间转录组分析,也需要分割细胞,将 RNA 的表达量赋予单个细胞;

对于医学诊断而言,通过细胞的大小、形态、位置以及计数来诊断病变

……

由此可见,细胞分割的意义可见一斑。【注:深度学习用于细胞分割的应用案例请点击Make it Evident丨TruAI 加速狼疮肾炎病理学诊断查看。】

Cellpose 是一款基于深度学习算法的细胞分割的开源软件,已发表两篇论文,都发表在 Nature Methods 上,即 Cellpose 1.0 和 2.0 版本



该款软件使用 Python 语言编写,凭借其良好的细胞分割效果、不错的运行速度、易于使用的界面、支持与其他软件联动等特性,获得了广泛的使用和认可,在GitHub上获得770+的star数,可谓是细胞分割领域的"ChatGPT"。

Cellpose 论文解读

Cellpose软件主要由来自珍妮莉亚研究园区 (Janelia Research Campus)的研究员“夫妻档” Marius Pachitariu 与 Carsen Stringer 开发。两位研究员的经历很相似,都是从数学背景转向计算神经科学,博士都毕业于英国伦敦大学的盖茨比计算神经科学中心,之后都来到 Janelia 担任研究员。目前两位各自的实验室方向也有很大的重合,主要从事于小鼠视觉皮层的神经元解码工作。

为了便于分析工作的开展,他们以 MATLAB 和 Python 为主要开发语言,与其他实验室合作开发了一系列软件来处理大规模成像数据,并在 Github 开源。

https://github.com/MouseLand

他们开发的软件以良好的性能和友好的 GUI 界面为特色,得到了众多神经科学家喜爱和广泛使用。其中:

Kilosort 用于处理超大通量的神经电生理信号,能对神经元信号进行提取和分类(Spike Sorting);

Suite2p 集成了双光子钙成像数据的处理流程,能够进行运动配准、神经元检测、动作电位推断等流程;

Rastermap 能以 GUI 界面选择神经元,并排序绘制对应的栅格图(Raster Plot),支持与 Suite2p 联动,直观展示不同神经元的钙信号变化;

Facemap 通过解析小鼠面部表情来预测神经活动;

Cellpose 是用于生物图像的细胞分割,支持与 Suite2p 联动来提取神经元钙信号,也是本文的重点介绍内容。



图 1 Marius Pachitariu 与 Carsen Stringer开发的软件开源在Github上的MouseLand组织里

基于多样化数据集的Cellpose 1.0

Cellpose 1.0 的文章发表于 2020 年 12 月 14 日[1]。其特色是,开发了一个通用的细胞分割模型,为此构建了一个多样化的数据集,希望通过这个多样化的数据集训练得到的细胞分割效果,无论在单一的数据集还是多样的数据集都能有好的表现,不需要用户重新训练。

其专门构建的数据集共 608 张,包含 316 张带有荧光细胞质标记的细胞、50 张明场显微镜拍摄的细胞、58 张带有荧光细胞膜标记的细胞、86 张其他类型显微镜的图像以及 98 张由水果、岩石和水母等重复物体组成的非显微镜拍摄图片,并将其中 100 张带有荧光细胞质标记的细胞抽取出来作为 Cell Image Library。



图 2 Cellpose构建的包含608张多类型图像的数据集可视化展示

简单介绍下 Cellpose 的算法:

在图像分割领域常通过计算图像的梯度来提取物体边界,以此进行分割物体。有别于传统图像分割中基于灰度值计算梯度的分水岭算法,Cellpose 中的图像梯度是通过模拟扩散创建出来的,从手动分割注释的细胞数据集(Groud Truth)中,为每个 ROI(Regions of Interest)使用热扩散算法,从 ROI 中心迭代扩散以此模拟创建出拓扑图,解出 x 和 y 方向的梯度矢量场。设计的深度神经网络,基于经典的 Unet 结构进行改进,并引入了残差块。神经网络架构通过对输入的图像进行预测,输出图像的水平、垂直梯度及像素是否在细胞内三个矩阵,这三个预测结果合成一个梯度向量场。再根据这个梯度向量场构建一个具有固定点的动力系统,所有收敛到同一个固定点的像素分组在一起,得到单个细胞的形状。



图 3 Cellpose 模型的架构

文章中将 Cellpose 与 Mask R-CNN、Stardist、U-Net3、U-Net2 等不同深度学习模型进行了比较,分别通过对 generalist data(包含全部 608 张图像的数据集)和 specialist data (只包含 100 个荧光细胞的 Cell Image Library)分别对 Cellpose 和其他模型进行训练。其结果为,用 generalist data 训练的模型,用 generalist data 和 specialist data 测试,Cellpose 模型都比其他模型预测的更精准;用 specialist data 训练的模型,在 specialist data 测试,Cellpose 也比其他模型要好。



图 4 Cellpose与其他模型的分割效果的比较 。IoU,为标准交集并集度量(intersection over union),是衡量图像分割精度的重要指标,将算法的预测与不同匹配精度阈值的真实掩模进行匹配,一般这个值达到 0.5,就认为预测是有效的。AP,为平均精确率(average precision),在预测有效的情况下(IoU阈值以上),计算 TP、FP、FN,AP=TP/(TP+FP+FN)。

文章里同时还探究了 ROI 同质性与 ROI 凸性对 Cellpose 分割的影响。同质性指的是图像内每个 ROI 大小差别,同质性越大,ROI 大小差别越小,计算方式是对 ROI 面积大小从小到大排序,第一四分位数除以第三四分位数即为同质性指标。通过对同质性与分割效果的相关性分析以判断是否相关 ;而凸性可以理解为 ROI 圆不圆润,凸性越大,ROI越圆润,计算方式为 ROI 面积除以恰好能包裹住的圆的面积,通过将 ROI 分为低、中和高凸性来探究 ROI 的凸性是否影响分割效果。实验结果表明,分割效果与细胞大小的同质性之间没有关系,而凸性会影响到分割效果,所有模型在高凸性 ROI 的分割表现优于低凸性ROI。



文章的最后,作者还对 Cellpose 模型进行了修改,使其能支持 3D 的数据,即支持对视频内的细胞进行分割。



图 6 支持3D数据的Cellpose模型

“Cellpose 2.0: how to train your own model”发表于 2022 年 11 月[2]。尽管 Cellpose 1.0 在设计之初就考虑了通用性,希望可以为许多不同的细胞图像提供开箱即用的良好分割效果。但是在实际应用中,却发现一个很大的问题——一方面不同数据集差别很大,每个数据集注释风格也不一致,另一方面不同用户想要的分割样式可能也不一样。如何确保模型的自适应力强,不仅能用于不同数据集,还能满足不同用户希望的分割风格,是细胞分割领域的一大挑战。

为此,Cellpose2.0 改进之一,是集合了原有的 608 张多类型的图像以及 TissueNet[3]、LiveCell 数据集[4],通过聚类分成了 9 个不同风格数据集,为这 9 个具有人工注释的数据集单独训练对应的 Cellpose 模型进行集成。这 9 个模型具有不同的分割样式,用户可以选择最符合他们要求的模型,并且软件可支持计算输入图像的风格来自动推荐模型。



图 7 Cellpose 2.0 集成了不同分割风格的模型

鉴于集成的 9 个模型可能依然无法解决对全新图像类型的泛化问题,文章中还探究了用户能否以相对较少的注释来训练一个自定义模型。将 TissueNet 和 LiveCell 数据集视为新的图像类别,通过比较 Cellpose 1.0 已预训练的模型和完全从头开始训练的 Cellpose 模型(from scratch),将 TissueNet 和 LiveCell 团队各自使用的模型(Mesmer 模型和 LiveCel 模型)当作参考基准,探究对于两个数据集需要多少个 ROI 训练才能实现良好的分割效果。实验结果表明,预训练模型比完全从头开始训练的模型更有优势,仅仅只需要 500-1,000 个训练 ROI 就足以在TissueNet 和 LiveCell 数据集中实现接近最大的分割精度,并且在多样化的 Cellpose 数据集中预训练能比大型的 TissueNet 和 LiveCell 数据集预训练表现更好。



图 8 Cellpose 模型并不需要大量基准数据集就能达到良好的分割性能

Cellpose 2.0 的改进之二,借鉴了 TissueNet 数据集的细胞 ROI 标注方法[3],在深度学习算法层面引入了“人在回路”(Human-in-the-loop)。传统的监督学习算法,包括 Cellpose 1.0 算法,完全依赖于数据标注员对数据集的注释,经过一次次的迭代训练使其在当前的数据集表现良好,却无法真正保证其在新数据下的表现。“人在回路 human-in-the-loop training ”的思想是在训练过程中引入人的反馈,以提高模型预测的准确性、不同数据集下的鲁棒性。目前大火的 ChatGPT,便是在 GPT3.5 模型上引入了“人在回路”的强化学习,人工对答案满意度进行打分排序,使得 ChatGPT 的回答更接近于人。

Cellpose 2.0 的“人在回路”训练过程为,先训练一个初始的、可能并不完美的模型,这个初始模型应用于用户的数据上,结果将由用户来修正,模型再通过修正后的结果进行重新训练,以提高模型的细胞分割表现。文章表明,Cellpose 预训练模型配上“人在回路”训练方式仅需要 3-5 张图像(100-200 个手动分割的 ROI)就足以获得良好的分割效果。



图 9 Cellpose的“人在回路”示意图及在TissueNet数据集和LiveCell数据集使用“人在回路”训练的过程

Cellpose 使用入门

本文的最后,将简单介绍 Cellpose 的使用。

** 在线版本 Cellpose 1.0**

Cellpose 官网支持运行在线版本的 Cellpose 1.0。

https://www.cellpose.org/

用户能够直接上传数据来进行简单的分割。模型运行完毕后,将显示原图、预测的细胞分割结果、预测的细胞分割 mask 及预测的梯度矢量场,并且支持下载 mask 为 png 图片



图 10 运行在线的cellpose

**本地版本Cellpose 2.0 **

如果需要大量的细胞成像图片进行细胞分割以及想体验 Cellpose 2.0 的新模型和“人在回路”训练自定义模型,则需要安装本地版本。

Cellpose 基于 Python 语言编写,并没有提供 exe 文件来直接安装。

在Cellpose的Github repo上有详细的安装指导:

https://github.com/MouseLand/cellpose。

官方的安装建议是使用 conda 作为包和环境管理器,来安装 Cellpose。安装和配置 conda 这里并不展开,可从网络搜索教程,Windows 系统和 Mac 系统推荐安装具有图形界面的 Anaconda,而 Linux 系统推荐安装更为轻便的 miniconda 或 mambaforge。

参考文献

[1] Stringer C, Wang T, Michaelos M, et al. Cellpose: a generalist algorithm for cellular segmentation [J]. Nature Methods, 2021, 18(1): 100-6.

[2] Pachitariu M, Stringer C. Cellpose 2.0: how to train your own model [J]. Nature Methods, 2022, 19(12): 1634-41.

[3] Greenwald N F, Miller G, Moen E, et al. Whole-cell segmentation of tissue images with human-level performance using large-scale data annotation and deep learning [J]. Nature Biotechnology, 2022, 40(4): 555-65.

[4] Edlund C, Jackson T R, Khalid N, et al. LIVECell-A large-scale dataset for label-free live cell segmentation [J]. Nature Methods, 2021, 18(9): 1038-45.

这个程序有注释对理解此算法很有用https://github.com/MouseLand/cellpose/blob/main/notebooks/Cellpose_cell_segmentation_2D_prediction_only.ipynb

转自 https://www.bio-equip.com/showarticle.asp?id=453129232

论文解读:Cellpose在细胞分割领域的应用的更多相关文章

  1. CVPR2020论文解读:三维语义分割3D Semantic Segmentation

    CVPR2020论文解读:三维语义分割3D Semantic Segmentation xMUDA: Cross-Modal Unsupervised Domain Adaptation  for 3 ...

  2. CVPR2020论文解读:手绘草图卷积网络语义分割

    CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...

  3. CVPR2019 | Mask Scoring R-CNN 论文解读

    Mask Scoring R-CNN CVPR2019 | Mask Scoring R-CNN 论文解读 作者 | 文永亮 研究方向 | 目标检测.GAN 推荐理由: 本文解读的是一篇发表于CVPR ...

  4. zz扔掉anchor!真正的CenterNet——Objects as Points论文解读

    首发于深度学习那些事 已关注写文章   扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 ​关注他 JustDoIT 等 ...

  5. NIPS2018最佳论文解读:Neural Ordinary Differential Equations

    NIPS2018最佳论文解读:Neural Ordinary Differential Equations 雷锋网2019-01-10 23:32     雷锋网 AI 科技评论按,不久前,NeurI ...

  6. 注意力论文解读(1) | Non-local Neural Network | CVPR2018 | 已复现

    文章转自微信公众号:[机器学习炼丹术] 参考目录: 目录 0 概述 1 主要内容 1.1 Non local的优势 1.2 pytorch复现 1.3 代码解读 1.4 论文解读 2 总结 论文名称: ...

  7. 论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)

    摘要:本文提出一种基于局部特征保留的图卷积网络架构,与最新的对比算法相比,该方法在多个数据集上的图分类性能得到大幅度提升,泛化性能也得到了改善. 本文分享自华为云社区<论文解读:基于局部特征保留 ...

  8. CVPR2020论文解读:CNN合成的图片鉴别

    CVPR2020论文解读:CNN合成的图片鉴别 <CNN-generated images are surprisingly easy to spot... for now> 论文链接:h ...

  9. 图像分类:CVPR2020论文解读

    图像分类:CVPR2020论文解读 Towards Robust Image Classification Using Sequential Attention Models 论文链接:https:// ...

  10. CVPR2020论文解读:OCR场景文本识别

    CVPR2020论文解读:OCR场景文本识别 ABCNet:  Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...

随机推荐

  1. Android drawable与mipmap的区别(android资源文件放置位置)

    1.Drawable Android 把可绘制的对象抽象为Drawable,不同的图形图像代表着不同的darwable类型, 通常我们在代码中不会直接接触drawable实现类的,是由android ...

  2. Java 对属性赋值的位置 执行的先后顺序

    1 package com.bytezreo.block; 2 3 /** 4 * 5 * @Description 对属性赋值的位置: 6 * @author Bytezero·zhenglei! ...

  3. Java面向对象(下)--static/final/代码块/抽象/接口/内部类

    目录 1 关键字:static 2 理解main方法的语法 3 类的成员之四:代码块 4关键字:final 5 抽象类与抽象方法 6 接口(interface) 7 类的成员之五:内部类 static ...

  4. xxl-job的基本使用

    xxl-job的基本使用 xxl-job是分布式的调度平台调度执行器执行任务,使用的是DB锁(for update)来保证集群分布式调用的一致性,学习简单,操作容易,成本不高. 准备阶段 服务端配置 ...

  5. coding 的pages 静态要六分钱一个月,我也是醉了。

    前言 前几天,收到个短信,说coding 竟然免费开放 动态pages,我这心说 NB啊,这咱得蹭上一波热度. github 总是打不开 gitee 每次pages都要手动点下发布,而且是静态的. c ...

  6. function 的入参 如果是指针的话,如果你用的好的话,会颠覆三观啊 这里就是指对象,数组不用考虑 // 夏娃的苹果

    function 的入参 如果是指针的话,如果你用的好的话,会颠覆三观啊 这里就是指对象,数组不用考虑 这就是一颗 夏娃的苹果

  7. QT 使用QPixmap自定义光标 缩放图像模糊问题

    QT中定义光标可以使用 Qt::CursorShape 预定义 的光标,也可以使用 QBitmap 和 QPixmap 自己绘制光标.QBitmap 只有黑白2色,QPixmap可以绘制彩色光标.使用 ...

  8. Linux SVN 拉取代码报错 svn: E210007: Unable to connect to a repository at URL

    原因:Linux缺少组件,导致无法支持 SVN协议 解决办法 yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap

  9. 记录--工程化第一步这个package.json要真的搞明白才行

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 工程化最开始就是package.json开始的,很多人学了很多年也没搞清楚这个为什么这么神奇,其实有些字段是在特定场景才有效的,那每个属性 ...

  10. 记录--从原理分析vue开发环境搭建的全部过程

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 平时大家开发vue项目的时候,相信大部分人都是使用 vue-cli脚手架生成的项目架构,然后 npm run install 安装依赖,n ...