【LMM 003】生物医学领域的垂直类大型多模态模型 LLaVA-Med

论文标题:LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day
论文作者:Chunyuan Li∗, Cliff Wong∗, Sheng Zhang∗, Naoto Usuyama, Haotian Liu, Jianwei Yang Tristan Naumann, Hoifung Poon, Jianfeng Gao
作者单位:Microsoft
论文原文:https://arxiv.org/abs/2310.03744
论文出处:–
论文被引:75(12/31/2023)
论文代码:https://github.com/haotian-liu/LLaVA,824 star

Abstract

会话生成式人工智能在增强生物医学从业人员的能力方面前景广阔,但目前的研究主要集中在单模态文本上。多模态对话式人工智能利用公共网络中的数十亿图像-文本对,取得了快速进展,但这种通用领域的视觉语言模型在理解生物医学图像并与之对话方面仍显不足。在本文中,我们提出了一种低成本高效率的方法来训练视觉语言对话助手,它可以回答生物医学图像的开放式研究问题。其主要思路是利用从 PubMed Central 提取的大规模、广覆盖的生物医学图文描述数据集,使用 GPT-4 对来自描述的开放式指令数据进行自我指导,然后使用新颖的课程学习方法对大型通用域视觉语言模型进行微调。具体来说,该模型首先利用图像-描述对(image-caption pair)学习对齐生物医学词汇,然后利用 GPT-4 生成的指令遵循数据学习掌握开放对话语义,大致模拟了非专业人员逐步掌握生物医学知识的过程。这使得可以在 15 个小时内(使用 8 卡 A100)训练出大型生物医学语言和视觉助理(LLaVA-Med)。LLaVA-Med 具备出色的多模态会话能力,可以按照开放指令协助回答生物医学图像问题。在三个标准的生物医学视觉问题解答数据集上,微调后的 LLaVA-Med 在某些指标上优于以前的监督式先进技术。

1 Introduction

在一般领域中,并行图像-文本数据非常丰富,例如网络图像及其相关描述(captions)。正如多模态 GPT-4 [32] 和 LLaVA [24] 等开源项目所证明的那样,生成式预训练已被证明能有效利用这些并行数据进行自我监督的视觉语言建模。通过基于多模态输入对模型进行指令调优,使其与人类意图保持一致,由此产生的大型多模态模型(LMM)在图像理解和推理等各种面向用户的视觉语言任务中表现出很强的零样本任务完成性能,为开发通用多模态对话助手铺平了道路[2, 21, 9]。

虽然在一般领域取得了成功,但这种 LMM s 对生物医学场景效果较差,因为生物医学图像-文本对与一般 Web 内容有很大不同。因此,通用域视觉助手可能表现得像外行人,他会避免回答生物医学问题,或者更糟,产生不正确的响应或完整的幻觉。在生物医学视觉问答 (VQA) 中取得了很大进展,但以前的方法通常将问题表述为分类(例如,在训练集中观察到的不同答案之间),并且没有很好地配备开放式指令遵循。因此,尽管会话生成 AI 在生物医学应用方面显示出巨大潜力 [19, 30, 18],但当前的调查通常仅限于单模态文本。

本文介绍了生物医学大型语言和视觉助手(Large Language and Vision Assistant for BioMedicine,LLaVA-Med),这是首次尝试将多模态指令调优扩展到生物医学领域,用于生物医学多模态对话助手的端到端训练。在生物医学自然语言处理(NLP)应用[17 , 14 , 10 , 28]和生物医学视觉语言(VL)任务[15, 7, 38 , 49 , 8]中,针对特定领域的预训练已被证明是有效的。最近,PMC-15M[49]的建立使得大规模生物医学 VL 学习成为可能,PMC-15M 是一个广泛覆盖的数据集,包含从 PubMed Central1 提取的 1,500 万个生物医学图像-文本对。该数据集比下一个最大的公共数据集 MIMIC-CXR [15] 大两个数量级,并且涵盖了多种图像类型。LLaVA-Med 受到最近在指令调优(instruction-tuning)[34, 24]方面的工作启发,使用 GPT-4 从 PMC-15M 中的图像-文本对生成多样化的生物医学多模态指令遵循数据,并使用新颖的课程学习方法微调大型生物医学领域 VL 模型[24]。

具体来说,我们的论文有以下贡献:

  • Biomedical multimodal instruction-following data。我们提出了一个新颖的数据生成管道,通过从 PMC-15M 中抽取生物医学图像-文本对,并使用 GPT-4 仅从文本(成为预期输出)中创建指令,从而创建多样化(图像、指令、输出)实例。这不需要任何人工注释,并通过搭载 PMC-15,创建了一个极其多样化的可视化指令遵循数据集,涵盖了生物医学图像的所有研究成果。

  • LLaVA-Med。我们提出了一种新颖的课程学习方法(curriculum learning method),利用自身生成的生物医学多模态指令遵循数据集将 LLaVA [24] 适应于生物医学领域。具体来说,

    • 首先,对 LLaVA 进行微调,以便使用图像文本对对齐生物医学词汇(通用指令仅要求描述图像)。
    • 然后,使用自生成的指令遵循数据继续训练模型,以学习开放式会话语义。通过这种方式,使用 8 卡 A100 在 15 小时内完成了 LLaVA-Med 的训练。研究验证了特定领域指令调优的有效性,并揭示了将多模态会话助手应用于高价值垂直领域的最佳实践。在成熟的生物医学 VQA 数据集上,LLaVA-Med 的微调效果往往优于有监督的最先进技术(SoTA)。
  • Open-source。为促进生物医学多模态学习的研究,我们将向公众发布以下资产:生物医学多模态指令遵循数据集以及用于数据生成和模型训练的代码库。

2 Related Work

Biomedical Chatbots.

受 ChatGPT [31]/GPT-4 [32]的启发,以及开源指令调优大语言模型(LLMs)在通用领域的成功,人们开发了几种生物医学 LLM 聊天机器人,包括

  • ChatDoctor [47]
  • Med-Alpaca [12]
  • PMC-LaMA [45]
  • Clinical Camel [1]
  • DoctorGLM [46]
  • Huatuo [44]

它们使用开源的 LLM 进行初始化,并在定制的生物医学指令遵循数据集上进行微调。由此产生的 LLM 具有巨大的潜力,可在各种生物医学相关领域/环境中提供帮助,例如了解患者需求和提供明智建议。

据我们所知,Visual Med-Alpaca [39] 是目前唯一接受图像输入的多模态生物医学聊天机器人。尽管 Visual Med-Alpaca 和 LLaVA-Med 有着相似的输入输出数据格式,但它们在关键方面存在差异:

  • (i) 模型架构。LLaVA-Med 是一个端到端的神经模型,而 Visual Med-Alpaca 是一个将多个图像描述模型与 LLM 连接起来的系统,使用分类器来确定图像是否由生物医学字幕模型负责。文本提示随后将转换后的视觉信息与文本查询合并,使 Med-Alpaca 能够生成适当的回复。
  • (ii) 生物医学指令遵循数据。Visual Med-Alpaca 是在有限的生物医学主题领域的 54K 个样本上进行训练的,而 LLaVA-Med 则是在更多样化的样本集上进行训练的。

Biomedical Visual Question Answering.

根据生物医学图像建立能够回答问题的模型的自动化方法,可以为临床医生和患者提供支持。为了描述现有的生物医学 VQA 方法,我们对判别方法和生成方法进行了区分。就判别方法而言,VQA 被视为一个分类问题:模型从一组预定义的答案中进行预测。虽然判别方法性能良好,但它们处理的是封闭集预测[13],在推理中提供自定义答案集时需要减轻影响[22, 49, 8]。要实现开发能在野外回答开放问题的通用生物医学助手的目标,判别式方法是次优的。为此,人们开发了生成式方法来预测作为自由格式文本序列的答案 [5, 26, 41]。生成式方法用途更广,因为它们能自然地将封闭集问题作为候选答案为语言指令的特殊情况。

Model Architecture.

LLaVA-Med与[41]中的语言模型(LM s)前缀调整类似,都是通过一个新的可训练模块连接冻结图像编码器和因果关系 LM。在 [41] 中,使用三层 MLP 网络将视觉特征映射为视觉前缀,预训练的 LM 包括 GPT2-XL [37]、BioMedLM [42] 和 BioGPT [28],大小从 1.5B 到 2.7B 不等。相比之下,LLaVA-Med 使用线性投影和 7B LM [43 , 40]。最重要的是,[41]只考虑了标准的监督微调,并将精力集中在探索各种建模选择上。我们的主要贡献在于提出了一种新颖的数据生成方法,该方法使用 GPT-4,利用从 PubMed Central [49] 中提取的免费提供的广覆盖生物医学图像-文本对,对生物医学多模态指令遵循数据进行自我指导(self-instruct)。

3 Biomedical Visual Instruction-Following Data

目前缺乏多模态生物医学数据集来训练指令遵循助手。为了填补这一空白,我们通过机器-人工协同程序,从广泛存在的生物医学图像-文本对中创建了首个同类数据集。该数据集由概念对齐和指令遵循两部分组成,分别用于第 4 节所述的不同训练阶段。

Biomedical Concept Alignment Data.

对于生物医学图像 Xv 及其相关图像描述 Xc,我们抽取一个问题 Xq,要求描述该生物医学图像。通过 (Xv、Xc、Xq),我们创建了一个单轮指令遵循示例:

在这里插入图片描述

根据图像描述的长度,抽取的问题要么要求精确描述图像,要么要求详细描述图像。附录 A 提供了两份问题清单。实际上,在 PMC-15M 中,25% 的图像描述长度小于 30 个单词[49],因此我们以 30 个单词为分界点来决定选择哪个问题列表。我们从 PMC-15M 中抽取了 60 万对图片-文本。虽然这个数据集只提供了一个单一的任务指令,即图像描述,但它包含了来自原始 PMC-15M [49] 的多种多样且具有代表性的生物医学概念样本集。

Biomedical Instruction-Tuning Data.

为了使模型能够遵从各种指令,我们通过提示仅使用语言的 GPT-4,展示并策划了各种指令遵从数据,其中包括关于所提供生物医学图像的多轮对话。具体来说,在给定图片说明的情况下,我们在提示中设计指令,要求 GPT-4 以仿佛能看到图片的语气(尽管它只能看到文字)生成多轮问答。有时图片说明太短,GPT-4 无法生成有意义的问题和答案。为了提供更多有关图片的背景信息,我们还创建了一个提示,其中不仅包括图像描述,还包括提及图片的 PubMed 原始论文中的句子。我们还在提示中手动编辑了一些短片示例,以演示如何根据所提供的图像描述和上下文生成高质量的对话。有关提示和短片示例,请参见附录 B。为了收集图片说明及其上下文,我们对 PMC-15M 进行了过滤,以保留只包含一个情节的图片。从中,我们从五种最常见的成像模式中抽取了 60K 个图像-文本对: CXR(胸部 X 光)、CT(计算机断层扫描)、MRI(磁共振成像)、组织病理学和 gross(即宏观)病理学。然后,我们从 PubMed 原文中提取提及图像的句子,作为图像描述的附加上下文,其灵感来源于外部知识有助于泛化的观察结果 [20,25]

在这里插入图片描述

图 1 所示为指令遵循数据示例,图 2 为数据统计图。在迭代改进数据质量时,我们生成了三个版本的指令数据:

  • (i) 60K-IM。将内联提及(IM)作为上下文的前述数据集。类似大小的数据集(60K 个样本),在自我指令生成中不包含 IM。
  • (ii) 60K。在自构造生成中没有IM的类似大小(60K个样本)的数据集。
  • (iii) 10K。不含 IM 的较小数据集(10 个样本)。这些数据集用于在实验中消除我们的数据生成策略及其对训练有素的 LLaVA-Med 的影响。

在这里插入图片描述

4 Adapting Multimodal Conversational Models to the Biomedical Domain

我们采用 LLaVA(一种通用域多模态对话模型[24])作为初始通用域 LM,并根据生物医学域不断训练该模型。采用相同的网络结构,其中线性投影层连接视觉编码器和语言模型。对于 LLaVA-Med 模型的训练,我们采用了两个阶段的程序,如图 3 所示。

在这里插入图片描述

Stage 1: Biomedical Concept Feature Alignment.

为了在概念覆盖率和训练效率之间取得平衡,我们将 PMC-15M 筛选为 600K 个图像-文本对。我们采用天真扩展法将这些图像-文本对转换为指令遵循数据:指令只是提出了描述图像的任务。对于每个样本,给定语言指令和图像输入后,我们要求模型预测原始图像描述。在训练中,我们冻结视觉编码器和 LM 权重,只更新投影矩阵。这样,大量新的生物医学视觉概念的图像特征就能与预训练 LM 中的文本词嵌入保持一致。这一阶段可以理解为将对齐后的图像-文本词库扩展到生物医学领域。

Stage 2: End-to-End Instruction-Tuning.

我们只冻结视觉编码器权重,并继续更新投影层和 LM 的预训练权重。为了训练模型以对话方式遵从各种指令并完成任务,我们在第 3 节收集的生物医学语言-图像指令遵从数据的基础上对模型进行了微调,从而开发了一个生物医学聊天机器人。正如稍后描述的实验所证明的那样,现阶段的 LLaVA-Med 模型不仅能作为生物医学视觉助手与用户互动,而且在成熟的生物医学 VQA 数据集上进行评估时,还能实现良好的零样本任务迁移性能。

Fine-tuning to Downstream Datasets.

针对一些特定的生物医学场景,需要开发高精度的特定数据集模型,以提高助手的服务质量。我们在三个生物医学 VQA 数据集[27]上进行两阶段训练后,对 LLaVA-Med 进行了微调,这三个数据集涵盖了不同的数据集规模和不同的生物医学主题。以生物医学图像为上下文,提供多个自然语言问题,助手以自由格式文本回答封闭集问题和开放集问题,并在每个封闭集问题的提示中构建候选答案列表。

Discussion.

我们讨论了 LLaVA-Med 的三个有利特性/意义:

  • i)开发成本低廉。我们的目标是以较低的开发成本提供负担得起的合理解决方案,而不是为了获得最佳性能而扩大数据/模型的规模:在 8 个 40G A100 GPU 上完成第 1 和第 2 阶段分别需要 7 和 8 个小时(详细数字见表 5)。
  • ii)适用于多个领域。虽然本文的重点是生物医学领域,但所提出的微调程序可以推广到游戏和教育等其他垂直领域,在这些领域中,需要新概念和领域知识来构建一个有用的助手。与文献[11]中 “不要停止预训练” 的论点类似,我们考虑采用一种可扩展的管道,从大量无标签数据中创建特定领域的指令数据,并提倡 “不要停止指令调优”,以构建定制的 LMM。
  • iii)服务成本低。一般 LMM 的模型规模可能非常庞大,服务成本也可能过高,而定制 LMM 则具有服务成本低的独特优势。
  • iv)平滑的模型适应。网络架构允许我们从 BioMedCLIP [49] 初始化视觉编码器,或从 Vicuna [43] 初始化语言模型,这可能会带来更高的性能。不过,从 LLaVA 平滑适配到聊天机器人,模型的行为将从普通人转变为专业助理,能够提供有帮助的特定领域响应。

5 Experiments

我们通过实验研究了两个关键部分,即生成的多模态生物医学指令遵循数据的质量和 LLaVA-Med 的性能。我们考虑了两个研究评估环境:

  • 1)作为开放式生物医学视觉聊天机器人,LLaVA-Med 的性能如何?
  • 2)在标准基准上,LLaVA-Med 与现有方法相比如何?需要说明的是,在整个实验过程中,我们只使用了纯语言的 GPT-4。

5.1 Biomedical Visual Chatbot

为了评估 LLaVA-Med 在生物医学多模态对话方面的性能,我们构建了一个包含 193 个新问题的评估数据集。对于这个测试数据集,我们从 PMC-15M 中随机选取了 50 对未见图像和图像描述,并生成两种类型的问题:对话和详细描述。对话数据是使用与第二阶段相同的自指导数据生成管道收集的。详细描述问题是从一个固定的问题集[24]中随机选择的,以诱导详细描述回答。

我们利用 GPT-4 来量化给定图像上下文和图像描述时模型对问题答案的正确性。GPT-4 会做出参考预测,为教师模型设定答案上限。然后,我们从另一个 LMM 中生成对同一问题的回答。在给出两位助手(候选 LMM 和 GPT-4)的回答、问题、图片说明和图片上下文后,我们要求 GPT-4 对两位助手的回答的有用性、相关性、准确性和详细程度进行评分,并按 1 到 10 的比例给出总分,分数越高表示整体表现越好。GPT-4 还被要求对评估进行全面解释,以便我们更好地理解模型。然后,我们利用 GPT-4 的参考分数计算相对分数,进行归一化处理。

在这里插入图片描述

结果见表 1。仅进行第一阶段训练的 LLaVA-Med 作为聊天机器人是不够的,因为它失去了遵循不同指令的能力,尽管生物医学概念的覆盖范围有所扩大。采用完整的两阶段训练的 LLaVA-Med 性能始终优于普通领域的 LLaVA,而采用更大的指令数据(从 10K 到 60K 样本)进行训练则会带来更高的性能。当在自我指导中考虑内联提及时,生成的数据 60K-IM 略微提高了聊天能力。这些结果证明了数据收集策略在生物医学教学中的有效性以及数据集资产的价值。总体而言,最佳 LLaVA-Med 的性能与 GPT-4 的 50.2% 不相上下。请注意,GPT-4 是在不理解图像的情况下,通过考虑真实的图像描述和黄金内联提及来生成响应的。虽然 LMM 与 GPT-4 之间的比较并不公平,但 GPT-4 是一种稳定可靠的评估工具。

在这里插入图片描述

表 2 举例说明了不同聊天机器人的生物医学视觉对话。LLaVAMed 用生物医学知识准确地回答了问题,而 LLaVA 则表现得像一个外行人,根据常识产生了幻觉。由于多模态 GPT-4 尚未公开,因此我们采用纯语言 GPT-4 进行比较。我们将金色图像描述和内联提及作为上下文输入 GPT-4,它通过以对话方式重新组织信息来生成知识性响应。

5.2 Performance on Established Benchmarks

Dataset Description.

我们在三个生物医学 VQA 数据集上对 LLaVA-Med 进行了训练和评估。表 3 总结了详细的数据统计。

  • VQA-RAD [16] 包含 3515 对由临床医生生成的 QA 和 315 幅放射图像,这些图像均匀分布在头部、胸部和腹部。每张图像都与多个问题相关联。问题分为 11 类:异常、属性、模式、器官系统、颜色、计数、物体/条件存在、大小、平面、位置推理和其他。一半的答案是封闭式的(即 "是/否 "类型),其余则是开放式的,有单词或短语答案。

  • SLAKE [23] 是一个用于医学 VQA 的语义标注知识增强数据集。它由 642 幅放射图像和 7000 多个由经验丰富的医生标注的不同 QA 对组成,其中的问题可能涉及外部医学知识(由提供的医学知识图谱解决),图像与丰富的可视化标注相关联,包括语义分割掩码和对象检测边界框。此外,与目前可用的数据集相比,SLAKE 包含更丰富的模式,涵盖更多人体部位,包括大脑、颈部、胸部、腹部和盆腔。请注意,SLAKE 是中英文双语数据集。与现有方法相比,我们只考虑了英文子集。

  • PathVQA [13] 是一个病理图像数据集。该数据集共包含 4998 张病理图像和 32,799 个 QA 对。每幅图像都有多个问题,涉及位置、形状、颜色、外观等多个方面。这些问题分为两类,种类繁多:一类是开放式问题,如为什么、是什么、怎么做、在哪里等;另一类是封闭式问题。

Evaluation Metrics.

对于封闭式问题,我们报告准确率。对于开放式问题,我们使用召回率来评估地面实况标记在生成序列中出现的比例。在文献中,训练集中的唯一答案被视为候选答案,模型可以从中选择答案来预测测试问题的答案。由于我们不对开放集问题的答案提供任何约束,因此我们的表述更接近于开放集的性质,但本质上更难。

Comparisons with SoTA.

我们在表 4 (a) 中将 LLaVA-Med 与一般领域的 LLaVA 和现有的代表性方法进行了比较。首先,LLaVA-Med 的所有变体都优于 LLaVA。虽然语言模型初始化与 LLaVA 或 Vicuna 的差异不大,但 BioMed CLIP 的视觉编码器初始化略优于通用域 CLIP。其次,在 VQA-RAD 和 PathVQA 的封闭集问题上,LLaVA-Med 的微调性能高于监督 SoTA。这验证了 LLaVA-Med 在提供明确指令(例如,是或否)的情况下,在遵循指令完成生物医学任务方面的强大能力。第三,对于开放集问题,LLaVA-Med 在 SLAKE 上实现了 SoTA,而在其他数据集上的表现有限,尤其是与现有方法相比。这可能是因为开放集生物医学问题可能是模棱两可的,而不会限制其例外答案选项。

Ablation Studies.

为了研究我们在训练管道中策划的指令数据和超参数的影响,我们在表 4 (b) 中报告了不同模型变体的性能。有几项发现得到了证实:

  • i)LLaVA-Med 的性能一直远远优于 LLaVA,这表明我们的生物医学领域特定适应性非常有效。与微调设置相比,LLaVA-Med 在零样本的性能差距更大,这表明各种场景中部署一个模型时,LLaVA-Med 显然是比 LLaVA 更好的选择。
  • ii)在第一阶段进行更长时间的训练可以提高零样本迁移的能力,但仅有第一阶段还不够,因为第一阶段的单一图像描述指令可能会促使模型失去遵循不同指令的能力
  • iii)第 2 阶段的指令遵循数据至关重要,当指令数据量从 10K 增加到 60K 时,性能普遍得到改善。60K-IM 数据分别提供了最佳的零样本平均性能和微调性能,验证了在数据创建过程中将内联提法视为外部知识的有效性。
  • iv)在下游数据集上进行更长时间的微调,直到 9 个 epoch,有利于提高性能,特别是在第 2 阶段进行 3 个 epoch 训练的检查点上。将语言模型的大小从 7B 增加到 13B,可以提高整体的零样本性能和微调性能。我们建议实践者参考表 5 中的运行时间,选择适当的质量成本权衡。

Case Study I: Zero-shot on Chinese Questions.

对于在 60K-IM 数据上训练的 LLaVA-Med,我们提供了 SLAKE 数据集上的中文问题。虽然 LLaVA-Med 的训练不包括中文教学数据,但我们在表 6 中显示,LLaVA-Med 能够正确理解中文问题并回答正确答案,这可能得益于 LLaMA/Vicuna 中学习到的多语言知识。现有模型在跨语言零样本迁移时会失效。

6 Conclusions

我们介绍了 LLaVA-Med,这是一个用于生物医学领域的大型语言和视觉模型。为了创建该模型,我们采用自指导(self-instruct)方法创建了高质量的生物医学语言图像指令遵循数据集,并利用纯语言 GPT-4 和外部知识建立了数据整理管道。LLaVA-Med 利用领域知识展示了强大的卓越聊天能力,并在三个 VQA 数据集上通过后续微调在某些指标上优于之前的监督 SoTA。

我们相信,LLaVA-Med 是向建立有用的生物医学视觉助手迈出的重要一步,但我们也注意到,LLaVA-Med 受限于许多 LMM 常见的幻觉和薄弱的深度推理。未来的工作方向是提高质量和可靠性。

A Data

Instructions for brief image description.

用于简要描述图像内容的说明列表见表 7。它们的含义与自然语言差异相同。

在这里插入图片描述

Instructions for detailed image description.

用于详细描述图像内容的说明列表见表 8。它们的含义与自然语言差异相同。

在这里插入图片描述

B Prompts

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/590253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode二叉树路径和专题:最大路径和与路径总和计数的策略

目录 437. 路径总和 III 深度优先遍历 前缀和优化 124. 二叉树中的最大路径和 437. 路径总和 III 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xf…

简单FTP客户端软件开发——VMware安装Linux虚拟机(命令行版)

VMware安装包和Linux系统镜像: 链接:https://pan.baidu.com/s/1UwF4DT8hNXp_cV0NpSfTww?pwdxnoh 提取码:xnoh 这个学期做计网课程设计【简单FTP客户端软件开发】需要在Linux上配置 ftp服务器,故此用VMware安装了Linux虚拟机&…

burpsuite模块介绍之compare

导语 Burp Comparer是Burp Suite中的一个工具,主要提供一个可视化的差异比对功能,可以用于分析比较两次数据之间的区别。它的应用场景包括但不限于: 枚举用户名过程中,对比分析登陆成功和失败时,服务器端反馈结果的区…

编程式导航传参

(通过js代码实现跳转) 按照path进行跳转 第一步&#xff1a; 在app.vue中(前提是规则已经配置好) <template><div id"app">App组件<button clicklogin>跳转</button><!--路由出口-将来匹配的组件渲染地方--><router-view>&l…

【嵌入式学习笔记-01】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误

【嵌入式学习笔记】什么是UC&#xff0c;操作系统历史介绍&#xff0c;计算机系统分层&#xff0c;环境变量&#xff08;PATH&#xff09;&#xff0c;错误 文章目录 什么是UC?计算机系统分层什么是操作系统&#xff1f; 环境变量什么是环境变量&#xff1f;环境变量的添加&am…

简写英语单词

题目&#xff1a; 思路&#xff1a; 这段代码的主要思路是读取一个字符串&#xff0c;然后将其中每个单词的首字母大写输出。具体来说&#xff0c;程序首先使用 fgets 函数读取一个字符串&#xff0c;然后遍历该字符串中的每个字符。当程序遇到一个字母时&#xff0c;如果此时…

基于图论的图像分割 python + PyQt5

数据结构大作业&#xff0c;基于图论中的最小生成树的图像分割。一个很古老的算法&#xff0c;精度远远不如深度学习算法&#xff0c;但是对于代码能力是一个很好的锻炼。 课设要求&#xff1a; &#xff08; 1 &#xff09;输入&#xff1a;图像&#xff08;例如教室场景图&a…

47、激活函数 - sigmoid

今天在看一个比较常见的激活函数,叫作 sigmoid 激活函数,它的数学表达式为: 其中,x 为输入,画出图来看更直观一些。 Sigmoid 函数的图像看起来像一个 S 形曲线,我们先分析一下这个函数的特点。 Sigmoid 函数的输出范围在 (0, 1) 之间,并且不等于0或1。 Sigmoid 很明显是…

Codeforces Round 900 (Div. 3)(A-F)

比赛链接 : Dashboard - Codeforces Round 900 (Div. 3) - Codeforces A. How Much Does Daytona Cost? 题面 : 思路 : 在序列中只要找到k&#xff0c;就返回true ; 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

spring 之 事务

1、JdbcTemplate Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 1.1 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependency&…

性能优化(CPU优化技术)-ARM Neon详细介绍

本文主要介绍ARM Neon技术&#xff0c;包括SIMD技术、SIMT、ARM Neon的指令、寄存器、意图为读者提供对ARM Neon的一个整体理解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09…

2024年总结的前端学习路线分享(学习导读)

勤学如春起之苗&#xff0c;不见其增&#xff0c;日有所长 。辍学如磨刀之石&#xff0c;不见其损&#xff0c;日有所亏。 在写上一篇 2023年前端学习路线 的时候&#xff0c;时间还在2023年初停留&#xff0c;而如今不知不觉时间已经悄然来到了2024年&#xff0c;回顾往昔岁月…

三、Mysql安全性操作[用户创建、权限分配]

一、用户 1.创建用户 CREATE USER test1localhost identified BY test1;2.删除用户 DROP USER test2localhost;二、权限分配 1.查询用户权限 SHOW GRANTS FOR test1localhost;2.分配权限 # 分配用户所有权限在for_end_test库的test1表 GRANT ALL PRIVILEGES ON for_end_t…

Pycharm引用其他文件夹的py

Pycharm引用其他文件夹的py 方式1&#xff1a;包名设置为Sources ROOT 起包名的时候&#xff0c;需要在该文件夹上&#xff1a;右键 --> Mark Directory as --> Sources ROOT 标记目录为源码目录&#xff0c;就可以了。 再引用就可以了 import common from aoeweb impo…

OCP NVME SSD规范解读-3.NVMe管理命令-part2

NVMe-AD-8&#xff1a;在某些情况下&#xff08;如Sanitize命令、Format NVM命令或TCG Revert方法后数据被清除&#xff09;&#xff0c;设备应允许读取已清除的LBAs而不产生错误&#xff0c;并在最后一次清除完成后&#xff0c;对未写入LBAs的读取返回所有零值给主机 NVMe-AD…

鸿蒙开发之android对比开发《基础知识》

基于华为鸿蒙未来可能不再兼容android应用&#xff0c;推出鸿蒙开发系列文档&#xff0c;帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发&#xff1f; ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风…

二叉树题目:根到叶路径上的不足结点

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;根到叶路径上的不足结点 出处&#xff1a;1080. 根到叶路径上的不足结点 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root…

关键字:throw关键字

在 Java 中&#xff0c;throw关键字用于抛出异常。当程序执行过程中发生意外情况&#xff0c;如错误的输入、资源不足、错误的逻辑等&#xff0c;导致程序无法正常执行下去时&#xff0c;可以使用throw关键字抛出异常。 以下是使用throw关键字的一些示例&#xff1a; 抛出异常…

服装店收银系统不只是收银 还需要线上商城和线上批发

一个综合性的服装店收银系统可以结合线上商城和线上批发功能&#xff0c;提供以下特点和优势&#xff1a; 线上商城&#xff1a;将服装店的商品信息同步到线上商城平台&#xff0c;让顾客可以通过网站或移动应用程序浏览和购买商品。线上商城可以实现在线支付、订单跟踪、售后服…

MySQL数据库索引优化

一、引言 1. 索引的重要性 MySQL数据库索引的重要性主要体现在&#xff0c;一是查询速度优化&#xff0c;索引可以极大地提高查询速度。对于没有索引的表&#xff0c;MySQL必须进行全部扫描来找到所需的行&#xff0c;如果表中数据量很大&#xff0c;那么通常很慢。通过适当的…