跑训练:自监督修复缺失楔形

用公开工具,把含噪、缺楔形的断层图交给一个无需真值的网络去修复 —— 准备、训练、预测,一步步跑通

直觉

到这一步,你手上已经有了一个三维体(.mrc):重构出来的断层图。但它有两个老毛病——噪声大(剂量低,散粒噪声把弱信号埋住)、缺失楔形(只能倾到 ±60°,傅里叶空间缺了一块,结构沿 z 被拉长、糊掉,见 缺失楔形)。这一页教你跑一个自监督网络去修这两件事:输入是你这张含噪、缺楔形的体,输出是一张去噪、更各向同性的修正体。关键词是”自监督”——全程不需要任何干净的真值,网络只从你已有的脏数据里学。

目标说清楚:把”含噪 + 缺楔形的观测体”映射成”更接近真实结构的修正体”。没有干净参考可学,靠的是数据自带的两种约束——旋转 / 缺楔一致性,以及 even/odd 拆分出来的独立噪声配对。下面先认工具,再走一遍通用的”准备 → 训练 → 预测”流程。

能跑的公开工具

这些都是公开、有文档的标准工具,先按名字记住各自擅长什么:

三者准备数据的方式略有不同(IsoNet 从单张体 + 旋转,cryoCARE / DeepDeWedge 从 even/odd 对),但**“准备 → 训练 → 预测”这条主干完全一样**。下面讲的就是这条主干。

提示

先问自己一句:你手上有没有 even/odd 那对独立半图? → cryoCARE / DeepDeWedge 都能用,去噪最干净。只有单张体、最在意的是缺失楔形 → 从 IsoNet 起步。两条路下面的步骤几乎重叠。

第 1 步:准备元数据

做什么。 给工具一份清单,列出要处理哪些断层图、以及最关键的像素尺寸 (pixel size, 单位 Å/pixel)。通常是一个 star 文件(见 数据处理 里讲的元数据契约),逐行登记每个体的路径、像素尺寸,按需还有欠焦量等。

为什么。 像素尺寸决定了”频率↔分辨率”的换算,也决定子断层取多大才合理。这一步填错——尤其像素尺寸——后面全跑偏却不报错,是最常见的坑。

# 命令形状(不是真实 flag):生成一个列出体与像素尺寸的 star 文件
<tool> prepare_star  --tomos  tomo1.mrc tomo2.mrc  --pixel-size <Å/px>  --out tomograms.star

第 2 步:CTF 反卷积,提对比

做什么。 在训练前对断层图做一次 CTF 反卷积 (deconvolution),把低频对比提上来(IsoNet 自带这个步骤;cryoCARE / DeepDeWedge 也建议在反卷积过的体上训练)。原理见 数据处理:反卷积不增加新信息,只是把已有频率重新加权,让膜、细胞器这些大结构跳出来。

为什么。 对比度上来后,网络(和你肉眼)更容易抓住真实结构,而不是在一片发灰里乱学。

深入

这里复述一条铁律(数据处理 已讲过):训练域和推理域必须一致。如果你在反卷积过的体上训练,预测时也只能喂反卷积过的体;剂量加权、滤波、像素尺寸同理。反卷积改变了数据的频谱分布,模型学到的是那个分布下的统计规律——换一种预处理,等于把输入换到另一个域,结果会悄悄变差却不报错。所以从这一步起,记住你这条数据链做了哪些预处理,预测时原样复刻

第 3 步:生成采样掩膜

做什么。 给体配一张掩膜 (mask),标出”哪里有真东西”(细胞、膜、颗粒)、哪里是空冰。训练样本只从掩膜内取。

为什么。 一张断层图里很大一片是空冰——纯噪声、没有结构。若让网络从这些区域取样,它会把训练预算浪费在”学噪声该长什么样”上。把取样限制在有信号的区域,网络才把容量用在真正要修的结构上。

第 4 步:抽取子断层(小立方块)

做什么。 从掩膜区域里切出许多固定大小的小立方块 (subtomograms / patches),比如边长几十体素,作为训练样本。

为什么。 整张体太大,喂不进显存,也不需要——网络要学的是局部的”脏→干净”映射,小块足够,还能切出成千上万个样本喂饱训练。这里 even/odd 路线会成对地切:同一位置,一块取自 even 半图、一块取自 odd 半图,构成 (输入, 目标) 对。

# 命令形状:在掩膜内抽取固定大小的子断层
<tool> extract  --star tomograms.star  --mask mask.mrc  --cube-size <N>  --out subtomos/

第 5 步:自监督训练

做什么。 用上面切好的样本训练网络。它学的是条件分布 p(干净退化)p(\text{干净}\mid\text{退化})——

两条路殊途同归:网络最终输出的,是把独立噪声平均掉、把缺楔形按学到的先验补上之后的估计干净结构

为什么需要重视硬件。 这一步必须有支持 CUDA 的 NVIDIA 显卡,而且要跑数小时(取决于体的数量、子断层数、网络大小)。这不是笔记本能干的活——拿 CPU 或集成显卡跑,要么直接报错、要么慢到没法用。把它放到带 GPU 的机器上。

# 命令形状:自监督训练,损失会逐步下降
<tool> train  --data subtomos/  --epochs <N>  --gpu 0  --out model/
该看什么

训练时盯三件事:(1) 训练损失要往下走——一直平、或者爆掉,多半是数据准备出了问题(掩膜空了、像素尺寸错了、even/odd 配错位)。(2) 训练能跑完、产出一个模型权重文件。(3) 心里记牢这个模型是在哪种预处理的数据上训的,下一步要对上。

第 6 步:预测(应用到整张体)

做什么。 把训好的模型应用到整张断层图上,得到一张去噪、更各向同性的修正体 .mrc。预测时网络在整个体上滑窗、逐块修复再拼回。

为什么。 训练只在小块上学映射,真正要的是整张体被修好。这一步把学到的映射铺满全图。

# 命令形状:把训好的模型应用到整张体,输出修正后的 .mrc
<tool> predict  --model model/  --tomo tomo1.mrc  --out tomo1_corrected.mrc
该看什么
  • 预览一张切片:在 3dmod 或 ChimeraX 里并排打开原体和修正体——膜该更连、噪声该更少、沿 z 的拉长该减轻。
  • 训练和预测喂同一种数据:第 2 步那条铁律在这里收口。模型在反卷积过的体上训,就只喂反卷积过的体去预测;像素尺寸也要一致。
  • 别过度相信补出来的细节:缺失楔形里的信息是网络推断出来的,不是测到的。当作有根据的猜测看,关键结论还要回到原始数据或独立证据上验。

同一条形状,更进一步:本站的方法

上面的公开工具,骨架都是 准备 → 训练 → 预测。本站研究的两套方法把这条骨架往前推,但形状不变,你已经会跑了:

换句话说:IsoNet / cryoCARE / DeepDeWedge 让你把这条管线先跑通;CryoGEN / CryoWGEN 在同样的 prepare→train→predict 形状上,换更强的先验、并给出不确定性。先把公开工具这一遍跑顺,再去读方法页,会顺很多。

跑完拿到修正体之后,下一步就是把它看出来、做分割——见 IMOD 与 ChimeraX


上一步:even/odd 拆分 · 下一步:IMOD 与 ChimeraX 可视化

← 软件与数据处理