Alignment与Correspondence,用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法

news2024/11/26 7:31:07
Alignment与Correspondence,用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法
FesianXu 20241006 at Wechat Search Team

前言

在多模态大模型(Multimodal Large Language Model, MLLM)中,视觉特征就像是人的眼睛,而底座的LLM则像是人的大脑,合适的视觉特征的选择通常都是一个MLLM成功的重要一步。本文介绍一种可以用于高效选择合适的视觉特征的方法,如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注明出处,谢谢

  • 关键字:高效的MLLM视觉特征选择、定量衡量视觉语义对齐、定量衡量视觉结构特征

联系方式:

  • e-mail: FesianXu@gmail.com
  • github: https://github.com/FesianXu
  • 知乎专栏: 计算机视觉/计算机图形理论与应用
  • 微信公众号:机器学习杂货铺3号店

多模态大模型MLLM通常由三部分组成:

  1. 视觉编码器,可以是CLIP、SigLIP、DINO等
  2. 视觉连接器(Projector),通常是简单的MLP结构
  3. 底座LLM,如LLama、Qwen等

对于MLLM而言,视觉特征如同眼睛,负责感知外界的视觉信息,底座LLM则如同是大脑,用于分析视觉信息并且进行理解和分析,视觉特征由视觉编码器提供,通常会考虑采用一个连接器将视觉特征映射到LLM『可以理解』的特征空间。在一些研究中 [2],已经证实了只有在结合不同的视觉编码器特征(如SigLIP和DINOv2)之后,才能让MLLM同时具备对高级视觉语义和底层视觉结构理解的能力,视觉编码器的选用至关重要,并且如何去组合不同的视觉特征也是值得去探索的问题。然而,当前的MLLM训练范式,通常是:

  1. 固定视觉特征和底座LLM,训练视觉连接器的参数
  2. 然后放开视觉连接器和底座LLM的参数,同时进行训练

这意味着在尝试挑选不同的视觉编码器和他们之间的组合的时候,难以避免需要进行大量的LLM训练以搜索到最优的视觉编码器以及组合(搜索空间为 k k k),有没有一种比较好的方法,可以有效地缩小这个搜索空间呢? 论文 [1] 就是在尝试解决这个问题!在深入讨论本文主题之前,笔者建议读者可以回顾下博文 《基于CLIP特征的多模态大模型中的视觉短板问题》[3],总的来说,视觉特征可以分为两种维度:

  • 视觉语义对齐:视觉特征与文本语义的对齐能力,这个比较容易理解,语义对齐指的就是跨文本和图像模态,对于同一个概念(比如苹果、梨子)的共同描述方法,如图Fig 1所示。具体的定义可见 《视频与图片检索中的多模态语义匹配模型:原理、启示、应用与展望》[4] 中的介绍。视觉语义对齐能力,是衡量跨模态的语义度量。这种模型一般采用对比学习或者弱监督学习得到,比如CLIP、SigLIP。
  • 视觉结构对齐:用于衡量建模视觉基础结构的能力,这样定义比较抽象,在本文中,作者指的是对于同一个局部的视觉特征,具有语义不变性的表达,如图Fig 1所示,对于同一个实体(如雏菊)的不同局部信息,提取出来的视觉特征应该具有跨图像的不变性,这个也称之为图像的对应性(Correspondence)1。视觉结构对齐能力,是衡量同模态的语义度量。这种模型一般采用自监督的方法学习得到,比如DINO等。

一个好的视觉特征,应该是同时具备这两种能力的,因此我们需要定量去衡量一个视觉特征的这两个维度上的能力,并且将这两个维度的能力值映射到MLLM的下游任务能力上,那么这两个维度的能力值,就可以作为一个proxy(代理)去衡量MLLM的下游任务能力了。作者将视觉语义对齐的打分称之为Alignment Score(A score), 将视觉基础结构称之为Correspondence Score(C score),他们的组合则称之为AC score,作者发现AC score和MLLM的下游能力 Z Z Z之间呈现线性关系,也就是 Z ∝ f ( A , C ) Z \propto f(A, C) Zf(A,C),其中的 f ( ⋅ ) f(\cdot) f()为线性函数,这意味着只需要找到AC score最高的 k ′ k^{\prime} k个视觉特征作为搜索空间即可,而 k ′ < < k k^{\prime} << k k<<k。因此,我们的重点主要是看下作者是怎么计算A score和C score的。

在这里插入图片描述

Fig 1. 一个图片的视觉属性,可以分为语义对齐和视觉对齐,语义对齐指的是视觉信息与文本语义的跨模态对齐,视觉对齐指的是视觉结构自身模态内的对齐。通过描述A和C的能力,并且进行一定的组合建模,可以作为代理,和MLLM下游任务的表现进行关联。

语义对齐能力,需要衡量待评测的视觉特征与标准视觉语义特征之间的距离,标准视觉语义特征作者采用CLIP作为参考,即是公式(1)中的 E ^ i u \hat{E}_{i}^{u} E^iu,其中的 i i i表示第 i i i张图片, S c ( ⋅ ) S_c(\cdot) Sc()为余弦相似度,而公式中的 u u u v v v则是表示是图片每个patch的特征(视觉编码器采用的是ViT),也就是将待评测视觉特征和标准视觉语义特征之间进行细粒度的匹配,然后取最大值作为整体的匹配程度。整体流程可见Fig 2。
A Score = 1 n ∑ i = 0 n max ⁡ u , v S c ( E ^ i ( u ) , E i ( v ) ) (1) \mathrm{\text{A Score}} = \dfrac{1}{n} \sum_{i=0}^{n} \max_{u,v} S_c(\hat{E}_{i}^{(u)}, E^{(v)}_i) \tag{1} A Score=n1i=0nu,vmaxSc(E^i(u),Ei(v))(1)
在这里插入图片描述

Fig 2. 在评估待测视觉特征的Alignment Score的时候,将待评测视觉特征和标准视觉语义特征进行细粒度的匹配,然后取最大值作为整体的匹配结果,将其视为该图片的Alignment Score,最后对多张图片的A Score进行平均则得到最终的待评测视觉特征的A Score。

对于视觉结构对齐而言,我们需要评估待评测视觉特征的局部视觉不变性,因此我们需要成对的图片对,如 SPair-71k数据集,这是一个图像的语义对应点匹配的数据集,如Fig 3所示,数据集提供了成对的图片对,会标识出语义成对的对应点。对于一个关键点真实标签为 { p 1 s , p 2 s , ⋯   , p m s } \{p_{1}^{s}, p_{2}^{s},\cdots, p_{m}^{s}\} {p1s,p2s,,pms},那么对于采用待评测视觉特征的预测关键点为 { p 1 t , p 2 t , ⋯   , p m t } \{p_{1}^{t}, p_{2}^{t}, \cdots, p_{m}^{t}\} {p1t,p2t,,pmt},可以计算其PKG(关键点正确占比),如公式(2)所示,其中的 τ \tau τ为阈值而 I ( ⋅ ) \mathbb{I}(\cdot) I()为指示函数。这个指标表征了待评测视觉特征能够正确预测出关键点的能力。

C Score = 1 m ∑ i = 0 m I ( ∣ ∣ p j t − p j s ∣ ∣ 2 < τ ) (2) \mathrm{\text{C Score}} = \dfrac{1}{m} \sum_{i=0}^{m} \mathbb{I}(||p_{j}^{t}-p_{j}^s||_{2} < \tau) \tag{2} C Score=m1i=0mI(∣∣pjtpjs2<τ)(2)

作者采用了一个二阶线性组合对A Score和C Score进行组合,如公式(3)所示,其中的 β i j \beta_{ij} βij为待学习参数(此处按照作者原文,是6个待学习参数,而笔者认为此处应该是9个待学习参数,如公式(3)所示,不知为何作者添加了一个 2 − i 2-i 2i的限制,导致缺少了3个自由度,在A和C打分不一致的情况下,这个二阶的AC打分矩阵是不对称的,不能取上半角矩阵。下文为了保持和论文一致性,将继续沿用作者的6个待学习参数的表述),将通过实际观察到的 k ′ k^{\prime} k个视觉特征组合的AC Score与采用了这 k ′ k^{\prime} k个视觉特征的MLLM的下游任务表现进行拟合学习得出。

AC Score = ∑ i = 0 2 ∑ j = 0 2 − i β i j A i C j (3) \mathrm{\text{AC Score}} = \sum_{i=0}^{2} \sum_{j=0}^{2-i} \beta_{ij} A^i C^j \tag{3} AC Score=i=02j=02iβijAiCj(3)

在这里插入图片描述

Fig 3. 如果视觉特征具有良好的局部视觉不变性,那么其特征对于视觉语义一致的局部区域,应该能够形成匹配。

那么此时的AC Score可以视为是视觉特征在MLLM中下游任务的表现 Z Z Z的代理指标,如果能拟合出一个AC Score和 Z Z Z的线性关系,只需要在这个直线上找出能使的AC Score最大化的视觉特征组合,然后进行少量几次实验即可找出使得MLLM效果最佳的视觉特征组合。整个管道如Fig 4所示。这个直线,不妨表示为 y = X s w + ϵ \mathbf{y} = \mathbf{X}_s \mathbf{w} + \epsilon y=Xsw+ϵ,其中 X s ∈ R k ′ × 6 \mathbf{X}_s \in \mathbb{R}^{k^{\prime} \times 6} XsRk×6 w ∈ R 6 \mathbf{w} \in \mathbb{R}^{6} wR6,而 ϵ ∈ R k ′ \epsilon \in \mathbb{R}^{k^{\prime}} ϵRk是拟合残差, y ∈ R k ′ \mathbf{y} \in \mathbb{R}^{k^{\prime}} yRk是采样的 k ′ k^{\prime} k个视觉特征组合在MLLM下游任务中的表现。

在这里插入图片描述

Fig 4. 采用AC Score对视觉特征进行LLM下游任务能力预测的过程。

以上讨论了如何量化衡量视觉特征的语义对齐能力和语义结构对齐能力,并且如何综合这两个能力二阶线性拟合得出一个最终的AC Score的方法。作者在实验中,对于13个不同的视觉特征组合,在4个视觉benchmark上都进行了LLM下游任务训练并且得到了下游任务的指标,其拟合效果用决定系数( R 2 R^2 R2,即是因变量的变量有多少能被自变量解释)表示,如Fig 5所示,采用了AC Score的拟合能力最好,而只采用A Score或者C Score的效果都会差些,作为对比实验,作者也采用了拟合13个随机打分的方法作为基线,从中能发现AC Score和MLLM的下游模型表现,确实存在强的线性关系。

在这里插入图片描述

Fig 5. 对于不同的Score进行拟合,线性回归中的R^2指标的区别。

大概介绍了整个文章的思路后,笔者想把整个过程串起来给大伙儿讲解一遍自己的理解。首先,对于 k k k种可供参考的候选视觉特征组合(如本文中,待候选的视觉特征组合有13种,如下所示)和 M M M个待测试的基准集合(benchmark),那么理论上,我们需要 k M kM kM次MLLM的微调才能挑选出在 M M M个基准集合里面各自最佳的视觉特征。一个合理的想法是,我们对于第 i i i个基准集合 D i \mathcal{D}_i Di,我们合理地挑选出一个数量为 k ′ k^{\prime} k视觉特征组合的子集( k ′ < < k k^{\prime} << k k<<k),然后只进行 k ′ k^{\prime} k次微调,就能确定AC Score的代理直线,然后对剩余 k − k ′ k-k^{\prime} kk个未微调的组合,寻找性能预测的最大值即可。理论上,此时仅需要 k ′ M k^{\prime}M kM次微调了。

视觉特征组合分辨率类型基准集合 1基准集合 2基准集合 3基准集合 4
OpenAI CLIP ViT-L/14224单视觉编码器-前馈模型80.7
OpenAI CLIP ViT-L/14336单视觉编码器-前馈模型
OpenCLIP ViT-L/14224单视觉编码器-前馈模型90.5
SigLIP ViT-L/16224单视觉编码器-前馈模型123.5
DINOv2 ViT-L/14224单视觉编码器-前馈模型
SD 1.5768单视觉编码器-diffusion模型53.6
SD 2.1768单视觉编码器-diffusion模型
SD XL768单视觉编码器-diffusion模型
SD Image Variations768单视觉编码器-diffusion模型
SD 3512单视觉编码器-diffusion模型
DiT512单视觉编码器-diffusion模型70.6
CLIP + DINOv2 ViT-L/14224多视觉编码器组合150.2
CLIP + DINOv2 ViT-L/14336多视觉编码器组合

这样也引申出一个问题,如何得到尽可能具有更高AC Score的视觉特征候选组合呢,作者提供了两种思路,如Fig 6所示:

  1. 提高模型输入图片的分辨率,如Fig 6的224 -> 336,作者认为是相当于固定了视觉特征的视觉对齐能力(也就是A Score),提高了视觉结构对齐能力(也就是C Score),从而带来了AC Score的上升进而提高了LLM下游指标。
  2. 进行多种视觉特征的组合,如Fig 6的在DINOv2的基础上拼接上OpenAI CLIP,作者认为这相当于固定了模型的视觉结构对齐能力,提高了语义对齐能力,从而带来了AC Score的上升进而提高了LLM下游指标。

在这里插入图片描述

Fig 6. 通过提高分辨率(224 -> 336)和进行特征组合的方法,对于MLLM在下游任务中的性能影响。

当然,改变输入图片的分辨率,并不是仅仅会影响到C Score,比如CLIP@224和CLIP@336的A Score就不会是1,而这本应是1的,因此作者建议最好保持目标视觉编码器和标准视觉语义CLIP的输入分辨率的一致。这个比较困难,因为通常时候标准视觉语义CLIP的分辨率尺寸是固定的(比如224和336),因此作者同时采用CLIP@224和CLIP@336作为标准视觉语义CLIP,并且通过求平均的方式减少因分辨率不同带来的C Score耦合影响。

作者同时注意到,相比于基于视觉的基准数据集,AC Score与基于OCR的基准数据集的下游指标关联更为弱,这个原因可能来自于当前的C Score是采用基于自然图片的语义匹配数据集SPair-71k计算的,如下所示,在衡量非自然图片(如OCR为主的图表)的时候,其衡量视觉结构对齐的能力就变差了。

在这里插入图片描述

Fig 7. 采用基于自然图片的语义匹配数据集进行计算的C Score,对于非自然图片(如OCR图表)的语义结构对齐能力描述具有缺陷。

笔者的读后感

总的来说,这篇论文解决的问题还是很具有价值的,即是如何高效地给MLLM在某个垂类任务下,挑选一个最为合适的视觉特征组合。本文采用的方法论是定义出MLLM中需要视觉侧提供的能力的类型,分别是视觉语义对齐能力A和视觉结构对齐能力C,并且思考如何使得AC Score可以正相关于下游任务的能力,从而实现采用低代价的代理指标AC Score,就能高效地进行下游能力预测。

本文有两个指的注意的地方,第一是采用CLIP作为标准视觉语义对齐能力的标杆,可能对于能力超过CLIP的视觉模型的能力衡量,有失偏颇,第二是采用SPair-71k进行视觉结构对齐能力的衡量,会遇到对非自然图片估计C Score有偏的问题。

需要注意的是,对于不同类型的下游任务,理论上公式(3)的 β i j \beta_{ij} βij值都需要重新学习的,笔者比较好奇的是,是否有更好地能跨不同任务的学习方式呢?是否有递进式的学习方式呢?

Reference

[1]. Yang, Shijia, Bohan Zhai, Quanzeng You, Jianbo Yuan, Hongxia Yang, and Chenfeng Xu. “Law of Vision Representation in MLLMs.” arXiv preprint arXiv:2408.16357 (2024).

[2]. Tong, Shengbang, Zhuang Liu, Yuexiang Zhai, Yi Ma, Yann LeCun, and Saining Xie. “Eyes wide shut? exploring the visual shortcomings of multimodal llms.” In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pp. 9568-9578. 2024.

[3]. https://blog.csdn.net/LoseInVain/article/details/140233330, 《基于CLIP特征的多模态大模型中的视觉短板问题》

[4]. https://fesianxu.github.io/2023/03/04/story-of-multimodal-models-20230304/, 《视频与图片检索中的多模态语义匹配模型:原理、启示、应用与展望》

[5], https://blog.csdn.net/LoseInVain/article/details/102665911, 《立体视觉中的对极几何——如何更好更快地寻找对应点》


  1. 本文提到的对应点,与传统视觉任务中提到的对应点是有所区别的。如博文 [5] 中提到的,在传统视觉任务中的对应点通常指的是对于同一个物体不同视角下的图片的同一个关键局部图片块的对应关系,而本文提到的对应点,则更像是同一个视觉实体的局部视觉语义的聚类关系,因此不必限制在同一个物体,而是限制在了同一个实体。 ↩︎

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

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

相关文章

MySQL 篇-深入了解存储引擎、索引(InnoDB 索引结构 B+Tree、索引使用规则)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 存储引擎概述 1.1 存储引擎 - InnoDB 1.2 存储引擎 - MyISAM 1.3 存储引擎 - Memory 1.4 存储引擎 - 选择 2.0 索引概述 2.1 索引结构 2.1.1 索引结构 - B-Tree 2…

Docker:安装 MongoDB 的详细指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;可以在 Docker 容器中轻松安装和运行。本文将介绍如何在 Docker 中安装 MongoDB&#xff0c;并展示如何在 Java 应用中使用 MongoDB…

MySQL事务日志—redo日志介绍

MySQL事务日志—redo日志 事务有4种特性&#xff1a; 原子性、一致性、隔离性和持久性。 那么事务的四种特性到底是基于什么机制实现? 事务的原子性、一致性由事务的 undo 日志事务的隔离性由锁机制和MVCC实现。事务的持久性由redo 日志来保证。 两类日志概述&#xff1a;…

基于猎豹优化算法(The Cheetah Optimizer,CO)的多无人机协同三维路径规划(提供MATLAB代码)

一、猎豹优化算法 猎豹优化算法&#xff08;The Cheetah Optimizer&#xff0c;CO&#xff09;由MohammadAminAkbari等人于2022年提出&#xff0c;该算法性能高效&#xff0c;思路新颖。 参考文献&#xff1a; Akbari, M.A., Zare, M., Azizipanah-abarghooee, R. et al. The…

‌在Python中,print(f‘‘)是什么?

‌在Python中&#xff0c;print(f’)表示使用f-string对字符串进行格式化输出。‌ f-string是Python 3.6及以上版本引入的一种新的字符串格式化机制&#xff0c;它允许在字符串中直接嵌入表达式&#xff0c;这些表达式在运行时会被其值所替换。使用f-string可以更方便地将变量的…

【通信协议】一文学会异步、同步、串行、并行、单工、半双工、全双工(一)

通信方式详解&#xff1a;异步、同步、串行、并行、单工、半双工、全双工 引言一、通信方式分类概述二、串行通信与并行通信串行通信 (Serial Communication)并行通信 (Parallel Communication)串行与并行通信对比表 三、全双工、半双工、单工通信单工通信 (Simplex Communicat…

怎么将mp4转换为mp3?教你6种值得收藏的视频转音频方法!

怎么将mp4转换为mp3&#xff1f;自媒体生活如此繁华的现在&#xff0c;我们经常需要从视频中提取音频&#xff0c;以便在不同的设备或场合中播放&#xff0c;又或者提取视频中的音频进行二次视频/音频/故事创作&#xff0c;因此&#xff0c;将MP4视频文件转换为MP3音频文件变成…

了解奈奎斯特采样定律和频率混叠:数字信号处理中的关键概念

在数字信号处理和通信领域&#xff0c;采样是将连续信号转化为离散数字信号的关键步骤。采样的过程虽然看似简单&#xff0c;但其中蕴含着深刻的理论&#xff0c;直接关系到信号重建的准确性。而奈奎斯特采样定律和频率混叠就是其中两个非常重要的概念。本文将带您深入了解这两…

基金好书入门阅读笔记《基金作战笔记:从投基新手到配置高手的进阶之路》2

买基金&#xff0c;说到底是买基金所持有的一揽子资产。那么&#xff0c;常见的可投资产都有哪些类型呢&#xff1f; 图2.9进行了系统性的梳理&#xff0c;我们把资产分为四大类&#xff0c;分别是权益类、固收类、现金和另 类&#xff0c;下面就一一解读。 年化收益率是把一段…

L111213 【哈工大_操作系统】内核级线程内核级线程实现操作系统之“树”

L2.4 内核级线程 切换进程&#xff0c;实际上是切换内核级线程&#xff0c;没有用户级进程说法&#xff0c;进程只能在内核中。 多核与多处理器的区别在于是否共用资源。多核多线程 并发&#xff1a;同时触发&#xff0c;交替执行&#xff0c;在一个核上 并行&#xff1a;同…

《数字图像处理基础》学习01-数字图像处理的相关基础知识

这篇文章只是对数字图像处理的相关基础知识有个大概的了解&#xff0c;之后的文章会接着补充和扩展。 目录 一&#xff0c;图像的基本概念 1&#xff0c;图像 2&#xff0c;图像的分类 1&#xff09;物理图像 2&#xff09;虚拟图像 二&#xff0c;数字图像处理 三&…

Jenkins Pipline流水线

提到 CI 工具&#xff0c;首先想到的就是“CI 界”的大佬--]enkjns,虽然在云原生爆发的年代,蹦出来了很多云原生的 CI 工具,但是都不足以撼动 Jenkins 的地位。在企业中对于持续集成、持续部署的需求非常多,并且也会经常有-些比较复杂的需求,此时新生的 CI 工具不足以支撑这些很…

常见的src漏洞挖掘之信息收集打点篇

&#x1f497;想加内部圈子&#xff0c;请联系我&#xff01; &#x1f497;文章交流&#xff0c;请联系我&#xff01;&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 一个想当文人的黑客 &#xff0c;很高兴认识大家~ ✨主…

Java IO流全面教程

此笔记来自于B站黑马程序员 File 创建对象 public class FileTest1 {public static void main(String[] args) {// 1.创建一个 File 对象&#xff0c;指代某个具体的文件// 路径分隔符// File f1 new File("D:/resource/ab.txt");// File f1 new FIle("D:\\…

子比主题美化 – 添加天气教程

前言 经常看到很多的网站顶部或者侧边有显示天气状态的小条幅&#xff0c;看着也美观&#xff0c;寻思着也在自己的小站上显示天气。大体的思路是能识别用的ip地址来确认位置然后以代码形式在前台显示出。 经过在百度上搜索一番&#xff0c;发现一个很不错的天气api&#xff…

VMware ESXi Centos7网卡名称 ens192 变更eth0

1.在 /etc/sysconfig/network-scirpts/ 文件夹下 创建一个ifcfg-eth0的文件&#xff0c; 最简单的方式是 mv ifcfg-ens192 ifcfg-eth0 然后 vi ifcfg-eth0 把DEVICE改成 DEVICEeth0 wq! 保存 2. vi /etc/sysconfig/grub # 在位置添加 net.ifnames0 biosdevname0 参数 完…

数据结构之红黑树实现(全)

一、红黑树 红黑树是一种自平衡的二叉搜索树&#xff0c;它通过约束节点的颜色和结构来保持平衡。红黑树是由 Rudolf Bayer 在1972年发明的&#xff0c;被认为是一种优秀的平衡树结构&#xff0c;广泛应用于各种数据结构和算法中。 1.红黑树的性质 1. 每个结点是红的或者黑的…

detectron2/data/catalog.py源码笔记

公开接口是DatasetCatalog对象&#xff0c;MetadataCatalog对象和Metadata类 DatasetCatalog.register(name, func) #用于注册函数 DatasetCatalog.get(name) #返回函数调用结果return func() DatasetCatalog.list() #return list(self.keys()) Datase…

Windows系统编程(三)进程与线程二

进程与线程 进程&#xff1a;直观的说就是任务管理器中各种正在运行的程序。对于操作系统来说&#xff0c;进程仅仅是一个数据结构&#xff0c;并不会真实的执行代码 线程&#xff1a;通常被称作但并不真的是轻量级进程或实际工作中的进程&#xff0c;它会真实的执行代码。每…

强制删除了windows自带的edge浏览器,重装不了怎么办【已解决】

#最近我的edge浏览器出了点问题&#xff0c;点击打不开但是能在下面的任务栏看到他开启了&#xff0c;就是不能够显示在桌面&#xff0c;小窗口叫我配置设置。 我不懂&#xff0c;感觉很烦&#xff0c;就把他强制卸载了。但是windows是不允许将他卸载的&#xff0c;使用window…