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

(2024,MLLM,Healthcare,综述)多模态学习是否已在医疗保健领域实现通用智能?

Has Multimodal Learning Delivered Universal Intelligence in Healthcare? A Comprehensive Survey

目录

0. 摘要

1. 简介

5. MLLM

5.1 模态编码器与跨模态适配器

5.1.1 图像编码器 (Image Encoder)

5.1.2 语言模型 (Language Model)

5.1.3 跨模态适配器 (Cross-modal Adapter)

5.2 调优过程与技术细节

5.2.1 通用 MLLM

5.2.2 医学 MLLM

5.2.3 多模态数据处理

5.3 调优数据集

5.3.1 对齐数据

5.3.2 指令数据

5.4 评价基准

5.5 医学 MLLM 应用

6. 当前研究的讨论

6.1 现有的多模态数据是否能支持推进智能医疗?

6.2 面向任务的方法是否有效解决了目标任务?

6.3 FMs 如何促进智能医疗?

6.4 当前 AI 模型是否存在伦理问题?

6.5 专业人士如何评估当前多模态 AI 技术?

7. 挑战和未来方向

7.1 高质量且多样化的数据

7.2 引入更多模态类型

7.3 细粒度与高分辨率图像建模

7.4 有效且高效的知识融合

7.5 多模态输入与多模态输出

7.6 迈向统一的模型

7.7 激发基础模型的全部潜能

7.8 全面且无偏的评估协议

7.9 增强用户导向的透明性与可解释性

7.10 最小化伦理风险


0. 摘要

人工智能的快速发展不断重塑智能医疗和医学领域。作为一项关键技术,多模态学习因其数据互补性、全面建模形式和巨大应用潜力而日益受到关注。目前,众多研究人员正专注于该领域,进行广泛研究并构建丰富的智能系统。自然,一个开放性问题随之而来:多模态学习是否在医疗领域实现了通用智能?

为回答这一问题,我们从三个独特视角进行全面分析。

  • 首先,我们从数据集、面向任务的方法和通用基础模型三个方面对医学多模态学习的当前进展进行全面综述。
  • 在此基础上,我们进一步从数据与技术、性能与伦理等五个问题出发,探讨先进技术在医疗中的实际影响。结论是,当前技术尚未实现通用智能,仍有一段重要的旅程需要完成。
  • 最后,基于上述综述和讨论,我们提出了通向医疗领域通用智能目标的十个潜在探索方向。 

【注:本文仅关注 MLLM 相关内容,即原论文的第 5 节。更多内容见原论文】 

1. 简介

目前已经存在一些与医疗领域多模态学习相关的综述。例如,

  • Shrestha 等人 [8] 探讨了 医学视觉语言预训练(vision language pre-training)的各个方面及其进展;
  • Pei 等人 [9] 调研了 生物分子(biomolecules)的多模态学习,主要研究了将生物分子序列、二维图和三维结构与自然语言处理(NLP)技术集成的技术进展;
  • Messina 等人 [10] 回顾了 医学图像的报告生成(Report Generation,RG);
  • Zhao 等人 [20] 对基于 CLIP [17] 架构的 医学成像(medical imaging)相关研究进行了综述;
  • Acosta 等人 [7] 对 多模态生物医学(biomedical) AI 进行了调查,主要从数据和应用的角度出发,但未涉及技术细节。

然而,需要注意的是,这些研究仅总结了医疗领域多模态研究的一部分内容,并未深入探讨当前多模态学习技术是否能够实现通用智能医疗。 

5. MLLM

受益于大型语言模型 (LLM) 的快速发展,多模态大型语言模型 (Multimodal LLM,MLLM),也称为视觉语言模型 (visual language models,VLM),由于其强大的表征能力和处理多模态数据的显著能力,引起了研究人员的广泛关注 [18]。它们的通用建模目标是基于图像和前文文本标记预测下一个 token:

从理论和应用的角度来看,对比基础模型 (Contrastive Foundation Models,CFMs,见原论文第 4 节) 和 MLLM 之间存在显著差异:

  • CFMs 通常基于图像-文本对数据进行微调,而 MLLMs 则专注于多模态指令跟随数据;
  • 全局对比学习 (Global Contrastive Learning,GCL) 是 CFMs 的主要目标,而 MLLMs 的目标是基于多模态输入生成文本;
  • CFMs 通常用于判别任务,而 MLLMs 更常用于生成任务。

我们在表 5 中总结了一些典型的通用 MLLMs 和著名的医学 MLLMs。

5.1 模态编码器与跨模态适配器

MLLMs 采用了一种简单而有效的方法来构建基础模型 (FMs)。这种方法通过图像编码器和语言模型(统称为模态编码器)来促进在潜在空间中的对应表征。此外,还引入跨模态适配器,将各种模态的表征对齐到共享空间中。

5.1.1 图像编码器 (Image Encoder)

预训练图像编码器通常用于生成图像表征(representation),随后与 LLM 集成以执行多模态任务。

  • 在通用领域中,常用的预训练编码器包括 NFNet [150]、ViT [55]、CLIP ViT [17] 和 EVA-CLIP [151]。
  • 此外,为了增强潜在表征中医学知识的表达,在构建医学 MLLMs 时会使用预训练医学图像编码器。例如,PathCap [102]、BioMed-CLIP [101] 和 BioViL-T [72] 的图像文本预训练组件分别作为 PathAsst [102]、LLaVA-Med [136] 和 RaDialog [140] 的图像编码器。
  • 此外,RAD-DINO [152] 采用基于 DINO 模型 [153] 的自监督预训练策略来进行 CXR 图像预训练。

5.1.2 语言模型 (Language Model)

MLLMs 基于 NLP 领域中强大的 LLMs,处理文本输入并生成相应的文本输出。

  • 无论是通用 MLLMs 还是医学专用 MLLMs,均采用 Transformer 架构作为文本编码器。这包括 OPT [154]、Flan-T5 [155]、Vicuna [156]、Mistral [157]、LLaMA [158]、LLaMA2 [159] 和面向中文的 Chinese-LLaMA2 [160] 等通用模型。
  • 此外,还存在一些面向医学语言的模型,例如 BioGPT [161]、BioMedLM [162] 和 MedLLaMA [163],也被广泛使用。

5.1.3 跨模态适配器 (Cross-modal Adapter)

跨模态适配器是连接 MLLMs 中图像与文本表征的关键组件。主要包括三类:线性投影 (Linear Projection,LP)、查询表征 (Query Representation,QR) 和交叉注意力 (Cross Attention,CA),如图 5 所示。

1)线性投影 (Linear Projection,LP)。通常采用一个一层或两层的 MLP,将图像嵌入空间转换到文本嵌入空间。这种方法简单高效,LLaVA [130] 首次在通用 MLLMs 中引入,并被医学 MLLMs 采用,例如 PathAsst [102]、XrayGPT [135]、LLaVA-Med [136] 和 MAIRA-1 [142]。

2)查询表征 (Query Representation,QR)。该方法为图像建立可学习的查询表征,然后将其与文本 token 表征结合,作为 LLMs 的输入。查询的数量通常显著少于图像块的数量,从而降低计算开销并提高效率。例如,

  • Flamingo [127] 的感知器重采样器 (Perceiver Resampler) 可处理具有灵活数量和大小的视觉特征(通常较大),并生成较少的视觉输出。
  • 同样,BLIP-2 [129] 中提出的查询 Transformer (QFormer) 通过交叉注意力将图像特征整合到语言空间。

在微调之前,通常会使用图像-文本对比学习、基于图像的文本生成和图像-文本匹配三种预训练目标来对齐多模态输入。无论视觉编码器的大小如何,QFormer 的最终输出长度始终保持恒定(例如,BLIP-2 和 MedBLIP [132] 的长度为 32),大幅降低计算负担。

3)交叉注意力 (Cross Attention,CA)。受 Transformer 自注意力机制的启发,交叉注意力方法在 LLM 的计算过程中将图像和语言表征赋予不同的角色,例如查询 (Query)、键 (Key) 或值 (Value)。例如,Flamingo [127] 中的 GATED XATTN-DENSE 将图像表征作为键和值,而语言表征作为查询。同样,CoCa [128] 和 CONCH [23] 使用交叉注意力在文本解码器中融合图像信息。

5.2 调优过程与技术细节

基于图像编码器和语言模型,MLLM(多模态大语言模型)的实现通过预训练和指令调优策略(instruction-tuning)完成 [8]。

  • 预训练的主要目标通常是将一般领域的初始化适配到专业医学领域,并在不同模态间架起桥梁。
  • 指令是指任务描述,而指令调优的目标是增强模型对用户指令的理解并据此执行任务。通过此过程,MLLM 能够对新的指令实现未见任务的泛化,从而提升零样本性能[18]。

作为代表性研究,LLaVA-Med [136] 首先在 LLaVA-Med-Align(600K生物医学图像-文本对)上进行微调以更新线性变换层,然后在 LLaVA-Med-Inst(使用GPT-4收集的60K图像-文本响应)上进行指令调优。为了实现参数高效调优,可以利用 LoRA [164] 技术 [132],[140],[147],[148]。

5.2.1 通用 MLLM

除了 CLIP 中的对比损失,CoCa [128] 在架构中引入了标题损失(caption loss)。模型包括 图像编码器、文本解码器和多模态文本解码器,可处理文本生成任务。

Flamingo [127]是通用 MLLM 领域的开创性研究,它在包含任意交错文本和图像的大规模多模态网络语料库上训练。这种方法赋予 Flamingo 上下文少样本学习能力。在其框架中,预训练的视觉编码器和语言模型均被冻结。两个新组件,即感知采样器和 GATED XATTN-DENSE,被引入以有效弥合强大的视觉和语言模型之间的差距。

BLIP-2 [129] 通过两阶段策略预训练轻量化 QFormer 来弥合模态差距。首先从冻结的图像编码器中启动视觉-语言表示学习,然后从冻结的 LLM 中启动视觉到语言生成学习。

LLaVA [130] 和 MiniGPT-4 [131] 是使用图像-文本指令数据调优 MLLM 的先驱。

LLaVA 是一项初步尝试,

  • 采用仅语言的 GPT-4 模型创建称为 LLaVA-Instruct-158K 的多模态语言-图像指令数据。
  • 为了有效利用预训练的 LLM 和视觉模型的能力,引入了线性投影来对齐视觉特征和语言特征。
  • LLaVA 仅训练 1 个 epoch 进行特征对齐,其中仅优化线性投影的参数。
  • 然后,保持视觉编码器权重冻结,在 LLaVA-Instruct-158K 或 ScienceQA [165] 上更新投影层和 LLM 的预训练权重 3 个epoch。

为了实现 GPT-4 展示的许多高级多模态能力,MiniGPT-4 通过 QFormer 和投影层将冻结的视觉编码器与冻结的 Vicuna 模型对齐。

5.2.2 医学 MLLM

受到通用 MLLM 显著成就的启发,医学 MLLM 旨在创建高效的通用医疗助手。例如,SkinGPT-4 [24]、LLaVA-Med [136] 和 Med-Flamingo [137] 分别是 MiniGPT-4、LLaVA 和 Flamingo 在医学领域的适配版本。

人类病理学(human pathology)领域,PathAsst [102] 和 PathChat [143] 通过使用病理图像-文本数据的指令调优开发。例如,

  • PathAsst 构建了名为 PathInstruct 的指令跟随(instruction-following)数据,其中包含基于描述和对话的数据,以革新病理学中的诊断和预测分析。
  • ChatGPT 用于基于图像标题生成对话问答对,还包括特别的模型调用指令样本。通过两步调优,PathAsst 能够执行与病理相关的视觉问答(VQA)和对话任务。此外,它可以调用子模型以实现更全面的应用,例如 LBC(liquid-based cytology,基于液体的细胞学)分类和检测。

事实上,大多数医学 MLLM 主要聚焦于 CXR 或放射学模态。这种集中源于可用数据的丰富性,例如 MIMIC-CXR 数据库。在此方向上,有许多值得注意的研究,包括 LLM-CXR [133]、XrayGPT [135]、MAIRA-1 [142]、MedXChat [144]、CheXagent [145]、LLaVA-Rad [148] 和 WoLF [149]。这些研究的构建符合 MLLM 的一般策略。

然而,需要注意的是,LLM-CXR 舍弃了适配器的设计。

  • 它首先使用基于重构 L2 特征距离的预训练 VQ-GAN [166] 将图像映射为固定数量的图像 token。
  • 然后,这些图像 token 可以作为 LLM 的输入或输出,被添加到 token 词汇表并随机初始化。
  • 通过这种方式,LLM-CXR 不仅能够处理常见的 CXR-VQA 和 CXR 到报告的生成,还能够进行报告到 CXR 的生成,这得益于 VQ-GAN 生成图像的能力。

5.2.3 多模态数据处理

除处理单一模态外,一些研究还从训练数据构建的角度提出了多图像模态处理方法。例如,

  • BiomedGPT [134] 涵盖了病理学、皮肤镜、CT、放射学和数码相机等模态;
  • Med-PaLMM [138] 涵盖了皮肤病学、乳腺X光、放射学、病理学等。
  • 除一般的 2D 图像外,还探索了 3D 图像处理模型,以更丰富的空间信息建模和更具可扩展性的应用,如 RadFM [139]、M3D-LaMed [146] 和 Dia-LLaMA [147]。

为解决广泛的临床放射学任务,RadFM 在大规模综合数据集 MedMD 和 RadMD 上训练,覆盖多种数据模态(X光、CT、MRI 等)和任务,涉及超过 5000 种疾病。它能够处理 2D 和 3D 图像。对于 2D 图像,仅通过增加一个维度扩展为 3D。随后,3D ViT 被用作图像编码器。

类似地,M3D-LaMed 和 Dia-LLaMA 也采用 3D ViT 作为图像编码器。

  • 在 M3D-LaMed 的调优过程中,3D 图像编码器保持冻结状态,而提出的 3D 空间池化感知器和 LLM 通过 LoRA 进行更新。
  • Dia-LLaMA 还引入了一种疾病原型记忆库(disease prototype memory bank)作为诊断的参考。疾病感知注意力(disease-aware attention)被提出,用于从视觉补丁中提取疾病级别表示,并使用疾病原型对比损失将这些表示与可学习的异常 / 正常原型对齐。最终,预测的诊断结果可以转换为模板描述 “{疾病名称} 是 [疾病状态]” 作为附加输入提供给 LLM,从而提高罕见异常的诊断准确性。

5.3 调优数据集

为了实现医学 MLLM,通常使用两类数据,可以总结为对齐数据和指令数据。它们在表 6 中进行了总结。

5.3.1 对齐数据

对齐数据用于预训练以对齐图像和文本表示。医学图像-文本对通常来自教科书或数字图书馆,可以通过技术解析和后续处理转化为对齐数据。例如,

  • PMC-15M [101] 由 PubMed Parser [167] 通过处理 PMC 的 XML 文件并提取标题及对应的图形参考而收集。随后,缺少图形参考、存在语法错误或信息缺失的条目会被系统性删除。
  • 在此基础上,LLaVA-Med-Align [136] 从 PMC-15M 中抽样,ChiMed-VL-Align [141] 则类似。

鉴于大量医学图像在互联网上流通,尤其是在社交媒体平台上,考虑这些图像是有益且前景广阔的。

  • OpenPath [22] 收集了 Twitter 上的去标识化病理学图像及其描述。32 个与病理相关的标签被用来检索相关推文,并严格遵循不当样本的移除协议和附加文本清理规则。最终,保留了 116K 个推文中的图像-文本对和 59K 个来自最高点赞回复的图像-文本对。
  • CTRATE [103] 包括来自一家医院的胸部 CT 卷和对应的放射学文本报告。它涵盖了约 50K 个重建 CT 卷,这些卷来自 21K 位患者的 25K 次 CT 实验。

5.3.2 指令数据

此类数据用于指令调优。在医学多模态领域,它通常包括跨模态任务,如视觉问答(VQA)、报告生成(RG)、以及结合文本的粗粒度/细粒度图像理解。

数据集的创建通常涉及使用预定义的提示模板和答案文本,将其输入到 LLM 以生成问题或从一系列原始数据源中增强指令描述。例如,

  • 受 LLaVA-Instruct [130] 的启发,其通过 LLM 处理多模态数据的文本部分,许多研究采用类似方式生成医学指令数据。
  • 生物医学指令调优数据 LLaVA-Med-Inst [136] 使用 GPT-4 收集,数据从 PMC-15M 中过滤以保留仅包含单一图表的图像。具体来说,当提供图像标题时,指令以鼓励 GPT-4 生成多轮问答的方式制定。尽管 GPT-4 仅能访问文本,但其生成问题和答案的方式给人一种它能够可视化图像的印象。
  • CheXinstruct [145] 使用约 28 个公开可用的 CXR 数据集生成指令调优数据集,涵盖了能力、任务、数据集和实例级别。它根据其能力划分为五个任务类别:粗粒度图像理解、细粒度图像理解、问答、文本生成和其他杂项。

总而言之,当前 MLLM 数据集的趋势是利用先进的 LLM 处理来自各种来源(如医学教科书、数字图书馆或原始数据集)的文本。处理后的数据随后转化为相应的输出,最终创建图像-文本对齐数据或图像-文本指令数据。它们的说明如表 8 所示。

5.4 评价基准

为全面探索医学多模态语言模型(MLLM)的能力,提出了多个评价基准(benchmark),如MultiMedBench [138]、RedBench [139]、PathQABench [143]、CheXbench [145] 和 M3D-Bench [146]。表 7 中详细列出了它们的细节。它们通常整合领域内的多个数据集以执行各种任务。

评价指标通常包括以下三种类型:自动统计指标(如准确率、ROUGE-L、BLEU 和 CIDEr)、AI评估器(如基于 BERT 和 GPT-4)以及人工专家评估器。

MultiMedBench [138]:包含来自 12 个去标识化(de-identified)数据集的超过 100 万条数据样本,涉及问答(QA)、报告摘要(RS)、视觉问答(VQA)、报告生成(RG)和图像分类(IC)等任务,覆盖了病理学、放射影像学、基因组学和乳腺 X 线摄影等图像模态。

RadBench [139]:涵盖五项任务,包括模态识别、疾病诊断、视觉问答、报告生成和推理诊断。为保证数据质量,进行了严格的人工验证。此外,它引入了两个额外的医学指标:UMLS P(精度)和 UMLS R(召回率),用以衡量医学相关词汇在真实值与预测响应之间的重叠比例。医学相关词汇通过 UMLS 提取。

PathQABench [143] 和 OmniMedVQA [19]:使用精心整理的 VQA 数据集进行全面评价。

CheXbench [145]:设有两个评价维度,即图像感知和文本理解。在图像感知方面,利用七个数据集的六项任务,包括视图分类、二值疾病分类、单一疾病识别、多疾病识别、视觉问答和图像-文本推理。所有任务均采用多项选择题格式,准确率作为评价指标。在文本理解方面,评估模型生成和总结文本的能力,结合自动化指标(包括 GPT-4)和人工专家评估(完整性、正确性和简洁性)。

5.5 医学 MLLM 应用

与通用 MLLM 类似,医学 MLLM 通常用于从多模态输入中生成文本响应,包括医学可视化对话、视觉问答(VQA)和报告生成(RG)。例如:

  • Dia-LLaMA [147] 能生成 3D CT 报告。
  • LLaVa-Med [136] 能处理医学可视化对话和 VQA 任务,覆盖 CXR、MRI、组织学、宏观观察和 CT 领域。

文本输出还能通过结合领域知识定制输入来增强。例如,Kim 等人 [168] 将原始 CXR 图像与其热图结合,以突出放射科医生的关注焦点和时长,从而为 MLLM 提供额外的人类智能。实验结果表明性能有所提升。

除了生成文本响应,医学 MLLM 还可以提供视觉图像响应,例如图像生成或分割(基于图像译码器):

  • LLM-CXR [133] 利用 VQ-GAN 的自动编码架构能力,从 LLM 输出的预测虚拟图像编码生成 CXR 图像。
  • MedXChat [144] 实现从文本到 CXR 的生成,基于稳定扩散(SD)模型 [169] 的预训练框架,并采用零卷积策略 [170] 在 MIMIC-CXR 数据集上进行微调,实现从通用领域到医学领域的适配。MLLM 生成的提示词被输入到 SD 模型以生成 CXR 图像。
  • ROLMM [171] 引入了一个 3D 残差 U-Net [172] 进行图像处理。通过多模态对齐模块整合图像编码器和预训练 LLM 的综合信息,随后采用 3D 图像解码器生成分割掩码(mask),实现乳腺癌治疗目标分割。
  • M3D-LaMed [146] 使用可提示分割模块实现指代表达分割,其中如果输出中存在 [SEG] token 的最后一层嵌入,则提取并通过 MLP 处理。最终通过 SegVol 模型 [173] 作为可提示分割模块生成分割掩码。

6. 当前研究的讨论

在本节中,我们将从以下五个方面讨论如何回答提出的问题:

6.1 现有的多模态数据是否能支持推进智能医疗?

总体而言,用于多模态医疗的现有数据集在多样性、规模和简单构建方法方面存在问题,通常限制了技术的进一步发展。根据 §2.3,目前的报告生成(RG)数据集缺乏多样性和代表性。

  • 医疗报告涵盖了广泛的疾病、状况和临床场景。然而,有些数据集可能仅收集于特定领域或医疗机构,导致样本过于单一,缺乏足够的多样性。
  • 此外,医疗报告通常依赖丰富的临床背景信息。然而,现有数据集可能无法提供足够的上下文信息(如患者病史记录和其他检查结果),这可能会限制生成模型的准确性和完整性。

从 §2.3 来看,医学 VQA 数据集存在以下局限性:

1)质量与数量的不平衡。大多数数据集是自动收集的。尽管 NLP 领域取得了显著进展,实现 100% 的样本生成准确性仍然是一项挑战。例如,

  • 在 MIMICDiff-VQA [45] 数据集中,三位医学专家验证样本的平均正确率为 97.4%,最低正确率为 95%。
  • 而 VQA-RAD [38] 和 RadVisDial-Gold [41] 数据集因手动收集质量较高,但其样本数量相对较小,分别为 3,515 和 500 条样本。

满足高质量和大规模要求的数据集构建困难,主要原因是对医学专业人士的需求量巨大。

2)问题相对简单化。由于大部分问题基于预定义规则或模式(pattern)自动生成,现有医学 VQA 数据集中的问题往往较为简单,缺乏多样性。例如,

  • 在 VQA-Med-2018 [37]、VQA-Med-2019 [39] 和 MIMIC-Diff-VQA [45] 中的问题包括 “病变是否与质量效应(mass effect)相关”,“使用了何种成像方法”,以及 “不透明类型为何” 等。
  • 尽管 SLAKE [44] 数据集引入知识图谱(KG)来回答需要外部医学知识的问题,其推理方式仅为单跳(one-hop)直接推理。

为实现更广泛的应用前景,需要更多全面的问答对。

从 §5.3 中可以观察到,最大数据规模为 16M,这远低于通用领域的规模(如 ALIGN [174] 包含 1.8B 图像-文本对,LAION-5B [175] 包含 5B 对)。在指令数据方面,样本通常通过大语言模型(LLM)的提示工程生成,或直接从多样化数据集中收集,这可能导致简单化和偏差问题。此外,对细粒度数据的重视不足,而这对医学图像感知及技术的实际应用至关重要 [62]。

6.2 面向任务的方法是否有效解决了目标任务?

尽管随着 AI 技术的快速发展,这些方法取得了一定的成功,但它们也面临着一些显著的挑战。以报告生成(RG)为例,现有模型在该领域取得了显著进展,但这些模型仍受制于当前数据集中存在的数据偏差,从而影响其检测和准确描述细微异常的能力。

在仅包含 MIMIC-CXR 数据集中异常描述的 MIMIC-ABN 数据集 [176] 上,这些模型的多项指标性能显著下降 [73], [176]。例如,RECAP [73] 在 MIMIC-CXR 上的 BLEU-4 和 ROUGE 分数分别为 12.5% 和 28.8%,而在 MIMIC-ABN 上的得分分别降至 8% 和 22.3%。此外,这些模型往往忽视个体差异和患者特定临床背景对诊断结论的影响。对个性化临床信息的缺乏考量限制了生成报告的整体效果和准确性。

此外,尽管许多模型在自然语言生成指标(如 ROUGE 和 BLEU)上表现良好,但这些指标无法衡量临床准确性。因此,现有模型的性能与临床实践的预测准确性需求(如 F1-Chexbert 等指标)之间仍存在显著差距。在图像生成领域,现有技术仍然面临质量、准确性和互操作性的挑战。这些技术通常难以准确操控关键细节,而这对医学图像分析至关重要 [96], [97], [133]。

6.3 FMs 如何促进智能医疗?

与通常专注于单一模态执行特定任务的面向任务方法不同,基础模型(FMs)能够统一多个任务(如图像分类(IC)、图想到文本检索(ITR)、文本到图像检索(TIR)、视觉问答(VQA)和 报告生成(RG))以及模态。其优势源于对大规模参数和训练数据的利用。然而,这也带来了诸如部署复杂性以及训练和推理效率下降等挑战 [8], [177]。

我们在图 6 和表 9 中列出了一些医疗基础模型的性能结果。可以看出,对比基础模型(CFMs)始终表现出改进。但它们仍需要微调以更好地适应下游应用。例如,IC(图像分类)性能通常优于零样本 IC。具体而言,Med-UniC [111] 在 CXP500上 的零样本 IC F1 得分仅为约 30%,而 CONCH [178] 的零样本TIR、ITR 和 SS(语义分割)的表现也相对较低,这不足以满足实际应用需求。

我们还探讨了 MLLMs(多模态大语言模型)的 RG(报告生成)能力,可以看出,

  • 尽管 MAIRA-1 [142] 取得了具有竞争力的结果,但它甚至未能超越某些非 MLLM 模型,特别是在临床指标上。这些指标作用于文本转换,旨在保留其语义并促使模型专注于报告的关键要素,而不会过度适应其风格。
  • 此外,Hu 等人 [19] 发现,医学专用 MLLM 的表现甚至低于通用领域模型,例如,BLIP-2 [129] 在所有任务中的平均表现最佳。这表明利用现有医学数据对通用 MLLM 的适配并未带来突出的性能改进,凸显了在医学领域中发展更具适应性和鲁棒性的 MLLMs 的必要性。

综上所述,尽管 FMs 为医疗保健带来了新视角,并具备执行多任务的能力,但其高精度响应能力仍是一个挑战。

6.4 当前 AI 模型是否存在伦理问题?

尽管取得了令人瞩目的进展,但 AI 在医疗中的整合引发了重大的伦理和监管问题。

  • 诸如数据隐私和模型偏差等问题需要仔细关注,以确保 AI 系统在这一敏感领域的负责任部署。最近的研究表明,FMs 可能会导致数据泄露,在基于特定数据源训练时暴露个人健康信息 [179]。
  • 此外,FMs 中的偏差通常源于训练数据中的人口分布不均。例如,研究表明,在公共胸部 X 射线数据集上训练的神经模型可能在边缘化群体中表现不足,如女性、黑人、西班牙裔患者和由 Medicaid 投保的患者 [180]。
  • FMs 的更广泛伦理挑战,包括公平性、责任和透明性等,复杂性较高,需要持续关注以最小化伦理风险 [1]。

基于 LLMs 的强大能力,医学 MLLMs 也暴露出容易产生 幻觉(hallucinations)的脆弱性,这表现为与输入无关或事实错误的响应 [181], [182]。在关键医疗情况下,这一问题尤为值得关注,因为容错空间极小。这类错误或幻觉可能对患者或医生造成严重伦理问题。在医疗领域中,不同于通用领域,幻觉可以表现为多任务、多层面和分层次特性,使其独特地具有挑战性和复杂性。

6.5 专业人士如何评估当前多模态 AI 技术?

尽管多模态 AI 技术在医疗领域取得了重大进展,医疗专业人士仍对潜在挑战表示担忧。例如,

  • Hu等人 [19] 指出,尽管医学 MLLMs 声称具有鲁棒性,但其表现不如通用领域模型,这暴露了医学模型中固有的局限性。因此,为培养更通用的专业模型,医学 MLLMs 需要不断整合来自不同模态的专门知识,这需要大量时间和计算资源进行优化。
  • Acosta 等人 [7] 指出,在策划高质量图像-文本数据集、多模态健康数据中极高的维度数量以及多模态模型架构方面存在挑战。他们强调,尽管近年来多模态学习发展迅速,但现有方法不太可能足以解决主要挑战。

根据上述调查和讨论,我们可以回答 “多模态学习是否为医疗保健领域带来了普适智能?” 这个问题。答案是:。现有研究在数据、技术、性能和伦理等方面存在若干显著局限性,这些问题需要解决以增强其在实际场景中的适用性。

7. 挑战和未来方向

从医疗技术的进步和前述讨论中,我们总结了以下潜在的未来研究方向:

7.1 高质量且多样化的数据

当前的智能医疗模型以数据为核心 [183],但使用的数据集通常较为简单且同质化,如 §6(1) 所述。而通用 LLMs 和 MLLMs 的成功依赖于大量且多样化的异构数据集 [1], [18]。为了促进医疗领域的发展,应收集高质量和多样化的数据,以构建更健壮和灵活的模型以适应实际需求。

以下方面可作为潜在方向:多模态数据集的有效整合、包含真实生活场景背景的上下文数据采集  [45], [72],面向用户的多种影像模态数据构建,以及与领域知识对齐的细粒度文本或图像数据。

7.2 引入更多模态类型

目前的模型主要聚焦于放射学和病理学的医学影像。针对这些影像的建模方法和技术已经相对成熟,并有可能适配其他影像模态 [184]。医学音频(语音记录和听诊器录音)、视频(手术视频和患者行为视频)、时间序列数据(如 ECG、EEG、血压、脉搏及其他生理信号)也可与其他模态或自然语言(如患者病情描述或领域知识 [21])结合,用于更全面的建模、更精准的医学诊断及干预。

7.3 细粒度与高分辨率图像建模

医学领域需要精准的视觉建模,因为通常只有极少部分视觉特征与决策过程相关,其余部分信息量较低。一些细粒度的方法应被引入以聚焦于图像的局部表示,而非仅关注总体表示。潜在解决方案包括应用多粒度、多尺度和分层对比学习 [133], [185]。

此外,模型处理高分辨率图像的能力也至关重要。目前 FMs 主要集中在低分辨率图像处理,例如224×224 [100], [136]。更高分辨率的方法,如 BioViL [106] (512×512) 和 MAIRA-1 [142] (518×518),显示出性能提升。

  • 一方面,高分辨率有助于获取更细致的组织结构信息、更清晰的病灶边界描绘及精确的量化评估;
  • 另一方面,低分辨率视觉编码器无法直接处理超高分辨率医学图像,例如高分辨率的全切片图像(WSIs) [178]。

一些通用领域的先进技术可以借鉴,例如使用高分辨率编码器或独立处理子图像并随后进行整合,可参考Mini-Gemini [186] 和 Monkey [187]。

7.4 有效且高效的知识融合

大量以图结构格式存储的领域知识被整理至精心构建的知识库中,例如医学知识图(KG)(UMLS 和 PrimeKG [188])。研究表明,将这些特定知识蒸馏至专用模型中是有效的 [21], [115],并有助于缓解 FMs 的幻觉问题 [189]。

然而,当前主流方法通常将结构化知识转换为 token 序列后输入至语言模型,这可能导致信息丢失。由于原始数据存在表示差异,将此类知识无缝集成至图像或语言模型中颇具挑战性。一个潜在解决方案是学习用于离散知识数据的通用语义 token [190],可以直接整合至语言模型中。

7.5 多模态输入与多模态输出

当前方法受限于固定形式的输入和输出。面向任务的方法通常输入一种模态并输出另一种模态或预测结果。CFMs 通常需要针对下游任务进行微调,而 MLLMs 主要集中在针对多模态输入生成文本响应。尽管 Med-Flamingo [137] 可以输入多张图像,但其输出固定为文本。

在实际应用中,医生和患者希望基于历史记录建立诊断或预测健康状况,其中输入和输出可能包含多种医学图像或其他模态(如音频和视频)。例如,诊断为脊柱侧弯的患者可能希望在治疗一段时间后可视化脊柱影像。这可以参考 NExT-GPT(任意到任意的 MLLM) [191],其利用多种解码器生成文本、图像及视频的任意组合输出。

7.6 迈向统一的模型

当前模型通常仅能处理一种或几种特定的医学影像模态。然而,为了实现更广泛、更通用的应用,开发统一的医学模型至关重要。

鉴于医学模态、器官、疾病、诊断和药物的广泛多样性,针对特定任务设计单一目标的模型在实际应用中既具有挑战性,又不经济高效。集成主要和各种影像模态(包括 2D 与 3D 影像)成为迫切需求,且具有巨大的应用前景。这一目标可以通过数据收集 [134], [139] 和模型架构设计 [184] 来实现。

7.7 激发基础模型的全部潜能

尽管基础模型(FMs)的有效性已经得到验证,研究者仍在探索其未开发的潜力。早期研究发现,即使是自然语言提示中的微小差异,也会显著影响模型性能。这催生了对各种提示方法的研究,例如自动生成提示、软提示和预训练提示 [192]。

随后,链式推理(Chain-of-Thought, CoT)方法被引入,该方法通过显式列出模型得出最终答案的步骤来提升透明性和性能。这一方法进一步衍生出类似策略,例如树式推理(Tree-of-Thought, ToT)[195] 和图式推理(Graph-of-Thought, GoT)[196]。

此外,基于检索增强的方法通过整合外部知识来提升基础模型性能。这些技术可针对医疗基础模型进行定制,解锁其全部能力并提升其实用性。

7.8 全面且无偏的评估协议

除可直接通过准确率评估的分类任务外,当前的模型(尤其是 MLLMs)可以生成难以评估的开放式自由文本答案。

  • 评估者的人口统计特征(如种族、性别、年龄等)可能会引入无意识的偏见,影响对模型性能的评价 [145]。
  • 自动化统计指标如 ROUGE-L 和 BLEU 也未能提供令人满意的方式。

因此,需要全面、标准化和客观的评估框架和指标,尽管这将极其费时和资源密集。基于强 AI 的评估提供了一个有前景的解决方案 [146]。

7.9 增强用户导向的透明性与可解释性

在对责任性需求较高的医疗应用领域,模型需能够提供可说服医生和患者的预测结果解释。尽管当前的黑箱模型能够实现良好的预测结果,但其不透明性导致了缺乏可解释性。为此,可参考某些可解释推理框架 [197],以获取预测时的内部逻辑规则。此外,借助 MLLMs 的能力,可以将问题分解为多个易于理解的符号化子任务 [198],并逐一解决以实现总体可解释性。

7.10 最小化伦理风险

为了减少伦理风险,可以采取一些方法来实现稳健的多模态架构 [199]。

  • 联邦学习(Federated learning,FL)通过在本地设备上训练模型避免数据暴露,提供了一种解决方案 [200]。
  • 此外,数据重采样和模型微调等方法可帮助模型与人类价值对齐,从而缓解偏差问题 [201]。
  • 对于 MLLMs 的幻觉问题,可以从数据、模型、训练和推理等角度采用类似于通用领域的技术来缓解 [202]。

论文地址:https://arxiv.org/abs/2408.12880

进 Q 学术交流群:922230617

相关文章:

(2024,MLLM,Healthcare,综述)多模态学习是否已在医疗保健领域实现通用智能?

Has Multimodal Learning Delivered Universal Intelligence in Healthcare? A Comprehensive Survey 目录 0. 摘要 1. 简介 5. MLLM 5.1 模态编码器与跨模态适配器 5.1.1 图像编码器 (Image Encoder) 5.1.2 语言模型 (Language Model) 5.1.3 跨模态适配器 (Cross-moda…...

css命名规范——BEM

目录 引言 BEM是什么? 块Block 元素Element 修饰语Modifier BEM解决了哪些问题? 在流行框架的组件中使用 BEM 格式 实战 认识设计图 如何使用当前的css规范正确命名? 引言 css样式类命名难、太难了,难于上青天,这个和js变量命名还不一样。看看项目中五花八门的样…...

使用PHP函数 “is_object“ 检查变量是否为对象类型

在PHP中,变量可以保存不同类型的值,包括整数、字符串、数组、布尔值等等。其中,对象是一种特殊的数据类型,用于封装数据和方法。在处理PHP代码中,我们经常需要检查一个变量是否为对象类型,以便进行相应的处…...

Golang:使用DuckDB查询Parquet文件数据

本文介绍DuckDB查询Parquet文件的典型应用场景,掌握DuckDB会让你的产品分析能力更强,相反系统运营成本相对较低。为了示例完整,我也提供了如何使用Python导出MongoDB数据。 Apache Parquet文件格式在存储和传输大型数据集方面变得非常流行。最…...

Moretl FileSync增量文件采集工具

永久免费: <下载> <使用说明> 我们希望Moretl FileSync是一款通用性很好的文件日志采集工具,解决工厂环境下,通过共享目录采集文件,SMB协议存在的安全性,兼容性的问题. 同时,我们发现工厂设备日志一般为增量,为方便MES,QMS等后端系统直接使用数据,我们推出了增量采…...

消息队列篇--原理篇--Pulsar(Namespace,BookKeeper,类似Kafka甚至更好的消息队列)

Apache Pulusar是一个分布式、多租户、高性能的发布/订阅&#xff08;Pub/Sub&#xff09;消息系统&#xff0c;最初由Yahoo开发并开源。它结合了Kafka和传统消息队列的优点&#xff0c;提供高吞吐量、低延迟、强一致性和可扩展的消息传递能力&#xff0c;适用于大规模分布式系…...

linux 扩容

tmpfs tmpfs 82M 0 82M 0% /run/user/1002 tmpfs tmpfs 82M 0 82M 0% /run/user/0 [输入命令]# fdisk -lu Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors Units: sectors of 1 * 512 512 bytes Sector size (logi…...

数据表中的数据查询

文章目录 一、概述二、简单查询1.列出表中所有字段2.“*”符号表示所有字段3.查询指定字段数据4.DISTINCT查询 三、IN查询四、BETWEEN ADN查询1.符合范围的数据记录查询2.不符合范围的数据记录查询 五、LIKE模糊查询六、对查询结果排序七、简单分组查询1.统计数量2.统计计算平均…...

深入了解 Java split() 方法:分割字符串的利器

Java 提供的 split() 方法是 String 类中一个常用的工具&#xff0c;它可以将一个字符串根据指定的分隔符切割成多个子字符串&#xff0c;并以字符串数组的形式返回。这个方法常用于字符串的处理、数据解析等场景。本文将详细介绍 Java 中 split() 方法的使用方式&#xff0c;并…...

Ubuntu 安装 docker 配置环境及其常用命令

Docker 安装与配置指南 本文介绍如何在 Ubuntu 系统上安装 Docker&#xff0c;解决权限问题&#xff0c;配置 Docker Compose&#xff0c;代理端口转发&#xff0c;容器内部代理问题等并进行相关的优化设置。参考官方文档&#xff1a;Docker 官方安装指南 一、安装 Docker 1…...

Android Studio安装配置

一、注意事项 想做安卓app和开发板通信&#xff0c;踩了大坑&#xff0c;Android 开发不是下载了就能直接开发的&#xff0c;对于新手需要注意的如下&#xff1a; 1、Android Studio版本&#xff0c;根据自己的Android Studio版本对应决定了你所兼容的AGP&#xff08;Android…...

leetcode 面试经典 150 题:有效的括号

链接有效的括号题序号20题型字符串解法栈难度简单熟练度✅✅✅ 题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须…...

C语言 指针_野指针 指针运算

野指针&#xff1a; 概念&#xff1a;野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#xff09; 指针非法访问&#xff1a; int main() {int* p;//p没有初始化&#xff0c;就意味着没有明确的指向//一个局部变量不初始化&#xff0c;放…...

【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发之常见布局

目录 1 -> 自适应布局 1.1 -> 线性布局 1.1.1 -> 线性布局的排列 1.1.2 -> 自适应拉伸 1.1.3 -> 自适应缩放 1.1.4 -> 定位能力 1.1.5 -> 自适应延伸 1.2 -> 层叠布局 1.2.1 -> 对齐方式 1.2.2 -> Z序控制 1.3 -> 弹性布局 1.3.1…...

java基础学习——jdbc基础知识详细介绍

引言 数据的存储 我们在开发 java 程序时&#xff0c;数据都是存储在内存中的&#xff0c;属于临时存储&#xff0c;当程序停止或重启时&#xff0c;内存中的数据就会丢失&#xff0c;我们为了解决数据的长期存储问题&#xff0c;有以下解决方案&#xff1a; 通过 IO流书记&…...

第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十五届的题目在规定时间内做出了前5道&#xff0c;还有2道找时间再磨一磨。现在把做的一些思路总结如下&#xff1a; 题1&#xff1a;握手问题 问题描述 小蓝组织了一场算法交流会议&#xff0c;总共有 50人参加了本次会议。在会议上&#xff0c;大家进行了握手交流。按照惯例…...

基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

2K320Hz显示器哪个好?

2K320Hz显示器哪个好&#xff1f;320Hz这种高刷新率的显示器确实很少见&#xff0c;那究竟哪个牌子哪个型号更适合你呢&#xff1f; 1.HKC G27H4Pro - 2K320Hz显示器哪个好 外观设计 - HKC G27H4Pro 2K320Hz显示器 三面微边框超震撼&#xff1a;采用三面微边框设计&#xff0…...

八股学习 微服务篇

微服务篇 常见面试内容Spring Cloud 常见组件注册中心Ribbon负载均衡策略服务雪崩 常见面试内容 Spring Cloud 常见组件 Spring Cloud有5个常见组件&#xff1a; Eureka/Nacos:注册中心&#xff1b;Ribbon:负载均衡&#xff1b;Feign:远程调用&#xff1b;Hystrix/Sentinel:服…...

C# 中 readonly 与 const 的使用

总目录 前言 在C#编程中&#xff0c;readonly 和 const 是两个用于定义不可变数据的关键字。它们都旨在创建那些一旦赋值后就不能再改变的字段或变量。尽管这两个关键字看起来相似&#xff0c;但它们有着不同的特性和适用场景。本文将深入探讨 readonly 和 const 的区别&#…...

Spring Boot Starter介绍

前言 大概10来年以前&#xff0c;当时springboot刚刚出现并没有流行&#xff0c;当时的Java开发者们开发Web应用主要是使用spring整合springmvc或者struts、iBatis、hibernate等开发框架来进行开发。项目里一般有许多xml文件配置&#xff0c;其中配置了很多项目中需要用到的Be…...

Kafak 单例生产者实现-C#操作

前面写了一篇入门操作的文章,因为工作需要,简单修改了下如何实现单例生产者。 Kafka入门-C#操作_c# kafka-CSDN博客文章浏览阅读1.6k次,点赞20次,收藏9次。2).报错:“kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state…...

软件开发学习路线——roadmap

推荐软件学习路线网站&#xff1a;https://roadmap.sh/get-started 有有关前端后端开发的学习路径&#xff0c;也有AI&#xff0c;移动开发&#xff0c;管理相关的学习路径 会有相应的词条路径&#xff0c;深入学习 右上角可以设置学习任务的完成情况...

移动端VR处理器和传统显卡的不同

骁龙 XR 系列芯片 更多地依赖 AI 技术 来优化渲染过程&#xff0c;而传统的 GPU 渲染 则倾向于在低画质下运行以减少负载。这种设计是为了在有限的硬件资源下&#xff08;如移动端 XR 设备&#xff09;实现高性能和低功耗的平衡。以下是具体的分析&#xff1a; 1. AI 驱动的渲染…...

Jenkins下载 Maven、Allure 插件并且配置环境

文章目录 Jenkins在插件中心下载 maven、allure插件maven插件下载allure插件下载 配置maven、allure 往期推荐&#xff1a; 最新! 在 Linux上搭建Jenkins环境! Jenkins邮件通知的详细配置含邮件通知模板&#xff01; Jenkin配置企业微信通知 Jenkins在插件中心下载 maven、…...

C# OpenCV机器视觉:连通域分割

在一个阳光明媚得有些 “嚣张” 的午后&#xff0c;阿强像只好奇的小松鼠&#xff0c;一头扎进了他那乱得像被打劫过的实验室。这实验室里&#xff0c;各种电路板、奇形怪状的传感器和缠成一团的电线肆意横陈&#xff0c;仿佛在诉说着主人平日里为科研疯狂的 “战斗” 痕迹。阿…...

【嵌入式】总结——Linux驱动开发(三)

鸽了半年&#xff0c;几乎全忘了&#xff0c;幸亏前面还有两篇总结。出于快速体验嵌入式linux的目的&#xff0c;本篇与前两篇一样&#xff0c;重点在于使用、快速体验&#xff0c;uboot、linux、根文件系统不作深入理解&#xff0c;能用就行。 重新梳理一下脉络&#xff0c;本…...

python操作mysql

前言 在 Python3 中&#xff0c;我们可以使用mysqlclient或者pymysql三方库来接入 MySQL 数据库并实现数据持久化操作。二者的用法完全相同&#xff0c;只是导入的模块名不一样。我们推荐大家使用纯 Python 的三方库pymysql&#xff0c;因为它更容易安装成功。下面我们仍然以之…...

OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯

目录 简述 什么是高通滤波&#xff1f; 高通滤波的概念 应用场景 索贝尔算子 算子公式 实现代码 特点 沙尔算子 算子公式 实现代码 特点 拉普拉斯算子 算子公式 实现代码 特点 高通滤波器的对比与应用场景 相关阅读 OpenCV&#xff1a;图像滤波、卷积与卷积核…...

游戏设备升级怎么选?RTX4070独显,ToDesk云电脑更具性价比

过新年、添喜气&#xff01;正逢节期来临不知道各位是否都跟小编一样在考虑购置生活中的各样所需呐&#xff1f; 25年可谓是3A游戏大作之年&#xff0c;例如《GTA6》《文明7》《死亡搁浅2》《刺客信条&#xff1a;影》下半年落地的《塞尔达传说&#xff1a;新篇章》《生化危机9…...

【useLayoutEffect Hook】在浏览器完成布局和绘制之前执行副作用

目录 前言语法useLayoutEffect 对比 useEffect&#xff1a;示例 前言 useLayoutEffect 是 React 中的一个 Hook&#xff0c; 类似于 useEffect&#xff0c;但有一个关键的区别&#xff1a;它会在所有的 DOM 变更之后同步调用 effect。这意味着它可以读取 DOM 布局并同步重新渲…...

Llama 3:开源大模型的里程碑式突破

标题&#xff1a;Llama 3&#xff1a;开源大模型的里程碑式突破 文章信息摘要&#xff1a; Meta通过Llama 3展现了开源LLM的重大突破&#xff1a;采用超大规模训练数据和多阶段训练方法&#xff08;SFT、rejection sampling、PPO和DPO&#xff09;&#xff0c;突破了传统的Chi…...

Spring 框架基础:IOC 与 AOP 原理剖析及面试要点

在上一篇中&#xff0c;我们深入探讨了 Java 反射机制&#xff0c;了解了它在运行时动态操作类和对象的强大能力。而今天&#xff0c;我们将进入 Spring 框架的世界。Spring 框架作为 Java 企业级开发中最流行的框架之一&#xff0c;极大地简化了企业级应用的开发过程。对于春招…...

《开源与合作:驱动鸿蒙Next系统中人工智能技术创新发展的双引擎》

在当今科技飞速发展的时代&#xff0c;鸿蒙Next系统作为一款具有创新性和前瞻性的操作系统&#xff0c;为人工智能技术的发展提供了广阔的舞台。而开源和合作则是推动鸿蒙Next系统中人工智能技术创新和发展的两大关键引擎。 开源&#xff1a;创新的源泉 代码共享与知识传播&am…...

Redis使用基础

1 redis介绍 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务 ! 是完全开源的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。 使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并…...

React和Vue有什么区别,如何选择?

React和Vue有什么区别&#xff0c;如何选择&#xff1f; React 和 Vue 是当前最受欢迎的前端框架之一&#xff0c;两者在开发者中都有极高的声誉。它们都旨在帮助开发人员构建用户界面&#xff0c;但在实现方式和适用场景上有所不同。如果你正考虑在项目中选择 React 或 Vue&a…...

C++|开源日志库log4cpp和glog

文章目录 log4cpp 和 glog对比1. **功能对比**2. **易用性和配置**3. **性能**4. **线程安全**5. **日志输出**6. **功能扩展**7. **适用场景**8. **总结** 其它开源C日志库1. **spdlog**2. **easylogging**3. **Boost.Log**4. **loguru**5. **Poco Logging**6. **Qt Logging (…...

安卓程序作为web服务端的技术实现(三):AndServer作为服务

安卓程序作为web服务端的技术实现&#xff1a;AndServer 实现登录权限拦截-CSDN博客 安卓程序作为web服务端的技术实现&#xff08;二&#xff09;&#xff1a;Room 实现数据存储-CSDN博客 经过两次捣鼓 AndServer已经能正常访问了 但是发现一个问题 就是当我app退出时 AndSe…...

数据结构(Java)——二叉树

1.概念 二叉树是一种树形数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;通常被称为左子节点和右子节点。二叉树可以是空的&#xff08;即没有节点&#xff09;&#xff0c;或者由一个根节点以及零个或多个左子树和右子树组成&#xff0c;其中左子树和右子树也分…...

深度学习系列76:流式tts的一个简单实现

1. 概述 使用queue&#xff0c;producer不断向queue中添加audio&#xff0c;然后consumer不断从queue中消费audio。 下面的样例使用melo来生成语音&#xff0c;需要先下载melo.tts。模型在https://myshell-public-repo-hosting.s3.amazonaws.com/openvoice/basespeakers/ZH/ch…...

数据结构(三) 排序/并查集/图

目录 1. 排序 2.并查集 3.图 1.排序: 1.1 概念: 排序就是将数据按照某种规则进行排列, 具有某种顺序. 分为内排序和外排序. 内排序就是: 将数据放在内存中的排序; 外排序是: 数据太多无法在内存中排序的. 1.2 插入排序: 插入排序包含: 直接插入排序和希尔排序. (1) 直接插入…...

WPA Supplicant 技术详解

目录 前言 1. 简介 2. 源码获取 3. 代码架构 3.1 模块结构 3.2. 主要文件和目录 3.3. 顶层模块 3.4 模块之间的关系 4. 工作流程简要描述 启动 加载配置 初始化 认证 数据传输 5. 编译与安装 5.1 编译 5.1.1 libnl库与openssl库准备 5.1.2 修改配置文件 5.…...

Avalonia UI MVVM DataTemplate里绑定Command

Avalonia 模板里面绑定ViewModel跟WPF写法有些不同。需要单独绑定Command. WPF里面可以直接按照下面的方法绑定DataContext. <Button Content"Button" Command"{Binding DataContext.ClickCommand, RelativeSource{RelativeSource AncestorType{x:Type User…...

macOS如何进入 Application Support 目录(cd: string not in pwd: Application)

错误信息 cd: string not in pwd: Application 表示在当前目录下找不到名为 Application Support 的目录。可能的原因如下&#xff1a; 拼写错误或路径错误&#xff1a;确保你输入的目录名称正确。目录名称是区分大小写的&#xff0c;因此请确保使用正确的大小写。正确的目录名…...

【探索 Kali Linux】渗透测试与网络安全的终极操作系统

探索 Kali Linux&#xff1a;渗透测试与网络安全的终极操作系统 在网络安全领域&#xff0c;Kali Linux 无疑是最受欢迎的操作系统之一。无论是专业的渗透测试人员、安全研究人员&#xff0c;还是对网络安全感兴趣的初学者&#xff0c;Kali Linux 都提供了强大的工具和灵活的环…...

《SwinIR:使用Swin-Transformer图像恢复》学习笔记

paper&#xff1a;2108.10257 GitHub&#xff1a;GitHub - JingyunLiang/SwinIR&#xff1a; SwinIR&#xff1a; 使用 Swin Transformer 进行图像修复 &#xff08;官方仓库&#xff09; 目录 摘要 1、Introduction 2、Related Work 2.1 图像修复 2.2 视觉Transformer…...

AR智慧点巡检系统探究和技术方案设计

一、项目背景 随着工业生产规模的不断扩大和设备复杂度的提升&#xff0c;传统的人工点巡检方式效率低下、易出错&#xff0c;难以满足现代化企业对设备运行可靠性和安全性的要求。AR&#xff08;增强现实&#xff09;技术的发展为点巡检工作带来了新的解决方案&#xff0c;通…...

电路研究9.2——合宙Air780EP使用AT指令

这里正式研究AT指令的学习了&#xff0c;之前只是接触的AT指令&#xff0c;这里则是深入分析AT指令了。 软件的开发方式&#xff1a; AT&#xff1a;MCU 做主控&#xff0c;MCU 发 AT 命令给模组的开发方式&#xff0c;模组仅提供标准的 AT 固件&#xff0c; 所有的业务控制逻辑…...

OpenCV相机标定与3D重建(62)根据两个投影矩阵和对应的图像点来计算3D空间中点的坐标函数triangulatePoints()的使用

加粗样式- 操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 这个函数通过使用立体相机对3维点的观测&#xff0c;重建这些点的三维坐标&#xff08;以齐次坐标表示&#xff09;。 cv::triangula…...

基于ollama,langchain,springboot从零搭建知识库四【设计通用rag系统】

需求&#xff1a; 1&#xff1a;可以自定义管理大模型&#xff0c;可自行选择ollama&#xff0c;openai&#xff0c;千问等大模型 2&#xff1a;自定义向量数据库&#xff0c;支持pgvector&#xff0c;elasticsearch&#xff0c;milvus&#xff08;这三个目前比较常用&#xff…...