第2章 细胞结构与特征归纳总结——给数据一个生物学的“锚点”
做细胞分类,最怕什么?
怕你手里的数字特征根本没有生物学含义。我以前接手过一个项目,大家对着几千个高维特征跑PCA,结果发现第一个主成分竟然跟细胞的拍摄亮度高度相关——根本和生物学无关。说白了,不了解细胞长什么样、每个结构能提取什么特征,你训练出来的模型就是个黑箱,换个染色方式立马崩。
所以这一章,我带你从分类工程师的视角,重新梳理细胞结构。不是为了让你背生物课本,而是为了让你知道:哪些特征可量化、哪些结构容易引入噪声、哪些是分类的稳定线索。
2.1 细胞的基本结构——从分类视角看
一个典型的真核细胞,你可以把它想象成一个工厂:
- 细胞膜:工厂围墙。负责物质交换,也决定了细胞的外形。分类时我们关注它的周长、凹凸度、是否规则。
- 细胞质:工厂车间。里面有各种细胞器(线粒体、内质网、高尔基体等)。这些细胞器的数量、分布密度、荧光强度就是很好的特征。
- 细胞核:工厂中控室。里面是遗传物质。核的大小、形状、核质比(核面积/细胞面积)在癌症分类中极其关键。
你在显微镜图像里看到的每一个像素,其实都是这些结构叠加后的投影。我个人的习惯是:先做核分割,再做细胞分割,最后用掩膜把细胞器和核的特征分别提取出来。千万不要一上来就整张图丢进CNN,那样你根本不知道模型到底学到了什么。
2.2 核心细胞器及其特征
下表是我自己整理的一个速查表。每次开始新项目,我都会对着表检查一下:哪些特征可以复用之前的代码?哪些需要针对新染料重新调参数?
| 细胞器 | 主要功能 | 可量化特征 | 分类场景举例 |
|---|---|---|---|
| 细胞膜 | 物质交换、信号识别 | 周长、面积、圆形度、凹陷度 | 区分上皮与间充质细胞 |
| 细胞核 | 遗传物质存储与转录 | 面积、直径、核质比、染色质纹理 | 癌细胞识别(核异形性) |
| 线粒体 | 能量生产 | 数量、面积占比、荧光强度、分布模式 | 代谢活跃度分类 |
| 内质网 | 蛋白质合成与转运 | 区域面积、管状/片状结构比例 | 分泌细胞 vs 非分泌细胞 |
| 高尔基体 | 蛋白质修饰与分选 | 紧凑度、与核的距离 | 极化细胞极性判断 |
请注意,上面表格里的“可量化特征”大部分是手工特征。我建议你在特征工程阶段,先跑一遍常规的形态学和强度统计特征,再扔给模型。这样万一深度学习结果不理想,你还有可解释的中间产出去排查问题。
2.3 常见的可量化特征维度
实际操作中,我们把特征归为三大类。记得用短代码片段快速验证一下,别等整个pipline跑完才发现指标不对。
# 形态特征 —— 基于二值掩膜
import skimage.measure as measure
props = measure.regionprops(label_mask, intensity_image=original)
for p in props:
area = p.area # 面积(像素)
perimeter = p.perimeter # 周长(像素)
eccentricity = p.eccentricity # 离心率(越接近1越细长)
solidity = p.solidity # 凸度(越接近1越规则)
# 强度特征 —— 基于原始灰度/荧光
mean_int = p.mean_intensity
std_int = p.std_intensity
# 纹理特征 —— 基于灰度共生矩阵
from skimage.feature import graycomatrix, graycoprops
glcm = graycomatrix(p.intensity_image, distances=[5], angles=[0], symmetric=True)
contrast = graycoprops(glcm, 'contrast')
homogeneity = graycoprops(glcm, 'homogeneity')
个人小技巧: 我不建议一次性把所有特征都算出来。先抓3-5个最直观的(面积、核质比、荧光均值),跑一个baseline,看看分类结果是否和已知生物学标签一致。有一次我发现荧光强度均值分类效果奇好,后来一问生物学家才知道那个荧光标记恰好是某个表面标志物——这就是生物学给你“锚点”。
2.4 特征提取中的避坑点
说说我踩过的坑,希望你能避开。
我曾经有一个项目,训练集和测试集来自不同的荧光显微镜。 训练时模型完美收敛,测试时准确率直接腰斩。后来发现是因为不同显微镜的增益和曝光时间不同,导致强度特征分布偏移。从那以后,我强制团队在每一批数据中混入相同的参考微球来校准强度值。千万别以为归一化就能解决——荧光强度受光漂白、染料浓度、拍摄时间影响很大,归一化只能消除线性差异,但非线性的镜头畸变和荧光串色不行。
另一个常见问题:细胞分割的质量直接影响特征可靠性。我建议你至少准备两种分割算法(比如watershed和U-Net),并在验证集上对比特征的一致性。如果某个特征在两个分割版本下波动超过20%,就放弃它,或者改为使用鲁棒性更强的分位数特征。
核心思维: 细胞特征本质上是一种“形态-功能映射”。同一个细胞在不同生理状态下,其核质比、线粒体分布、膜褶皱程度都会变化。机器学习模型要学习的不是某个绝对数值,而是这些数值之间的关联模式。所以特征工程时,多构造比值特征(比如核面积与细胞面积之比、线粒体强度与细胞质强度之比),它们对拍摄条件变化更不敏感。
最后,用一个知识体系图帮你把本章内容串起来。记住这个图的结构,就是你设计特征提取pipeline的顺序。