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

(2024|Nature Medicine,生物医学 AI,BiomedGPT)面向多种生物医学任务的通用视觉-语言基础模型

BiomedGPT: A generalist vision–language foundation model for diverse biomedical tasks

目录

1. 摘要

2. 引言

3. 相关研究

3.1 基础模型与通用生物医学 AI

3.2 生物医学 AI 的局限性

3.3 BiomedGPT 的创新点

4. 方法

4.1 架构及表示

4.1.1 模型架构选择

4.1.2 BiomedGPT 架构

4.1.3 统一的输入-输出表示

4.2 任务 

4.2.1 预训练任务

4.2.2 微调和下游任务

4.3 训练

4.3.1 模型预训练

4.3.2 模型微调与推理

4.3.3 指令调优

4.4 模型扩展

5. 结果

5.1 BiomedGPT 在多模态任务上的表现

5.2 迁移学习和零样本能力

5.3 人类专家评估

6. 讨论


1. 摘要

现有的生物医学人工智能(AI)模型通常针对特定任务或模态,难以适应真实世界的多样化需求。BiomedGPT 是首个开源、轻量级的通用视觉-语言基础模型,能够同时处理多种生物医学任务。相比于现有的封闭源或计算密集型的生物医学 AI 解决方案,BiomedGPT 具有更广泛的适用性和更低的计算成本。

实验结果表明,BiomedGPT 在 25 项实验任务中,有 16 项超越现有最优模型(SOTA),同时在放射学视觉问答(VQA)、报告生成、文本摘要等任务上表现优异。在医疗问答任务中,其错误率仅为 3.8%,在撰写复杂放射学报告方面的错误率为 8.3%,在报告摘要方面的表现几乎等同于人类专家。

本研究证明了高效训练和多模态数据的结合能够显著提升生物医学 AI 的实用性

2. 引言

背景问题:

  • 现有生物医学 AI 主要是专用专家系统,仅适用于单一任务或模态,限制了其在临床中的广泛应用。
  • 真实医疗环境需要 多模态数据(文本、图像、基因组数据等)的整合和分析,以支持精准医学(Precision Medicine)。
  • 过度专注于单一任务的 AI 无法提供全面的临床洞察,导致在实际应用中效率受限。

解决方案:

  • 通用生物医学 AI(Generalist Biomedical AI) 是未来发展方向,能够跨任务处理不同类型的医疗数据。
  • BiomedGPT 作为首个开源、轻量级的通用生物医学 AI 模型,基于 Transformer 结构,支持多任务处理,能够在多种生物医学任务上取得良好表现。

3. 相关研究

3.1 基础模型与通用生物医学 AI

现有的 AI 模型,如 GPT-4、PaLM-E、Med-PaLM M,在通用任务中表现优秀,但大多数仍主要用于文本处理,缺乏对医学图像、病理学数据、基因组信息的综合处理能力。

传统的多模态学习方法,如 CLIP(OpenAI)LLaVA-Med,主要针对视觉-文本任务,但缺乏医学领域的专业微调。

3.2 生物医学 AI 的局限性

目前的大多数生物医学 AI 模型仅针对单一模态(如放射学或病理学),在跨模态任务上的泛化能力较弱。

现有模型的封闭性(如 Med-PaLM M 并未开源)限制了学术界和行业的广泛应用。

3.3 BiomedGPT 的创新点

开源透明:不同于 Med-PaLM M,BiomedGPT 完全开源,为研究人员和从业者提供了更自由的开发环境。

轻量级设计:BiomedGPT 体积小,计算成本更低,但依然能在多个任务上达到或超越 SOTA 级别。

跨模态能力:支持 文本、放射学影像、病理图像、EHR(电子健康记录)、基因组数据等多种医疗数据类型。

 图 1:BiomedGPT 可以处理多种模态并执行多种任务

(a) BiomedGPT 主要关注视觉和文本输入,但也可以通过序列化处理表格数据

(b) BiomedGPT 支持的下游视觉语言任务示例展示了其多功能性。 可以通过轻量级、特定于任务的微调来合并其他任务以满足进一步的临床需求。

(c) BiomedGPT 的临床相关用例示例包括输入可能是图像和文本仅文本,并且模型通过生成响应(“A”)来响应查询(“Q”)。 由于其统一的框架设计和对生物医学数据的全面预训练,BiomedGPT 具有高度适应性,可应用于各种下游任务。 

图 2:BiomedGPT 概述:工作流程、性能和预训练数据集

(a)BiomedGPT 如何处理 多模态输入 并执行各种 下游任务 的图形说明。每个任务的预期输出形式由向模型提供特定指令来确定。

(b)比较性能分析:该图将 BiomedGPT 的成就与之前的 SOTA 结果和 Med-PaLM M (12B) 进行了对比。评估指标 包括:

  • 图像分类、医学语言推理和视觉问答 (VQA) 的准确性(以 SOTA 结果为基准);
  • 用于图像标题(captioning)的 CIDEr;
  • 用于文本摘要的 ROUGE-L;
  • 用于 VQA 的加权 F1 分数(与 Med-PaLM M 相比);
  • 用于乳房肿块和钙化分类的 F1-macro(也与 Med-PaLM M 相比)。

(c)包括图像标题(captioning)和 VQA 在内的 预训练数据集 的分布,作为视觉和语言数据集、对象检测数据集和用于掩蔽图像建模(masked image modeling)的纯图像数据集。

(d)纯文本预训练数据集中每句话的 单词数密度图

(e)与规模相关的性能比较:BiomedGPT 在 SLAKE VQA 数据集上表现出色,即使其参数明显少于同类产品。 

    扩展数据图 2:BiomedGPT 模型配置和架构概览

    (a)BiomedGPT 的详细模型配置

    • 其中,“#” 表示数量。“Att.”,“Enc.”和“ Dec.” 分别表示注意、编码器和解码器。
    • 隐藏(Hidden)大小是嵌入的大小以及每个自注意和前馈层的输出大小。
    • FFN 的第一层将隐藏大小扩展为中间(Intermediate)大小,第二层将其收缩回隐藏大小。这种扩展和收缩使网络能够创建更复杂的表示。
    • 在预训练阶段,图像处理涉及将图像调整大小和裁剪为不同的分辨率,对应于表中列出的输入大小。
    • 需要注意的是,在微调和推理阶段,BiomedGPT 的输入分辨率可以根据任务的具体要求灵活调整。

    (b)BiomedGPT 的神经网络架构,包括双向编码器块和自回归解码器块。不同模型规模的块数不同。 

    扩展数据图 3:BiomedGPT 中关键组件的图形说明

    (a)BiomedGPT 中的头部缩放多头注意模块。可训练参数 γ_h 在每个头部的输出投影之前应用。

    (b)位置嵌入和输入嵌入

    • 我们没有将绝对位置嵌入(absolute positional embedding) P_i 添加到输入嵌入 I_i(
    • 而是分别使用不同的投影矩阵计算位置相关性和输入相关性,并在自注意模块中将它们加在一起()。

    (c)相对位置偏差的图形说明。这种归纳偏差 𝐵_{𝑗 − 𝑖} 是可学习参数,可以看作是相对位置 𝑗 − 𝑖 的嵌入,它被注入到 Query-Key 乘积中:(1 / √d) · (I_i·𝑊^Q)(P_i·𝑊^K) + 𝐵_{𝑗 − 𝑖},并在所有层中共享。

    (d)基于 trie 的波束搜索示例:沿着 “Lipid” 和 “breakdown” 的路径,BiomedGPT 在计算目标token “in” 的对数概率时将所有无效 token(“mechanism” 和 “pathway”)的对数设置为 -∞。值得注意的是,基于 trie 的搜索也应用于微调阶段的验证阶段,以加速(在我们的实验中,速度提高了约 16 倍)。 

    4. 方法

    4.1 架构及表示

    4.1.1 模型架构选择

    目前基础模型架构主要分为三类:

    1)仅编码器(Encoder-only)

    • 代表模型:BERT 及其变体
    • 优势:能够提取文本特征,适用于分类任务
    • 局限性:缺乏文本生成能力,难以适应多模态任务

    2)仅解码器(Decoder-only)

    • 代表模型:GPT 系列
    • 优势:强大的文本生成能力,适用于问答和报告生成
    • 局限性:无法高效地处理医学图像等多模态数据

    3)编码-解码(Encoder-Decoder)

    • 代表模型:T5、BART
    • 优势:
      • 同时具备编码和解码能力,适用于多模态任务
      • 能够有效处理文本、图像和结构化数据
    • 局限性:需要更复杂的训练方法以优化跨模态学习能力

    4.1.2 BiomedGPT 架构

    BiomedGPT 是通过对 损坏的文本 使用 BERT 样式的编码器 GPT 样式的从左到右的自回归解码器 来实现的(采用 Transformer 编码-解码(Encoder-Decoder)架构)。

    所有这些模型都依赖于具有广泛使用的 多头注意机制(扩展数据图 3a)的 transformer,该机制允许模型共同关注来自不同表示子空间的信息。

    为了提高预训练中的收敛效率和稳定性,在每一层添加了 三个归一化操作(扩展数据图 2b)

    • post-attention Layer Norm (LN) 、
    • post-first-FFN LN
    • head-wise scaling within self-attention

    为了对位置信息进行编码,我们为文本和图像合并了两组 绝对位置嵌入(absolute position embeddings)。我们没有仅仅将这些嵌入与 token 和 patch 嵌入相结合,而是实现了一种 解耦方法 来分离位置相关性(扩展数据图 3b),这可能会给注意力带来不必要的随机性,并进一步限制模型的表现力。

    此外,我们还结合了 文本的 1D 相对位置偏差图像的 2D 相对位置偏差(扩展数据图 3c)

    为了研究 BiomedGPT 在不同规模的任务中的表现,我们明确设计了 三个缩放模型,即 BiomedGPT-S(33M)、BiomedGPT-M(93M)和 BiomedGPT-B(182M)。每个模型的配置在 扩展数据图 2a 中有详细说明。 

    图 6:消融研究对预训练数据集和任务多样性影响的结果以及 BiomedGPT 设计的图形演示。

    (a)不包括特定任务的性能比较。这里使用的指标是放射学 VQA、医学语言推理和图像分类的准确性、放射学字幕的 CIDEr、医学问题总结的 ROUGEL-L。

    (b)BiomedGPT 在四个数据集上的跨域可迁移性。RadGPT 是 BiomedGPT 的一种变体,但已使用仅放射学数据进行了预训练。此外,SLAKE-MRI 和 SLAKE-CT 是 SLAKE 数据的模态特定子集。

    (c)BiomedGPT 在三种放射学模态/数据集中的域内可迁移性

    (d)BiomedGPT 中用于预训练和推理的统一词汇表的描述

    • 分别通过 Pix2Seq 和 BPE 对边界框和文本进行标记化(tokenization)。
    • 有三种类型的标记(token):来自冻结的预训练标记器(例如 VQ-GAN)的位置标记、文本标记和图像标记。
    • 我们还展示了预训练中的掩蔽图像建模的图形说明,旨在通过重建掩蔽的 patch 来学习表示。 

    4.1.3 统一的输入-输出表示

    BiomedGPT 采用 统一的 Token 表示方法,为所有多模态输出的 token 构建一个 统一的词汇表(图 6d),实现跨模态数据的统一编码:

    • 文本数据:使用 BPE(Byte Pair Encoding) 进行编码
    • 医学图像:采用 VQGAN(Vector Quantized Generative Adversarial Network) 进行量化编码。图像中对象的边界框以整数格式表示为位置 token 序列

    4.2 任务 

    4.2.1 预训练任务

    预训练过程中,BiomedGPT 采用了多种任务来提升其泛化能力:

    1)视觉任务

    掩码图像建模(MIM):采用块状掩码(block-wise masking)方法,使模型预测被遮挡区域的图像内容。

    图像填充(Image Infilling):生成缺失部分的图像像素编码。

    目标检测(Object Detection, OD):模型学习生成图像中目标的边界框,其任务指令为:“图像中有哪些物体?”。

    2)文本任务

    掩码语言建模(MLM):类似于 BERT 的方法,通过随机屏蔽部分文本并让模型预测完整文本。

    3)多模态任务

    图像描述(Image Captioning):任务指令:“这张图像描述了什么?”。

    视觉问答(VQA):任务指令为相应的具体问题,如:“{Question}”。

    4.2.2 微调和下游任务

    在 BiomedGPT 的微调阶段,除了预训练任务中的图像描述和 VQA 外,还包括以下额外任务:

    图像分类(Vision-only):任务指令:“这张图片描述了什么?”。

    文本摘要(Text Summarization):任务指令:“‘{Text}’的摘要是什么?”。

    自然语言推理(Natural Language Inference, NLI):任务指令:“{文本1} 是否能推断出 {文本2}?”。

    4.3 训练

    4.3.1 模型预训练

    1)训练方法

    BiomedGPT 采用序列到序列(seq2seq)学习方法进行预训练。

    给定输入序列 token x_{i,b},模型的通过自回归地最小化如下目标进行预训练:

    2)训练超参数

    优化器:AdamW

    学习率:1e-4,采用 线性衰减调度(linear decay scheduler)

    正则化:Dropout = 0.1,权重衰减 = 0.01

    数据增强:采用 随机裁剪(Random Cropping)、随机翻转(Random Flipping)

    4.3.2 模型微调与推理

    微调策略:BiomedGPT 采用 多任务微调(Multitask Fine-tuning),即在不同下游任务上进行针对性优化

    推理方法:BiomedGPT 采用 自回归解码 进行推理,并使用结合了前缀树(也称为 trie)的波束搜索策略,从而限制了候选 token 的数量,实现了更高效、更准确的文本生成:

    4.3.3 指令调优

    BiomedGPT 采用 指令调优(Instruction Tuning),通过任务指令引导模型执行不同任务。

    指令调优的关键特点:

    • 开放词汇(Open-vocabulary setting):模型可以生成任意答案,而不是选择预设选项。
    • 动态适配任务(Task Adaptability):无需微调即可处理新任务。

    4.4 模型扩展

    BiomedGPT 的基础版本支持 文本 + 2D 医学影像,但研究团队进一步扩展了其能力:

    1)扩展至 3D 医学影像分类(MRI, CT)

    • 采用 3D VQGAN 进行 3D 影像 Token 化,以适配模型输入。
    • 额外引入 3D 视觉编码器(3D Visual Encoder) 进行特征提取。

    2)分割(Segmentation):增加 Mask Decoder 以适配分割任务

    5. 结果

    5.1 BiomedGPT 在多模态任务上的表现

    图 3:BiomedGPT 对视觉语言和医学图像分类下游任务进行微调。

    • (a) BiomedGPT 和领先模型在封闭式和开放式准确度方面的医学 VQA 性能。
    • (b) BiomedGPT 和 SOTA 在 IU X-ray、PEIR GROSS 和 MIMICCXR 数据上的图像字幕性能。评估指标为 ROUGEL-L、METEOR 和 CIDEr。
    • (c) 对每种域类型的 MedMNIST-Raw 数据集上的图像分类评估。
    • (d) 两个超分辨率图像数据集上的图像分类性能和准确度。
    • (e) 使用 F1-macro 在 CBIS-DDSM 数据集上的图像分类性能。
    • (f) 9 个不同分辨率数据集的准确度在模型尺度方面有所不同。一般来说,较大的模型往往表现更好。 

    5.2 迁移学习和零样本能力

    图 4:BiomedGPT 执行几个时期的迁移学习以理解和总结临床文本,并通过零样本迁移学习生成响应。

    • (a) 使用 10 倍交叉验证 (n=4680) 对治疗建议任务模型的准确性进行评估。
    • (b) 使用 10 倍交叉验证 (n=7079) 对来自 TREC 2022 数据集的患者试验匹配数据集的准确性进行性能比较。
    • (c) 三种 BiomedGPT 变体和两种 SOTA 模型 BioGPT 和 LLaVA-Med 在院内死亡率预测中的准确性。
    • (d) ROUGEL-L 在四个文本摘要数据集上的模型规模。 图例的大小代表参数的数量。
    • (e) MedNLI 数据集上的医学语言推理性能。
    • (f) Instruct-BiomedGPT(基础、中、小)、BiomedGPT、OFA(大、巨大)、LLaVA-Med 和 GPT-4V 之间的零样本问题对齐准确度比较。我们提供了一个示例来说明生成的答案与问题之间的不匹配。
    • (g) VQA-RAD 数据集上 7 种问题类型的平均零样本准确度。
    • (h) 通过 50 次重复采样(n=39)在 VQA-RAD 数据集上的整体零样本学习性能。 

    5.3 人类专家评估

    图 5:VQA、文本摘要和标注(captioning)任务的人工评估。

    (a)三项任务的人工评估示例,包括响应真实性、遗漏和错误的重要性。

    (b)三种模型在放射学 VQA 的六个问题类别中的性能比较。

    (c)放射学 VQA 的平均答案分数。

    (d)生成的放射学报告中 BiomedGPT-B 和 BiomedGPT-M 的错误率和遗漏率。

    (e)报告摘要的人工评估考虑三个属性:完整性、正确性和潜在危害,并具有总体偏好。 

    6. 讨论

    1)高质量医学数据的稀缺

    医学数据的标注成本高昂,需要专业知识,导致高质量、多模态医疗数据集的缺乏

    研究人员通常依赖于公共数据集,但这可能会导致数据质量不均

    在多模态数据(尤其是图像-文本对)中,存在数据模态不均衡的问题:

    • 放射学(Radiology)数据占比过高,而基因组学(Genomics)、电子健康记录(EHR)等数据较少
    • 高质量医学影像及其对应的详细注释仍然不足,限制了 AI 对复杂医学任务的适应能力。

    2)评估 AI 生成内容的难度

    目前常用的 文本评价指标(如 CIDEr, ROUGE-L)能够衡量 AI 生成文本与标准答案的相似度,但无法评估其医学事实准确性

    在放射学领域,研究者提出了 F1-RadGraph 评分,用于衡量 AI 生成的放射学报告的事实正确性。

    病理学(Pathology)等其他医学领域,目前尚未建立类似的评估标准,导致难以客观评估 AI 生成的医学内容。

    3)AI 在医学多模态学习上的扩展性

    BiomedGPT 目前主要支持 文本 + 2D 医学影像,但未来需要扩展至更多医学数据类型:

    • 3D 医学影像(MRI、CT):本研究已通过 3D 图像编码器 扩展 BiomedGPT 的能力。
    • 视频和时间序列数据(如心电图 EKG、动态超声影像)。

    负迁移(Negative Transfer)问题

    • 在多模态学习中,增加新模态可能会 降低模型在某些任务上的表现
    • 例如,本研究发现,去除图像数据提升文本任务的性能,说明不同数据模态之间可能存在干扰。

    4)AI 扩展的权衡

    模型规模与性能呈正相关,即参数规模越大,任务表现越好。

    但大规模模型面临计算资源和推理效率的挑战:

    • 微调成本高:现有的微调方法计算开销大,影响模型在临床环境中的部署
    • 推理速度受限:大模型在实时医疗应用(如医生决策支持)中的推理速度可能较慢。

    5)零样本学习的挑战

    BiomedGPT 的文本理解能力仍然低于 GPT-4V

    • 语言模型规模较小(目前 BiomedGPT-B 仅有 182M 参数)。
    • 单一编码器架构可能限制多模态表示能力,导致模型难以分离不同数据模态的信息。

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

    进 Q 学术交流群:922230617

    相关文章:

    (2024|Nature Medicine,生物医学 AI,BiomedGPT)面向多种生物医学任务的通用视觉-语言基础模型

    BiomedGPT: A generalist vision–language foundation model for diverse biomedical tasks 目录 1. 摘要 2. 引言 3. 相关研究 3.1 基础模型与通用生物医学 AI 3.2 生物医学 AI 的局限性 3.3 BiomedGPT 的创新点 4. 方法 4.1 架构及表示 4.1.1 模型架构选择 4.1.2 …...

    python代码

    python\main_script.py from multiprocessing import Process import subprocessdef call_script(args):# 创建一个新的进程来运行script_to_call.pyprocess Process(targetrun_script, args(args[0], args[1]))process.start()process2 Process(targetrun_script, args(arg…...

    mongodb 使用内存过大分析

    ps aux 内存使用 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head -10swap 使用 for i in $(ls /proc | grep "^[0-9]" | awk $0>100); do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i/smaps;done| sort -k2nr | headmon…...

    服务器虚拟化技术深度解析:原理、实践与未来趋势

    文章目录 引言:数字化转型的核心引擎第一章 服务器虚拟化技术演进史1.1 虚拟化技术发展脉络1.2 虚拟化技术演进图谱 第二章 虚拟化核心技术解析2.1 Hypervisor架构类型2.1.1 Type 1 裸金属架构2.1.2 Type 2 宿主型架构 2.2 虚拟化实现方式对比2.3 关键技术创新2.3.1…...

    C语言常见概念

    目录 第一个C语言程序 main函数 写法&#xff1a; printf和库函数 printf()函数 库函数 关键字 字符和ASCII码表 字符串和\0 转义字符 语句 注释 注释的两种形式 第一个C语言程序 #include<stdio.h>//第一个c语言程序 int main() {printf("Hello World…...

    sql字符串函数及字符拼接函数

    concat(str1,str2)函数&#xff1a;拼接字符串 UPPER(str)&#xff1a;字符串变成大写 LOWER(str)&#xff1a;字符串变小写 LENGTH(str)&#xff1a;获取字符串的长度 left(str,len)&#xff1a;获取字符串左边len个字符 right(str,len)&#xff1a;获取字符串右边len个字符 s…...

    Qt的QTableWidget类的声明定义和使用

    QTableWidget类的声明定义 QTableWidget 是 Qt 框架中的一个类&#xff0c;它继承自 QAbstractItemView 并提供了用于显示和操作二维表格数据的接口。这个类不是由用户直接声明的&#xff0c;而是由 Qt 库提供的。你可以在你的 Qt 应用程序中通过包含相应的头文件来使用它。 …...

    【kafka实战】06 kafkaTemplate java代码使用示例

    在 Spring Boot 中使用 KafkaTemplate 可以方便地向 Kafka 发送消息。下面为你详细介绍使用步骤和示例代码。 1. 创建 Spring Boot 项目 你可以使用 Spring Initializr&#xff08;https://start.spring.io/ &#xff09;来创建一个新的 Spring Boot 项目&#xff0c;添加以下…...

    使用C#开发一款通用数据库管理工具

    由于经常使用各种数据库&#xff0c;笔者自己动手丰衣足食&#xff0c;使用C#开发了一款通用数据库管理工具&#xff0c;支持Mysql、Oracle、Sqlite、SQL Server等数据库的表、视图、存储过程、函数管理功能&#xff0c;并支持导入导出、数据字典生成、拖拽式跨机器跨库数据一键…...

    90.子集||

    要求所有可能的子集&#xff0c;不能重复&#xff0c;因此对于相同的数字&#xff0c;要考虑去重&#xff0c;去重的方式就是通过排序&#xff0c;排序后相同的数字相邻&#xff0c;这样进行实现迭代时&#xff0c;若没有选择上一个数&#xff0c;&#xff0c;其当前数字与上一…...

    windows phpstudy python cgi配置

    修改apache配置文件:httpd.conf 搜索’Define SRVROOT’&#xff0c; 查看cgi根目录&#xff0c;python脚本需要放在该 Define SRVROOT "D:/Program/phpstudy_pro/Extensions/Apache2.4.39解决中文乱码 文件最后添加AddDefaultCharset gbk 重启apache python脚本: #!py…...

    Java 大数据与区块链的融合:数据可信共享与溯源(45)

    &#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

    Axure PR 9 动效 设计交互

    大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来用Axure制作一组动效。 动效 创建动效元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.选中画布&#xff0c;将画布填充颜色设置为蓝色(#0052D9)。 3.在元件库中拖出一个圆形元件&#xff0c;选中矩形元件&…...

    element-plus+vue3前端如何根据name进行搜索查到符合条件的数据

    界面如图&#xff0c;下面的区域是接口给的所有的&#xff0c;希望前端根据输入的内容自己去匹配。 我是使用的element-plusvue3ts的写法。 <el-input v-model"filters.region" placeholder"输入区域搜索" keyup"filterRegion(filters.region)&q…...

    hot100-day1

    1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> map1;for(int i0;i<nums.size();i) map1[nums[i]] i;for(int i0;i<nums.size();i){…...

    webrtc编译需要常用环境变量以及相关名词解释

    set vs2022_installD:\\vs2022 set GYP_MSVS_OVERRIDE_PATHD:\\vs2022 set GYP_GENERATORSmsvs-ninja,ninja set WINDOWSSDKDIRD:\\Windows Kits\10 set DEPOT_TOOLS_WIN_TOOLCHAIN0 set GYP_MSVS_VERSION2022 这些环境变量是为了编译 WebRTC 时让 GYP/Depot Tools 正确找到 V…...

    PostgreSQL函数自动Commit/Rollback所带来的问题

    一、综述 今天在PostgreSQL遇到一个奇怪的现象&#xff0c;简而言之&#xff0c;是想用函数&#xff08;存储过程&#xff09;实现插入记录&#xff0c;整个过程没报错但事后却没找到记录&#xff01;忙活半天&#xff0c;才发现原因是PostgreSQL函数&#xff08;存储过程&…...

    开源项目介绍-词云生成

    开源词云项目是一个利用开源技术生成和展示词云的工具或框架&#xff0c;广泛应用于文本分析、数据可视化等领域。以下是几个与开源词云相关的项目及其特点&#xff1a; Stylecloud Stylecloud 是一个由 Maximilianinir 创建和维护的开源项目&#xff0c;旨在通过扩展 wordclou…...

    VSCode设置——通过ctrl+鼠标滚动改变字体大小(新版本的vs)

    "editor.mouseWheelZoom": true 第一步&#xff1a; 第二步&#xff1a;...

    多种蝴蝶识别分割数据集labelme格式784张9类别

    数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;784 标注数量(json文件个数)&#xff1a;784 标注类别数&#xff1a;9 标注类别名称:["Monarch","Zebra Longwing"…...

    DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具

    &#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Ollama &#x1f98b; 下载 Ollama&#x1f98b; 选择模型&#x1f98b; 运行模型&#x1f98b; 使用 && 测试 二&#xff1a;&#x1f525; Chat…...

    SqlSugar简单使用之Nuget包封装-Easy.SqlSugar.Core

    SqlSugar官方文档 Nuget包开源地址 Nuget包是为了简化SqlSugar的使用步骤,增加一些基础的使用封装 引入分为两个版本&#xff0c;一个Ioc模式&#xff0c;另一个是注入模式&#xff0c;如果不想影响原本的仓储代码推荐使用Ioc模式&#xff0c;两者区别不到&#xff0c;方法通…...

    论文解读 | NeurIPS'24 Spotlight ChronoMagic-Bench 评估文本到视频生成的质变幅度评估基准...

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 袁盛海&#xff0c;北京大学硕士一年级学生 内容简介 本文提出了一种新颖的文本到视频&#xff08;T2V&#xff09;生成基准ChronoMagic-Bench&#xff0…...

    12.1 LangChain数据处理流Data Connection深度解析:构建高效数据管道的五大核心组件

    LangChain数据处理流Data Connection深度解析:构建高效数据管道的五大核心组件 一、Data Connection模块的战略定位 LangChain的Data Connection模块是大模型应用的数据中枢,其核心价值在于将非结构化数据转化为大模型可理解的语义知识。传统数据处理的三大痛点在此得到完美…...

    文件基础IO

    理解"文件" 1-1 狭义理解 文件在磁盘里磁盘是永久性存储介质&#xff0c;因此文件在磁盘上的存储是永久性的磁盘是外设&#xff08;即是输出设备也是输入设备&#xff09;磁盘上的文件 本质是对文件的所有操作&#xff0c;都是对外设的输入和输出简称IO 1-2 广义理…...

    ASP.NET Core筛选器Filter

    目录 什么是Filter&#xff1f; Exception Filter 实现 注意 ActionFilter 注意 案例&#xff1a;自动启用事务的筛选器 事务的使用 TransactionScopeFilter的使用 什么是Filter&#xff1f; 切面编程机制&#xff0c;在ASP.NET Core特定的位置执行我们自定义的代码。…...

    Java 中的 Spring 框架,以及 Spring Boot 和 Spring Cloud 的区别?

    Spring框架是一个开源的Java平台&#xff0c;主要用于简化企业级应用程序的开发。 它通过提供一系列的功能模块&#xff0c;帮助开发者解决常见的编程难题&#xff0c;从而提高开发效率和代码质量。 Spring框架的核心思想是“控制反转”&#xff08;IoC&#xff09;和“面向切…...

    Rplayer:手机上的本地音乐播放智能之选

    在众多本地音乐播放器中&#xff0c;Rplayer凭借其卓越的功能脱颖而出。它不仅能够精准识别本地下载的音乐文件&#xff0c;更以其智能化的设计为用户带来极致的便捷体验。 Rplayer的真正亮点在于其强大的自动扫描功能。与市面上其他播放器不同&#xff0c;Rplayer无需用户手动…...

    vue2-插槽slot

    文章目录 vue2-插槽slot1. 什么是slot2. slot分类2.1 默认插槽2.2 具名插槽2.3 作用域插槽 vue2-插槽slot 1. 什么是slot 在vue中&#xff0c;slot翻译为插槽&#xff0c;简单点说&#xff0c;就是在子组件内放置一个插槽&#xff0c;等待父组件在使用子组件的时候决定放什么…...

    二级C语言题解:整数序列奇偶个数、拼接数字字符、数组取偶数并加小数点

    目录 一、程序填空&#x1f4dd; --- 整数序列奇偶个数 题目&#x1f4c3; 分析&#x1f9d0; 二、程序修改&#x1f6e0;️ --- 拼接数字字符 题目&#x1f4c3; 分析&#x1f9d0; 三、程序设计 &#x1f4bb; --- 数组取偶数并加小数点 题目&#x1f4c3; 分析&…...

    VUE之组件通信(三)

    1、$refs与$parent 1&#xff09;概述&#xff1a; $refs用于&#xff1a;父——>子。$parent用于&#xff1a;子——>父。 2&#xff09;原理如下&#xff1a; 属性说明$refs值为对象&#xff0c;包含所有被ref属性标识的DOM元素或组件实例。$parent值为对象&#x…...

    Airflow:深入理解Apache Airflow Task

    Apache Airflow是一个开源工作流管理平台&#xff0c;支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持&#xff0c;它已迅速成为编排复杂数据管道的首选工具。在这篇博文中&#xff0c;我们将深入研究Apache Airflow 中的任务概念&#xff0c;探…...

    【号码分离】从Excel表格、文本、word文档混乱文字中提取分离11位手机号出来,基于WPF的实现方案

    应用场景 在市场调研过程中&#xff0c;可能会收集到大量的 Excel 表格、文本报告或 Word 文档&#xff0c;其中包含客户的联系方式。通过提取手机号&#xff0c;可以方便后续的市场推广和客户跟进。 当从不同渠道收集到的数据中包含混乱的文字信息时&#xff0c;需要从中提取…...

    【分布式架构理论2】分布式架构要处理的问题及解决方案

    文章目录 1. 应用服务拆分2. 分布式调用3. 分布式协同4. 分布式计算5. 分布式存储6. 分布式资源管理与调度7. 高性能与可用性优化8. 指标与监控 将分布式架构需要解决的问题按照顺序列举为如下几步 问题分类具体内容应用服务拆分分布式是用分散的服务和资源代替集中的服务和资…...

    WPS计算机二级•幻灯片的输出、打印与分享

    听说这是目录哦 打印界面讲解⭐所有页面 一键添加公司LOGO&#x1f31f;将多张幻灯片 打印在一张纸&#x1f320;将PPT内容 以讲义形式打印出来☄️打印 黑白色的幻灯片&#x1fa90;协作编辑模式&#x1f308;将PPT输出为图片&#x1f496;能量站&#x1f61a; 打印界面讲解⭐…...

    Java数据结构与算法之“树”

    目录 一、什么是树 ​编辑 二、树的相关组成 1. 常用名词 2.需要了解的名词 三、树的分类 &#xff08;一&#xff09;初级树 1.普通树 2.二叉树 &#xff08;二&#xff09;中级树 1.哈夫曼树HuffmanTree 2.二叉搜索树BST 3.平衡二叉树AVL &#xff08;三&#x…...

    嵌入式八股文面试题(一)C语言部分

    1. 变量/函数的声明和定义的区别&#xff1f; &#xff08;1&#xff09;变量 定义不仅告知编译器变量的类型和名字&#xff0c;还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型&#xff0c;但并不为它分配内存空间…...

    FPGA的IP核接口引脚含义-快解

    疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…...

    Web3技术详解

    Web3技术代表着互联网技术的最新进展&#xff0c;它致力于打造一个去中心化的互联网生态系统。以下是对Web3技术的详细解析&#xff1a; 一、Web3技术的核心概念 Web3是第三代互联网技术的代名词&#xff0c;代表着去中心化、区块链驱动和用户自有控制的理念。在Web3的世界中…...

    计算机网络之物理层通信基础(电路交换、报文交换与分组交换)

    一、电路交换 工作原理&#xff1a; 电路交换是在数据传输期间&#xff0c;源结点与目的结点之间建立一条由中间结点构成的专用物理连接线路&#xff0c;并在数据传输结束之前保持这条线路。整个报文的比特流连续地从源点直达终点&#xff0c;好像在一个管道中传送。 特点&am…...

    Linux firewalld开启日志审计功能(2)

    在Firewalld防火墙中启用和配置logdenied选项&#xff0c;记录被拒绝的数据包&#xff08;等同于开启日志功能&#xff09; 效果展示&#xff1a; 1.开启日志记录功能 firewall-cmd --set-log-deniedunicast #重新加载生效配置 firewall-cmd --reload 2.配置rsyslog捕获日志…...

    线程池如何知道一个线程的任务已经执行完成

    一、线程池内部任务执行状态监控 在线程池内部&#xff0c;当我们提交一个任务后&#xff0c;线程池会调度一个工作线程来执行该任务的run方法。确实&#xff0c;当run方法正常结束时&#xff0c;意味着任务已经完成。线程池中的工作线程是同步调用任务的run方法&#xff0c;并…...

    09网络深入连贯篇(D1_彻底理解长连接 短连接(一))

    目录 讲解一&#xff1a;长连接 & 短连接 一、初次见证长连接和短连接 1. 长连接 2. 短连接 二、如何区分当前连接是长连接还是短连接&#xff1f; 三、如何查询长连接和短连接&#xff1f; 四、那么长连接与短连接操作过程又是如何呢&#xff1f; 五、各自优缺点 …...

    ElasticSearch学习笔记-解析JSON格式的内容

    如果需要屏蔽其他项目对Elasticsearch的直接访问操作&#xff0c;统一由一个入口访问操作Elasticsearch&#xff0c;可以考虑直接传入JSON格式语句解析执行。 相关依赖包 <properties><elasticsearch.version>7.9.3</elasticsearch.version><elasticsea…...

    网络计算机的五个组成部分

    单个计算机是无法进行通信的。所以需要借助网络。 下面介绍一些在网络里常见的设备。 一、服务器 服务器是在网络环境中提供计算能力并运行软件应用程序的特定IT设备 它在网络中为其他客户机&#xff08;如个人计算机、智能手机、ATM机等终端设备&#xff09;提供计算或者应用…...

    责任链模式(Chain Responsibility)

    一、定义&#xff1a;属于行为型设计模式&#xff0c;包含传递的数据、创建处理的抽象和实现、创建链条、将数据传递给顶端节点&#xff1b; 二、UML图 三、实现 1、需要传递处理的数据类 import java.util.Date;/*** 需要处理的数据信息*/ public class RequestData {priva…...

    在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问

    在游戏本6G显存上本地部署Deepseek&#xff0c;运行一个14B大语言模型&#xff0c;并使用API访问 环境说明环境准备下载lmstudio运行lmstudio 下载模型从huggingface.co下载模型 配置模型加载模型测试模型API启动API服务代码测试 deepseek在大语言模型上的进步确实不错&#xf…...

    web-JSON Web Token-CTFHub

    前言 在众多的CTF平台当中&#xff0c;作者认为CTFHub对于初学者来说&#xff0c;是入门平台的不二之选。CTFHub通过自己独特的技能树模块&#xff0c;可以帮助初学者来快速入门。具体请看官方介绍&#xff1a;CTFHub。 作者更新了CTFHub系列&#xff0c;希望小伙伴们多多支持…...

    CTF-web: fs.readFileSync特殊利用

    URL类 URL 类是 JavaScript 的内置类&#xff08;或对象&#xff09;&#xff0c;它用于处理和解析 URL&#xff08;统一资源定位符&#xff09;。URL 是 Web API 的一部分&#xff0c;广泛应用于浏览器环境和 Node.js 中。 特性 构造函数: URL 类的构造函数可以接受一个 URL…...

    深入探索 C++17 特征变量模板 (xxx_v)

    文章目录 一、C++类型特征的前世今生二、C++17特征变量模板闪亮登场三、常见特征变量模板的实际应用(一)基本类型判断(二)指针与引用判断四、在模板元编程中的关键作用五、总结与展望在C++的持续演进中,C++17带来了许多令人眼前一亮的特性,其中特征变量模板(xxx_v)以其…...