Segment Anything论文详细翻译【Part2:引言Introduction】
目录
写在前面
Introduction
第1段
第2段
第3段
第4段
第5段
第6段
第7段
第8段
第9段
第10段
第11段
第12段
Figure2
关键特点
图中具体内容
图例说明
写在前面
为啥要写这篇文章?因为找不到一篇写的特别好的【翻译并仔细解释】文章。网上大多千篇一律,写的不够详细。因此,博主打算自己从头到尾,仔细的过一遍。希望帮助大家!
上一篇,我们介绍了第1篇文章,Segment Anything论文详细翻译【Part1:作者+Figure1+摘要】 - 知乎。本节课,我们继续学习第2部分“引言”。
Introduction
第1段
大规模语言模型,在网络规模的数据集上进行预训练,正在凭借强大的零样本和小样本泛化能力,革新自然语言处理(NLP)。这些“基础模型”能够泛化到训练过程中未见过的任务和数据分布。该能力通常通过提示工程实现,其中费手工精心编写的文本,用于提示语言模型生成任务所需的有效文本响应。当使用来自网络的大量文本语料库进行扩展和训练时,这些模型在零样本和小样本任务上的表现令人惊讶地好,甚至在某些情况下可以媲美经过微调的模型。实验证明,随着模型规模、数据集大小和总训练计算量的增加,这种行为会不断改善。
基础模型(Foundation Models): 基础模型是指那些在大规模数据集上进行预训练,并能够泛化至大量不同任务的通用模型。它们在未经过训练的新任务上表现出色,通常通过零样本或少量样本学习(zero-shot and few-shot learning)。
大规模语言模型(Large Language Models):这类模型在非常大的文本数据集上进行预训练,使其在处理自然语言任务时具有强大的能力。常见的例子包括GPT-3、BERT和T5等。
网络规模的数据集(Web-scale Datasets):在互联网海量数据中抽取的非常大规模的数据集。典型的数据集通常包含数亿甚至数十亿个文本片段,用于训练模型以理解和生成人类语言。
预训练(Pre-training):预训练是一种在大型数据集上训练模型的方法,模型通过学习广泛的语言模式和知识来获取初始能力。在这个过程中,模型并不知道最终任务是什么,仅仅是学习语言的结构和使用规则。
零样本(Zero-shot)和小样本(Few-shot): 零样本泛化是指模型能够在完全没有见过相关示例的情况下完成任务。例如,当一个模型能够正确地翻译从未见过的语言对时,便实现了零样本泛化。 小样本泛化是指模型仅需少量示例即可完成新的任务。例如,当模型能够通过少数几次学习新的文本分类任务并达到高准确率时,便实现了小样本泛化。
泛化能力(Generalization Ability):指模型在未见过的数据和任务上仍能表现良好的能力。良好的泛化能力意味着模型不仅仅能记住训练数据,还能从中抽象出适用于新情境的规律和知识。
提示工程(Prompt Engineering):通过设计特定的输入提示来引导大型预训练模型生成所需的输出。例如,设计问题的方式、添加特定的前缀或后缀来诱导模型生成所需的答案或文本。
文本语料库(Text Corpora):大型文本数据集,用于训练和评估自然语言处理模型。这些语料库通常包含各类文档、对话、社交媒体帖子等,涵盖广泛的语言使用情况。
零样本任务(Zero-shot Tasks):未经过专门训练或微调的新任务。模型直接应用于这些任务,依赖于预训练中学到的知识和泛化能力。例如,让一个语言模型进行医学诊断,但它在预训练时并没有见过医学诊断的数据。
微调(Fine-tuning):在特定任务或数据集上对预训练模型进行进一步训练。微调通常通过在特定任务数据上进行几个时期的训练来细化模型的能力,使其在该任务上表现更好。
第2段
基础模型也在计算机视觉中,有所探索,尽管程度较小。最突出的例子可能是:将网络中的文本和图像配对。例如,CLIP和ALIGN使用对比学习,来训练文本和图像编码器,使两种模式对齐。一旦训练完成,经过设计的文本提示可以实现对新视觉概念和数据分布的零样本泛化。这些编码器还可以与其他模块有效组合以实现下游任务,例如图像生成(如DALL·E)。虽然在视觉和语言编码器方面,取得了许多进展,计算机视觉还包括比这范围更广的一系列问题,对于其中的许多问题,丰富的训练数据并不存在。
对比学习(Contrastive Learning): 对比学习是一种自监督学习方法,通过最大化相似样本(正样本对)之间的相似性,并最小化不同样本(负样本对)之间的相似性来学习数据的表示。CLIP和ALIGN使用对比学习来对齐文本和图像的表示。
CLIP: CLIP(Contrastive Language-Image Pre-training)是OpenAI开发的一种模型,通过对比学习将文本和图像对齐。它在训练中使用大量的图像和文本对,使得模型能够进行零样本学习,并能处理未见过的数据分布和视觉概念。
ALIGN: ALIGN(A Large-scale ImaGe and Noisy-text embedding)是Google提出的一个类似于CLIP的模型,也使用对比学习来训练文本和图像编码器。它在大规模的图像和文本数据上进行训练,目标是对齐两种模式(文本和图像)。
文本提示(Text Prompts): 文本提示是一种通过输入特定文本来引导模型生成所需输出的方法。在CLIP和ALIGN中,经过设计的文本提示用于指导模型进行零样本泛化。
DALL·E: DALL·E是OpenAI开发的一种图像生成模型,它可以根据文本描述生成对应的图像。DALL·E利用了训练过的视觉和语言编码器,将文本提示转化为图像生成。
视觉和语言编码器(Vision and Language Encoders): 编码器是一种神经网络模型,用于将输入数据(如图像或文本)转化为固定长度的向量表示。CLIP和ALIGN通过对比学习训练视觉和语言编码器,使两种不同模式的表示能够对齐,从而实现更好地跨模态任务表现。
第3段
在这项工作中,我们的目标是构建一个用于图像分割的基础模型。具体来说,我们希望开发一个可提示的模型,并在一个广泛的数据集上进行预训练,以实现强大的泛化能力。通过这个模型,我们旨在利用提示工程,解决新数据分布上的一系列下游分割问题。
第4段
这一计划的成功取决于任务、模型和数据这三个要素。为了实现这些,我们解决了有关图像分割的以下问题:
- 什么任务可以实现零样本泛化?
- 相应的模型架构是什么?
- 什么数据可以支持这个任务和模型?
第5段
这些问题是相互关联的,需要综合解决。我们首先定义了一个可提示的分割任务,该任务足够通用,可以提供强大的预训练目标,并能够支持广泛的下游应用。这个任务要求模型支持灵活提示,并可以在提示时实时输出分割掩码,以实现交互式使用。为了训练我们的模型,我们需要一个多样的大规模数据源。不幸的是,没有一个用于分割的网页级数据源;为了解决这个问题,我们构建了一个“数据引擎”,即我们在使用高效模型协助数据收集和使用新收集的数据来改进模型之间迭代进行。接下来,我们介绍每个相互关联的组件,然后是,我们创建的数据集,和证明我们方法有效的实验。
第6段
任务 (第2节): 在自然语言处理(NLP)和近来的计算机视觉领域,基础模型已成为一种有前景的发展方向。这些模型通常使用提示(prompting)技术,能够进行零样本和少样本学习新数据集和新任务。受到此类工作的启发,我们提出了可提示的分割任务,其目标是根据任意分割提示,返回一个有效的分割掩码(见图1a)。提示只是简单地指定了在图像中需要分割的内容,例如,提示可以包含用于标识物体的空间或文本信息。有效输出掩码的要求意味着,即使提示是模糊的并且可能指向多个物体(例如,衣服上的一点,可能指示衣服或穿着衣服的人),输出都应当是其中至少一个物体的合理掩码。我们使用可提示的分割任务,作为预训练目标,并通过提示工程解决一系列下游分割任务。
第7段
模型 (第3节): 可提示的分割任务和实际应用需求,对模型的架构设计提出了一些约束。具体来说,模型需要支持灵活的提示,能够在摊销的实时环境中计算掩码以便交互使用,并且必须能够识别和处理歧义。意外的是,我们发现一个简单的设计就能满足这些要求:一个强大的图像编码器用来计算图像嵌入,一个提示编码器嵌入提示信息,然后这两个信息源被结合到一个轻量级的掩码解码器中,该解码器预测分割掩码。我们称这个模型为“全能分割模型”(Segment Anything Model,即SAM,见图1b)。通过将SAM,分成图像编码器和快速提示编码器/掩码解码器,可以在不同提示下,复用同一个图像嵌入(并摊销计算成本)。给定一个图像嵌入,提示编码器和掩码解码器可以在大约50毫秒内,根据提示预测出一个掩码。我们专注于点、框和掩码提示,并且展示了自由格式文本提示的初步结果。为了让SAM具备歧义识别能力,我们设计它以预测单个提示的多个掩码,从而让SAM自然地处理歧义,例如:区分衣服和穿衣者之间的区别。
第8段
数据引擎 (第4节): 为了让SAM在新的数据分布上实现强大的泛化能力,我们发现,有必要在一个大型且多样化的掩码数据集上训练SAM,这远远超出了现有的任何分割数据集。虽然,典型的方法是从网上获取数据,但掩码数据并不天然丰富,因此,我们需要一个替代策略。我们的解决方案是,建立一个“数据引擎”,即在数据集标注过程中,与模型共同开发(见图1c)。我们的数据引擎分为三个阶段:辅助手动、半自动和全自动。在第一阶段,SAM协助标注人员进行掩码标注,类似于经典的交互式分割设置。在第二阶段,SAM通过提示可能的对象位置自动生成部分对象的掩码,而标注人员集中精力标注剩余的对象,以增加掩码的多样性。在最后阶段,我们通过一个规则的前景点网格提示SAM,平均每张图像生成大约100个高质量掩码。
第9段
数据集 (第5节): 我们的最终数据集SA-1B包含了超过10亿个掩码,这些掩码来自1100万张已授权且保护隐私的图像(见图2)。SA-1B完全通过我们数据引擎的最后阶段自动收集,其掩码数量是现有任何分割数据集的400倍。经过广泛验证,这些掩码具有高质量和高度多样性。除了用于训练以使SAM更强大和通用之外,我们还希望SA-1B能成为建立新基础模型的研究中的宝贵资源。
第10段
负责任的AI (第6节): 我们研究并报告了在使用SA-1B和SAM时,可能存在的公平性问题和偏见。SA-1B中的图像来自地理和经济多样化的国家,我们发现SAM在不同人群中表现一致。我们希望这能使我们的工作在实际应用中更加公正。在附录中,我们提供了模型和数据集卡片。
第11段
实验 (第7节): 我们对SAM进行了广泛的评估。首先,使用一个包含23个不同分割数据集的多样化新套件,我们发现SAM能够从单个前景点,生成高质量的掩码,其表现通常仅稍低于手动标注的真实值。其次,通过提示工程的零样本转移协议,我们在多种下游任务中(包括边缘检测、目标提议生成、实例分割,以及文本到掩码预测的初步探索)获得了始终如一的强有力的定量和定性结果。这些结果表明,SAM可以在使用提示工程的情况下,直接应用于解决涉及对象和图像分布的各种任务,超出其训练数据的范围。然而,仍有改进空间,正如我们在第8节中讨论的那样。
第12段
发布: 我们将SA-1B数据集开放供研究用途,并根据宽松的开放许可证(Apache 2.0)发布SAM,网址是https://segment-anything.com。此外,我们还通过在线演示展示了SAM的功能。
Figure2
关键特点
- 多样性:图片中展示的图像来自不同的场景和对象,体现了数据集的多样性。
- 掩码数量:图片中的图像根据每张图像上叠加掩码的数量分组,具体分为以下几类:
- 小于50个掩码
- 50到100个掩码
- 100到200个掩码
- 200到300个掩码
- 300到400个掩码
- 400到500个掩码
- 超过500个掩码
图中具体内容
- <50个掩码:
- 左上角部分,包括海面上船只、墙上的壁画、停机坪上的飞机等,展示了简单且少量对象的场景。
- 50-100个掩码:
- 这一部分包含操场上的人、游乐园中的场景等,掩码数量相对较多。
- 100-200个掩码:
- 中等复杂度的场景,例如市场摊位、摆放食物的桌子等,显示了更多的对象分割。
- 200-300个掩码:
- 更复杂的场景,如大型市场、繁忙的街道等,掩码数量进一步增加。
- 300-400个掩码:
- 包括水果摊、超市货架、人群聚集等,非常复杂和多样化的场景。
- 400-500个掩码:
- 最复杂的场景之一,展示了充满商品的货架和密集的市场场景,大量的对象被分割。
- >500个掩码:
- 最复杂的场景,包括全景市场和蔬菜摊位,每张图像中有超过500个分割掩码。
图例说明
- 图例说明:
- 图例的下方标注了这些图像的来源:SA-1B数据集,它包含1100万张授权并保护隐私的高分辨率图像和11亿个高质量分割掩码。
- 这些掩码是完全由SAM自动标注的,并经过了人工评级和大量实验验证,确保了高质量和多样性。
- 出于可视化的目的,图像按每张图像上的掩码数量分组,每张图像平均有大约100个掩码。
相关文章:
Segment Anything论文详细翻译【Part2:引言Introduction】
目录 写在前面 Introduction 第1段 第2段 第3段 第4段 第5段 第6段 第7段 第8段 第9段 第10段 第11段 第12段 Figure2 关键特点 图中具体内容 图例说明 写在前面 为啥要写这篇文章?因为找不到一篇写的特别好的【翻译并仔细解释】文章。网上大多千…...
Mac中配置Node.js前端vscode环境(第二期)
核心组件:vscode、谷歌浏览器、Node.js(重点)、git 一、Node.js安装(nvm安装) 点击macos中的终端,保持bash,而不是zsh 若为zsh,则可在终端中使用下面命令变成bash chsh -s /bin/…...
基于COT(Chain-of-Thought Prompt)的教学应用:如何通过思维链提示提升模型推理能力
引言 随着人工智能技术的快速发展,大型语言模型(LLMs)在自然语言处理领域展现出了强大的能力。然而,面对复杂的推理任务时,模型的表现往往不尽如人意,尤其是在需要多步逻辑推导的场景中。为了应对这一挑战…...
Python Notes 1 - introduction with the OpenAI API Development
Official document:https://platform.openai.com/docs/api-reference/chat/create 1. Use APIfox to call APIs 2.Use PyCharm to call APIs 2.1-1 WIN OS.Configure the Enviorment variable #HK代理环境,不需要科学上网(价格便宜、有安全风险&#…...
MySQL图形化界面工具--DataGrip
之前介绍了在命令行进行操作,但是不够直观,本次介绍图形化界面工具–DataGrip。 安装DataGrip 官网链接:官网下载链接 常规的软件安装流程。 参考链接:DataGrip安装 使用DataGrip 添加数据源: 第一次使用最下面会…...
WPF+Prism View与ViewModel绑定
1、开发环境,Win10VS2022.NET8Prism.DryIoc(9.0.537)或Prism.Unity。 2、通过NuGet安装Prism.DryIoc(9.0.537)或Prism.Unity。 2.1、创建ViewModels文件夹用于存放ViewModel文件、创建Views文件夹存放View文件。 将…...
关于Zotero
1、文献数据库: Zotero的安装 Zotero安装使用_zotero只能安装在c盘吗-CSDN博客 2、如何使用zotero插件 我刚下载的时候就结合使用的是下面的这两个博主的分享,感觉暂时是足够的。 Zotero入🚪基础 - 小红书 Green Frog申请easyscholar密钥…...
Luma AI 简单几步生成视频
简单几步生成视频 登录我们的 AceDataPlatform 网站,按照下图所示即可生成高质量的视频,同时,我们也提供了简单易用的 API 方便集成调用,可以查看 Luma API了解详情 技术介绍 我们使用了 Luma 的技术,实现了上面的图…...
从索尼爱立信手机打印短信的简单方法
昨天,我买了一部新手机来代替我的旧索尼爱立信Xperia,但手机上有很多珍贵的短信,是我男朋友发来的,我不想失去它们。然后我尝试打印它们,但我无法从我的索尼爱立信手机中取出它们。您有什么从索尼爱立信手机打印短信的…...
深入浅出梯度下降算法:快速抵达函数最小值的方法
引言 梯度是机器学习和优化领域中不可或缺的概念,它为我们提供了理解和调整多维空间中函数行为的工具。本文将详细介绍梯度的定义、性质,并通过具体的一元和多元函数案例展示如何使用梯度下降算法找到最佳参数。 一、梯度的基础知识 1.1 定义与计算 梯…...
OPC DA激活报错
报错提示: 解决办法: 查看Missing license keys,根据提示破解...
PyTorch到C++再到 CUDA 的调用链(C++ ATen 层) :以torch._amp_update_scale_调用为例
今天在看pytorch源码,遇到的问题,记录一下 。 source:/lib/python3.10/site-packages/torch/amp/grad_scaler.py torch._amp_update_scale_(_scale,_growth_tracker,found_inf_combined,self._growth_factor,self._backoff_factor,self._growth_interva…...
yolov5核查数据标注漏报和误报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、误报二、漏报三、源码总结 前言 本文主要用于记录数据标注和模型预测之间的漏报和误报思想及其源码 提示:以下是本篇文章正文内容,…...
C# 设计模式概况
什么是设计模式 大家熟知的GOF23种设计模式,源自《Design Patterns: Elements of Reusable Object-Oriented Software》一书,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著,四人组Gang of Four简称GOF。总结了在面向…...
STM32 NOR FLASH(SPI FLASH)驱动移植(2)
2)FLASH 读取函数 /* * brief 读取 SPI FLASH * note 在指定地址开始读取指定长度的数据 * param pbuf : 数据存储区 * param addr : 开始读取的地址(最大 32bit) * param datalen : 要读取的字节数(最大 65535) * retval 无 */ void norflash_read(uint8_t *pbuf…...
Redis高可用集群部署
根据集群分析和持久化优化方式,这里用docker部署redis分片集群模式并设置为aof-rdb共用方式存储 准备 2核4G及以上服务器;安装好docker环境;配置docker镜像仓库(https://www.ecnfo.com:1443),因为下面镜像是从这个镜像仓库下载的{"builder": {"gc"…...
【玩转23种Java设计模式】行为型模式篇:命令模式
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…...
代码随想录算法【Day10】
今日只做一题,剩下的题后面补 232.用栈实现队列 class MyQueue { public:stack<int> stIn;stack<int> stOut;/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {stIn.push(x);}…...
WKWebView打开pdf文件乱码?各种方案整理。
近期有用户反馈使用我们FinClip SDK运行的小程序,在iOS18.0.1的系统上打开部分pdf文件的时候出现了乱码的现象, 低版本的系统打开没有出现乱码的现象,用电脑打开这个pdf文件也是正常的。经过排查,可能是iOS18的系统对WKWebView进行了调整处理…...
Android中创建ViewModel的几种方法
文章目录 1. 使用 `ViewModelProvider`1.1 在 `Activity` 中创建 `ViewModel`1.2 在 `Fragment` 中创建 `ViewModel`2. 使用 `ViewModelFactory`2.1 创建 `ViewModel` 和 `ViewModelFactory`2.2 在 `Activity` 或 `Fragment` 中使用 `ViewModelFactory`3. 使用 `by viewModels(…...
【C语言】_指针运算
目录 1. 指针-整数 2. 指针-指针 2.1 指针-指针含义 2.2 指针-指针运算应用:实现my_strlen函数 3. 指针的关系运算(大小比较) 1. 指针-整数 联系关于指针变量类型关于指针类型和指针-整数相关知识: 原文链接如下࿱…...
多层设计模式:可否设计各层之间公用的数据定义模块?
在多层程序设计模式中,可以设计一个各层之间公用的数据类型定义模块。这种模块通常被称为“公共模块”或“共享模块”,它包含所有层都需要使用的数据类型定义。这有助于确保数据在不同层之间传递时的一致性和准确性。 以下是一些设计这种公用数据类型定…...
深度学习模型格式转换:pytorch2onnx(包含自定义操作符)
将PyTorch模型转换为ONNX(Open Neural Network Exchange)格式是实现模型跨平台部署和优化推理性能的一种常见方法。PyTorch 提供了多种方式来完成这一转换,以下是几种主要的方法: 一、静态模型转换 使用 torch.onnx.export() t…...
CDPHudi实战-集成spark
[一]使用Spark-shell 1-配置hudi Jar包 [rootcdp73-1 ~]# for i in $(seq 1 6); do scp /opt/software/hudi-1.0.0/packaging/hudi-spark-bundle/target/hudi-spark3.4-bundle_2.12-1.0.0.jar cdp73-$i:/opt/cloudera/parcels/CDH/lib/spark3/jars/; done hudi-spark3.4-bu…...
Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s
前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 官方文档…...
汇编语言与接口技术--跑马灯
一、 实验要求 在单片机开发板的LED灯D1~D8上实现跑马灯。LED与单片机引脚连线电路如下图: 单片机芯片选择AT89C51,晶振频率设为12MHz,操作参考单片机开发板使用说明。跑马灯点亮的时间间隔约为1秒。分别用定时器的模式1和模式2实现。(用P83…...
springcloud篇3-docker需熟练掌握的知识点
docker的原理请参考博文《Docker与Kubernetes》。 一、安装docker的指令 1.1 安装yum工具 yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken补充:配置镜像源 注意: yum安装是在线联网下载安装,而很多的资源…...
Unity网络通信相关
Socket 通信一张图搞定 谁提供服务谁绑定端口,建立Listener,写Host...
leetcode 173.二叉搜索树迭代器栈绝妙思路
以上算法题中一个比较好的实现思路就是利用栈来进行实现,以下方法三就是利用栈来进行实现的,思路很好,很简练。进行next的时候,先是一直拿到左边的子树,直到null为止,这一步比较好思考一点,下一…...
模电面试——设计题及综合分析题0x01(含答案)
1、已知某温控系统的部分电路如下图(EDP070252),晶体管VT导通时,继电器J吸合,压缩机M运转制冷,VT截止时,J释放,M停止运转。 (1)电源刚接通时,晶体…...
Linux性能优化-系列文章-汇总
前言 Linux性能优化,涉及了CPU,内存,磁盘,网络等很多方面,一方面涉及的知识面广,同时又要在原理方面掌握一定的深度。所以整理总结了Linux性能优化的一系列文章。当处理Linux性能问题的时候,可…...
仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2
在当今这个高效运作、安全第一的物流时代,仓库作为供应链的中心地带,其安全与效率直接关系到企业的命脉。 随着科技的飞速发展,传统叉车作业模式正逐步向智能化、安全化转型,而在这场技术革新中,AI防碰撞系统N2024G-2…...
threejs 安装
参考了threejs官方网站文档安装,上来就是各种报错,最终参考之前大佬发的攻略解决了。过程供大家参考。 官方文档地址如下: three.js docshttps://threejs.org/docs/index.html#manual/en/introduction/Installation 具体参考这篇攻略&#…...
《 C++ 点滴漫谈: 十七 》编译器优化与 C++ volatile:看似简单却不容小觑
摘要 本文深入探讨了 C 中的 volatile 关键字,全面解析其基本概念、典型用途以及在现代编程中的实际意义。通过剖析 volatile 的核心功能,我们了解了它如何避免编译器优化对硬件交互和多线程环境中变量访问的干扰。同时,文章分析了 volatile…...
【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习
文章目录 Section 4:The Vim Help System(Vim 帮助系统)S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…...
电脑中缺失的nvrtc64_90.dll文件如何修复?
一、文件丢失问题 案例:nvrtc64_90.dll文件缺失 问题分析: nvrtc64_90.dll是NVIDIA CUDA Runtime Compilation库的一部分,通常与NVIDIA的CUDA Toolkit或相关驱动程序一起安装。如果该文件丢失,可能会导致基于CUDA的应用程序&…...
leveldb的DBSequence从哪里来,到哪里去?
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) leveldb数据库的DBSequence从哪里来,到哪里去? 大概的情形是,leveldb的记录初始DBSequence为0,随着记录的增加,记录sequence不断随着增加,并持久化…...
nginx高可用集群搭建
本文介绍nginx高可用集群的搭建。利用keepalived实时检查nginx进程是否存活、keepalived的虚拟ip技术,达到故障转移的目的。终端用户通过访问虚拟ip,感知不到实际发生的故障。架构图如下: 0、环境 Ubuntu:22.04.2 ltsnginx: 1.…...
基于TCP的Qt网络通信
基于TCP的Qt网络通信 项目源码:https://github.com/say-Hai/TcpSocketLearn/tree/QTcpSocket 在标准C没有提供专门用于套接字通信的类,所以只能使用操作系统提供的基于C的API函数,但是Qt就不一样了,它是C的一个框架并且里边提供了…...
MySql---进阶篇(六)---SQL优化
6.1:insert的优化: (1)普通的插入数据 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into tb_test values(3,jerry); 1). 优…...
什么是回归测试?
什么是回归测试? 回归测试被定义为一种软件测试,以确认最近的程序或代码更改没有对现有功能产生不利影响。回归测试只是对已经执行的测试用例的全部或部分选择,重新执行这些用例以确保现有功能正常工作。 进行此测试是为了确保新的代码更改不会对现有…...
详解MySQL SQL删除(超详,7K,含实例与分析)
文章目录 前言1. 删除表中的所有记录基本语法使用场景注意事项运用实例分析说明2. 删除特定记录基本语法使用场景注意事项运用实例分析说明3. 删除单条记录基本语法使用场景注意事项运用实例分析说明4. 删除违反引用完整性的记录基本语法使用场景注意事项运用实例分析说明5. 删…...
lec7-路由与路由器
lec7-路由与路由器 1. 路由器硬件 路由器的硬件部分: 断电失去: RAM断电不失去:NVRAM, Flash, ROMinterface也算是一部分 路由器是特殊组件的计算机 console 口进行具体的调试 辅助口(Auxiliary&…...
知识库召回列表模式揭秘:实现智能信息检索新突破
目录 一、什么是知识库的召回列表模式 召回列表模式的工作流程 典型应用场景 召回列表模式的优势 二、知识库召回列表模式的技术实现细节 1. 数据准备 2. 召回策略 3. 排序策略 4. 结果展示与交互 三、技术架构示例 1. 系统架构 2. 代码示例 四、总结 随着人工智能…...
WCH的CH57X的J-LINK的芯片FLASH烧录文件
WCH的CH57X的J-LINK的芯片FLASH烧录文件,需要在 D:\app\Keil_v5\SEGGER\JLink_V616a目录中JLINKDEVICES.XML文件中修改并增加以下信息。同时,需要加入CH57X.FLM文件 <Device> <ChipInfo Vendor"WCH" Name"CH57X" WorkRAMAddr"…...
Rust 基础入门指南
Rust 基础入门指南 1. Rust 语言概述 Rust 的历史与设计理念 Rust 是由 Mozilla 研究院的 Graydon Hoare 于2010年开始创建的系统编程语言。其设计目标是创建一种安全、并发、实用的编程语言,特别关注内存安全和并发性。 Rust 的核心设计理念包括: …...
Qt|QWidget窗口支持旋转
功能实现:使用QWidget创建的窗口支持窗口旋转功能。 展示的示例中支持由水平方向旋转至垂直方向。至于其它角度旋转的问题,看完这篇文章后应该会很简单能实现的! 开发环境:win VS2019 Qt 5.15.2 在实现之前也有想用使用 QProp…...
docker compose部署kafka集群
先部署zookeeper集群,启动 参考:docker compose部署zookeeper集群-CSDN博客 再部署kafka集群 networks: net: external: true services: kafka1: restart: always image: wurstmeister/kafka:2.13_2.8.1 container_name: kafka1 …...
Spring源码分析之事件机制——观察者模式(三)
目录 自定义事件 事件监听器 事件发布者(服务层) 使用示例controller层 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 这两篇文章是这…...
如何使用axios实现文件上传
文件上传 axios 支持文件上传,通常使用 FormData 对象来封装文件和其他表单数据。 import axios from axios;const formData new FormData(); formData.append(file, fileInput.files[0]); formData.append(description, 文件描述);axios.post(/api/upload, form…...