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

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card

论文标题:DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
论文作者:Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bingxuan Wang, Zhenda Xie, Yu Wu, Kai Hu, Jiawei Wang, Yaofeng Sun, Yukun Li, Yishi Piao, Kang Guan, Aixin Liu, Xin Xie, Yuxiang You, Kai Dong, Xingkai Yu, Haowei Zhang, Liang Zhao, Yisong Wang, Chong Ruan
论文链接:https://arxiv.org/abs/2412.10302v1
论文出处:/
论文被引:/
项目主页:https://github.com/deepseek-ai/DeepSeek-VL2

Abstract

本文介绍了大型专家混合(MoE)视觉语言模型系列 DeepSeek-VL2,在 DeepSeek-VL 基础上做了两个主要升级。视觉组件结合了 Dynamic Tiling 视觉编码策略,旨在处理具有不同纵横比的高分辨率图像。语言组件利用具有多头潜在注意力机制的DeepSeekMoE模型,该机制将键值缓存压缩成潜在向量,以实现高效推理和高吞吐量。在改进的视觉语言数据集上进行训练,在各种任务中展示了优越的能力,包括 VQA、OCR、文档/表格/图表理解和视觉定位(Visual grounding)等。DeepSeek-VL2系列有三个模型:DeepSeek-VL2-Tiny、DeepSeek-VL2-Small和DeepSeek-VL2,分别具有10亿、28亿和45亿个激活参数。 与现有的开源密集型和基于MoE的模型相比,DeepSeek-VL2在激活参数相似或更少的情况下实现了具有竞争力或最先进的性能。

Summary

DeepSeek-VL2 对具身智能的影响?
从PaLM-E开始掀起了利用VLM构建具身场景VQA的模型,pi0引入了擅长做 VG 的PaliGemma作为VLA的骨干,而具身数据高度异构,已有研究从模型层面设计MoE架构的模型来实现跨本体的泛化,比如何恺明团队的HPT。DeepSeek-VL2利用原生MoE的LLM构建VLM,可能天然的适合异构数据学习场景,而无需单独针对policy head进行MoE设计,从而统一动作空间。
在这里插入图片描述

模型架构

在这里插入图片描述

整体上是decoder-only 的 LLaVA 风格架构,包括三个核心模块:(1) 视觉编码器;(2) 视觉语言适配器;(3) 专家混合语言模型。

两个改进:动态平铺(Dynamic Tilimg)策略,多头潜在注意力(Multi-head Latent Attention,MLA)的 DeepSeekMOE 语言模型。这些创新使得模型能够更高效地处理高分辨率视觉输入和文本数据。

Dynamic tiling

在这里插入图片描述

并不神秘, InternVL 系列和 Qwen-VL 系列已经使用。InternVL 系列技术报告中讲得更清楚。
为啥要用这玩意?原来的视觉编码器只能接受固定分辨率的图像输入,这在一些更高分辨率和极端纵横比的图像上需要缩放和padding之后再输入视觉编码器,会影响多模态模型的理解能力。因此,引入了动态分辨率策略。

DeepSeek-VL2的上一个版本DeepSeek-VL使用了混合视觉编码器:SigLip-384和SAM-B-1024,可以生成丰富的视觉表征,但是收到固定1024x1024分辨率的输入限制。应用动态分辨率之后,仅仅使用SigLip 视觉编码器就可以处理不同分辨率的图像输入。具体咋干的?首先,定义了一组候选分辨率 C R = { ( m ⋅ 384 , n ⋅ 384 ) ∣ m ∈ N , n ∈ N , 1 ≤ m , n , m n ≤ 9 } C_R = \{ (m \cdot 384, n \cdot 384) | m \in \mathbb{N}, n \in \mathbb{N}, 1 \le m,n,mn \le 9 \} CR={(m384,n384)mN,nN,1m,n,mn9},其中 m : n m:n m:n 表示纵横比。然后,对于输入高宽为 ( H , W ) (H, W) (H,W) 的图像,计算最匹配的高宽比,然后将图像划分为 m i × n i m_i \times n_i mi×ni 384 × 384 384 \times 384 384×384 像素的图像块,再加上一个原始图像的缩略图,最终有 m i × n i + 1 m_i \times n_i + 1 mi×ni+1 个图块,经过 SigLip-SO400M-384 处理后,产生了 27x27=729 个 1152 维的 vision embedding 向量。为了提高计算效率,当处理多张图像时,禁用了动态分辨率。

Vision-Language Adaptor
在这里插入图片描述
在视觉图块处理之后,应用 2×2 的 pixel shuffle,以将每个图块的视觉token从27×27压缩到14×14=196个token。然后,在处理 (1+mi×ni) 图块时引入三个特殊token。对于全局缩略图图块 (14×14),在每一行的末尾添加<tile_newline> token,总共得到 14×15=210 个token。对于 mi×ni 局部图块,它们排列在一个形状为
(mi⋅14, ni⋅14)的二维网格中,在最后一列的末尾添加 mi⋅14 个<tile_newline>token以指示所有局部图块一行的结束。此外,在全局缩略图图块和局部图块之间插入一个<view_separator>token。完整的视觉序列包含
210+1+mi⋅14×(ni⋅14+1) 个视觉token,这些token随后使用两层多层感知器 (MLP) 投影到语言模型的嵌入空间中。图3显示了动态平铺策略。

模型版本:DeepSeek-VL2 有三个变体,模型总计参数为 3B、16B、27B,模型激活参数分别为:1.0B、2.8B 和 4.5B。
在这里插入图片描述

数据构建

训练过程包括三个阶段:(1)视觉-语言对齐,(2)视觉-语言预训练,(3)监督微调 (SFT)

Stage1:视觉语言对齐数据

数据来源:ShareGPT4V
数据模态:图文对
数据类型:图像描述和问答
数据规模:120 万样本(~2B tokens)

Stage2:视觉语言预训练数据

数据来源:开源+改写
数据模态:70%图文对+30%纯文本
数据类型:图文交错、图像描述、OCR、VQA、视觉定位、GroundingQA
数据规模:(~796.5B tokens)

1-图文交错数据
  1. 开源数据抽取:WIT [79]、WikiHow [38] 和 OBELICS [41] 中的 30% 随机样本,30% 是通过 DeepSeek-VL2-Tiny 的预备实验确定的
  2. 开源数据翻译:为了增强多语言能力,从 Wanjuan [29] 中提取的中文内容补充了英文数据集
  3. 内部收集构建:扩展对世界知识的覆盖范围
2-图像描述数据
  1. 开源数据改写:最初使用了各种开源数据集 [50, 78, 73, 51, 48, 82, 40, 36, 39, 8, 80, 37, 25, 28],但是后边分析发现质量参差不齐的问题,因此自己开发了一个图像描述数据生成管线:它以 (1) OCR提示,(2) 元数据信息(例如,位置、相机设置)和 (3) 相关的原始描述作为提示。使用内部图像描述生成器,遵循类似于PixelProse 的提示策略重新为图像添加描述,使用不同的指令来指导VLM的图像描述生成。
  2. 改写数据清洗:基于 DeepSeek Chat 构建质检管线,对生成的图像描述进行打分,然后过滤掉低质量的图像描述。
3-OCR 数据
  1. 开源数据抽取:LaTeX OCR [7] 和12M RenderedText [93],目前仅仅包含中英文字体提取,未来会扩展到更多语种。
4-VQA 数据

通用视觉问答:来自 DeepSeek-VL 中的通用视觉问答。

表格、图标和文档理解:采用 PubTabNet [112]、FinTabNet [111] 和 Docmatix [42] 来增强文档理解能力。

网页to代码和图表to代码生成:

  • 开源数据抽取:利用 Websight [44] 实现网页到代码功能,使用公开的 Jupyter Notebook 中的 Python 绘图代码。
  • 合成数据生成:使用 DeepSeek V2.5 复制了 Websight 的一部分来增强此数据集。利用 DeepSeek V2.5 生成的 Python 绘图代码来减少图表to代码数据中的噪声。

带有视觉提示的数据:遵循 [9],将各种视觉提示(箭头、方框、圆圈和涂鸦)叠加到 [9, 89, 90] 中的图像上,来构建视觉提示理解数据。然后,创建关注这些视觉提示突出显示的对象的问答对。

5-视觉定位数据(Visual grounding data)

数据来源:[71, 75]
数据格式:不同的多模态模型格式可能不同,在使用这类数据训练自己的模型的时候要特别注意。尤其是¬
在这里插入图片描述
训练过程中,prompt 是从候选池中随机抽取的。还构建了object缺失的负样本,以增强模型的鲁棒性。

参数解释:

  • <|ref|>, <|/ref|>, <|det|>, <|/det|>:special tokens
  • <query>:a placeholder for either the category name (e.g., “car”) or description of the object (e.g., “the leftmost person”)
  • [[x1, y1, x2, y2], …]:a list of bounding boxes, where each bounding box corresponds to an object’s position. The coordinates x1, y1 and x2, y2 specify the top-left and bottom-right corners respectively, normalized to values between 0 and 999 according to the resolution of the image. 注意这里的图片尺寸是0-999,而不是归一化。
6-参考表达数据 (Grounded conversation data)

在这里插入图片描述
As in other visual grounding data, <|grounding|>, <|ref|>, <|/ref|>, <|det|>, <|/det|> are special tokens and x1, y1, x2, y2 is subject to the same normalization scheme.

Stage3:SFT 数据

数据来源:开源+内部构建的数据
数据模态:图文对+纯文本+代码
数据类型:GeneralVQA,OCR和文档理解,图标和表格理解,推理、逻辑和数学题,教材和学术问题,网页to代码、图标to代码生成,视觉定位,GroundingQA,纯文本数据
数据规模:(~19.5B tokens)

1-通用视觉问答数据

开源数据清洗:已有的开源数据[74, 10, 43, 9, 27, 31, 47]存在三个问题:(1)答案简短,(2)OCR 质量差,以及(3)内容虚构。通过联合考虑原始问题、图像和 OCR 信息来重新生成答案。 实验表明,这种方法能够产生更全面、更准确的结果。

内部自建数据1:开发了一个内部中文问答数据集,其中包含各种图像描述和单轮/多轮对话。 此数据集有助于减轻语言混合问题。

内部自建数据2:补充现实世界和文化视觉知识,包括动漫、表情包、美食和艺术。

2-OCR和文档理解数据

开源数据清洗:预训练阶段已经让模型具备很强的OCR能力,在SFT阶段没有进一步提高OCR性能,而是专注于清洗现有的开源数据集[43, 24, 92, 104, 66, 77, 31, 67],删除 OCR 质量差的样本。

内部自建数据:对于文档理解,从内部数据中整理了一个多样化的文档页面子集。然后,生成针对文档理解的、多轮对话问答对。

3-表格和图标理解数据

开源数据复用:Cauldron[43]数据集具有较高的质量,可以直接用

开源数据清洗:通过基于原始问题重新生成所有公共数据集[14, 49]的答案来增强基于表格的问答数据

4-推理、逻辑和数学数据

开源数据清洗:使用更详细的推理过程增强了公共推理数据集[76, 43, 61, 17, 102, 109],并标准化了响应格式,将最终答案放在响应的末尾。

5-教材和学术数据

内部自建数据:构建了一个内部数据集,重点关注文档集合中的教材。 此数据集主要强调跨多个学科的大学水平内容。

6-网页代码和Python绘图代码数据

开源数据清洗:通过重新生成答案来提高其质量

内部自建数据:扩展了内部用于网页代码和Python绘图代码的数据集,超出了预训练期间使用的数据集

7-视觉定位数据

开源数据翻译:使用来自[85, 64, 101, 2, 110, 23]的数据开发了VG数据集,为了提升模型能力,将查询短语翻译成中文,并创建额外的负样本。

合成数据生成:还添加了上下文视觉定位数据,其中任务涉及在给定参考图像中由矩形或椭圆突出显示的参考对象的情况下,跨多个图像定位同一类别中的对象。

在这里插入图片描述
参数解释:

  • <|grounding|>, <|ref|>, <|/ref|>, <|det|>, <|/det|> are special tokens
  • <object> placeholder represents phrases like “an object within the red bounding box” while is the model’s description of the detected object (e.g., “cat”)
8-视觉定位对话数据

使用[62, 72]构建基于视觉定位的对话数据,以进一步增强预训练阶段建立的模型能力。

9-纯文本数据

为了保持模型的语言能力,在SFT阶段还使用了纯文本指令调优数据集[98, 4, 18, 68, 91, 70, 84, 6, 19]。

训练策略

DeepSeek-VL2 通过三阶段流程进行训练:
1)初始阶段——视觉-语言对齐:建立视觉特征和语言特征之间的联系,使预训练语言模型能够有效地处理视觉输入;使用Stage1数据;冻结LLM,训练视觉编码器和视觉-语言适配器MLP

2)预训练阶段——视觉-语言预训练:增强模型的多模态理解能力,同时保持了其大部分语言能力;使用Stage2数据;解冻所有参数(包括视觉编码器、视觉-语言适配器和语言模型)训练

3)微调阶段——SFT:确保模型在各种视觉-语言任务中具有强大的性能;使用Stage3数据;解冻所有参数(包括视觉编码器、视觉-语言适配器和语言模型)训练

在所有阶段,都强调视觉理解能力,并仅针对文本token计算下一个token预测损失。
在这里插入图片描述

超参数如表2所示

基础设施:由16/33/42个节点组成的集群在7/10/14天内完成,每个节点配备8个NVIDIA A100 GPU。

模型评估

定量分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定性分析

GQA

在这里插入图片描述

多图对话

在这里插入图片描述

视觉定位

在这里插入图片描述

视觉定位对话

在这里插入图片描述

实验结论

在问介绍了DeepSeek-VL2,这是一个基于MoE的视觉语言模型的增强版本,共有3B、16B和27B参数规模,对应的激活参数分别为1.0B、2.8B和4.5B。 此配置有助于在训练和推理阶段有效地降低计算消耗,三个模型分别可以在具有10GB、40GB和80GB内存的单个GPU上部署。 采用动态平铺视觉编码策略来有效地处理具有各种纵横比的高分辨率图像。

局限性:

  • 目前,DeepSeek-VL2 的上下文窗口每次对话会话仅允许包含少量图像。计划在下一个版本中扩展上下文窗口,以实现更丰富的多图像交互。
  • 此外,与其他VLM一样,该模型偶尔会在模糊图像或未见过的物体时表现不好。
  • 最后,虽然 DeepSeek-VL2 在视觉感知和识别任务方面表现出色,但推理能力仍有待加强。

相关文章:

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card 论文标题&#xff1a;DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding 论文作者&#xff1a;Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bin…...

【腾讯云】腾讯云docker搭建单机hadoop

这里写目录标题 下载jdk hadoop修改hadoop配置编写Dockerfile构建镜像运行镜像创建客户端 下载jdk hadoop wget --no-check-certificate https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz wget --no-check-certificate https://repo.huaweicloud.…...

【回溯+剪枝】电话号码的字母组合 括号生成

文章目录 17. 电话号码的字母组合解题思路&#xff1a;回溯 哈希表22. 括号生成解题思路&#xff1a;回溯 剪枝 17. 电话号码的字母组合 17. 电话号码的字母组合 ​ 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 …...

Day29(补)-【AI思考】-精准突围策略——从“时间贫困“到“效率自由“的逆袭方案

文章目录 精准突围策略——从"时间贫困"到"效率自由"的逆袭方案**第一步&#xff1a;目标熵减工程&#xff08;建立四维坐标&#xff09;** 与其他学习方法的结合**第二步&#xff1a;清华方法本土化移植** 与其他工具对比**~~第三步&#xff1a;游戏化改造…...

进程间通信

进程间通信 进程间通信介绍 进程间通信⽬的 数据传输&#xff1a;⼀个进程需要将它的数据发送给另⼀个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;⼀个进程需要向另⼀个或⼀组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09…...

【PyTorch】6.张量运算函数:一键开启!PyTorch 张量函数的宝藏工厂

目录 1. 常见运算函数 个人主页&#xff1a;Icomi 专栏地址&#xff1a;PyTorch入门 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术&…...

2024年数据记录

笔者注册时间超过98.06%的用户 CSDN 原力是衡量一个用户在 CSDN 的贡献和影响力的系统&#xff0c;笔者原力值超过99.99%的用户 其他年度数据...

hot100(4)

31.437. 路径总和 III - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;递归、dfs 由树的结构想到使用递归解决&#xff0c;且路径相关问题容易考虑到使用dfs和bfs. 使用dfs解决&#xff0c;这里关键在于如何设计递归函数。 递归函数的参数&#xff1a;root,tar…...

海浪波高预测(背景调研)

#新星杯14天创作挑战营第7期# ps&#xff1a;图片由通义千问生成 历史工作&#xff1a; 针对更高细粒度、更高精度的波浪高度预测任务&#xff1a; Mumtaz Ali 等人提出了一种多元线性回归模型&#xff08;MLR-CWLS&#xff09;&#xff0c;该模型利用协方差加权最小二乘法&a…...

C++ 3

delete 和 free 有什么区别&#xff1f; delete和free都是用来释放动态分配的内存&#xff0c;但它们有不同的使用方式&#xff1a; 语法&#xff1a; ○ delete是C中的关键字&#xff0c;用于释放由new分配的对象。 ○ free是C语言中的函数&#xff0c;通常包含在<stdlib…...

【逻辑学导论】1.4论证与说明

许多语段看起来好像是论证&#xff0c;实际上不是论证而是说明。即使有某些前提或结论指示词出现&#xff0c;例如“因为”“由于”“因”“所以”等&#xff0c;也不能解决问题&#xff0c;这些语词既可用在论证中也可用在说明中&#xff08;虽然“因……”一词有时可以指时间…...

vue3+elementPlus之后台管理系统(从0到1)(day4-完结)

面包屑 创建一个面包屑组件 将路由导入然后格式化map对象 key-value 将当前路由的key和value获取然后存入list数组中 遍历list数据&#xff0c;渲染内容 <!--BreadcrumbCom.vue--> <template><el-breadcrumb separator">"><el-breadcrum…...

Python标准库 - os (2) 进程管理

文章目录 3 进程管理3.1 进程状态和控制3.2 进程优先级3.3 程序段控制3.4 其他 4 创建子进程4.1 创建子进程常见函数4.2 spawn*族函数4.3 exec*族函数 5 子进程管理5.1 创建子进程触发事件5.2 等待子进程执行完5.3 子进程的状态 os模块提供了各种操作系统接口。包括环境变量、进…...

单细胞-第四节 多样本数据分析,下游画图

文件在单细胞\5_GC_py\1_single_cell\2_plots.Rmd 1.细胞数量条形图 rm(list ls()) library(Seurat) load("seu.obj.Rdata")dat as.data.frame(table(Idents(seu.obj))) dat$label paste(dat$Var1,dat$Freq,sep ":") head(dat) library(ggplot2) lib…...

【2024年华为OD机试】(B卷,100分)- 热点网站统计(Java JS PythonC/C++)

一、问题描述 题目描述 企业路由器的统计页面需要动态统计公司访问最多的网页URL的Top N。设计一个算法&#xff0c;能够高效动态统计Top N的页面。 输入描述 每一行都是一个URL或一个数字&#xff1a; 如果是URL&#xff0c;代表一段时间内的网页访问。如果是数字N&#…...

脚本运行禁止:npm 无法加载文件,因为在此系统上禁止运行脚本

问题与处理策略 1、问题描述 npm install -D tailwindcss执行上述指令&#xff0c;报如下错误 npm : 无法加载文件 D:\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。 有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_…...

AI软件栈:LLVM分析(一)

文章目录 AI 软件栈后端编译LLVM IRLLVM的相关子项目AI 软件栈后端编译 AI软件栈的后端工作通常与硬件架构直接相关,为了实现一个既能适配现代编程语言、硬件架构发展的目标,所以提出了LLVM具备多阶段优化能力提供基础后端描述,便于进行编译器开发兼容标准编译器的行为LLVM …...

【Elasticsearch】 Intervals Query

Elasticsearch Intervals Query 返回基于匹配术语的顺序和接近度的文档。 intervals 查询使用 匹配规则&#xff0c;这些规则由一小组定义构建而成。这些规则然后应用于指定 field 中的术语。 这些定义生成覆盖文本中术语的最小间隔序列。这些间隔可以进一步由父源组合和过滤…...

Ansys Maxwell:采用对称性的双转子轴向磁通电机

轴向磁通电机因其功率密度高于相同重量的传统径向磁通电机而变得非常受欢迎&#xff0c;并且在电动汽车和航空应用中非常高效且具有成本效益。功率密度是输出功率与机器体积的比率。对于给定尺寸的机器&#xff0c;轴向磁通电机提供更大的扭矩和功率&#xff0c;或者对于给定的…...

你的连接不是专用连接

当你打开网站看到如下提示&#xff0c;说明SSL证书到期了。 攻击者可能试图www窃取你的信息&#xff08;例如、密码、消息或信用卡&#xff09;。详细了解此警告 NET::ERR_CERT_DATE_INVALID 此服务器无法证明它是WWW ;它的安全证书已于2天前到期。这可能是错误配置或攻击者…...

CSS核心

CSS的引入方式 内部样式表是在 html 页面内部写一个 style 标签&#xff0c;在标签内部编写 CSS 代码控制整个 HTML 页面的样式。<style> 标签理论上可以放在 HTML 文档的任何地方&#xff0c;但一般会放在文档的 <head> 标签中。 <style> div { color: r…...

AI常见的算法和例子

人工智能&#xff08;AI&#xff09;中常见的算法分为多个领域&#xff0c;如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途&#xff1a; 例子代码&#xff1a;纠结哥/pytorch_learn 1. 机器学习 (Machine Learning) 监督学习 (S…...

无公网IP 外网访问 本地部署夫人 hello-algo

hello-algo 是一个为帮助编程爱好者系统地学习数据结构和算法的开源项目。这款项目通过多种创新的方式&#xff0c;为学习者提供了一个直观、互动的学习平台。 本文将详细的介绍如何利用 Docker 在本地安装部署 hello-algo&#xff0c;并结合路由侠内网穿透实现外网访问本地部署…...

【QT】 控件 -- 显示类

&#x1f525; 目录 [TOC]( &#x1f525; 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 &#x1f525; 1. 前言 之前我在上一篇文章【QT】…...

AI语言模型竞争加剧:新秀崛起 格局生变

标题&#xff1a;AI语言模型竞争加剧&#xff1a;新秀崛起 格局生变 文章信息摘要&#xff1a; AI语言模型领域呈现加速发展和分化态势。在LMSYS排行榜上&#xff0c;Claude 3 Opus超越GPT-4 Turbo&#xff0c;DBRX超越Mixtral成为最佳开源模型&#xff0c;显示领先位置更替频…...

RK3568使用opencv(使用摄像头捕获图像数据显示)

文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结 二、代码实现 一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类&#xff0c;常用于从摄像头、视频文件、或者…...

leetcode——排序链表(java)

给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5] 示例 3&#xff1a; …...

Windows安装Miniconda和PySide6以及配置PyCharm

目录 1. 选择Miniconda 2. 下载Miniconda 3. 安装Miniconda 4. 在base环境下创建pyside6环境 5. 安装pyside6环境 6. 配置PyCharm环境 7. 运行第一个程序效果 1. 选择Miniconda 选择Miniconda而没有选择Anaconda&#xff0c;是因为它是一个更小的Anaconda发行版&#x…...

floodfill算法(6题)

本质就是找出性质相似的连通块 目录 1.图像渲染 2.岛屿数量 3.岛屿的最大面积 4.被围绕的区域 5.太平洋大西洋水流问题 6.扫雷游戏 1.图像渲染 733. 图像渲染 - 力扣&#xff08;LeetCode&#xff09; 我们使用深度优先遍历去遍历即可&#xff0c;也不需要返回值。 值得…...

Spring集成Redis|通用Redis工具类

一、基础使用 概述 在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis需要 那些步骤呢。 1、 JedisPoolConfig (这个是配置连接池) 2、 RedisConnectionFactory 这个是配置连接信息&#xff0c;这里的RedisConnectionFactory是一个接 …...

python:洛伦兹变换

洛伦兹变换&#xff08;Lorentz transformations&#xff09;是相对论中的一个重要概念&#xff0c;特别是在讨论时空的变换时非常重要。在四维时空的背景下&#xff0c;洛伦兹变换描述了在不同惯性参考系之间如何变换时间和空间坐标。在狭义相对论中&#xff0c;洛伦兹变换通常…...

题单:插入排序

题目描述 给定 n 个元素的数组&#xff08;下标从1开始计&#xff09;&#xff0c;请使用插入排序对其进行排序&#xff08;升序&#xff09;。 输入格式 两行&#xff0c;第一行为一个整数 n&#xff0c;表示元素的个数。 第二行 n 个空格分隔的整数&#xff0c;表示数组的…...

【Spring】Spring启示录

目录 前言 一、示例程序 二、OCP开闭原则 三、依赖倒置原则DIP 四、控制反转IOC 总结 前言 在软件开发的世界里&#xff0c;随着项目的增长和需求的变化&#xff0c;如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.30 性能巅峰:NumPy代码优化全攻略

1.30 性能巅峰&#xff1a;NumPy代码优化全攻略 目录 #mermaid-svg-CMVXy3CN2tNmW8RJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-CMVXy3CN2tNmW8RJ .error-icon{fill:#552222;}#mermaid-svg-CMVXy3CN2tNmW8RJ …...

C#方法(练习)

1.定义一个函数&#xff0c;输入三个值,找出三个数中的最小值 2.定义一个函数&#xff0c;输入三个值,找出三个数中的最大值 3.定义一个函数&#xff0c;输入三个值,找出三个数中的平均值 4.定义一个函数&#xff0c;计算一个数的 N 次方 Pow(2, 3)返回8 5.传入十一…...

Node.js 的底层原理

Node.js 的底层原理 1. 事件驱动和非阻塞 I/O Node.js 基于 Chrome V8 引擎&#xff0c;使用 JavaScript 作为开发语言。它采用事件驱动和非阻塞 I/O 模型&#xff0c;使其轻量且高效。通过 libuv 库实现跨平台的异步 I/O&#xff0c;包括文件操作、网络请求等。 2. 单线程事…...

react native在windows环境搭建并使用脚手架新建工程

截止到2024-1-11&#xff0c;使用的主要软件的版本如下&#xff1a; 软件实体版本react-native0.77.0react18.3.1react-native-community/cli15.0.1Android Studio2022.3.1 Patch3Android SDKAndroid SDK Platform 34 35Android SDKAndroid SDK Tools 34 35Android SDKIntel x…...

实战:如何快速让新网站被百度收录?

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/22.html 要让新网站快速被百度收录&#xff0c;可以采取以下实战策略&#xff1a; 一、网站基础优化 网站结构清晰&#xff1a;确保网站的结构简洁清晰&#xff0c;符合百度的抓取规则。主…...

Nuxt:利用public-ip这个npm包来获取公网IP

目录 一、安装public-ip包1.在Vue组件中使用2.在Nuxt.js插件中使用public-ip 一、安装public-ip包 npm install public-ip1.在Vue组件中使用 你可以在Nuxt.js的任意组件或者插件中使用public-ip来获取公网IP。下面是在一个Vue组件中如何使用它的例子&#xff1a; <template…...

572. 另一棵树的子树

前导题&#xff1a;100. 相同的树 回顾一下 判断两棵二叉树相同&#xff0c;根结点相同 且 左子树相同 且 右子树相同。 于是判断如下&#xff1a; 根结点都为null&#xff0c;返回true根结点不都为null&#xff0c;返回false根结点都不为null&#xff0c;但是值不相同&#…...

LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略

LLMs之WebRAG&#xff1a;STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略 目录 STORM系统简介 1、Co-STORM 2、更新新闻 STORM系统安装和使用方法 1、安装 pip安装 直接克隆GitHub仓库 2、模型和数据集 两个数据集 FreshWiki数据集 WildSeek数据集 支持…...

菜鸟之路Day11-12一一集合进阶(四)

菜鸟之路Day11-12一一集合进阶&#xff08;四&#xff09; 作者&#xff1a;blue 时间&#xff1a;2025.1.29-1.30 文章目录 菜鸟之路Day11-12一一集合进阶&#xff08;四&#xff09;0.概述1.可变参数2.Collections3.综合练习4.不可变的集合5.Stream流 0.概述 内容学习自黑…...

在Ubuntu下编译VLC

参考链接&#xff1a; https://blog.csdn.net/zyhse/article/details/113662686...

python开发,最好的环境是什么

目录 1. 集成开发环境&#xff08;IDE&#xff09; 1.1 PyCharm 1.2 Visual Studio Code (VSCode) 2. 文本编辑器 2.1 Sublime Text 2.2 Vim/NeoVim 3. 虚拟环境管理 4. 版本控制与协作 5. 容器化开发 6. 项目管理与依赖管理工具 7. 单元测试与调试 最佳组合推荐 …...

Maui学习笔记- SQLite简单使用案例02添加详情页

我们继续上一个案例&#xff0c;实现一个可以修改当前用户信息功能。 当用户点击某个信息时&#xff0c;跳转到信息详情页&#xff0c;然后可以点击编辑按钮导航到编辑页面。 创建项目 我们首先在ViewModels目录下创建UserDetailViewModel。 实现从详情信息页面导航到编辑页面…...

创建前端项目的方法

目录 一、创建前端项目的方法 1.前提&#xff1a;安装Vue CLI 2.方式一&#xff1a;vue create项目名称 3.方式二&#xff1a;vue ui 二、Vue项目结构 三、修改Vue项目端口号的方法 一、创建前端项目的方法 1.前提&#xff1a;安装Vue CLI npm i vue/cli -g 2.方式一&…...

好用的AI/解析网站

文件解析 json文件解析&#xff1a;http://www.yunjson.com/jsoncheck/...

C语言练习(31)

有5个学生&#xff0c;每个学生有3门课程的成绩&#xff0c;从键盘输入以上数据&#xff08;包括学号、姓名、3门课程成绩&#xff09;&#xff0c;计算出平均成绩&#xff0c;将原有数据和计算出的平均分数存放在磁盘文件stud中。 设5名学生的学号、姓名和3门课程成绩如下&am…...

《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(31):HTTPS和TLS/SSL

《深入浅出HTTPS​​​​​​​​​​》读书笔记&#xff08;31&#xff09;&#xff1a;HTTPS和TLS/SSL TLS/SSL协议和应用层协议无关&#xff0c;它只是加密应用层协议&#xff08;比如HTTP&#xff09;并传递给下层的TCP。 HTTP和TLS/SSL协议组合在一起就是HTTPS, HTTPS等…...

SpringBoot AOP 和 事务

SpringBoot 整合 AOP 动态代理技术 JDK 动态代理 JDK 动态代理是 Java 自带的一种代理方式。它要求目标类必须有接口&#xff0c;基于这个接口&#xff0c;JDK 在运行时会动态生成一个代理对象。这个代理对象和目标对象就像 “拜把子” 的兄弟&#xff0c;因为它们都实现了相同…...