ChatRex: Taming Multimodal LLM for Joint Perception and Understanding 论文理解和翻译
一、TL;DR
- MLLM在感知方面存在不足(远远比不上专家模型),比如Qwen2-VL在coco上recall只有43.9%
- 提出了ChatRex,旨在从模型设计和数据开发两个角度来填补这一感知能力的缺口
- ChatRex通过proposal边界框输入到LLM中将其转化为retrieval任务
- 构建了一个data-engine,提出了Rexverse-2M数据集,支持了感知和理解的联合训练。
二、简要介绍
为什么要开发本文方法?
- MLLM缺乏细粒度的感知能力,特别是在目标检测方面。Qwen2-VL-7B在IoU阈值为0.5时仅达到了43.9%的recall
为什么出现这种情况?
MLLMs中感知和理解之间的性能差距主要源于两个因素:
- 感知和理解这两个任务之间的建模冲突
- 缺乏能够平衡感知和理解的数据。
对于目标检测,一种常见的做法是将边界框坐标量化为LLM词汇表中的token,以适应自回归框架。尽管这通过next token预测确保了与理解任务的兼容性,但我们认为这种方法与准确建模感知存在冲突,原因有三:
- 错误传播:表示一个边界框通常需要9个token,包括数字、方括号和逗号,其中任何一个标记的错误都可能导致级联错误,在多目标检测中情况会变得更糟。在后续实验中,我们发现这是召回率低的原因之一;
- 预测顺序的模糊性:在目标感知中,物体之间没有固有的顺序,然而自回归的特性却强加了一个顺序,LLM必须决定先预测哪个物体;
- 量化范围限制:当图像尺寸较大时,容易出现量化误差。
ChatRex怎么解决?
对于像图像描述和图像问答这样的多模态理解任务,我们保留了自回归文本预测框架。对于感知,特别是目标检测,将其转变为一个基于检索的任务。
具体来说,直接将边界框作为输入提供,每个边界框通过将其RoI feature与其位置embedding相结合来表示为一个对象token。当LLM需要引用一个物体时,它输出相关边界框的索引。这种方法将每个边界框表示为一个未量化的单一token,其顺序由输入的边界框决定,有效地解决了之前的建模冲突。
使用这种方法有两个关键挑战:
- 需要高分辨率的视觉输入:双视觉编码器设计,增加了一个额外的视觉编码器,为感知提供高分辨率的视觉信息
- 一个强大的目标proposal模型:引入了一个通用提议网络(UPN),它在预训练的开放集目标检测模型上利用基于粒度的提示学习。这使得能够生成覆盖多样化粒度、类别和领域的proposal,从而为LLM提供强大的边界框输入。
从数据角度来看:
- 当前的MLLMs也受到缺乏能够有效平衡感知和理解的数据的限制。
- 开发了一个完全自动化的数据引擎,构建了Rexverse-2M数据集,该数据集包含不同粒度级别的图像-区域-文本注释三元组。
- 数据引擎由三个主要模块组成。第一个模块为输入图像生成图像描述,第二个模块使用一个基础模型对引用的对象或短语进行对齐,第三个模块在多个粒度级别上细化区域描述。
实验结果表明,ChatRex在目标检测任务中表现出色,包括COCO、LVIS和RefCOCO/+/g,同时在多模态基准测试中也展现出具有竞争力的性能。如图1所示。
三个主要贡献:
-
揭示了MLLMs在感知方面的性能差距,并引入了解耦的模型ChatRex和通用提议网络(UPN),以解决感知和理解之间的建模冲突。
-
开发了一个自动化数据引擎,创建了Rexverse-2M,这是一个全面支持感知和理解任务的数据集,用于模型训练。
-
实验结果表明,ChatRex展现出强大的感知和多模态理解能力,强调了这两种互补能力对于MLLM来说都是必不可少的。
三、模型结构
ChatRex 采用了一种将感知与理解解耦的设计(注意后面的训练策略)。
- 对于感知部分,我们训练了一个通用proposal网络来检测任意物体,并为 LLM 提供边界框输入。
- 对于理解部分,我们采用了标准的 LLaVA 结构,并引入双视觉编码器以实现高分辨率图像编码。
3.1 通用提议网络(UPN)
要求proposal模型具备两个关键特性:
- 强大的泛化能力,能够在任何场景中为任意物体生成提议框;
- proposal框应全面,涵盖实例级和部件级的物体。
我们采用了双粒度提示调整策略(直接采用多数据集合并不行,由于其标注规则不一样):
具体来说,我们以 T-Rex2 作为基础模型。该模型输出目标查询 Qdec,这些查询通过一个 MLP 来预测边界框。这些边界框的分类是通过查询和提示嵌入 E 之间的点积来实现的:
其中,C 表示类别数量,N 表示检测查询的数量(默认为 900),D 是输出查询的通道维度。我们通过引入两个额外的可学习提示 Pfine 和 Pcoarse,并将它们连接成 Pconcat 来将边界框分类为细粒度或粗粒度类别:
在训练过程中,我们使用 SA-1B 作为细粒度数据集,其他检测数据集(如 COCO 和 O365)作为粗粒度输入。这种双粒度提示设计有效地解决了不同数据集之间的标注歧义问题,使提议模型能够准确地捕捉和描述不同细节级别的物体。
3.2 多模态大语言模型架构
双视觉编码器:如图 3 所示,我们使用 CLIP 中的 ViT 进行低分辨率图像编码,使用 LAION 中的 ConvNeXt 进行高分辨率图像编码。
为了减少输入到 LLM 的视觉标记数量,我们首先调整两个视觉编码器的输入分辨率,确保它们在最后一个尺度上生成相同数量的标记。然后,我们将这两个标记直接沿着通道维度连接起来,产生与低分辨率标记数量相同的标记。
目标编码器:我们将通用提议网络输出的每个边界框编码为目标标记,并将它们输入到 LLM 中。
假设从 UPN 输入 K 个边界框 {Bi}i=1K,令 FH 表示高分辨率编码器产生的多尺度视觉特征,对于每个边界框 Bi,我们使用多尺度 RoI Align 提取其内容特征 Ci:
由于 RoI 特征不包含位置信息,而位置信息对于指代任务至关重要,我们通过正弦-余弦位置嵌入层对每个边界框坐标进行编码,并将其添加到 RoI 特征中:
LLM:使用两个单独的 MLP 投影器将视觉和目标token映射到文本空间。我们还在每个目标标记中添加一个索引标记,以告知 LLM 每个目标标记的索引,具体将在第 3.3 节中描述。
视觉token随后与文本token连接起来,并输入到 LLM 中进行下一个token预测任务。我们默认使用 Qwen2.5-7B 作为我们的 LLM。
3.3 任务定义
将利用 LLM 进行检测的任务定义为对输入边界框的索引选择过程。为此,我们首先通过引入专用token来扩展 LLM 的词汇表,包括目标索引标记 <obj0>、<obj1>、...、<objN>(其中 N 表示输入边界框的最大数量,在本工作中设置为 100),基础token<g>、结束token</g>、目标开始token<o> 和目标结束token</o>。
LLM 输入格式:LLM 的输入标记序列结构如下:
其中,<image> 表示视觉编码器的视觉token,<roi> 表示与每个相应边界框相关联的目标特征。每个 <roi> token都以其相应的目标索引标记作为前缀。
解耦的任务定义:LLM 产生的检测结果使用以下名词短语和边界框索引的组合来构建:
其中,<objm> 和 <objn> 指代特定的目标索引 token, token与名词短语相关联的检测到的物体序列的起始(m)和结束(n)。这种结构化的格式使得名词短语与其对应的边界框索引之间能够实现精确的映射。
凭借这种输入输出模式,ChatRex 能够处理各种任务,例如检测、基础定位、区域理解以及基础对话,除了生成纯文本响应之外,如图 3 所示。
4. 数据和训练
本文目标是为了构建一个可以有效用于感知和理解任务的数据集,最终构建了一个包含两百万张标注图像的 RexVerse-2M 数据集,其多粒度标注是通过一个完全自动化的数据引擎生成的。然后,我们采用 LLaVA 中的标准两阶段训练方法,使模型在保留感知能力的同时逐步获得多模态理解和对话技能。
4.1 RexVerse-2M 数据引擎
我们的目标是。为了实现这一目标,我们的数据管道专注于生成包含图像描述、区域描述和边界框的标注三元组。如图 4 所示,数据引擎围绕三个核心模块构建:图像描述、目标定位和区域描述。
图像收集:我们从 COYO700M 数据集中收集图像,通过一系列过滤过程,包括移除分辨率小和带有 NSFW 标签的图像。我们还训练了一个图像分类器,以过滤掉具有纯白色背景的低内容网络图像。最后,我们选择了两百万张图像作为数据集图像。
图像描述:我们使用 InternVL2-8B 为每张图像生成图像描述。这些图像描述将通过类别名称或描述性短语引用图像中的主要物体。
短语定位:然后,我们利用 SpaCy 从生成的图像描述中提取名词短语。根据描述,SpaCy 可能会识别出类别名称,如“士兵”,或者描述性短语(每个区域至少 3 个单词),如“军装风格的制服”。我们还将过滤掉一些可能不是物体的抽象名词,如“图像”“背景”等。随后,我们使用 Grounding DINO 1.5 对过滤后的名词短语进行定位。这一过程最终产生与它们的类别名称或简短短语描述相关联的边界框。
短语条件区域描述:类别名称或简短短语通常提供的信息有限,们实现了一种短语条件的图像描述策略,利用 InternVL2-8B 模型 生成与每个区域相关的预定义短语相条件化的图像描述。通过这些短语引导模型,我们确保生成的描述更加准确且与上下文相关,提高caption质量
区域描述过滤与重写:最后,使用 LLaMA3-8B 来验证生成的描述是否准确地与它们的原始类别名称或简短短语对齐,过滤掉任何剩余的幻觉输出。验证后,我们进一步提示模型将这些详细的描述精炼为更简洁的指代表达式,从而增强指代任务的训练效果。
Rexverse-2M 数据集:
-
210 万张带有描述的图像;
-
1020 万个标注了类别标签的区域;
-
250 万个标注了简短短语的区域;
-
250 万个带有详细描述的区域;
-
240 万个带有指代表达式的区域。
此外,我们还使用这个数据引擎为 ALLaVA-4V-Instruct 数据集中的 776K 条基础对话数据进行了标注,用于指令调优。具体来说,我们将对话响应视为图像描述,然后通过该引擎进行处理。
4.2 训练策略
4.2.1 UPN 训练
我们使用两类带有边界框的数据集来训练我们的通用提议网络(UPN):
- 粗粒度数据集,包括 O365 、OpenImages、Bamboo、COCO、LVIS 、HierText 、CrowdHuman、SROIE 和 EgoObjects ;
- 细粒度数据集 SA-1B 。
所有数据集的类别被定义为粗粒度或细粒度,将任务简化为一个二分类问题。遵循 T-Rex2 的方法,我们使用匈牙利匹配来匹配预测和真实标签。我们采用 L1 损失和 GIOU 损失来进行边界框预测,并使用 sigmoid 焦点损失进行分类。
4.2.2 ChatRex 训练任务
我们采用三个主要任务来训练 ChatRex,包括:
-
基础定位:模型根据给定的类别名称、短语或指代表达式输出对应物体的索引。
-
区域理解:给定区域索引,模型生成不同详细程度的描述,包括类别名称、简短短语、详细描述或指代表达式。
-
基础图像对话:模型需要输出在其生成的对话输出中提到的物体的索引。我们将当前图像的真实边界框与 UPN 提出的边界框混合,并最多保留 100 个边界框作为输入。
我们采用三阶段训练过程,每个阶段的数据如表 1 所示。
-
第一阶段:对齐训练。在第一阶段,目标是将视觉特征和目标特征与文本特征空间对齐。为此,我们训练图像投影 MLP、目标投影 MLP,以及 LLM 的输入和输出嵌入,因为我们已经为其词汇表添加了特殊标记。
-
第二阶段:感知训练。在这一阶段,我们通过在 Rexverse-2M 和其他基础数据上训练 ChatRex 来提升其感知能力。在这个阶段,所有参数都是可训练的。
-
第三阶段:联合训练。在这一阶段,我们将感知和理解任务整合到一个统一的训练过程中,确保 ChatRex 获得这两种能力。这种联合优化使模型具备全面的多模态能力,并实现感知与理解之间的相互增强。
五、Experiments
相关文章:
ChatRex: Taming Multimodal LLM for Joint Perception and Understanding 论文理解和翻译
一、TL;DR MLLM在感知方面存在不足(远远比不上专家模型),比如Qwen2-VL在coco上recall只有43.9%提出了ChatRex,旨在从模型设计和数据开发两个角度来填补这一感知能力的缺口ChatRex通过proposal边界框输入到LLM中将其转…...
10min速通Linux文件传输
实验环境 在Linux中传输文件需要借助网络以及sshd,我们可通过systemctl status sshd来查看sshd状态 若服务未开启我们可通过systemctl enable --now sshd来开启sshd服务 将/etc/ssh/sshd_config中的PermitRootLogin 状态修改为yes 传输文件 scp scp (Sec…...
CE、NCE、InfoNCE的演变过程
CE、NCE、InfoNCE的演变过程及数学推导和关系 在机器学习和深度学习中,交叉熵( C E CE CE)、噪声对比估计( N C E NCE NCE)和信息噪声对比估计( I n f o N C E InfoNCE InfoNCE)是三个紧密相关…...
在Vue项目的引入meting-js音乐播放器插件
开源项目:https://github.com/swzaaaaaaa/NBlog 1、开源项目中音乐播放插件的使用流程 步骤1:下载meting-js相关文件 在MetingJS官方仓库或其他可靠的CDN获取meting-js的JavaScript文件以及相关依赖(如APlayer的文件)。将它们下…...
rapidocr 2.0 在线demo来了
引言 今日北京大风,大家都窝在家里,自己也趁着周末更新了RapidOCR在线demo,适配rapidocr2.0系列。 rapidocr2.0支持4个推理引擎(ONNRuntime、OpenVino、PaddlePaddle和PyTorch),且整理了文本检测和文本识…...
Compose笔记(十五)--进度条
这一节了解一下Compose中的进度条,有两种类型的进度条可供使用,分别是线性进度条(LinearProgressIndicator)和圆形进度条(CircularProgressIndicator),每种进度条又可分为确定模式和不确定模式。…...
图谱可视化的海洋生物信息查询网站的设计与实现(springboot+ssm+vue)含文档
图谱可视化的海洋生物信息查询网站的设计与实现(springbootssmvue)含文档 该系统是一个图谱可视化的海洋生物信息查询网站,主要功能包括海洋动物、海洋植物、生物图鉴、保护生物和海洋生物分布等模块;用户可以通过系统首页访问这些模块;在海…...
目标追踪Hyperspectral Adapter for Object Tracking based on Hyperspectral Video
论文作者:Long Gao,Yunhe Zhang,Langkun Chen,Yan Jiang,Weiying Xie,Yunsong Li 作者单位:Xidian University;the University of Sheffield 论文链接:http://arxiv.org/abs/2503.22199v1 内容简介: 1)方向&#x…...
【HD-RK3576-PI】Linux制作deb包的方法
1.什么是deb包 ? DEB包是Debian及其衍生Linux发行版(如Ubuntu、Linux Mint等)使用的软件包格式。DEB包主要用于简化软件的安装、更新和卸载过程。它实际上是一个归档文件,通常包含了两个主要部分: 数据压缩包…...
FileInputStream 详解与记忆方法
FileInputStream 详解与记忆方法 一、FileInputStream 核心概念 FileInputStream 是 Java 中用于从文件读取原始字节的类,继承自 InputStream 抽象类。 1. 核心特点 特性说明继承关系InputStream → FileInputStream数据单位字节(8bit)用…...
什么是回表?哪些数据库存在回表?
目录 一、什么是回表1. 回表的核心流程2. 示例说明3. 回表的性能问题4. 总结 二、哪些数据库会有回表1. MySQL(InnoDB)2. Oracle3. 其他数据库(如 SQL Server、PostgreSQL)4. 总结 三、非聚集索引与聚集索引的区别及产生原因1. 聚…...
跨平台开发的挑战与突破:Java开发工具的探索与实践!
全文目录: 开篇语前言摘要概述源码解析代码实例代码解析代码解析1. import java.io.File;2. public class CrossPlatformFileManager3. public static void main(String[] args)4. String filePath "example.txt";5. File file new File(filePath);6. *…...
JDK的卸载与安装
卸载JDK 删除java的1安装目录 卸载JAVA_HOME 删除path下关于java的路径 java -version查看 安装JDK 百度搜索JDK,找到下载地址 同意协议 下载电脑对应版本 双击安装 记住安装路径 配置环境变量 我的电脑–>右键–>属性–>高级系统设置 环境变…...
CyclicBarrier 基本用法
CyclicBarrier 基本用法 简介 CyclicBarrier 是 Java 并发包(java.util.concurrent)中的一个同步辅助类。它允许一组线程相互等待,直到到达某个公共屏障点(common barrier point)。只有当所有参与的线程都到达屏障点…...
限流、降级、熔断、隔离?
在微服务架构中,服务限流、降级、熔断和隔离是保障系统高可用性的核心手段,但它们解决的问题和应用场景不同。以下是它们的区别、解决方案和实际案例的详细说明: 一、服务限流(Rate Limiting) 定义:通过限…...
asm汇编源代码之-字库转换程序
将标准的16x16点阵汉字库(下载16x16汉字库)转换成适合VGA文本模式下显示的点阵汉字库 本程序需要调用file.asm中的子程序,所以连接时需要把file连接进来,如下 C:\> tlink chghzk file 调用参数描述如下 C:\> chghzk ; 无调用参数,转换标准库文件(SRC16.FNT)为适合VGA…...
深入浅出:信号灯与系统V信号灯的实现与应用
深入浅出:信号灯与系统V信号灯的实现与应用 信号灯(Semaphore)是一种同步机制,用于控制对共享资源的访问。在多线程或多进程环境下,信号灯能够帮助协调多个执行单元对共享资源的访问,确保数据一致性与程序…...
定时器介绍及简单应用
定时器介绍及简单应用 文章目录 定时器介绍及简单应用1.定时器基本介绍1.1MSP430的四种定时器: 2.定时器A(Timer_A)2.1特点2.2寄存器的命名2.3寄存器表格2.4计数器原理说明2.4.1时钟源、分频器、计数器、工作模式2.4.2计数器复位 2.5定时器中断2.5.1定时…...
运行一次性任务与定时任务
运行一次性任务与定时任务 文章目录 运行一次性任务与定时任务[toc]一、使用Job运行一次性任务1.创建一次性任务2.测试一次性任务3.删除Job 二、使用CronJob运行定时任务1.创建定时任务2.测试定时任务3.删除CronJob 一、使用Job运行一次性任务 1.创建一次性任务 (…...
TypeScript入门
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
MySQL数据库备份与恢复详解
在数据库管理中,数据的备份与恢复是至关重要的一环。对于MySQL数据库,定期备份不仅能防止数据丢失,还能在发生故障时快速恢复数据库。本文将详细介绍MySQL数据库的备份与恢复方法,覆盖所有常用备份和恢复方式,帮助大家…...
【c语言】猜凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信…...
Java学习打卡-Day25-注解和反射、Class类
注解(JDK5引入) 什么是注解? Java注解(Annotation),也叫元数据。一种代码级别的说明,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面…...
【愚公系列】《Python网络爬虫从入门到精通》048-验证码识别(滑动拼图验证码)
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
CMake中add_custom_target用法详解
在 CMake 中,add_custom_target 是一个用于创建自定义构建目标的命令。它主要用于定义一些不生成文件,但需要执行的特定操作(比如运行脚本、执行命令、触发其他构建步骤等)。以下是它的核心用途和特点: 基本语法 add_…...
埃隆·马斯克如何通过开源创新塑造未来
李升伟 编译 埃隆马斯克的名字在多个行业回响——从电动汽车、太空探索到人工智能及更多领域。虽然许多人关注他革命性的公司(如特斯拉、SpaceX、Neuralink和The Boring Company),但较少有人意识到他在开源软件运动中悄然却深远的影响力。本…...
大型语言模型中的工具调用(Function Calling)技术详解
一、引言 随着大型语言模型(LLM)能力的飞速发展,它们在自然语言理解、文本生成、对话交互等方面展现出了令人惊叹的表现。然而,LLM 本身并不具备执行外部操作的能力,比如访问网页、调用第三方 API、执行精确数学运算等…...
IKBC F108 白色背光普通版说明书
部分按键白色背光版和新的 RGB 版并不相同。比如灯光控制,新老款会有按键配置冲突的。 IKBC F108 白色背光款(普通款)按键说明 ScrLk 倒计时定时器 使用 F1~F12 及 1~9 控制时间,设置完成按 Enter 确认,或按 En…...
Microsoft Office 如何启用和正常播放 Flash 控件
对于新安装的 Office 默认是不支持启用 Flash 组件的,Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题,相关资料都在下方连接内。前提概要,教程对应的版本是 mso16,即 Office 2016 及更新版本,以及 365 等…...
muduo库源码分析: One Loop Per Thread
One Loop Per Thread的含义就是,一个EventLoop和一个线程唯一绑定,和这个EventLoop有关的,被这个EventLoop管辖的一切操作都必须在这个EventLoop绑定线程中执行 1.在MainEventLoop中,负责新连接建立的操作都要在MainEventLoop线程…...
[ARC196A] Adjacent Delete 题解
假设 n n n 是偶数。如果我们忽略删除相邻数的条件,即可以任选两个数相减,那么答案应该是前 n 2 \frac{n}{2} 2n 大的数(记作“较大数”)的和减去前 n 2 \frac{n}{2} 2n 小的数(记作“较小数”)的和…...
拼团系统设计-人群标签的设计与思考
目录 轻量化人群标签数据采集与Redis BitMap应用 为什么需要人群标签? 设计思路:轻量化人群标签系统 1. 核心目标 2. 技术选型:Redis BitMap 3. 数据链路设计 技术实现:代码级拆解 1. 人群标签任务调度 2. 用户ID与BitMap索引映射…...
【Python] pip制作离线包
制作离线安装包是一种非常实用的方法,尤其是在网络环境受限或需要在多台机器上部署相同环境时。以下是详细的步骤,帮助您创建一个包含所有依赖项的离线安装包,并在后续环境中复用。 步骤 1:准备工具和环境 确保您有一台可以访问互…...
Java学习手册:Java异常处理机制
在Java编程中,异常处理是确保程序健壮性和稳定性的关键机制。异常是指程序运行过程中出现的错误或异常情况,如除以零、文件找不到或网络连接失败等。Java提供了强大的异常处理机制,帮助开发者捕获和处理这些异常情况,从而避免程序…...
[特殊字符] 第十二讲 | 地统计学基础与克里金插值法(Kriging)建模实践
📘 专栏:科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者:平常心0715 🗝️ 本讲关键词:Kriging、地统计学、变异函数、空间插值、空间预测、R语言 一、什么是地统计学? 地统计学࿰…...
Introducing Machine Learning with SAP Leonardo
Introducing Machine Learning with SAP Leonardo...
软考 系统架构设计师系列知识点之杂项集萃(49)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(48) 第76题 某文件管理系统在磁盘上建立了位视图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为:0、1、2、……;…...
list容器
1. list 的介绍 list 是序列容器,允许在序列中的任何位置进行O(1)时间复杂度的插入和删除操作以及双向迭代。 list 容器实现为带头结点双向链表,双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。 2. list 的使用 2.1 构造函数 1.…...
Linux xorg-server 解析(一)- 编译安装Debug版本的xorg-server
一:下载代码 1. 配置源,以Ubuntu24.04 为例( /etc/apt/sources.list.d/ubuntu.sources): 2. apt source xserver-xorg-core 二:编译代码 1. sudo apt build-dep ./ 2. DEB_BUILD_OPTIONS="nostrip" DEB_CFLAGS_SET="-g -O0" dpkg-buildpac…...
VTK使用Render()渲染窗口的相关问题
转自个人博客:VTK使用Render()渲染窗口的相关问题 1. VTK更新数据但窗口不更新 问题:在对窗口内的数据进行更新后,VTK窗口不会立即更新,需要鼠标等交互后才会更新。 解决办法:对数据更新后,对VTK窗口也要…...
基于php的成绩分析和预警与预测网站(源码+lw+部署文档+讲解),源码可白嫖!
摘要 人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化、教育等各方面都有了极大的影响。 利用电脑网络的这些便利,发展一套…...
文档检索技术详解 (Document Retriever)
一、文档检索的定义与核心概念 文档检索(Document Retriever)是一种信息检索技术,旨在从大量未结构化或半结构化文档中快速找到与特定查询相关的文档或信息。文档检索通常以在线(online)方式运行,能够实时…...
大模型SFT用chat版还是base版 SFT后灾难性遗忘怎么办
大模型SFT用chat版还是base版 进行 SFT 时,基座模型选用 Chat 还是 Base 模型? 选 Base 还是 Chat 模型,首先先熟悉 Base 和 Chat 是两种不同的大模型,它们在训练数据、应用场景和模型特性上有所区别。 在训练数据方面…...
【生活相关-日语-日本-东京-搬家后-瓦斯申请(2)-办理手续】
【生活相关-日语-日本-东京-搬家后-瓦斯申请(2)-办理手续】 1、前言2、情况说明(1)他人代办(2)打电话(3)网络申请(4)你将会面临什么,主要步骤&…...
matplotlib数据展示
目录 一、绘制直方图 1、简单直方图 2、绘制横向直方图 3、绘制堆叠直方图 4、对比直方图 二、折线图与散点图 三、绘制饼图 四、雷达图 1、简单雷达图 2、多层雷达图 五、总和 在前面的学习中,我们能够使用一些库进行数据的整合,收集&#x…...
三维激光测量助力企业检测效率提升3倍
智能制造与数字化浪潮席卷下,三维扫描技术已成为工业检测领域不可或缺的工具。面对传统检测手段的精度瓶颈与效率局限,三维扫描仪,以毫米级精度、非接触式测量与超高速扫描三大核心优势,为汽车制造、航空航天、消费电子等行业的品…...
基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究
摘要 随着机器人技术的飞速发展,关节控制作为机器人系统中的关键环节,对机器人的性能和稳定性起着至关重要的作用。传统的关节控制多采用基于ARM或DSP的嵌入式系统,但RISC-V架构的兴起为机器人关节控制提供了新的选择。本文结合多个基于RISC…...
斯库拉集团介绍
斯库拉集团有限公司坐落于世界自由贸易圣地,国际金融服务中心英属维京群岛BVI. 旗下有香港斯库拉集团(香港主板 上市公司),斯库拉环球国际控股集团 (香港主板上市企业),斯库拉国际贸易 有限公司(斯库拉集团有限公司),新加坡斯库拉集团有限公司,德国斯库拉集团有限公司,新西…...
运用instanceof判断Animal a是否为Dog类和是否为cat类
//Animal类(狗和猫的父类) public class Animal {private String color;private int age;public Animal(String color, int age) {this.color color;this.age age;}public Animal() {}public String getColor() {return color;}public void setColor…...
蓝桥杯嵌入式考前模块总结
一.RTC 使用RTC直接再cubeMX中配置启动时钟和日历 如第六届省赛 想要让RTC的秒每隔一秒递增1需要在时钟树界面观察RTC的主频 由于RTC时钟主频为32KHZ将异步预分频计数器的值设为31,将同步预分频计数器的值设为999这样就可以将RTC的时钟信号分频为1HZ达到1秒自增的…...