DINOv2: Learning Robust Visual Featureswithout Supervision

news2024/10/6 17:13:28

Abstract

在自然语言处理方面的模型,可以产生通用视觉特征(即无需微调即可跨图像分布和任务工作的特征)来极大地简化任何系统中图像的使用。这些模型能够提取出一些可以在不同类型的图像和任务中通用的视觉特征。这意味着不管图像的来源(例如,来自不同的相机或场景)或者任务的具体需求(例如,分类、检测等),这些提取的特征都能有效工作。这种通用性能够减少针对具体任务进行模型微调的需求,从而简化了图像在系统中的处理流程。

那么通用的视觉特征比如:边缘和纹理、颜色和亮度分布等等。

如何产生这样的通用视觉特征呢?

答:现有的预训练方法,尤其是自监督方法,如果使用来自不同来源的足够的精选数据进行训练,可以产生此类特征。在数据方面,我们提出了一个自动管道(automatic pipeline)来构建专用的、多样化的和精选的图像数据集。

1.Introduction

  • 无任务特定的预训练表示:模型并不是针对某一个特定的任务(例如情感分析或翻译),而是通过大量的文本数据学习语言的基本结构和语义。这种预训练使得模型能够掌握通用的语言特征,随后可以在多种下游任务中直接使用,而不需要再进行针对特定任务的训练,从而提高效率和性能。
  • 无需微调的使用:这些预训练的特征可以“直接使用”,即在许多下游任务中,不需要针对特定任务进行微调。这意味着,研究者和开发者可以直接使用这些模型,而不必耗费时间和资源进行额外的训练。这些预训练模型甚至优于那些特定任务模型的性能。
  • 成功的原因:①大量原始文本的预训练(数据层面):使用了非常大的文本数据集,而这些文本数据通常是没有标注的,让模型通过处理大量文本来学习语言的结构、词语的语义以及它们的相互关系②无需监督的预训练目标(任务层面):语言模型(Language Modeling)和词向量
  • text-guided pretraining:模型通过图像和对应的文本描述(如图像的标题或注释)一起进行训练,文本为模型提供监督信号,帮助模型更好地理解和处理图像。
  • 自监督学习代替text-guided pretraining:从图像本身(而不是文本描述)中学习特征。

3.Data Processing

筛选的几个目的:

①增强数据集规模

  • 人工筛选数据虽然质量高,但数量有限。而未筛选的数据通常规模非常庞大,尽管质量参差不齐。通过这个管道,可以从未筛选数据中提取更多有用的图像,从而扩大数据集的规模。

②保持数据多样性

  • 人工筛选数据的来源和内容可能有局限性,而未筛选数据可能包含更多种类的图像。通过管道的去重和匹配机制,可以从未筛选数据中获取与已筛选数据相似但又不重复的新图像,这样不仅可以扩大数据集,还可以增加图像的多样性,提升模型对不同场景的泛化能力。

提高自监督学习效果

  • 自监督学习模型依赖大量未标注的数据来训练,如果仅依赖小规模的人工筛选数据,模型可能无法学到丰富的特征。通过这个管道从未筛选数据中筛选出有价值的部分,可以进一步增强模型的训练效果,尤其是在处理各种下游任务时。

减少噪声,保证质量

  • 未筛选数据虽然数量庞大,但往往包含大量噪声(如重复、不相关或低质量图像)。通过管道的去重和检索步骤,可以过滤掉不相关或低质量的数据,确保未筛选数据中的有用信息能够补充到精心筛选的数据集中,而不会引入噪声。

处理的步骤:

去重的目的:

确保数据集的每一个样本都是独特的,避免模型在训练时学习到重复或冗余的信息。重复数据会导致模型过拟合,并减少模型从多样数据中学习到的潜在特征。通过去重,你可以:

  • 提高数据的质量:去掉重复或高度相似的图片,使得数据集中每个样本对模型来说都是有独特价值的。
  • 减少冗余:训练时不会因为相同的样本多次出现而浪费计算资源,优化模型的训练效率。

检索的目的:

虽然数据集经过去重,数据质量得到提升,但这并不意味着数据集已经足够多样化覆盖足够广泛的场景。检索扩展数据集的目的是在去重后的基础上,增加新的数据,特别是那些与任务相关但还未包含在数据集中的样本。检索扩展可以:

  • 增加数据的多样性:即使去重后的数据集独特,但可能在某些特定场景、特征或类别上仍然数据不足。通过检索,可以找到更多在这些方面有所补充的数据。
  • 扩展数据规模:去重后,数据集的规模可能会缩小,而大规模的多样化数据对深度学习模型的训练是至关重要的。检索可以帮助扩展数据集规模,使其更具代表性和通用性。
  • 发现未标注数据中的有用样本:从未标注的大规模图像数据中,可以检索出与现有数据集相关的样本,填补原始数据集中的不足。

为什么去重后又要扩展:假设你有一个用于识别不同品种猫的数据集,经过去重之后,你的猫的图片都不重复了,但这个数据集可能缺乏多样性,比如同一种猫都是在室内、白天的图片。通过检索,你可以从其他数据源中找到一些相似但具备差异化特征的图片,比如在不同环境下(如室外、夜晚)、不同角度拍摄的相同品种的猫。这样,你的数据集不仅覆盖了更多的场景,还能提升模型在现实世界中应对不同情况的能力。

显卡支持:

我们管道的重复数据删除和检索阶段依赖 Faiss 库(Johnson et al., 2019)来有效地索引和计算最近嵌入的批量搜索。 特别是,我们充分利用了它对 GPU 加速索引的支持,使用带有产品量化代码的倒排文件索引(Jegou 等人,2010)。 整个处理分布在配备 8 个 V100-32GB GPU 的 20 个节点的计算集群上,生成 LVD-142M 数据集需要不到两天的时间。

4 Discriminative Self-supervised Pre-training

我们通过一种有区别的自我监督方法来学习我们的特征,该方法可以被视为以 SwAV 为中心的 DINO 和 iBOT 损失的组合(Caron 等人,2020)。 我们还添加了一个正则化器来传播特征和一个简短的高分辨率训练阶段。 我们快速介绍每种方法.

1.图像级别目标 (Image-level objective):

  • DINO损失:使用学生网络和教师网络的类标记(class token)来计算交叉熵损失。类标记来自图像的不同裁剪,通过ViT模型(视觉Transformer)提取。
  • DINO头:学生网络的类标记经过学生的DINO头(一个MLP模型)输出一组分数,称为原型分数(prototype scores)。通过softmax得到学生网络的概率分布 psp_sps​。
  • 教师网络的类标记也通过教师的DINO头,生成教师网络的概率分布 ptp_tpt​,这个分布经过移动平均中心化(或Sinkhorn-Knopp中心化)。
  • DINO损失公式:通过交叉熵计算损失,公式为:
    LDINO=−∑ptlog⁡psL_{DINO} = - \sum p_t \log p_sLDINO​=−∑pt​logps​
    学生网络的参数是通过训练学习的,而教师网络的头是通过过去迭代的指数移动平均(EMA)构建的。

2. Patch级别目标 (Patch-level objective):

  • iBOT损失:对学生网络的输入随机遮盖一些图像补丁(patch),而对教师网络不进行遮盖。将学生网络的遮盖补丁通过iBOT头处理,并对教师网络中对应的可见补丁应用同样的处理。
  • 学生和教师的输出再进行softmax和中心化操作,计算得到iBOT损失:
    LiBOT=−∑iptilog⁡psiL_{iBOT} = - \sum_i p_{t_i} \log p_{s_i}LiBOT​=−∑i​pti​​logpsi​​
    其中 iii 是被遮盖的补丁的索引。

3. 分离头部权重 (Untying head weights):

  • DINO和iBOT损失都使用了可学习的MLP投影头。文中提到,虽然早期研究表明共享DINO和iBOT的投影头会带来更好的性能,但在大规模实验中发现分离两个头的参数会有更好的效果。因此,作者在实验中使用了两个独立的投影头。

4. Sinkhorn-Knopp中心化 (Sinkhorn-Knopp centering):

  • SwAV中的Sinkhorn-Knopp算法被用来代替教师网络中的softmax中心化步骤。Sinkhorn-Knopp算法能够更好地规范化输出。在学生网络中,依然使用softmax归一化。

5. KoLeo正则项:

  • 这是一个基于Kozachenko-Leonenko微分熵估计器的正则化方法,目的是让特征在批次内的分布更加均匀。具体公式为:
    LKoLeo=−1n∑i=1nlog⁡(dn,i)L_{KoLeo} = - \frac{1}{n} \sum_{i=1}^{n} \log(d_{n,i})LKoLeo​=−n1​∑i=1n​log(dn,i​)
    其中 dn,id_{n,i}dn,i​ 是向量 xix_ixi​ 和其他向量之间的最小距离。为了计算这个正则项,特征会先进行 ℓ2\ell_2ℓ2​-归一化。

6. 调整分辨率 (Adapting the resolution):

  • 提高图像分辨率对于像素级别的下游任务(如语义分割、目标检测)非常重要,因为低分辨率会导致小物体的丢失。为了避免在整个训练过程中都使用高分辨率带来的计算开销,作者选择在预训练的最后阶段短期地将图像分辨率提升到518×518。这种策略类似于UniViTFlexiViT的训练方法。

5 Efficient implementation

我们使用 PyTorch 2.0 在 A100 GPU 上训练模型。 代码和预训练模型在 Apache 2.0 许可证 1 下提供。我们模型的详细信息请参见附录表 17。在相同的硬件下,与 iBOT 实现相比,DINOv2 代码的运行速度大约快 2 倍,仅使用 1/ 3.内存。

Fast and memory-efficient attention:

  • 每个头的嵌入维度(embedding dimension)为64的倍数时效率最佳。
  • 当整体嵌入维度是256的倍数时,矩阵运算的效率更高。

sequence packing

DINO算法需要同时处理两种不同大小的图像裁剪:大的裁剪(分辨率224)和小的裁剪(分辨率98)。这些裁剪在转换为图像块(patches)后,形成了不同长度的序列,不能直接一起处理。为了加快训练,使用了来自自然语言处理(NLP)领域的“序列打包”技巧(Krell et al., 2022)。具体做法是将需要通过变换器(transformers)处理的多个序列连接成一个长序列。在自注意力层中,使用了一个块对角矩阵掩码(block-diagonal mask),以防止不同序列之间的注意力相互作用。这意味着尽管所有序列都在同一个长序列中处理,但实际上每个序列之间并不相互影响。这种方法使得前向传播(forward pass)与分别处理每个序列的效果严格等同,但相比于以前的实现,使用这种打包方式可以显著提高计算效率,避免了单独的前向和反向传播(backward pass)的开销。

FSDP有效地管理内存和提升计算效率

Model distillation

对于较小的模型,我们从最大的模型 ViT-g 中提取它们,而不是从头开始训练它们。知识蒸馏(Hinton et al., 2014)旨在通过最小化一组给定输入的两个输出之间的距离,用较小的模型再现大型模型的输出。

6 Ablation Studies

6.1 Improved Training Recipe

Table1:评估在iBOT方法基础上添加不同组件后的效果。具体来说,它比较了每次添加某个组件后,在ImageNet-1k数据集上的k-NN(k近邻)和linear probe(线性探测)评估方法的Top-1准确率

6.2Pretraining Data Source

6.3 Model Size and Data

模型规模与数据规模。 两个不同预训练数据集的性能随模型大小的变化:ImageNet-22k(14M 图像)和 LVD-142M(142M 图像)。 在大多数基准测试中,在 LVD-142M 上训练的 ViT-g 超过了在 ImageNet-22k 上训练的 ViT-g。

6.4 Loss Components

6.5 Impact of Knowledge Distillation

6.6 Impact of Resolution

7 Results

7.1 ImageNet Classification

研究人员通过在冻结的主干网络上训练一个简单的线性分类器来评估特征的质量,没有对主干权重进行微调。虽然类可能并不是线性可分的,但这种方法保证了可重现的评估。研究还报告了在ImageNet-ReaL和ImageNet-V2上的top-1准确率,以便与之前的自监督学习(SSL)方法进行比较。结果表明,所提出的方法在线性评估中相较于之前的最佳SSL特征(iBOT ViT-L/16训练于ImageNet-22k)有显著提高(+4.2%),同时在替代测试集上的性能提升更大,显示出更强的泛化能力。具体的线性评估细节可以在附录B.3中找到。

与最先进的弱监督模型的比较:研究人员在ImageNet-1k上使用线性评估方法,与三种现成的弱监督方法及其多种架构变体进行比较。所有模型的评估都是在确保结果与技术报告和论文中报告的数据相符的基础上进行的。结果显示,所提出的主干网络在性能上超越了OpenCLIP(ViT-G/14架构,+0.3%)和EVA-CLIP(ViT-g/14,+0.1%)。此外,在ImageNet-V2测试集上的性能提升显著(相比EVA-CLIP提高了+1.1%),表明了更好的泛化能力。接下来,这一部分将以OpenCLIP-G作为弱监督模型的参考。

7.2 Additional Image and Video classification Benchmarks

①研究了所提特征在下游分类基准上的泛化能力。评估分为两类:一类是大型细粒度数据集,如iNaturalist和Places205;另一类是SimCLR(Chen等,2020)提出的12个图像分类任务。在iNaturalist 2018、iNaturalist 2021和Places205上,研究人员使用数据增强技术训练线性分类器,并在表7中报告了这三个数据集的top-1准确率。结果显示,该模型在两个iNaturalist变体上显著优于OpenCLIP ViT-G/14(2018年和2021年分别提高了8.6%和9.7%),而在Places205上稍微落后(低2.3%)。

②模型在视频动作识别任务上的性能评估,尽管模型的特征并没有针对视频训练。研究人员在三个数据集上进行了评估:UCF-101、Kinetics-400和Something-Something v2(SSv2)。为了评估,研究者从视频中选择8帧均匀分布的帧(帮助模型捕捉视频中不同时间点的特征,而不是集中在某一特定时刻,从而更好地理解视频内容。,并对UCF和Kinetics使用特征平均的方式训练线性分类器,而对于SSv2,则采用拼接方式,以保留更多的时间信息。每个数据集的平均准确率被测量并在表7中报告。结果显示,在自监督学习方法中,所提模型显著创下新纪录。此外,在UCF和Kinetics数据集上,模型的准确率与OpenCLIP特征相当(分别提高了0.1%和0.5%),而在SSv2上则明显超越OpenCLIP(提高了2.5%)。这一点尤为重要,因为SSv2需要对视频帧有更丰富的理解。

7.3 Instance Recognition

在实例级识别任务中使用非参数方法评估模型的实验。研究人员通过计算查询图像与数据库中图像的余弦相似度,对图像进行排名。实验在Paris和Oxford这两个地标识别基准上进行比较,还评估了Met和AmsterTime,这是一组与阿姆斯特丹档案图像匹配的街景图像。通过计算平均精确度(mean average precision, mAP)来衡量性能,并在表9中报告结果。结果显示,所提特征在Oxford-Hard数据集上分别比自监督学习(SSL)高出41%的mAP,和弱监督学习高出34%的mAP,表现显著优于这两种方法。此外,所提特征在类别级别和实例级别的任务上均表现良好,这表明其具备强大的通用性,适合用作强大的计算机视觉特征。

7.4 Dense Recognition Tasks

Semantic segmentation

linear:其中通过训练一个线性层从补丁标记(patch tokens)预测类别 logits,生成低分辨率的 logits 图(例如,模型补丁大小为16时为32x32),然后将其上采样到全分辨率(512x512)以获得分割图。这种方法简单但难以产生高分辨率的分割结果。第二种是“+ms”设置,这是对线性设置的增强版本,通过拼接最后四层的补丁标记,使用640的更大图像分辨率,并在测试时使用多尺度增强来改善预测。研究人员在表10中报告了模型变体和基线在三个数据集上的性能。结果显示,所有设置和数据集上,模型表现都很好。尤其是使用“+ms”评估时,性能与全微调的MAE(使用Upernet解码器)相当(53.0与53.6 mIoU)。这一结果令人惊讶,因为所用的预测器显著简单。此外,在使用增强设置评估时,最佳模型的表现几乎与Pascal VOC的最先进水平相当(86.2与89.0 mIoU)。

Frozen backbone in a SOTA pipeline:

其中研究人员将其模型的主干网络(backbone)冻结,并将其集成到一个名为ViT-Adapter的架构中(由Chen等人于2023年提出),并使用了Mask2former头(由Cheng等人于2022年提出)。在这个设置中,研究人员调整适配器和头部的权重,但保持主干网络不变,因此66%的权重保持冻结。这种方法相比于完全的端到端微调,能实现更轻量的分割训练。

在这种设置下,模型在ADE20k数据集上达到了60.2的mIoU(平均交并比),接近竞争性的最先进水平62.9(由Wang等人于2022年获得)。尽管该实验的设置没有利用第5节中描述的优化方法,但分割训练仍然在16个V100 GPU上进行了28小时。这个实验展示了在保持大部分参数冻结的情况下,依然能取得接近最先进性能的成果。

Depth estimation:

使用了三个基准数据集:NYUd、KITTI,以及从NYUd到SUN3d的零样本迁移。研究人员遵循了Li等人(2022年)的评估协议,并考虑了三种不同的设置。

  1. lin. 1:提取冻结变换器的最后一层,并将[CLS]标记与每个补丁标记连接,然后将标记双线性上采样4倍以提高分辨率。最后,使用分类损失训练一个简单的线性层,将深度预测范围划分为256个均匀分布的区间,并使用Bhat等人(2021年)的方法进行线性归一化。

  2. lin. 4:使用与lin. 1相同的协议,但连接来自多个层的标记,具体层根据不同的ViT架构(ViT-S/B、ViT-L和ViT-g)而有所不同。

  3. DPT:在冻结的模型上使用DPT解码器(Ranftl等人,2021年),设置回归任务。根据每种架构特征的维度调整头部的大小。

研究人员在表11中展示了所有基线、数据集和设置的结果,评估了不同方法在深度估计任务上的性能。

7.5 Qualitative Results

语义分割和深度估计任务中的一些定性结果。具体内容如下:

  1. 定性结果展示:研究人员在图7中展示了在ADE20K数据集上的分割结果和在NYUd、KITTI及SUN RGB-D数据集上的深度估计结果。

  2. 模型比较:研究人员将DINOv2与使用线性分类器的OpenCLIP进行了比较。尽管线性分割模型的结果并不完美,但使用DINOv2主干的模型在这种评估设置下表现良好,明显优于OpenCLIP的结果。

  3. OpenCLIP的缺陷:OpenCLIP-G生成的分割掩码显示出许多伪影和不连通的组件,表明其在处理分割任务时存在明显的问题。

  4. 深度估计的定性结果:在深度估计方面,DINOv2与OpenCLIP之间的定量差距得到了清晰的体现。虽然DINOv2和OpenCLIP提取的特征都能够线性分离复杂信息(如深度),但DINOv2的特征在深度估计上表现得更平滑,伪影更少。

  5. 具体实例:例如,在SUN RGB-D图像中,OpenCLIP完全忽略了椅子这个物体,而DINOv2则能够正确地将其定位。

Out-of-distribution generalization:

PCA of patch features

8 Fairness and Bias Analysis

8.1 Geographical Fairness

具体评估了模型在不同国家和收入水平的表现

8.2 Gender, Skintones and Age

关于模型在 性别肤色年龄 方面的分类评估实验

9 Estimating the Environmental Impact of Training our Models

10 Future work and Discussion

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

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

相关文章

电脑断网或者经常断网怎么办?

1、首先,按一下键盘的win R , 在打开的运行框内输入:cmd 然后按一下回车 或者 点击一下【确定】 2、在命令窗口输入:ipconfig/release , 然后按一下回车 作用:IP释放,相当于把网线拔了重新插上 3、接着…

【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

C++11之线程

编译环境:Qt join:阻塞当前线程,直到线程函数退出 detach:将线程对象与线程函数分离,线程不依赖线程对象管理 注:join和detach两者必选其一,否则线程对象的回收会影响线程的回收,导致…

MATLAB下的RSSI定位程序,二维平面上的定位,基站数量可自适应

文章目录 引言程序概述程序代码运行结果待定位点、锚点、计算结果显示待定位点和计算结果坐标 引言 随着无线通信技术的发展,基于 R S S I RSSI RSSI(接收信号强度指示)的方法在定位系统中变得越来越流行。 R S S I RSSI RSSI定位技术特别适…

Vue 插槽全攻略:重塑组件灵活性

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 目录 什么是slot插槽 默认插槽 编译作用域 后备内容 具名插槽 作用域插槽 应…

医药行业的智能合同审查:大模型与AI赋能合规管理

随着医药行业的快速发展,尤其是在全球化背景下,企业在业务拓展、合作协议签订中需要处理大量复杂的合同。合同不仅是业务的法律保障,更是风险管理的重要工具。医药行业合同审查的复杂性源于其严格的合规性要求,包括与政府机构、研…

学会这几个简单的bat代码,轻松在朋友面前装一波13[通俗易懂]

大家好,又见面了,我是你们的朋友全栈君。 这个标题是干什么用的? 最近看晚上某些人耍cmd耍的十分开心,还自称为“黑客”,着实比较搞笑.他们那些花里胡哨的东西在外行看来十分nb,但只要略懂一些,就会发现他们的那些十…

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(三),单表查询

前言 Navicat Premium 17 数据表需要经常清缓存,不然之前的自增的数据可能会一直存在,所以把之前的表删除重新创建是对练习数据库最简单的办法。新建数据库的命令如下: /* 创建有 自增主键的属性id,非空的属性name,唯…

如何使用ssm实现基于BS的超市商品管理系统的设计与实现+vue

TOC ssm787基于BS的超市商品管理系统的设计与实现vue 研究背景与现状 时代的进步使人们的生活实现了部分自动化,由最初的全手动办公已转向手动自动相结合的方式。比如各种办公系统、智能电子电器的出现,都为人们生活的享受提供帮助。采用新型的自动化…

TypeScript面向对象 02

抽象类 以abstract开头的类是抽象类。抽象类和其他类区别不大,只是不能用来创建对象。抽象类就是专门用来被继承的类。 抽象类中可以添加抽象方法。定义一个抽象方法使用abstract,没有方法体。抽象方法只能定义在抽象类中,子类必须对抽象方…

一些硬件知识(二十七)

单片机一般使用NOR FLASH ,这是因为NOR FLASH支持字节级的随机读取,可以直接运行存贮其中的程序,NOR FLASH支持读取和执行存储其中的指令,而无需将程序拷贝到RAM中才可执行。NAND FLASH适用于大容量的数据存储,他的读写…

【Canvas与标志】灰座橙底红芯辐射标志

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>灰座橙底红芯辐射标志</title><style type"text/css&q…

msvcp140.dll丢失的解决方法,详细解读6种解决方法

在使用电脑时&#xff0c;我们可能会遇到提示缺少msvcp140.dll的错误信息。这个提示意味着我们的电脑中缺少MSVCP140.dll这个文件&#xff0c;它是某些程序运行所必需的。如果我们遇到这个问题&#xff0c;应该如何解决呢&#xff1f;本文将详细解析如何解决msvcp140.dll丢失的…

qemu模拟arm64环境-构建6.1内核以及debian12

一、背景 手头没有合适的arm64开发板&#xff0c;但是需要arm的环境&#xff0c;于是想到qemu模拟一个。除了硬件交互以外&#xff0c;软件层面的开发还是都可以实现的。 虚拟机还能自定义内存大小和镜像大小&#xff0c;非常适合上板前的验证&#xff0c;合适的话再买也不迟。…

深度学习:5种经典神经网络模型介绍

目录 1. LeNet&#xff1a;CNN的鼻祖 2. AlexNet&#xff1a;深度学习的开山之作 3. VGGNet&#xff1a;深度与简洁的结合 4. GoogLeNet&#xff1a;Inception模块的创新 5. ResNet&#xff1a;残差学习的革命 卷积神经网络&#xff08;CNN&#xff09;已经发展为图像识别…

张雪峰谈人工智能技术应用专业的就业前景!

一、张雪峰谈人工智能技术应用专业 在教育咨询领域&#xff0c;张雪峰老师以其深入浅出的讲解和前瞻性的视角&#xff0c;为广大学子提供了宝贵的专业选择建议。对于人工智能技术应用专业&#xff0c;张雪峰老师通常给予高度评价&#xff0c;认为这是一个充满无限可能且就业前…

DELL SC compellent存储的四种访问方式

DELL SC存储&#xff08;国内翻译为 康贝存储&#xff0c;英文是compellent&#xff09;, compellent存储是dell在大概10多年前收购的一家存储&#xff0c;原来这个公司就叫做compellent。 本文的阅读对象是第一次接触SC存储的技术朋友们&#xff0c;如何访问和管理SC存储。总…

陀螺仪LSM6DSV16X与AI集成(13)----中断获取SFLP四元数

陀螺仪LSM6DSV16X与AI集成.13--中断获取SFLP四元数 概述视频教学样品申请源码下载硬件准备SFLP开启INT中断中断读取传感器数据主程序演示 概述 本文将介绍如何通过中断机制获取 LSM6DSV16X 传感器的 SFLP&#xff08;Sensor Fusion Low Power&#xff09;四元数数据。LSM6DSV1…

深入剖析 Golang 的错误处理机制:让你的代码更加健壮与优雅

在 Go 语言中&#xff0c;错误处理是程序健壮性的重要组成部分。不同于许多其他编程语言使用的 try-catch 异常处理机制&#xff0c;Go 采用了一种更加简洁的方式&#xff0c;通过函数返回值处理错误。这种设计使得错误处理逻辑更加显式&#xff0c;代码也更容易理解和维护。 文…

Python 工具库每日推荐 【markdown2】

文章目录 引言Python文本处理库的重要性今日推荐:markdown2工具库主要功能:使用场景:安装与配置快速上手示例代码转换为HTML代码解释实际应用案例案例:博客文章处理案例分析高级特性自定义扩展安全模式命令行使用性能优化技巧扩展阅读与资源优缺点分析优点:缺点:总结【 已…