当前位置: 首页 > news >正文

《心血管成像的深度学习》论文精读

Deep Learning for Cardiovascular Imaging

重要性:由深度学习 (DL) 的进步推动的人工智能 (AI) 有可能重塑心血管成像 (CVI) 领域。虽然 CVI 的 DL 仍处于起步阶段,但研究正在加速,以帮助获取、处理和/或解释各种模式下的 CVI,其中已有多种商业产品投入临床使用。心血管成像师必须熟悉 DL 系统,包括对其工作原理的基本了解、与其他自动化系统相比的相对优势以及实施过程中可能出现的陷阱。本文的目标是以简单易懂的方式回顾 DL 在 CVI 中的方法和应用,以揭开这项新兴技术的神秘面纱。

观察:从本质上讲,DL 只是一系列可调数学运算的应用,这些运算将输入数据转换为所需的输出。基于受人类神经系统启发的人工神经网络,有几种类型的 DL 架构适合不同的任务;卷积神经网络特别擅长从 CVI 数据中提取有价值的信息。我们调查了 DL 在 CVI 模式范围内的一些显着应用。我们还讨论了 DL 系统在开发和实施过程中面临的挑战,包括避免过度拟合、防止系统性偏差、提高可解释性和促进人机合作。最后,我们总结了 DL 在 CVI 中的未来愿景。

结论和相关性:深度学习有可能对 CVI 领域产生有意义的影响。DL 不是威胁,而是可以看作心血管成像仪的合作伙伴,以减轻技术负担并提高护理效率和质量。仍然需要高质量的前瞻性证据来证明 DL CVI 系统的好处可能大于风险。

几十年来,自动化一直是心血管成像 (CVI) 领域不可或缺的一部分,但我们正在进入一个由人工智能 (AI) 驱动的计算机系统的新时代。

人工智能系统历来使用基于规则的算法,称为符号或经典人工智能。然而,人工智能最近的流行是由机器学习,特别是深度学习推动的。机器学习 (ML) 涉及无需明确编程即可学习的计算机算法,而是依赖于模式和数据推理。深度学习 (DL) 是基于深度人工神经网络的 ML 子集,其灵感来自人类神经系统(附录中的图 1)。1

在 CVI 中,DL 应用程序已开发用于超声心动图、心脏磁共振 (CMR) 成像、心脏计算机断层扫描 (CCT) 和心脏核成像。从 CMR2 上的图像平面处方到直接从心肌灌注极点图进行结果预测,3,4 DL 模型已被用于协助图像规划、简化图像处理或采集、自动测量、生成报告、增强解释、预测结果和深入表型队列(框 2、3、5-12)。随着 DL 系统在 CVI 中变得越来越普遍,临床医生应该对底层方法有一个大致的了解。我们的目标是阐明如何开发和实施 DL 模型以完成 CVI 中的特定任务,从而揭开这些技术的神秘面纱。附录 1-7 中包含了 CVI 的 DL 的历史入门和深入的技术回顾。

机器学习是如何学习的?

“机器学习”一词让人联想到媒体所描绘的自动化机器人导致人类灭亡的反乌托邦形象。这种误解源于对机器学习技术方面的有限理解。机器学习只需解决一些简单的数学问题(有时数十亿或更多),即可完成特定于定义任务的模式识别。
在这里插入图片描述
表 1 提供了机器学习中使用的术语定义。在 CVI 的背景下,用于训练模型的特征(类似于统计学中的变量)通常是图像像素的数值表示(补充中的图 3)。模型通过数学算法进行学习,该算法通过最小化损失函数(代表整体模型预测误差)来调整参数(类似于回归系数),将输入图像映射到所需结果

ML 算法一般分为两类:监督式和无监督式。监督式学习使用带标签的训练数据将输入映射到输出,模仿儿童通过观察大量示例来学习识别动物的方式,并使用明确的监督信号从错误中学习。这是 CVI 中更常见的 ML 形式,通常用于分类或回归任务,例如使用专家轮廓作为标签在 CMR 上分割左心室腔(逐像素分类)8 或直接从超声心动图图像预测左心室射血分数(回归)。13 无监督学习涉及在没有特定标签的情况下对输入数据进行推断。例如,无监督学习可用于对超声心动图视觉上相似的片段进行聚类,以识别不同的视图。14虽然这个概念框架很有用,但这些类别并不互相排斥(半监督学习使用部分标记的数据),并且还存在其他形式的 ML(例如强化学习、自监督学习)。

什么是深度神经网络?

DL 中的深度是指使用人工神经网络,它包含“深度”堆叠的多个层,以形成越来越有意义的数据表示。 图 1 显示了深度神经网络最基本架构的简化示意图。 这种结构允许 DL 模型直接处理复杂的输入数据(例如原始图像),而无需进行大量的手动预处理,这一步骤在传统建模技术中称为特征工程(补充中的图 4A)。 这是 DL 的一个关键属性,使模型能够潜在地发现复杂数据中的重要隐藏特征,这些特征甚至对专家来说都可能不明显(补充中的图 4B)。 深度学习模型根据外部信息的反馈直接从图像中生成推论,允许使用来自专家共识、未来结果或更具侵入性和更昂贵的测试的标签对模型进行心血管成像训练(补充中的图 4C-E)。例如,可以训练一个模型,根据众包专家的共识标签测量超声心动图上的隔壁厚度15,使用植入后结果作为标签,直接从超声心动图剪辑中预测左心室辅助装置植入后右心室衰竭的风险16,或使用来自侵入性冠状动脉造影术的标签预测负荷超声心动图17或负荷核心肌灌注成像18,19上的缺血。此外,DL推理通常比传统的图像处理方法更快,允许生成DL模型在使用传统图像处理技术所需时间的一小部分内执行图像重建。7模型可以随着时间的推移在大型队列中大规模部署,从而可能提高可重复性并降低观察者内和观察者之间的差异20(补充中的图4F-G)。

卷积神经网络 (CNN) 是大多数现代 CVI 深度学习系统的基础,因为它们可以从图像数据中提取重要的空间不变特征(即,无论左心室位于图像中的哪个位置,都可以识别它)。CNN 使用一系列在图像上滑动的过滤器来检测与特定任务相关的特征,这些过滤器的值是模型的参数或权重(补充中的图 6)。全卷积神经网络 (FCNN) 仅由整个网络中的卷积层组成,通常用于分割任务(例如,在 CCT 上勾勒和标记冠状动脉),因为它们可以通过对单个像素进行分类来重现原始图像的蒙版表示。生成对抗网络,俗称 GAN,由一类人工神经网络组成,它训练生成器和鉴别器相互竞争,以生成越来越逼真的图像(类似于造假者试图智胜调查员);它们已成为 CVI 预处理和重建的流行工具。附录中的 eTable 2 回顾了已部署用于分析 CVI 数据的其他 DL 架构。

训练和评估深度学习模型

深度学习模型通常包含数百万个参数或权重,从而导致未知的复杂多维(“百万维”)损失函数。因此,训练 DL 模型需要局部优化以最小化损失/错误:这通常通过称为梯度下降的迭代算法执行(附录中的图 7)。为了概念化梯度下降,想象一个徒步旅行者在山顶上,云层覆盖非常厚,以至于徒步旅行者只能看到前方几英尺。如果目标是下降到山脚,徒步旅行者将朝着最陡的下坡迈出一步。
类似地,机器计算当前模型状态下损失函数的斜率,然后调整模型的参数以沿着这个斜坡“迈出一步”。训练涉及迭代地将模型暴露于新示例并通过梯度下降调整模型参数以提高随着时间的推移的性能。

在这里插入图片描述

表 1.机器学习术语

在这里插入图片描述

图 1. 人工神经网络的简化表示(网络由按层排列的神经元或节点组成,并通过称为权重的参数网络连接。输入特征在每个隐藏层中进行变换以得到所需的输出;F1-F4 表示隐藏特征。每个特征节点的值计算为每个相应输入特征和权重的乘积之和。然后,该结果通过非线性激活函数。这里显示的是 S 型(逻辑)激活函数,它将值转换并限制在 0 和 1 之间,通常用于输出层以进行二元分类概率预测。请注意,为了简化,隐藏层中的偏差权重和激活函数被省略。重要的是,如果没有这些激活函数的非线性变换,模型将简化为简单的线性模型。这是深度神经网络最简单形式的一个示例,仅供说明之用。在实践中,更复杂形式的人工神经网络架构对于心血管成像数据的分析是必要的(补充材料中的电子表 2)。)

超参数是与模型相关的设计选择,由机器学习工程师明确设置和调整,而不是由模型学习(附录中的电子附录 3)。在训练期间调整超参数理论上可以产生完美拟合的模型。但是,这样的模型不太可能在训练集之外的数据上表现良好,这种现象称为过度拟合(附录中的电子附录 4 和电子图 10A)。过度拟合会导致模型记住输入数据,而不是学习有意义的表示。就像一个学生记住了测试的答案而不是理解底层概念,在新的问题上表现不佳一样,对输入数据过度拟合的模型在训练期间未接触的数据上表现不佳(附录中的电子附录 5 和电子图 10B)。

为了评估性能并监控训练期间的过度拟合,必须在验证或开发数据集中评估模型,方法是留出一定比例的数据或迭代划分训练数据(例如,k 倍交叉验证)。重要的是,DL 中的验证数据集并不等同于统计风险预测文献中的验证队列(图 2)。由于在训练期间调整了参数和超参数,验证数据集中的信息可能会泄漏到训练过程中,导致模型过度拟合验证数据本身。因此,在单独的保留测试集(最好来自外部来源)上评估最终模型性能至关重要,模型在整个研究和开发过程中从未接触过该测试集(补充中的电子附录 6 和电子表 3)。如果不这样做,可能会导致对性能的估计过于乐观,和/或无法识别过度拟合无关特征(称为快捷方式,例如扫描仪元数据或制造商徽标)的模型。21,22 有关 CVI 深度学习模型的设计、实施和评估的详细指南已作为心血管成像相关机器学习评估 (PRIME) 清单拟议要求的一部分发布。23

在这里插入图片描述

图 2. 深度学习中训练/验证/测试划分的重要性(在传统/统计建模 (A) 中,模型与数据拟合后,将在独立的内部或外部验证集上进行验证。相比之下,深度学习中的“验证”或开发数据集并不等同于统计风险预测文献中使用的验证队列,并且对验证模型没有任何作用。相反,此数据集分区的目的是在训练过程中调整超参数时评估性能和过度拟合。随着参数和超参数在训练过程中进行调整,验证数据集中的信息可能会泄漏到此过程中,并且模型可能会开始过度拟合验证数据本身。因此,至关重要的是,在训练过程中模型未接触的第三个数据集(在机器学习文献中称为测试集)被放在一边,以便在所有训练完成后(并且仅在之后)评估最终模型性能。)
心血管成像中的深度学习示例

以下对深度学习在 CVI 中不同模式的显著努力的调查并非详尽无遗,而是突出先前讨论过的概念的实际例子
(表 22-11、15-18、20、24-39)。

超声心动图

在超声心动图中,大多数信息都编码在视频片段中,并且不同视图没有像其他成像方式那样明确标记。尽管超声可以提供比 CCT 或 CMR 更好的时间和空间分辨率,但超声心动图图像的信噪比较低,并且根据声学窗口的不同,质量可能会出现显著变化。因此,先前的努力最初是解决识别超声心动图视图 9,24,26 或评估视图质量的问题。9,40

迄今为止,超声心动图领域的大多数深度学习研究都集中在心脏分割或心室结构和功能的评估上,而不是识别病理或预测风险,尽管也有少数例外。 Zhang 等人 9 提出了一种全自动处理和解释超声心动图的流程,使用一系列 CNN 和 FCNN 来分割心脏结构、计算心腔容积和功能信息,并对肥厚性心肌病、心脏淀粉样变性和肺动脉高压进行分类。其他人提出了以高通量方式识别左心室肥大或心脏淀粉样变性的 DL 模型。10,11,15

Ouyang 等人 20 引入了一种 3 维 CNN,用于对超声心动图视频片段中的左心室射血分数进行逐次评估,其性能超过了之前发表的结果,尤其是在因心律失常而导致心跳间变异显著的患者中。这是 DL 方法的一个潜在优势,它能够在超声医师或超声心动图医师所需时间的一小部分内完成多心搏分析,同时通过减少观察者内和观察者之间的差异来提高可靠性(附录中的图 4G)。尽管 DL 方法处理超声心动图数据的复杂性和精密性有所增加,但仍有许多尚未充分探索的领域;虽然 DL 方法在多普勒超声心动图方面的应用正在增加,12,14,41 但很少有研究人员将 DL 用于三维超声心动图分析
在这里插入图片描述
在这里插入图片描述

表 2.心血管成像领域的深度学习研究示例(缩写:2-D,二维;3-D,三维;A2C,心尖双腔;
A4C,心尖四腔;AUC,受试者工作特征曲线下面积;CAC,冠状动脉钙化;CAD,冠状动脉疾病;CCT,心脏计算机断层扫描;CCTA,冠状动脉计算机断层血管造影;
CFD,计算流体动力学;CNN,卷积神经网络;
CW,连续波;DL,深度学习;EAT,心外膜脂肪组织;
ECG,心电图;FCNN,全卷积神经网络;
FFR,血流储备分数;GAN,生成对抗网络;
HCM,肥厚性心肌病;HF,心力衰竭;ICC,组内相关系数;IVd,舒张期心室间厚度;LA,左心房; LGE,晚期钆增强;LV,左心室;LVEDV,左心室舒张末期容积;LVEF,左心室射血分数;LVH,左心室肥大;MACE,重大不良心脏事件;MAD,中位绝对偏差;MAE,平均绝对误差;MI,心肌梗死;ML,机器学习;MRI,磁共振成像;PET,正电子发射断层扫描;PWd,舒张后壁厚度;R,相关系数;RA,右心房;RV,右心室;RVEDV,右心室舒张末期容积;SAX,短轴;SPECT,单光子发射计算机断层扫描;SSIM,结构相似指数;TGA,大动脉转位。
a 有关各种评估指标的详细信息,请参阅附录中的电子表 3)

心脏磁共振成像

和心脏计算机断层扫描
CMR 和 CCT 成像本质上涉及三维采集,而不是二维图像。虽然许多研究人员
使用二维数据(像素)逐片进行训练,但
通常可以通过考虑数据的三维结构(体素)来获得更好的结果。此外,CMR 和 CCT 数据
具有高动态范围(大范围的灰度强度),
需要在分析之前进行预处理。

与 CMR 的 DL 分析相关的已发表研究可能比任何其他 CVI 模式都要多,重点是心腔分割以进行结构和功能评估。这可能是由于有高质量的公共 CMR 数据集和流行的在线数据科学竞赛。迄今为止最大的分割工作之一使用了来自英国生物库的近 5000 个 CMR 数据来训练 FCNN,以令人印​​象深刻的精度(所有腔的平均绝对误差 <10 mL)分割左/右心室和心房腔。27

其他研究检查了不同的 MRI 序列或针对了分割以外的任务。Fahmy 等人28 将 FCNN 用于 T1 序列分割,以实现全自动 T1 映射。Zhang 等人31,32 开发了一个雄心勃勃的系统,用于基于电影 MRI 和 T1 图上的区域壁运动模式描绘心肌疤痕,无需钆造影,这项技术称为虚拟原生增强。这突出了 DL 的另一个潜在优势:使用更具侵入性的模式(例如,对比 CMR)的标签进行训练可以产生具有类似性能的系统,该系统可能更安全、更易于访问、更高效(附录中的图 4E)。

迄今为止,CCT DL 的研究主要集中在冠状动脉 CT 血管造影分析或钙化评分上。Coenen 等人 33 测试了一种基于 DL 的算法,用于非侵入性冠状动脉 CT 血管造影的血流储备分数估计,与视觉评估相比,该算法显著提高了功能性阻塞性冠状动脉疾病的评估(每条血管的准确率分别为 58% 和 78%)。Eisenberg 等人 37 使用 DL 进行风险预测,使用先前建立的 FCNN 对 CCT 进行心包内分割,以识别心外膜脂肪组织体积,这对冠状动脉钙化评分在预测主要不良心血管事件方面具有补充作用。

深度学习在 CMR 和 CCT 中最具创新性的用途可能是用于重建、伪影衰减或图像去噪的生成建模应用。Wolterink 等人 6 使用生成对抗网络对低剂量 CT 图像进行去噪,产生的结果类似于全剂量 CT 采集。Fan 等人 7 开发了一种 FCNN,用于重建欠采样灌注 CMR 数据,与压缩感知方法相比,重建时间缩短了 14.4 倍。这突出了一个重要原则:虽然训练深度学习模型需要大量计算,但使用训练后的模型进行推理可能比传统的基于规则的算法更快(附录中的图 4F)。

心脏核成像

核成像数据的分辨率相对其他成像方式较低,通常需要进行大量预处理(例如,生成灌注极点图)才能进行临床解释。Betancur 等人 18 和 Hu 等人 19 开发了一种 CNN,用于从原始、停电和定量极点图中确定每位患者和每条血管的缺血情况。与标准总灌注缺损相比,DL 模型取得了适度的改善(每位患者的受试者工作特征曲线下面积为 0.80 vs 0.78)。这是一个重要的观察结果:当使用手动设计的特征(特征空间有限,为 64 × 64 像素)时,与更简单的基于规则的方法相比,DL 可能提供有限的益处。相反,利用 DL 模型自动从原始单光子发射计算机断层扫描 (SPECT) 数据中提取重要特征,例如推断衰减伪影的区域 42,43 可能会带来卓越的性能。

深度学习应用的商业化和监管

CVI 中越来越多的商业 DL 应用需要对医疗 AI 系统的监管流程有基本的了解。在美国,食品药品监督管理局 (FDA) 负责监管医疗 AI 平台,这些平台被视为医疗设备的软件,通常通过 510(k) 上市前许可或从头申请(针对实质上新颖的平台,没有合适的谓词设备)获得授权。例如,Caption Health 的 Caption Guidance 平台通过了从头分类,使用 DL 算法来指导超声心动图剪辑的获取(而不是解释),目的是让经验较少的操作员也能获取诊断质量的图像。5 附录中的 eTable 4 提供了目前 FDA 批准的用于 CVI 内不同模式的 DL 应用程序的非详尽列表,这些应用程序来自现有来源。44-47

值得注意的是,很少有系统在临床试验环境中进行前瞻性评估,在涵盖目标人群的多样化队列代表的多个临床站点进行评估的系统就更少了。要使算法被接受用于临床,应该在多个机构使用来自多个供应商的图像数据对其进行前瞻性验证,以确保其预测的稳健性。根据最近制定的循证建议(SPIRIT-AI 和 CONSORT-AI 扩展 48,49)在随机临床试验中进行前瞻性评估、算法透明度和上市后监测是 FDA 监管流程改进的潜在目标。重要的是,据我们所知,目前 FDA 批准的应用程序均未获准用于全自动图像解释/分析,而是作为具有专家“人工参与”的临床支持系统。

深度学习在心血管成像中的挑战和局限性

要使深度学习系统适合广泛的临床实施,它必须准确、无偏且可推广。使用深度学习技术实现 CVI 的这些目标有几个值得一提的重要障碍。

数据可用性

深度学习算法传统上需要大量标记数据集才能产生准确的结果。管理大型 CVI 数据集受到隐私问题、数据主权以及获取和标记医学数字成像和通信 (DICOM) 图像的物流限制。CVI 中大量、匿名且可公开获得的标记数据集的出现,例如 EchoNet-Dynamic 和 EchoNet-LVH10,50 回声数据集和英国生物库 CMR 数据集,51,52 可能会促进更准确和更具临床实用性的深度学习系统的发展。

可解释性

DL 模型通常被认为是一个黑匣子:很难解释模型如何以及为何得出特定的预测。如果临床医生不理解推理过程,他们不太可能接受 ML 算法提供的预测。53 此外,当使用 DL 进行表型发现时,解释模型输出对于揭示机制和治疗见解至关重要。可解释的 DL 方法的研究非常活跃(补充材料中的电子附录 7)。

数据集转移、数据集漂移和可推广性

由于患者群体、成像设备或采集协议的差异,在一个机构表现良好的模型可能在外部机构表现不佳:这种现象称为数据集转移。54此外,随着患者群体或数据的变化,模型性能可能会随着时间的推移而下降,这通常称为数据集漂移。数据集转移的创新解决方案正在涌现,包括通过跨机构共享深度学习模型(而不是数据)进行联合学习 55,以及通过生成模型从一个供应商到另一个供应商进行图像到图像的转换 56。数据集漂移可以通过持续学习或模型更新来应对。57然而,没有什么可以替代在外部、从未见过的数据集中反复验证算法以及持续审核模型性能。

系统性偏见

更令人担忧的是,在开发深度学习模型时引入人类隐性偏见的可能性;许多机器学习模型的警示性例子导致了系统性歧视。58-61因此,研究人员必须保持警惕,确保任何算法都能通过仔细选择数据管理、算法设计和模型评估来得出公平和不带偏见的预测。

人机界面

要使深度学习系统取得成功,它应该很好地融入心脏成像仪的工作流程,并且应该对深度学习系统有一定程度的理解和信任。临床医生可能会认为学习型人工智能可能会取代临床推理,并对临床工作人员本身构成威胁。62然而,这通常是没有根据的,因为大多数人工智能系统旨在增强而不是取代人类的决策。增强智能的概念得到了文献中的大量例子的支持,包括 CVI 中的案例;在深度学习系统的帮助下,人类的表现可以胜过单独的人类或机器。63-65

心血管成像深度学习的现状和未来

CVI 的深度学习仍处于起步阶段,尽管当今临床使用的几种应用显示出改变图像获取、预处理、分析和解释方式的潜力。一些应用已在临床试验中证明其实用性,例如,指导新手操作员获取诊断质量的床边心脏超声图像,5 减少在 CMR 上分割心肌腔所需的时间,66 提高回声射血分数估计的效率和可靠性。67 然而,大多数已发表的结果都是基于回顾性数据。仍然迫切需要高质量的证据来证明这些技术的好处大于风险,并且可以改善患者的治疗效果、人口健康、成本效益和/或临床医生的工作生活。68CVI 的 DL 未来将包括在具有临床重要终点的精心设计的随机试验中对 DL 系统进行严格的前瞻性验证。只有这样,这些技术的临床应用才会变得广泛。

此外,深度学习在 CVI 中的应用范围可能会扩大。自动化任务的范式(人类可以轻松完成)可能会转向解决迄今为止尚未解决的问题,例如基于图像的风险预测和用于机制发现的队列高通量表型分析。此外,用于图像重建、去噪、伪影衰减和超分辨率的深度学习的出现是最近的事情;这些技术将在未来几年继续发展。我们还可能会看到更多的深度学习系统使用融合架构来集成多模态成像和非成像数据,这些融合架构模仿专家整合来自多个来源的数据的方式。

在 CVI 中,一个相对较少受到关注的领域是自然语言处理 (NLP)。NLP 可用于从影像报告中提取标签以训练计算机视觉算法,或反过来为图像添加标题以自动生成报告。NLP 还可用作临床医生或患者与影像数据应用程序交互的工具,改善心脏成像仪和 DL 系统之间的人机交互。随着基于深度自注意力网络的大型语言模型(称为 transformers69)(例如 BERT、70 GPT-3、71 和 GPT-4)的引入,NLP 领域经历了范式转变,这些模型在常见 NLP 任务的准确性方面已经超越了以前的基准。基于 DL 的 NLP 很可能成为 CVI 研究的目标。

最后,虽然深度学习算法可以模拟直觉或“格式塔”来识别结构或功能相关性,13,72但我们不应忘记,世界是由可定义的物理原理支配的。结合有关物理原理的领域知识可以提高深度学习算法的性能、效率和通用性。73此外,并非每个问题都需要深度学习解决方案;更准确、更有效的方法往往更简单。伯努利方程通过二次关系明确地将主动脉瓣速度与梯度联系起来。无需使用百万参数模型通过梯度下降推导出此公式。CVI 的人工智能未来很可能由混合神经符号算法主导74,该算法将深度学习与基于经典规则的编程相结合,同时考虑到成像和生理学的底层物理原理

结论

深度学习有可能对 CVI 领域产生重大影响。教育临床工作人员了解 CVI 中的 DL 应用(事实上,这是本综述的目标)对于促进临床医生和工程师之间的合作、推动这些技术在临床实践中的创新和采用至关重要。引用放射科医生 Curtis Langlotz 75 的话,深度学习不会取代心血管成像仪,但那些使用和理解深度学习技术的人将取代那些不这样做的人

相关文章:

《心血管成像的深度学习》论文精读

Deep Learning for Cardiovascular Imaging 重要性&#xff1a;由深度学习 (DL) 的进步推动的人工智能 (AI) 有可能重塑心血管成像 (CVI) 领域。虽然 CVI 的 DL 仍处于起步阶段&#xff0c;但研究正在加速&#xff0c;以帮助获取、处理和/或解释各种模式下的 CVI&#xff0c;其…...

RDP、VNC、SSH 三种登陆方式的差异解析

一、引言 在计算机系统管理和远程访问的领域中&#xff0c;RDP&#xff08;Remote Desktop Protocol&#xff0c;远程桌面协议&#xff09;、VNC&#xff08;Virtual Network Computing&#xff0c;虚拟网络计算&#xff09;和 SSH&#xff08;Secure Shell&#xff09;是三种广…...

3d 可视化库 vister部署笔记

目录 vister 开源地址: python版本: 在python3.10以上版本安装 viser, 测试ok的案例: 立方体mesh选中 SMPL-X可视化 ok 推理代码: vister 开源地址: GitHub - nerfstudio-project/viser: Web-based 3D visualization + Python python版本: 在python3.10以上版本…...

操作系统八股文学习笔记

总结来自于javaguide,本文章仅供个人学习复习 javaguide操作系统八股 文章目录 操作系统基础什么是操作系统?操作系统主要有哪些功能?常见的操作系统有哪些?用户态和内核态为什么要有用户态和内核态?只有一个内核态不行嘛?用户态和内核态是如何切换的?系统调用 进程和线程…...

k8s基础(6)—Kubernetes-存储

Kubernetes-存储概述 k8s的持久券简介 Kubernetes的持久卷&#xff08;PersistentVolume, PV&#xff09;和持久卷声明&#xff08;PersistentVolumeClaim, PVC&#xff09;为用户在Kubernetes中使用卷提供了抽象。PV是集群中的一块存储&#xff0c;PVC是对这部分存储的请求。…...

K8S--配置存活、就绪和启动探针

目录 1 本人基础环境2 目的3 存活、就绪和启动探针介绍3.1 存活探针3.2 就绪探针3.3 启动探针 4 探针使用场景4.1 存活探针4.2 就绪探针4.3 启动探针 5 配置存活、就绪和启动探针5.1 定义存活探针5.2 定义一个存活态 HTTP 请求接口5.3 定义 TCP 的就绪探针、存活探测5.4 定义 g…...

永久免费工业设备日志采集

永久免费: <下载> <使用说明> 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架构 技术架构: Asp…...

详解 Docker 启动 Windows 容器第二篇:技术原理与未来发展方向

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言所遇问题问题 1&#xff1a;Docker 容器启动的 Windows 实例调用了 KVM 驱动&#xff0c;但为什么用 virsh list 命令查不到虚拟机&#xff1f;这意味着它不是一…...

HC32L136K8TA单片机输出互为反相双路PWM

可这里可以参考stm32的代码看看 HC32L136K8TA的机制跟32差不多 以使用一个通用定时器输出两路互为反相的 PWM 波&#xff0c;但需要通过一定的配置技巧实现。与高级定时器&#xff08;如 STM32 的 TIM1、TIM8 等&#xff09;不同&#xff0c;通用定时器通常没有直接的互补输出…...

数据分析-55-时间序列分析之获取时间序列的自然周期时间区间

文章目录 1 获取某年的总天数1.1 get_year_days()1.2 应用函数2 获取某年的总周数2.1 get_year_weeks()2.2 应用函数3 获取某日期属于某年的周数3.1 get_time_yearweek()3.2 应用函数4 获取某年某周的开始时间和结束时间4.1 get_week_start_end()4.2 应用函数5 获取往前num周期…...

Java Stream流操作List全攻略:Filter、Sort、GroupBy、Average、Sum实践

在Java 8及更高版本中&#xff0c;Stream API为集合处理带来了革命性的改变。本文将深入解析如何运用Stream对List进行高效的操作&#xff0c;包括筛选&#xff08;Filter&#xff09;、排序&#xff08;Sort&#xff09;、分组&#xff08;GroupBy&#xff09;、求平均值&…...

Sentaurus TCAD学习笔记:transform指令

目录 一、transform指令简介二、transform指令的实现1.cut指令2.flip指令3.rotate指令4.stretch指令5.translate指令6.reflect指令 三、transform指令示例 一、transform指令简介 在Sentaurus中&#xff0c;如果需要对器件进行翻转、平移等操作&#xff0c;可以通过transform指…...

vscode支持ssh远程开发

文章目录 一、生成ssh使用的公钥/密钥对二、使用vscode通过ssh连接服务器1.安装插件2.配置文件3.连接服务器4.新建文件夹&#xff0c;存放不同的任务5.为不同的项目选择不同的conda环境 三、使用scp命令与服务器互传文件、文件夹1.检查Windows 系统是否支持scp命令2.在Windows系…...

Java线程详解

一、线程的基本概念 1. 什么是线程&#xff1f; 线程是程序执行的一个单元&#xff0c;它是进程中的一个实体&#xff0c;是被系统独立调度和分派的基本单位。一个进程可以包含多个线程&#xff0c;这些线程共享进程的资源&#xff0c;如内存空间和文件句柄&#xff0c;但每个…...

java -jar启动项目报错:XXX.jar中没有主清单属性

XXX.jar中没有主清单属性 1、错误复现2、错误原因3、解决方案 java -jar启动项目报错&#xff1a;XXX.jar中没有主清单属性 1、错误复现 今天使用springboot给项目打了jar包&#xff0c;使用命令启动时报错&#xff0c;截图如下&#xff1a; 2、错误原因 项目的pom文件配置如…...

【Vue - Element 】实现表单输入框的远程搜索功能

需求 表单是一个常见的元素&#xff0c;而在表单中&#xff0c;常常需要用户从大量的数据中选择一个或多个选项。 为了提高用户体验&#xff0c;提供远程搜索功能可以帮助用户快速找到所需的选项&#xff0c;而不是从冗长的下拉列表中手动查找。 以该需求为例&#xff0c;我…...

Linux(Centos 7.6)命令详解:split

1.命令作用 Linux系统中的一个用于拆分文件的命令。它可以将一个大文件拆分成多个小文件&#xff0c;以便于传输、存储或处理 2.命令语法 Usage: split [OPTION]... [INPUT [PREFIX]] Usage: split [选项]... [输入文件] [输出文件前缀] 3.参数详解 OPTION: -a, --suffi…...

八股学习 Redis

八股学习 Redis 使用场景常见问题问题1、2示例场景缓存穿透解决方案一解决方案二 问题3示例场景缓存击穿解决方案 问题4示例场景缓存雪崩解决方案 问题5示例场景双写一致性强一致方案允许延时一致方案 问题6RDB方式AOF方式两种方式对比 问题7示例场景惰性删除定期删除 使用场景…...

如何通过高防服务隐藏服务器源IP

在网络安全领域&#xff0c;隐藏服务器的真实源IP地址是保护服务器免受直接攻击的重要手段之一。暴露的源IP地址容易成为黑客攻击的目标&#xff0c;尤其是DDoS攻击、端口扫描和暴力破解等威胁。高防服务&#xff08;如阿里云盾、AWS Shield等&#xff09;不仅提供强大的流量清…...

【WEB】网络传输中的信息安全 - 加密、签名、数字证书与HTTPS

文章目录 1. 概述2. 网络传输安全2.1.什么是中间人攻击2.2. 加密和签名2.2.1.加密算法2.2.2.摘要2.2.3.签名 2.3.数字证书2.3.1.证书的使用2.3.2.根证书2.3.3.证书链 2.4.HTTPS 1. 概述 本篇主要是讲解讲一些安全相关的基本知识&#xff08;如加密、签名、证书等&#xff09;&…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...