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

深度学习|MAE技术全景图:自监督学习的“掩码魔法“如何重塑AI基础

一、引言:深度学习的困境与自监督的曙光

深度学习(Deep Learning)无疑是当今人工智能领域基础中的基础。从图像识别到自然语言处理(NLP),它在无数任务中展现了卓越性能。例如,在安防监控中,基于深度学习的卷积神经网络(CNN)能够以毫秒级速度识别人脸特征,实现高效的门禁解锁;在医疗领域,深度学习模型通过分析 X 光、CT 或 MRI 图像,辅助医生发现肿瘤或骨折等异常,显著提升诊断效率;在自动驾驶中,它实时检测道路上的行人、车辆和交通标志,确保行车安全。这些成就依赖于强大的计算能力和精心设计的神经网络架构,但也暴露出一个致命的弱点:对大规模标注数据的依赖。

标注数据的获取过程堪称深度学习的“阿喀琉斯之踵”。以图像分类任务为例,每张图像需要人工标注目标类别,甚至框选具体区域,这一过程不仅耗时,还需要大量人力。例如,在一个包含 1 0 5 10^5 105 张图像的数据集中,若每张图像平均标注时间为 5 5 5 分钟,则总计需要 8333 8333 8333 小时(约 347 347 347 天)。若涉及医疗影像,标注难度进一步提升,因为它要求标注员具备专业医学知识,可能需要数小时才能完成一张图像的标注。更棘手的是,标注质量的不一致性——不同标注员对同一目标的理解差异会导致数据噪声,进而影响模型的训练效果。此外,在某些领域(如罕见疾病诊断或特定工业检测),标注数据稀缺甚至几乎不存在,这使得传统监督学习难以施展拳脚。

自监督学习(Self-Supervised Learning, SSL)作为一种新兴范式,为这一困境提供了突破口。它无需人工标注,而是从数据自身结构中挖掘监督信号。例如,在图像领域,可以通过随机旋转图像并让模型预测旋转角度,或遮挡部分区域让模型重建缺失内容;在 NLP 中,BERT 通过预测掩码单词学习语义和语法。自监督学习的魅力在于,它将未标注数据的“废墟”转化为“金矿”,显著降低数据准备成本,同时提升模型的泛化能力。以 Google 的 SimCLR 为例,它通过对比学习利用未标注图像的增强视图,训练出媲美监督学习的特征提取器。自监督学习不仅适用于数据丰富的场景,还能在标注资源匮乏的领域大放异彩,成为深度学习未来的重要方向。

最大化相似度
最小化相似度
原始图像
随机增强
视图1
视图2
Encoder
特征
特征
投影头
投影头
高维空间
高维空间
InfoNCE损失
无标签训练

二、MAE:视觉自监督的新秀

(一)诞生背景与动机

在自监督学习的热潮中,Masked Autoencoders(MAE,掩码自编码器)于 2021 年由 Kaiming He 等人在论文《Masked Autoencoders Are Scalable Vision Learners》中提出,成为视觉领域的一颗新星。MAE 的诞生并非偶然,而是针对视觉自监督学习中的 三大核心挑战 设计而成:

  1. 架构差异
    在 NLP 领域,Transformer 架构通过掩码语言建模(Masked Language Modeling, MLM)大获成功。例如,BERT 随机掩盖 15 % 15\% 15% 的单词,让模型预测这些单词,从而学习深层语义。然而,视觉领域长期依赖 CNN,其局部卷积操作难以自然融入掩码机制。尽管 Vision Transformer(ViT)将图像切分为 patch 并序列化处理,弥合了这一差距,但**如何设计适合视觉的掩码任务仍是一个难题**。

    图片建议:插入一个对比图,左侧展示 BERT 的掩码语言建模(掩盖单词后预测),右侧展示 ViT 的图像 patch 序列化过程,用箭头标注“从 CNN 到 Transformer 的转变”。

  2. 信息密度差异
    文字是高信息密度的载体,每个单词承载丰富语义,掩盖一个 token 足以构成挑战。而图像具有低信息密度和高度冗余性。例如,在一张自然图像中,遮挡一个 16 × 16 16 \times 16 16×16 的区域,模型可能通过邻域像素轻松插值恢复,这使得简单掩码任务无法提取深层特征。如何设计一个足够难度的任务,成为视觉自监督的关键

  3. 解码复杂度
    在 NLP 中,解码器只需预测离散的单词,通常一个简单的多层感知器(MLP)即可胜任。而在视觉领域,解码器需要重建连续的高维像素值(如一个 16 × 16 × 3 16 \times 16 \times 3 16×16×3 的 RGB patch 包含 768 768 768 个值),这对网络设计和计算资源提出了更高要求。

MAE 通过借鉴 NLP 的掩码思想,同时针对视觉特性进行创新,提出了一种高效的解决方案:随机掩盖大部分图像 patch,并让模型重建缺失部分。这一方法不仅解决了上述问题,还为视觉自监督学习开辟了新道路

MAE 示意图

(二)核心原理

MAE 的核心基于自编码器(Autoencoder),但引入了 高掩码率和非对称设计的独特机制 。其工作流程如下:

  1. 图像分块
    输入图像被划分为规则的非重叠 patch。例如,对于一张 224 × 224 224 \times 224 224×224 的 RGB 图像,若 patch 大小为 16 × 16 16 \times 16 16×16,则生成 196 196 196 个 patch( 224 ÷ 16 = 14 224 \div 16 = 14 224÷16=14 14 × 14 = 196 14 \times 14 = 196 14×14=196)。每个 patch 可视为图像的“基本单元”,类似 NLP 中的 token。

  2. 随机掩码
    MAE 随机选择 75 % 75\% 75% 的 patch(约 147 147 147 个)并移除,仅保留 25 % 25\% 25% 的可见 patch(约 49 49 49 个)。这种 高掩码率是 MAE 的核心创新,它大幅减少输入冗余,同时增加任务难度,迫使模型学习全局语义而非局部插值。

  3. 非对称编码-解码

    • 编码器基于 ViT,仅处理可见 patch。每个 patch 通过线性投影转为 token(通常 768 768 768 维),加入位置编码后输入 Transformer 层,输出低维潜在表示。
    • 解码器接收编码器输出的潜在表示和掩码 token(共享的可学习向量),通过轻量级 Transformer 重建完整图像。解码器最后一层投影输出像素值,后 reshape 成 224 × 224 224 \times 224 224×224 的图像。
      非对称设计降低了计算成本,同时保留了重建能力
  4. 像素重建
    损失函数采用均方误差(MSE),仅计算掩码区域的误差。例如,若掩码率为 75 % 75\% 75%,则损失仅基于 147 147 147 个 patch 的像素值。这种设计进一步提升训练效率,避免浪费计算资源


以下是一个简化的 PyTorch 伪代码示例,展示 MAE 的核心流程

import torch
import torch.nn as nnclass MAE(nn.Module):def __init__(self, patch_size=16, mask_ratio=0.75, encoder_depth=24, decoder_depth=8):super().__init__()self.patch_size = patch_sizeself.mask_ratio = mask_ratioself.encoder = ViT(depth=encoder_depth)  # 编码器:ViTself.decoder = Transformer(depth=decoder_depth)  # 解码器:轻量 Transformerself.patch_embed = nn.Linear(patch_size * patch_size * 3, 768)  # patch 转 tokenself.pixel_head = nn.Linear(768, patch_size * patch_size * 3)  # 重建像素def forward(self, x):# 分块:(B, 3, 224, 224) -> (B, 196, 768)patches = x.unfold(2, self.patch_size, self.patch_size).unfold(3, self.patch_size, self.patch_size)patches = patches.reshape(-1, 196, self.patch_size * self.patch_size * 3)tokens = self.patch_embed(patches)# 掩码num_patches = tokens.shape[1]mask = torch.randperm(num_patches)[:int(num_patches * (1 - self.mask_ratio))]visible_tokens = tokens[:, mask]# 编码encoded = self.encoder(visible_tokens)  # (B, 49, 768)# 解码:补齐掩码 tokenmask_tokens = torch.zeros(tokens.shape[0], num_patches - len(mask), 768).to(x.device)decoder_input = torch.cat([encoded, mask_tokens], dim=1)reconstructed = self.decoder(decoder_input)  # (B, 196, 768)# 重建像素pixels = self.pixel_head(reconstructed)  # (B, 196, 768)return pixels# 损失计算(仅掩码区域)
def mae_loss(pred, target, mask):return nn.MSELoss()(pred[:, mask], target[:, mask])

MAE 的“少看多猜”策略(仅看 25% 重建 100%)是其高效与强大的根源。

(三)架构解析

MAE 的架构设计简洁而高效,分三个主要模块:

  • Patch 嵌入
    图像切分为 patch 后,每个 patch 通过线性层投影为固定维度的 token(默认 768 维)。为保留空间信息,加入 sine-cosine 位置编码。这种位置编码相比可学习嵌入更鲁棒,支持输入分辨率变化。例如,在 ViT-Base 中,位置编码计算如下:
   pos = torch.arange(196)[:, None] * torch.tensor([10000 ** (2 * i / 768) for i in range(384)])pos_encoding = torch.cat([torch.sin(pos), torch.cos(pos)], dim=1)
  • 编码器
    基于 ViT,包含多头自注意力(Multi-Head Self-Attention)和前馈网络(Feed-Forward Network)。以 ViT-Large 为例,编码器有 24 24 24 层 Transformer,每层 16 16 16 个注意力头,仅处理可见 patch( 49 49 49 个),计算复杂度从 O ( 19 6 2 ) O(196^2) O(1962)降至 O ( 4 9 2 ) O(49^2) O(492)。多头注意力允许模型从不同视角捕捉特征,前馈网络则增强非线性表达能力。

  • 解码器
    接收编码器输出的潜在表示和掩码 token( 147 147 147 个),通过较浅的 Transformer(默认 8 8 8 层)重建图像。解码器最后一层线性投影输出像素值( 768 → 768 768 → 768 768768),后 reshape 成 224 × 224 224\times224 224×224 的图像。解码器的轻量化设计(参数量约为编码器的 1 / 3 1/3 1/3)是 MAE 高效的关键。

MAE 的非对称性(编码器重、解码器轻)优化了资源分配:编码器专注提取高级特征,解码器仅负责像素级重建。

三、MAE 的实验成果

(一)ImageNet-1K 的惊艳表现

《Masked Autoencoders Are Scalable Vision Learners》中提出 MAE 在 ImageNet-1K(1000 类,120 万训练图像,5 万验证图像)上的表现令人瞩目。实验中,MAE 预训练的 ViT-Huge 模型(14×14 patch,掩码率 75%)经 100 epoch 微调后,Top-1 准确率达到 87.8%,超越同期仅用 ImageNet-1K 训练的模型。与其他自监督方法对比:

  • MoCo v3(ViT-Large):85.9%,预训练 800 epoch
  • SimCLR(ResNet-50):76.5%,预训练 1000 epoch
  • MAE(ViT-Large):86.9%,预训练 300 epoch

MAE 不仅精度更高,收敛速度也更快。例如,ViT-Base 在 MAE 预训练后仅需 50 epoch 微调即可达到 83.7%,而从头训练需 300 epoch。这得益于 MAE 学到的通用特征初始化。

(二)下游任务的迁移能力

MAE 的预训练模型在下游任务中同样表现出色:

  • 目标检测(COCO)
    在 COCO 数据集(118k 训练图像,5k 验证图像)上,MAE 预训练的 ViT-Large 配合 Faster R-CNN,平均精度(AP)达 50.4,优于监督预训练的 49.5。MAE 的全局特征提取能力增强了检测器对复杂背景的适应性。
  • 实例分割(COCO)
    MAE 模型在边界框和掩码预测中更精确。例如,在多目标重叠场景中,MAE 预训练模型的 APmask 提升约 2%,支持更精细的实例分离。
  • 语义分割(ADE20K)
    在 ADE20K(150 类,2 万训练图像)上,MAE 预训练的 ViT-Base 模型 mIoU 达 48.1,领先 MoCo v3 的 46.5。这表明 MAE 能有效捕捉语义区域特征。

这些结果证明,MAE 的特征表示具有高度通用性和迁移性。

(三)MAE 的三大优势

  1. 训练效率
    高掩码率(75%)减少 75% 输入,编码器仅处理 49 个 patch;解码器轻量化设计(8 层 vs 24 层),训练速度提升显著。实验显示,MAE 在 128 个 A100 GPU 上预训练 ViT-Large,仅需 50 小时,而 MoCo v3 需 150 小时。在单张 3090 GPU 上,MAE 每秒处理 10 张图像,而传统方法仅 3 张。

  2. 泛化能力
    高掩码任务迫使模型从稀疏输入中捕捉全局结构。例如,在 ImageNet 上预训练的 MAE 模型,迁移到 COCO 时无需额外调整即可保持高精度。这种特征的代表性使其在跨数据集(如自然图像到医疗影像)和跨任务(如分类到分割)中表现出色。

  3. 模型扩展性
    MAE 支持大模型训练,ViT-Huge(6.32 亿参数)的成功证明其潜力。高效设计降低内存需求,例如 ViT-Large 在 24GB GPU 上只需 16GB 显存即可运行,而传统 ViT 需 32GB。这为未来更大规模模型(如 ViT-Giant)铺平道路。

四、应用展望

在这里插入图片描述

(一)计算机视觉

  • 图像分类
    在工业质检中,MAE 可快速分类产品图像,识别次品。例如,在电子制造中,检测电路板缺陷的准确率可达 98%。在生物医学中,MAE 分类细胞图像,辅助癌症早期诊断,缩短分析时间从数小时到分钟。
  • 目标检测
    在安防监控中,MAE 驱动的检测系统可实时识别异常行为(如闯入者),响应时间缩短至 0.5 秒。在自动驾驶中,它检测道路上的行人、车辆和交通标志,AP 提升约 3%,增强夜间性能。
  • 语义分割
    在城市规划中,MAE 对卫星图像进行语义分割,提取建筑、道路和绿地信息,mIoU 达 55%,支持精准布局设计。在遥感中,它分析地形和植被,为资源管理提供数据支持。

(二)跨领域潜力

  • 医疗影像
    VISION-MAE 在 250 万未标注 CT/MRI 图像上预训练,支持肿瘤检测和器官分割。例如,在肺癌筛查中,其敏感性达 95%,减少 80% 标注需求。未来,MAE 可扩展到 3D 影像分析,辅助手术规划。
  • 自动驾驶
    Voxel-MAE 通过掩码点云预训练,提升 3D 环境感知精度。在 KITTI 数据集上,其 3D AP 提升 4%,尤其在雨雾天气下鲁棒性更强。MAE 可进一步优化多传感器融合(如相机+雷达),推动 L4 级自动驾驶。

五、未来趋势

  1. 技术融合

    • 与对比学习结合MAE 的重建任务可与 SimCLR 的相似性学习互补。例如,在图像分类中,结合后的模型对遮挡和变形图像的准确率提升 5%。
    • 与注意力机制优化在目标检测中,融入动态注意力机制(如 Deformable DETR),MAE 模型聚焦关键区域,AP 提升约 3%。
    • 轻量化设计与 MobileNet 结合,MAE 可在边缘设备上运行,支持实时应用。
  2. 复杂场景

    • 小样本学习在罕见疾病诊断中,MAE 预训练模型仅需 10 张标注图像即可达到 90% 准确率,远超传统方法的 70%。
    • 无监督域适应在自动驾驶中,MAE 弥合城市与乡村数据集差异。例如,从欧洲道路数据迁移到亚洲场景,检测精度仅下降 2%,优于监督方法的 10%。
    • 多模态学习MAE 可扩展到图像+文本任务,如图像描述生成,支持更智能的交互系统。

六、总结

MAE 以其 高掩码率、非对称架构和高效率设计,为视觉自监督学习注入新的活力。它在 ImageNet-1K 上刷新纪录(Top-1 准确率达 87.8 % 87.8\% 87.8%),在下游任务中展现强大迁移能力(COCO 平均精度 AP 达 50.4 50.4 50.4),并以高效训练(速度提升 3 3 3 倍)和强泛化性(跨任务适应)赢得关注。未来,MAE 的技术融合(如与对比学习结合)和复杂场景拓展(如小样本学习)将进一步推动 AI 在医疗、自动驾驶等领域的落地。

MAE 不仅是一个强大的预训练工具,更是一个创新的启示:通过巧妙设计任务和架构,我们可以突破数据与计算的限制,释放深度学习的更大潜力。无论是研究者还是工程师,MAE 都值得深入探索——它可能是你下一个项目的秘密武器。


延伸阅读

  • AI Agent 系列文章


  • 计算机视觉系列文章


  • 机器学习核心算法系列文章


  • 深度学习系列文章


相关文章:

深度学习|MAE技术全景图:自监督学习的“掩码魔法“如何重塑AI基础

一、引言:深度学习的困境与自监督的曙光 深度学习(Deep Learning)无疑是当今人工智能领域基础中的基础。从图像识别到自然语言处理(NLP),它在无数任务中展现了卓越性能。例如,在安防监控中&…...

学习threejs,使用LineBasicMaterial基础线材质

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.LineBasicMaterial1.…...

第本章:go 切片

注意: 切片必须要初始化 才能使用 ,切片是引用类型 a :[]int{} // 这上叫始化 此时并没有申请内存 // 如果要追加值的话: append ints : append(a, 1, 2, 3)a : make([]int,5) // 声明切片类型var a []string //声明一…...

dify + ollama + deepseek-r1+ stable-diffusion 构建绘画智能体

故事背景 stable-diffusion 集成进 dify 后,我们搭建一个小智能体,验证下文生图功能 业务流程 #mermaid-svg-6nSwwp69eMizP6bt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6nSwwp69eMiz…...

Java基础面试题全集

1. Java语言基础 1.1 Java是什么? • Java是一种广泛使用的编程语言,最初由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它是一种面向对象的、基于类的、通用型的编程语言,旨在让应用程序“编写一次&…...

基于multisim的自动干手器设计与仿真

1 设计的任务与要求 设计一个输出 5V 的直流稳压电源。用开关的闭合模拟手挡住光线的功能。用灯的亮灭模拟烘干吹风功能。 2 方案论证与选择 2.1 自动干手器的系统方案 本设计由5V直流电源、红外发射电路、红外接收电路、灯模拟电路构成。 1. 5V直流电源系统 这一部分是整…...

three.js 在 webGL 添加纹理

在我们生成了3D设计之后,我们可以添加纹理使其更加吸引人。在 webGL 和 p5.js中,可以使用 gl.texImage2D() 和 texture() API来为形状应用纹理。 使用 webGL 在 webGL 中,gl.texImage2D() 函数用于从图像文件生成2D纹理。该函数接受许多参…...

Docker 部署 MongoDB 并持久化数据

Docker 部署 MongoDB 并持久化数据 在现代开发中,MongoDB 作为 NoSQL 数据库广泛应用,而 Docker 则提供了高效的容器化方案。本教程将介绍如何使用 Docker 快速部署 MongoDB,并实现数据持久化,确保数据不会因容器重启或删除而丢失…...

SpringBoot优雅关机,监听关机事件,docker配置

Spring Boot 提供了多种方法来实现优雅停机(Graceful Shutdown),这意味着在关闭应用程序之前,它会等待当前正在处理的请求完成,并且不再接受新的请求。 一、优雅停机的基本概念 优雅停机的主要步骤如下: …...

网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】

网络基础(一) 1. 网络的发展2. 认识协议3. 网络 VS 系统4. 以太网通信原理5. 重谈协议6. 网络中的地址管理 1. 网络的发展 最开始时,计算机之间相互独立。 但是为了协作完成一些任务,就产生了计算机之间相互通讯的需求&#xff0c…...

PostgreSQL、SQL Server和MySQL数据库性能调优与故障排除技术

通过结合具体技术特性与工具链的深度使用,可系统化提升数据库性能和稳定性。建议根据实际负载特征制定监控-分析-优化的闭环管理流程。 数据库技术: PostgreSQL 13:逻辑复制、分区表、并行查询、监控工具(如pg_stat_statements、…...

本地YARN集群部署

请先完成HDFS的前置部署,部署方式可查看:本地部署HDFS集群https://blog.csdn.net/m0_73641796/article/details/145998092?spm1001.2014.3001.5502 部署说明 组件配置文件启动进程备注Hadoop HDFS需修改 需启动: NameNode作为主节点 DataNode作为从节点 Secondary…...

Redis数据结构——list

目录 列表命令 lpush lrange lpushx rpush rpushx lpop rpop lindex linsert llen lrem ltrim lset blpop / brpop 命令总结 编码方式 list相当于数组或者顺序表,但并不是简单的数组,更接近于C中的"双端队列"(deque)。 最左侧的下标…...

World of Warcraft [CLASSIC] BigFoot BiaoGe

World of Warcraft [CLASSIC] BigFoot BiaoGe 金团表格插件 设置60秒拍卖装备时间 ALT 鼠标左键,点击装备,弹出对话框,填写 1)拍卖时间默认60秒,起拍价, 2)点击【开始拍卖】 团队所有安装了…...

CentOS Docker 安装指南

CentOS Docker 安装指南 引言 Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 容器是完全使用沙箱机制,相互之…...

PHP:phpstudy无法启动MySQL服务问题解决

文章目录 一、问题说明二、解决问题 一、问题说明 我的Windows10系统,之前安装过MySQL5.7的版本。 然后,用phpstudy安装MySQL8,并启动MySQL8。 发生无法启动的情况。 二、解决问题 1、删除本地MySQL7的服务 net stop MySQL //这里的服务名…...

【电控笔记z29】扰动估测器DOB估测惯量J-摩擦系数B

基本原理 扰动估测器的核心思想是通过向电机系统施加特定的扰动信号,观察系统响应的变化,然后利用系统的动态模型和控制理论来估计未知参数,如惯量和摩擦系数 。一般基于电机的运动方程建立数学模型,结合观测到的电机实际运行数据…...

STM32-I2C通信外设

目录 一:I2C外设简介 二:I2C外设数据收发 三:I2C的复用端口 四:主机发送和接收 五:硬件I2C读写MPU6050 相关函数: 1.I2C_ GenerateSTART 2.I2C_ GenerateSTOP 3.I2C_ AcknowledgeConfig 4.I2C…...

计算机二级MS之PPT

声明:跟着大猫和小黑学习随便记下一些笔记供大家参考,二级考试之前将持续更新,希望大家二级都能轻轻松松过啦,过了二级的大神也可以在评论区留言给点建议,感谢大家!! 文章目录 考题难点1cm25px…...

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…...

C++ Primer 交换操作

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

分布式中间件:Redis介绍

目录 Redis 概述 Redis 的特点 高性能 丰富的数据结构 持久化 分布式特性 简单易用 Redis 的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合&…...

软件测试的基础入门(二)

文章目录 一、软件(开发)的生命周期什么是生命周期软件(开发)的生命周期需求分析计划设计编码测试运行维护 二、常见的开发模型瀑布模型流程优点缺点适应的场景 螺旋模型流程优点缺点适应的场景 增量模型和迭代模型流程适应的场景…...

学之思社区版考试系统docker-compose部署

参考 开源项目-Docker部署学之思管理系统 安装docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Bas…...

深度优先搜索(DFS)和广度优先搜索(BFS)——c#实现

一、深度优先搜索(DFS) 原理: 沿着分支尽可能深入,直到到达叶子节点,然后回溯探索其他分支 类似走迷宫时优先选择一条路走到黑,碰壁再回退 数据结构:栈(Stack)或递归实…...

什么是hive

Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...

JVM详解

目录 一.JVM的概念 1. 什么是JVM? 2.JVM用来干什么? 二JVM运行流程 JVM执⾏流程 2.1类加载机制 2.2类加载机制带来了哪些好处? 2.3类加载的过程是什么? 2.3.1加载 2.3.2验证 2.3.3准备阶段 2.3.4解析阶段 符号引⽤ 直接引⽤ 2.3.5初始化阶段 2.4类加载器 什么…...

PCA(主成分分析)核心原理

一、PCA(主成分分析)核心原理 即主成分分析技术,又称主分量分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换…...

DeepSeek私有化部署6:openEuler 24.03-LTS-SP1安装Open WebUI

Open WebUI是一个 Open WebUI 是一个可扩展的、功能丰富、用户友好的自托管 AI 平台,专为完全离线运行而设计。 它支持多种 LLM 运行环境,包括 Ollama 和 OpenAI 兼容的 API,并内置了用于 RAG 的推理引擎,是一个强大的 AI 部署解决…...

【一文学会 HTML5】

目录 HTML概述基本概念HTML 发展历程HTML 基本结构 网页基本标签标题标签&#xff08;<h1> - <h6>&#xff09;段落标签&#xff08;<p>&#xff09;换行标签&#xff08;<br>&#xff09;水平线标签&#xff08;<hr>&#xff09;注释&#xff0…...

前端题目类型

HTMLCSS常见面试题 HTML标签有哪些行内元素 img、picture、span、input、textarea、select、label 说说你对元素语义化的理解 元素语义化就是用正确的元素做正确的事情。虽然理论上所有html元素都可通过css样式实现相同效果&#xff0c;但这样会使事情复杂化&#xff0c;所以需…...

nodejs学习——nodejs和npm安装与系统环境变量配置及国内加速

nodejs和npm安装与系统环境变量配置及国内加速 下载node-v22.14.0-x64.msi 建议修改为非C盘文件夹 其它步骤&#xff0c;下一步&#xff0c;下一步&#xff0c;完成。 打开CMD窗口查看安装详情 $ node -v v22.14.0 $ npm -v 10.9.2$ npm config list创建node_global和node_c…...

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明 命令参数的描述说明如下&#xff1a; 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度&#xff0c;单位为像素。 -h 图像高度&#xff0c;单位为像素。 -hstride 垂直方向相邻两行之间的距离&#xff0c;单…...

Vue3实战学习(Vue3的基础语法学习与使用(超详细))(3)

目录 &#xff08;1&#xff09;Vue3工程环境准备、项目基础脚手架搭建详细教程。(博客链接) &#xff08;2&#xff09;Vue3的基础语法学习与使用。 &#xff08;1&#xff09;"{{}}"绑定数据。 <1>ref()函数定义变量——绑定数据。 <2>reactive({...})…...

基于multisim的花样彩灯循环控制电路设计与仿真

1 课程设计的任务与要求 &#xff08;一&#xff09;、设计内容&#xff1a; 设计一个8路移存型彩灯控制器&#xff0c;基本要求&#xff1a; 1. 8路彩灯能演示至少三种花型&#xff08;花型自拟&#xff09;&#xff1b; 2. 彩灯用发光二极管LED模拟&#xff1b; 3. 选做…...

EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信

1、技术背景 WebRTC是一项开源项目&#xff0c;旨在通过简单的API为浏览器和移动应用程序提供实时通信&#xff08;RTC&#xff09;功能。它允许在无需安装插件或软件的情况下&#xff0c;实现点对点的音频、视频和数据传输。 WebRTC由三个核心组件构成&#xff1a; GetUserM…...

【CSS】gap 属性详解

文章目录 一、什么是 gap 属性1. 定义2. 语法3. 默认值 二、gap 属性的基本用法1. 网格布局中的应用2. 弹性布局中的应用3. 单值和双值的区别 三、gap 属性的实际应用场景1. 表单布局优化2. 图片网格布局 四、gap 的注意事项1. 浏览器兼容性2. 替代 margin 的场景3. 不同布局的…...

【招聘精英】

我们公司是一个位于石家庄的一个科技型新型技术公司。主要做人力资源、用工、科技等方面。 有意向回石家庄的或者已经在石家庄的技术大咖、软件大牛、产品大佬、UI大神可以来了解一下。 现在招聘 高级前端开发 高级java开发 其他岗位也可以联系。 有意向的朋友可以私信我。 -…...

qt 操作多个sqlite文件

qt 操作多个sqlite文件 Chapter1 qt 操作多个sqlite文件1. 引入必要的头文件2. 创建并连接多个SQLite数据库3. 代码说明4. 注意事项 Chapter2 qt 多线程操作sqlite多文件1. 引入必要的头文件2. 创建数据库操作的工作线程类3. 在主线程中创建并启动多个工作线程4. 代码说明5. 运…...

【自学笔记】Numpy基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Numpy基础知识点总览目录1. 简介Numpy是什么为什么使用Numpy 2. 数组对象&#xff08;ndarray&#xff09;创建数组数组的属性数组的形状操作 3. 数组的基本操作数组…...

DP 问题 -- LQR中的DP问题

深入地介绍线性二次调节问题&#xff08;Linear Quadratic Regulator, LQR&#xff09;&#xff0c;并详细说明它作为动态规划&#xff08;DP&#xff09;的一个经典应用问题的求解过程。 &#x1f4cc; 一、LQR问题定义&#xff08;最优控制视角&#xff09; LQR 问题是一种特…...

Win7重装不翻车!ISO镜像安全下载渠道+BIOS设置避雷手册

一、写在前面&#xff1a;为什么你需要这份教程&#xff1f; 当电脑频繁蓝屏、系统崩溃甚至无法开机时&#xff0c;重装系统可能是最后的救命稻草。但市面上的教程往往存在三大痛点&#xff1a; ⚠️ 镜像来源不明导致系统被植入后门 ⚠️ 启动盘制作失败反复折腾 ⚠️ 操作失…...

CEF在MFC上的示例工程

CEF 在 MFC 中的使用 工程配置 1、首先创建一个MFC对话框工程 创建完运行测试效果如下 2、MFC工程引入CEF库 将 CEF 目录下的 cef子目录下载解压后放到MFC工程中&#xff1a; 然后在VS中对工程右键 -> 属性 -> C/C -> 常规 -> 附加包含目录&#xff0c;添加“.\…...

#UVM# 关于 config_db 机制中的直线非直线设置和获取讲解

在 UVM 验证环境中,uvm_config_db 是一种强大的机制,用于在不同组件之间传递配置参数。实际应用中,我们经常使用直线和非直线的设置与获取。今天,着重回忆一下这些内容,希望实际中更加方便的使用。 UVM 树结构示例 假设 UVM 树结构如下: uvm_test_top ├── env │ …...

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…...

Java网络编程,多线程,IO流综合项目一一ChatBoxes

Java网络编程&#xff0c;多线程&#xff0c;IO流综合小项目一一ChatBoxes 作者&#xff1a;blue 时间&#xff1a;2025.3.7 文章目录 Java网络编程&#xff0c;多线程&#xff0c;IO流综合小项目一一ChatBoxes1.项目介绍2.项目源码剖析2.1客户端源码2.2客户端Sender线程Runn…...

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;大数据入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 这是目…...

【算法 C/C++】一维前缀和

2025 - 03 - 08 - 第 68 篇 Author: 郑龙浩 / 仟濹 【一维前缀和】 文章目录 前缀和与差分 - 我的博客1 大体介绍2 计算某些区间的和( 不使用前缀和 )3 计算某些区间的和( 使用前缀和 ) 前缀和与差分 - 我的博客 一维前缀和 【算法 C/C】一维前缀和 一维差分 【算法 C/C】一维…...

【C++】:STL详解 —— 红黑树

目录 平衡二叉查找树 红黑树的概念 红黑树的五大性质 红黑树的效率 红黑树和AVL树的比较 插入与删除操作 内存与实现复杂度 经典性能数据对比 总结 对旋转的基本理解 旋转的作用 左旋&#xff08;Left Rotation&#xff09; 右旋&#xff08;Right Rotation&#xf…...

【A2DP】SBC 编解码器互操作性要求详解

目录 一、SBC编解码器互操作性概述 二、编解码器特定信息元素(Codec Specific Information Elements) 2.1 采样频率(Sampling Frequency) 2.2 声道模式(Channel Mode) 2.3 块长度(Block Length) 2.4 子带数量(Subbands) 2.5 分配方法(Allocation Method) 2…...