仅需25%采样,帧率最高提升至 4 倍,深度学习革新活细胞纳米荧光成像

本研究提出HDN分层去噪网络与Fast-MoNaLISA稀疏重建框架,将RESOLFT纳米荧光成像的光剂量降低10倍、延时成像时长延长5倍、25%采样下帧率提升至4倍。方法基于多源配对/非配对/独立活细胞数据集训练,兼顾无监督与有监督范式,在保持60纳米空间分辨率前提下显著抑制光漂白与运动伪影,适用于线粒体、肌动蛋白等亚细胞动态观测。

众所周知,细胞是生命体结构与功能的基本单元,各类精巧的细胞器、细胞骨架、蛋白质复合物等纳米级结构在其中各司其职,从而驱动起纷繁复杂的生命活动。但时至今日,科学界对于这些精巧的纳米尺度结构之间如何动态互作,依旧知之甚少。究其原因,传统光学显微镜受阿贝衍射极限的约束,细胞内部大量纳米级精细构造及其动态变化仿佛笼罩在一团「看不清」的迷雾之中,极大阻碍了细胞亚结构的研究进展。

荧光纳米显微镜(Fluorescence nanoscopy)技术的出现打破了这一壁垒。作为一类突破光学衍射极限的远场荧光显微技术,它通过物理手段调控荧光分子的发光状态,有效将观测分辨率推进至纳米尺度, 研究者得以直观观测细胞内部微观结构的精细构象与动态演变,成为探索细胞生理规律、阐明疾病病理机制、解码生命活动奥秘的重要工具。

在众多荧光纳米显微镜技术路线中,可逆饱和光学荧光转换(RESOLFT)纳米显微是极具代表性的方案。它借助可逆光开关荧光蛋白(rsFPs),利用空间结构化光场调控荧光蛋白在亮态(ON)与暗态之间可逆切换,制造分子发光稀疏性。依靠这种巧妙的「选择性点亮」扫描,最终重构出超越衍射极限的高清细胞图像。

不过,RESOLFT 纳米显微目前并非完美无瑕,在其广泛应用的道路上主要绊脚石有两个:其一, rsFPs 本身存在光开关疲劳效应,反复的状态切换可能导致其逐渐丧失可逆切换能力,直接限制活细胞长时间时序成像的总时长;其二, RESOLFT 成像时间受荧光分子切换、激发耗时及空间扫描采样点数制约,采样点越多成像耗时越长,时间分辨率不足还容易产生运动伪影。

针对上述难题,来自瑞典斯德哥尔摩皇家理工学院、德国德累斯顿工业大学与意大利米兰人类技术城基金会的跨机构研究团队,将深度学习与 RESOLFT 成像相结合,开发出两套互补计算成像策略: Hierarchical DivNoising(HDN)分层去噪网络和 Fast‑MoNaLISA 稀疏采样重建框架,用于恢复低信噪比(SNR)或欠采样图像,极大拓展了 RESOLFT 成像的实验极限。借助 HDN 网络,单帧图像的光剂量可减少 10 倍,延时成像总时长最高可延长 5 倍;借助 Fast-MoNaLISA 框架,成像帧率在 25% 采样条件下最高可实现 4 倍增长。

相关成果以「Time-lapse RESOLFT nanoscopy empowered by deep learning」为题,发表于 Nature Communications。

研究亮点:

  • 基于 HDN/HDNsup 分层去噪网络,在降低 10 倍光剂量条件下恢复低信噪比 RESOLFT 图像,可实现最长 5 倍的活细胞长时序纳米成像

  • 开发 Fast-MoNaLISA 时序上采样模型,对欠采样图像进行超分辨重建,最高可实现 4 倍成像加速并减轻扫描伪影

  • 构建多类型数据集完成模型全面验证,实现线粒体囊泡、肌动蛋白网络等亚细胞动态过程的活细胞纳米观测

论文地址:

https://www.nature.com/articles/s41467-026-78580-z

多源数据集设计,适配训练与独立评估

本研究采用了多套用途各不相同的 RESOLFT 数据集,涵盖配对数据集(Paired datasets)、未配对数据集(Unpaired datasets)和独立数据集(Independent datasets),具体来说:

配对数据集

为获取干净-噪声配对图像数据集,研究人员对细胞进行了固定处理,以避免图像对之间发生结构位移。固定处理会限制 rsFP 的循环次数,意味着光漂白速度比活细胞更快,但仍可以获取高质量 RESOLFT 图像。

对于固定波形蛋白数据集(Fixed vimentin dataset) U2OS Vim-rsEGFP2,研究人员先以约 10%-20% 的 ON-switching(约 30 W/cm²)采集噪声图像;随后在约 80%-90% 的 ON-switching(约 300 W/cm²)下采集 5 张图像。该伪时间序列信号会快速衰减,研究人员利用信号衰减过程,在不同信噪比水平下评估 HDN 和 HDNsup 以及上采样预测结果,取伪时间序列前 3 张图像的平均值,获取最优真实参考值。

对于固定肌动蛋白网格数据集(Fixed actin meshwork dataset)U2OS LifeAct-rsEGFP2,流程同上。不过第一张图像在约 50% ON-switching 下采集;随后在约 90% ON-switching 下采集 5 张图像,并通过平均处理生成高质量的真实参考图像,用于训练 HDNsup 模型。

非配对数据集

非配对数据集主要用于无监督去噪和上采样训练。

对于线粒体和 HIV Gag-IM 颗粒的无监督 HDN 去噪处理,研究人员采用低 ON-switching 时间序列,直接在低信噪比的时间序列上训练 HDN。由于单个时间序列包含大量时间帧,因此少量细胞即可提供充足的噪声图像。

对于上采样训练数据集,研究人员采集常规 RESOLFT 时间序列(含 10-40 帧),时间长度根据每个细胞和结构调整,确保整套时序信噪比充足。

独立测试数据集

针对 HIV Gag-IM 颗粒,研究人员额外采集了两套测试集,分别是:去噪评估集(含低 ON-switching、高 ON-switching 和 增强共聚焦三种条件下采集的图像)和上采样评估集(仅包含高 ON-switching 和增强共聚焦两种条件下采集的图像)。值得注意的是,这些数据集皆为活细胞采集,因此存在细胞运动的影响。

每个数据集会以随机方式划分为训练集、验证集和测试集。图像尺寸涵盖 64 × 64、96 × 96、128 × 128,信息量不足区块会被剔除。具体数据集如下图所示:

训练与测试数据集详述

分拆核心难题,聚焦图像去噪与稀疏采样恢复

本研究聚焦于 RESOLFT 技术,基础方法采用 MoNaLISA 实现方案——一种当前最先进的并行化 RESOLFT 成像技术。MoNaLISA 整合了用于 ON-switching 和 read-out 的多焦点模式,以及用于 OFF-switching 的叠加周期性线状模式,可在约 40 × 40 µm² FOV 内,以约 0.5 Hz 的帧率实现 45-60 纳米空间分辨率的活细胞成像。

以此为基础,研究人员进一步提出,利用深度学习恢复信噪比较低的图像或采样欠缺的图像,以此突破传统 RESOLFT 方法的局限。 其逻辑十分简单,即利用图像去噪技术降低成像所需的光照剂量,减轻光漂白现象;构建恢复稀疏采样采集数据的计算框架,通过计算上采样提升时间分辨率。

具体来说,ON-switching 光强决定被激活的 rsFP 数量,进而控制采集信号强度。传统方案通常激活 80%-90% 的 rsFP,以最大化信噪比;而本研究提出相反的策略,仅激活 10%-20% 的 rsFP,获取低信噪比图像,再通过深度学习去噪重建高质量图像。这不仅可以最大限度减少光漂白,还能缓解因 ON-switching 用短波(通常为 405 nm)而产生的光毒性问题。

基于此,研究人员提出采用 HDN 这一无监督图像去噪算法。该方法基于阶梯变分自编码器(LVAE)网络结构,同时引入实验测得的噪声模型。 另外,研究还提供了 HDN 的有监督变体版本 —— HDNsup,基于同一框架改成监督训练。研究团队提出无监督和监督两个版本方案,其目的在于当有高质量真值 GT 时,可以用监督学习;当没有真值时,无监督模式下依旧稳定可用。同时,理想策略还必须满足有效降噪,并且不会牺牲空间分辨率。

其中,HDN 中骨干网络 LVAE 用于学习生物图像数据分层结构先验,能同时捕捉从大体轮廓到精细纹理的多级特征。而更重要的是,该模型为多解先验模型,不会输出唯一确定结果;实验噪声模型则是 HDN 实现无监督训练的核心,其描述成像系统在带噪观测图像时,背后真实干净信号的条件概率。更重要的是,该框架可轻松适用于有监督训练,使 HDN 能够利用已知的干净真值信息,同时保留 HDN 多解表征与可调节输出结果的多样性两大特性。

研究的第二种方案是构建框架用于恢复稀疏采样的图像,其目的是实现对快速活细胞动力学的可视化。 具体来说,采集时间取决于扫描步数,而通过稀疏采样结合图像恢复技术,有望在保持图像质量的同时显著提高成像速度。最佳采样步长通常依据 Nyquist-Shannon 采样定理,防止混叠伪影或信息冗余,步长大小等于系统截止频率的 2倍,约为预期分辨率的一半。在 RESOLFT 成像中,步长约为 20-30 nm。

基于此,研究人员提出了 Fast MoNaLISA。该方法通过跳过部分扫描步骤来缩短单帧采集时间,然后利用上采样网络恢复欠采样图像,优势十分显著,即光照剂量不变,却可提升时间分辨率。这一思路曾用于衍射极限的共聚焦显微镜,但却尚未在 100 nm 以下的纳米超分辨成像中验证。另外,本研究的一个核心技术细节在于:减少采样的同时保持 OFF-switching 光剂量不变,因此样本上依然能维持原有的成像分辨率。

Fast MoNaLISA 实现了单帧训练和多帧训练两种训练范式。单帧训练是针对静态场景下的上采样恢复,即为网络提供单个时间点的数据;多帧训练是基于单帧训练方法的改进,目标是成像细胞内分子和细胞器的快速动态过程。在该方法中,研究人员使用子采样的延时图像作为输入,而非单个快照,对每个时间点通过应用与单帧训练相同的随机下采样步骤生成子采样图像。随后网络被训练以预测延时序列中的中间时间点,同时还能学习输入图像新增的时间上下文所提供的附加信息,提升重建保真性。

网络架构方面,Fast MoNaLISA 上采样重建的基础结构是 UNet-RCAN,不过保留了原始 RCAN 最后一层上采样层,不删掉。 选择该网络的原因很简单,RCAN 本身就是为图像上采样任务而设计,天然适配本次研究欠采样图像恢复。另外在结构的取舍上,模型保留了 U-Net 主干部分,用以帮助模型更快收敛。

少照 10 倍,延时 5 倍,拍快 4 倍

研究首先评估了 HDN 对低 ON-switching 图像的重建能力。实验分别选取无监督方法 Noise2Void(N2V)、Self-Inspired Noise2Noise(SN2N)和有监督方法 Content-Aware Image Restoration(CARE)、UNet-RCAN,并将 HDN 与它们进行了对比验证。

结果显示,真值 GT 的平均半高全宽(full width at half-maximum,FWHM)为 58 nm,而无论是 HDN 亦或 HDNsup,其平均 FWHM 均能维持空间分辨率,分别为 56 nm 和 54 nm。相比之下,无监督方法的 SN2N 的平均 FWHM 为 120 nm,N2V 为 93 nm;有监督方法相对较优,CARE 为 73 nm,UNet-RCAN 为 70 nm。但由于仍倾向于平滑细胞结构,其导致细节信息丢失,从而使得平均 FWHM 均高于真值,且傅里叶环相关(FRC)曲线在低频段下降。如下图所示:

低 ON-switching状态 MoNaLISA 图像去噪处理

不过值得注意的是,监督去噪方法性能的有限性并非来自于网络架构本身,而是源于真值质量的不足。因此,与其他监督学习方法一样,HDNsup 虽然表现优异,但其性能也仍高度依赖于真值的质量。

接着研究人员在更稀疏的点状结构上验证 HDN 去噪方法的效果。 结果显示,HDN 能够准确恢复这类点状结构,并保留增强共聚焦成像中无法观察到的超分辨细节。这是其他无监督去噪方法所不能及的,并且 FRC 也证实了该结论。当然,当信噪比极低时,预测准确率会下降,因此必须谨慎选择并验证 ON-switching 的水平以确保预测的可靠性;对于 HIV Gag-IM-rsEGFP2,5% 的亮态激活占比会出现明显重建伪影,10% 为较为可靠的工作阈值。

在验证方案是否能实现活细胞的长时间延时成像时,由于成像所用紫外-可见光能量仅为原来的约 1/10,使得延时成像时间相比传统高 ON-switching 的常规 RESOLFT 方法最多延长了约 5 倍。 如下图所示。值得注意的是,该实验均在 vimentin 分子内源性表达水平下进行,对于亮度更高的样本,如 rsEGFP2 线粒体外模,则改用无监督 HDN,可实现 100 帧以上的延时成像。

长时间 MoNaLISA 成像

研究人员继续选用 HDNsup 对如肌动蛋白网状结构的复杂交错结构进行了成像实验。通过在表达 LifeAct-rsEGFP2 的固定细胞上采集高质量数据,先验证其可以精准重建肌动蛋白网状结构,随后迁移到活细胞成像。结果显示,HDNsup 成功连续采集至少 50 帧,实现了肌动蛋白网状结构动态过程的长时间观测。

在单帧训练与多帧训练评估中,研究探索了三种采样率,75%、50% 和 25%,分别对应帧率提升 1.3 倍、2 倍和 4 倍。

单帧训练结果表明,Fast MoNaLISA 在信噪比较高的图像上表现最佳,因此应采用常规的 ON-switching 水平,即 80%-100%,这与减少光照剂量的总体目标一致,因为子采样本身就会降低该剂量;其次采样率的选择体现了成像速度与预测可靠性的权衡,单帧预测中采用 50% 的采样率是保证速度与保真度之间最稳健的折中方案。如下图所示:

单帧训练及结果

多帧训练结果表明,Fast MoNaLISA 在只采集 25% 像素的高速成像条件下,依旧能准确重建图像,突破了单帧训练的原有极限。如下图所示:

多帧训练及结果

写在最后

总的来说,本研究搭建了一套结合实验成像与计算重建的混合方案,依托并行 RESOLFT 技术实现全活细胞长时程动态观测,空间分辨率可达约 60 纳米,能够捕捉细胞骨架、线粒体囊泡等精细结构,追踪以往只能静态拍摄的微弱信号与快速运动分子。对比 SIM、SOFI、STED 等主流活细胞超分辨技术,该方法在亚 70 纳米分辨率、成像速度、视场大小与光损伤之间实现了难得的平衡。

更难能可贵的是,目前团队开源了 LISAI 软件框架,相关算法还可迁移至 STED、转盘共聚焦等其他扫描显微系统。当然深度学习重建存在参数取舍问题,需要根据样本信噪比调试参数;未来还可进一步优化模型,构建一体化框架,同步降低成像光剂量与采集耗时。

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值