BMVC 23丨多模态CLIP:用于3D场景问答任务的对比视觉语言预训练

来源:投稿 作者:橡皮
编辑:学姐

论文链接:https://arxiv.org/abs/2306.02329

摘要:

训练模型将常识性语言知识和视觉概念从 2D 图像应用到 3D 场景理解是研究人员最近才开始探索的一个有前景的方向。然而,2D 提炼知识是否可以为下游 3D 视觉语言任务(例如 3D 问答)提供有用的表示仍然尚未得到充分研究。在本文中,我们提出了一种新颖的 3D 预训练视觉语言方法,即 Multi-CLIP,该方法使模型能够学习基于语言的且可转移的 3D 场景点云表示。我们通过对比目标最大化编码的 3D 场景特征与 CLIP 空间中相应的 2D 多视图图像和文本嵌入之间的一致性,从而利用 CLIP 模型的表征能力。为了验证我们的方法,我们考虑了 3D 视觉问答 (3D-VQA) 和 3D 情境问答 (3D-SQA) 具有挑战性的下游任务。为此,我们开发了新颖的基于多模态变压器的架构,并演示了我们的预训练方法如何提高其性能。定量和定性实验结果表明,Multi-CLIP 在 3D-VQA 和 3D-SQA 下游任务中的性能优于最先进的工作,并产生结构良好的 3D 场景特征空间。

1.引言

人类本质上具有文本和视觉结构的耦合表征来塑造他们对世界的感知。近年来,视觉和语言研究在开发有效绘制视觉和文本模式之间对应关系的模型方面取得了显着进展。

第一个视觉和语言任务是视觉问答(VQA),它需要高级常识推理以及增强的文本和视觉理解,其中模型根据图像中的视觉内容预测答案。这项任务的主要方法利用精心设计的预训练策略和基于多模式变压器的架构,这些架构学习可概括的上下文文本和视觉嵌入。然而,这些方法仅限于 2D 视觉信息,这种限制影响了它们在许多 3D 世界应用中的可用性,例如机器人和 AR/VR。

在这个方向上,最近的工作旨在将 VQA 扩展到 3D 领域。最近发布的两个基准测试,即 ScanQA和 SQA3D,分别介绍了 3D 视觉问答(3D-VQA)和 3D 情境问答(3D-SQA)的任务。在 3D-VQA 设置中,模型从丰富的 RGB-D 室内扫描接收 3D 场景的视觉信息,并且必须回答有关场景内容的给定问题并定位所涉及的对象。在 3D-SQA 设置中,提供了额外的文本输入来描述场景中代理的情况(即位置和方向)。任务是首先了解智能体的情况,然后回答有关周围环境的问题。然而,将 2D VQA 方法扩展到 3D 领域并非易事,因为 3D 模型面临着理解复杂几何结构和对象之间空间关系的挑战。

图 1:我们的预训练方法鼓励通过对比损失将 3D 场景表示与 CLIP 空间中的相应文本和多视图图像嵌入对齐。

为了赋予模型 3D 语义理解和推理能力,出现了一条新的研究方向。最近的工作利用基础模型的 2D 知识,例如 CLIP [9],并在 3D 对象识别和 3D 语义分割任务上实现了最先进的零样本性能。 3D 表示学习的其他工作通过利用预训练策略来解决这些任务。采用对比像素到点方法将2D视觉信息传输到3D模型,探索了一种无监督预训练方案来对齐3D点云和体素表示。然而,据我们所知,尚未提出用于视觉语言任务(例如 3D 问答)的借口方法来指导模型将场景级 3D 视觉输入与语言线索和 2D 信息相关联。

在这项工作中,我们提出了 Multi-CLIP,这是一种简单而有效的 3D 视觉语言 (V-L) 预训练方法,可帮助模型学习可转移且具有语义意义的场景表示。我们证明,注入来自大规模预训练 2D 视觉和语言模型的知识可以增强模型基于 3D 场景的感知,并提高下游 3D 视觉语言任务的性能。为此,我们开发了一个基于 Transformer 的 3D 场景编码器模块,它通过对场景对象特征之间的空间关系进行建模来捕获整体 3D 场景表示。我们提出的预训练目标是通过训练场景编码器将 3D 扫描的外观和几何特征投影到具有所需属性的可解释嵌入空间来促进 3D 点云理解。这可以通过将 3D 场景感知嵌入与 CLIP生成的相应文本和多视图图像表示对齐来实现。

为了验证我们方法的有效性,我们考虑了 3D-VQA 和 3D-SQA 具有挑战性的下游任务。为此,我们将预训练的 3D 场景编码器的权重转移到一种新颖的 3D 视觉语言架构中,该架构融合了多模态表示并以监督方式微调模型。我们的微调模型在 3D-VQA 和 3D-SQA 任务以及参考对象定位的辅助任务上实现了最先进的结果。我们还提供了预训练后所学习的 3D 场景特征的可视化,证明我们的模型学习语义结构的潜在空间中的映射,其中具有相似属性的场景聚集在一起。

2.相关工作

3D问答。启动语言驱动的 3D 场景理解研究的任务是 3D 语言基础,其中模型必须在文本描述的指导下定位场景中的对象。基于这些进展,提出了一项新任务,即 3D 视觉问答,它测试模型的空间关系理解和常识推理能力。在此问题中,模型通常以 3D 场景扫描的形式接收 3D 视觉信息,并负责回答有关场景的问题。在这个方向上已经提出了一些基准,如基于 ScanNet场景引入了一个新的 3D-VQA 数据集,即 ScanQA,并开发了一种联合建模 3D 对象和问题特征的架构来预测正确答案。最近,Ma 等人提出了 SQA3D,一个用于具体场景理解和问题回答的数据集。在此设置中,代理必须按照文本提示的描述定位其在 3D 场景中的位置,并回答有关其环境的问题。在这项工作中,我们开发了新颖的架构来处理 3D-VQA 和 3D-SQA 的任务,并表明我们的预训练方法在 ScanQA 和 SQA3D 基准上取得了最先进的结果。

2D 和 3D 视觉语言预训练。在 2D 领域,V-L 预训练已经得到了彻底的研究。用于语言和图像理解任务的方法在很大程度上受益于大规模 V-L 数据集的广泛预训练,从而能够提取有意义的图像文本表示。两个典型的例子是 VL-BERT和 UNITER。这些架构的核心是多模态转换器编码器,它利用丰富的预训练策略进行全局图像文本对齐和细粒度单词区域映射。

在 3D 领域,当前最先进的预训练方法侧重于学习增强的 3D 点云语义属性,这些属性可以成功部署在下游任务中,例如 3D 对象分类和场景分割。最初的工作重点是学习可转移和增强不变的点云表示。在 DepthContrast中,作者通过实例辨别目标提出了点云和体素架构的联合预训练框架。最近的工作通过利用大规模 2D 模型,采用跨模式预训练方法。在其他工作中,作者使用像素到点对比损失将像素级和点级特征映射到相同的潜在空间。类似地,在 CrossPoint中,作者通过自监督对比学习强制执行对象特征的 3D-2D 对应性和仿射点云变换的不变性。然而,这些方法研究的是 2D 图像背景下的预训练,或者专注于单个对象而缺乏场景背景。据我们所知,基于语言的 3D 场景推理和问答任务的预训练方法尚未被探索,这些方法利用文本、2D 和 3D 视觉模式之间的协同作用,通过这项工作,我们的目标是激发人们对这个方向的兴趣。

3.提出的方法

我们提出了一种代理方法(图 1),通过对比学习损失将 3D 场景表示与 CLIP 空间中相应的文本和多视图图像嵌入对齐。为了证明其有效性,我们 (a) 以此目标预训练 3D 场景编码器(第 3.1 节),以及 (b) 将学习到的表示转移到新颖的 3D V-L 模型,并针对 3D-VQA 的下游任务对其进行微调(第 3.2 节)和 3D-SQA(第 3.3 节)。由于两个下游任务的问题设置不同,我们稍微修改了 3D V-L 模型的架构,以独立地训练每个任务。

3.1 预训练框架概述

3D 场景编码器。我们将场景建模为由 N 个点组成的 RGB 颜色点云,p ∈ R N×6 ,由 3D 场景编码器处理以生成场景对象的整体表示。场景编码器 fθ 包含一个带有预先训练的 PointNet++主干的 VoteNet,它输出一组 M 点簇,Cv ∈ RM×128,表示具有丰富点特征的 3D 对象备选。 VoteNet 模型后面是一个transformer编码器层,它利用自注意力通过建模对象的空间关系来细化对象表示。我们将场景编码器 fθ 获得的最终场景表示表示为 C ∈ RM×128 。

3D 场景编码器预训练。 3D-VQA 和 3D-SQA 的检查任务需要常识推理以及对场景中文本和 3D 对象区域之间的潜在关系的深入理解。因此,我们预训练方法的目标是通过将对 CLIP 的丰富 2D 视觉和语言理解转移到 3D 模型来鼓励判别性特征学习。为了实现这一目标,我们的目标是最大限度地提高 3D 场景编码器 fθ 生成的场景级特征与相应的 CLIP 文本和多视图图像表示之间的一致性。为了学习场景的增强 2D 表示,我们通过沿 z 轴等角度旋转从五个不同的视图渲染它。这些视图由 CLIP 图像编码器处理,我们通过对它们进行平均来融合多视图特征,以获得视图鲁棒的场景表示 Zimage。我们通过 CLIP 的文本编码器将场景的文本描述嵌入到相同的特征空间中,接收文本表示 Ztext。

图 2:针对 3D-VQA(左)和 3D-SQA(右)两个下游任务提出的模型架构。

为了生成 3D 场景全局表示 Zscene,我们遵循[27]的做法,并将可学习的分类标记附加到 VoteNet 提取的对象特征的输入序列中。 Transformer 编码器输出处的该 token 的状态(即全局特征)通过线性投影头投影到 R d 中的 CLIP 特征空间。我们的目标是对齐文本、图像和点云模式。为了实现这一目标,我们通过修改 InfoNCE 损失,利用 3D-2D 和 3D 文本噪声对比估计 (NCE) 损失进行对比学习。我们提出的损失鼓励模型使 3D 场景特征接近其相应的 2D 图像和文本特征,同时将它们与其他不同的 2D 图像和文本嵌入分开。正式地,

其中 (Zi,scene, Zi,text) 和 (Zi,scene, Zi,image) 分别是批次中每个样本 i 的正文本场景和图像场景对,B 是批次大小,τ 是温度系数。

形式上,预训练的最终损失定义为

其中我们设置 α, β = 0.5。

3.2 3D-VQA 模型架构

我们的下游 3D-VQA 任务架构(图 2)由三个模块组成:预训练的 3D 场景编码器 fθ(处理 3D 场景点特征)、CLIP 文本编码器(生成问题词嵌入)和 3D 视觉语言转换器融合视觉和问题表征。该模型的任务是找到问题的正确答案并定位问题所引用的目标对象。

为了处理这个问题,我们使用 CLIP 的文本编码器来获得 512 维的单词级嵌入 Q ∈ R Nq×512,其中 Nq 是问题中的单词数量。由场景编码器 fθ 提取的单词和 3D 场景特征使用两个独立的线性层转换为相同的隐藏维度 h。然后,它们通过两层转换器编码器连接和融合,该编码器利用自注意力来建模模内和模间关系。更新的场景对象特征 C' ∈ RM×h 被转发到线性层,该线性层通过确定 M 个对象框中的每一个与问题相关的可能性来执行目标对象定位。在 CLIP 之后,我们将问题的更新的 EOT 嵌入(序列中的最后一个标记)视为池问题特征 Q′ ∈ R h 并将其用作两个线性分类器的输入。第一个通过将 Q′ 投影到 Na 候选答案的向量 a ∈ R Na 中来预测正确答案。第二个预测 18 个 ScanNet类中的哪些对象与问题相关。

损失函数。我们将最终损失建模为四项的线性组合。我们利用[13]中定义的参考对象定位损失 Lloc 和 VoteNet [25] 的对象检测损失 Ldet。为了进一步监督训练,我们包括一个对象分类损失 Lobj ,它被建模为多类交叉熵损失和一个答案分类损失 Lans ,它是一个二元交叉熵(BCE)损失函数,因为可能有多个候选人回答。因此,总损失定义为Lvqa = Ldet + Lobj + Lans + Lloc。

3.3 3D-SQA 模型架构

在 3D-SQA 中,模型会获得一个额外的输入句子,用于描述场景中代理的情况并回答相关问题。因此,我们修改了架构(图 2),将这种情况纳入我们的管道中。我们利用 CLIP 的文本编码器获得 512 维的词级情境嵌入 S ∈ R Ns×512,其中 Ns 是情境描述中的词数。

情境词嵌入 S 用作转换器解码器的输入(充当查询标记),3D 场景特征 C 用于生成键和值。我们利用交叉注意模块来捕获它们之间的关系,并根据情况生成以对象为中心的特征标记。这些被转发到第二个转换器解码器,在那里它们处理问题 Q 的语言标记以产生最终表示。最后,我们利用两个 MLP,一个用于预测问题的答案 a ∈ R Na,另一个用于预测场景中智能体的位置 l = (s pos, srot)。

损失函数。我们采用与上一节中描述的类似的损失公式。为了使其适应 3D-SQA 任务,我们用两个辅助 MSE 损失 Lpos 和 Lrot 代替对象定位和分类损失,这两个损失鼓励模型准确预测所描述输入中代理的位置 s pos 和方向 s rot分别情况。方向表示为四元数 (x, y, z, w),位置表示为 3D 坐标 (x, y, z)。因此,总损失定义为 Lsqa = Ldet + Lans + Lpos + Lrot。

4.实验

在本节中,我们通过将预训练 3D 网络的学习表示转移到两个下游 3D 视觉语言任务来验证我们的方法。评估任务是 (a) ScanQA 数据集上的 3D 视觉问答和参考对象定位的辅助任务,以及 (2) SQA3D 数据集上的 3D 情境问答。

4.1 实验设置

数据集。 ScanQA数据集包含 ScanNet数据集的 800 个室内 3D 场景的 41,363 个不同的问答对和 3D 对象定位注释。 ScanQA 还包括两个带对象注释和不带对象注释的测试集。 SQA3D数据集基于 650 个 ScanNet 场景提供了大约 6,800 种独特的情况,并附有针对这些情况的 20,400 个描述和 33,400 个不同的推理问题。 ScanNet 是内部空间 3D 网格重建的大规模带注释数据集。在预训练阶段,我们使用 ScanRefer 数据集获取文本描述,该数据集提供了 800 个 ScanNet 场景的 51,583 条描述。我们还使用 ScanNet 点云数据通过 Open3D 软件渲染多个视图的 RGB 图像。

实施细节。我们使用 Adam优化器,使用 16 的批量大小、1e-4 的学习率和 1e5 的权重衰减,对 3D 场景编码器进行 15K 次迭代的预训练。我们使用场景编码器的预训练权重,并在 ScanQA 上微调 3D-VQA 网络 40 个时期,初始学习率为 5e-4,我们在第 15 个时期将其降低了 0.2 倍。同样,我们使用相同的初始学习率对 SQA3D 上的 3DSQA 网络进行 50 个 epoch 的微调。为了减轻过度拟合,我们使用 [−5°, 5°] 范围内的随机角度围绕所有三个轴进行旋转,并在所有方向上随机平移 0.5 m 范围内的点云。我们还使用了随机长方体增强,它从输入点云中提取随机长方体。

4.2 结果

3D 视觉问答。为了衡量我们的模型在 3D-VQA 上的下游性能,我们报告了 EM@1 指标,它是预测答案与任何真实答案完全匹配的预测百分比。我们引入了句子评估指标BLEU、ROUGE-L、METEOR和CIDEr。这些指标对于评估稳健的答案匹配非常重要,因为某些问题有多种可能的答案表达。为了评估所引用的对象定位精度,我们报告了 Acc@0.25 和 Acc@0.5 指标,它们是与地面事实的 IoU 分别高于阈值 0.25 和 0.5 的边界框预测的百分比。作为基线,我们使用当前最先进的 ScanQA以及 ScanRefer+MCAN方法,其中预训练的 ScanRefer模型识别引用的对象并应用 MCAN 模型到它周围的图像。我们还比较了从头开始训练的模型的性能。结果如表1和表2所示。通过我们的预训练方法,我们报告问题回答指标显着增加,Acc@0.25 和 Acc@0.5 指标分别提高了 3.03% 和 2.83%。这验证了我们的预训练策略在问答和引用对象定位方面的有效性。我们还观察到我们的方法比 ScanQA 基线取得了显着的改进。

表 2:ScanQA 有效数据集上参考对象定位结果的比较。

3D 情境问答。我们在 SQA3D 测试集上进一步评估我们的方法。我们采用EM@1作为我们的评估指标。我们在表 3 中报告了我们的结果,其中我们使用当前最先进的方法作为基线。在对 SQA3D 训练分割进行预训练和微调后,我们报告与从头开始训练相比,答案准确性有了明显的性能提升。

表 3:SQA3D 测试数据集上的 3D 情境问答结果比较。

4.3 可视化

在图 4 中,我们提供了预训练 3D 场景编码器学习特征的 T-SNE可视化,无需对下游任务进行微调。我们观察到具有语义相似属性(即相同场景类型)的场景在嵌入空间中形成簇。这凸显了该模型在使用丰富的 2D 视觉和语言信息进行预训练时获得的高级语义理解能力。此外,我们观察到,与使用常用的余弦相似性损失来对齐 3D-2D 和 3D 文本特征相比,我们提出的对比预训练目标会在特征空间中产生更具辨别力的表示,如稍后在 4.4 节中讨论的。

图 4:ScanNet 中场景级特征的 T-SNE 可视化。在预训练期间学习的 3D 场景编码器权重会产生结构化的特征表示空间。

4.4 消融实验

为了证明我们的预训练流程设计选择的合理性,我们在 SQA3D 上进行了消融研究(表 4)。

多个视图有帮助吗?许多工作已经证实,学习对视图变化具有鲁棒性的多模态表示有利于 3D 对象和场景的理解。因此,我们假设将 3D 场景点云渲染到多个 2D 平面并聚合多视图信息将在所检查的下游任务中带来性能提升。我们将使用 5 个视图进行预训练的结果与仅使用自上而下的场景视图进行训练的结果进行比较。可以看出,添加更多视图会提高准确性。这证实了我们的直觉,即多视图表示可以促进 3D 场景和语言查询之间的对应学习。

对比损失是一个好的选择吗?我们通过用余弦相似距离损失代替对比目标,通过实验研究对比学习是否是我们的预训练策略的最佳选择。我们可以从表 4 中的实验结果和图 4 中的特征空间可视化中推断出,对比学习可以提高下游性能,并鼓励模型捕获更有效地区分相似和不相似数据点的表示。

所有损失项都很重要吗?我们在对比损失公式中探索了每个项的额外好处。结果表明,删除 Ltext 或 Limage 都会降低准确性。这验证了我们的假设,即将 3D 点云与其语言描述和 2D 多视图图像连接起来可以促进空间关系理解和推理。

表 4:SQA3D 测试集的消融研究。

5.结论

在本文中,我们提出了 Multi-CLIP,这是一种新颖的 V-L 预训练策略,可帮助模型学习语义上有意义且基于语言的 3D 场景特征,这些特征可以转移到 3D 场景推理和问答下游任务。这是通过对比目标将 3D 提取的特征与相应的字幕对齐并在 CLIP 嵌入空间中渲染的 2D 多视图图像来实现的。我们在 3D-VQA 和 3D-SQA 下游任务上的定量和定性结果表明了我们的方法在学习丰富的 3D 场景表示方面的有效性,并在具有挑战性的 ScanQA 和 SQA3D 基准上展示了最先进的性能。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“VQA”获取视觉问答顶会论文合集

码字不易,欢迎大家点赞评论收藏

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

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

相关文章

地区 IP 库

地区 & IP 库 yudao-spring-boot-starter-biz-ip (opens new window)业务组件,提供地区 & IP 库的封装。 #1. 地区 AreaUtils (opens new window)是地区工具类,可以查询中国的省、市、区县,也可以查询国外的国家。 它的数据来自 …

kubectl声明式资源管理命令

目录 一、声明式资源管理介绍: 二、声明式相关命令: 1. 语法格式: 2. 查看资源配置清单: 3. 解释资源配置清单: 4. 修改资源配置清单并应用: 4.1 离线修改: 4.2 在线修改: 5. 删除资…

【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline

前言 虚拟机用户名: root 无密码 设备逆向与漏洞分析 程序没有去符合, 还是比较简单. 实例结构体如下: 先总体说一下流程: encode 为 base64 编码函数, decode 为 base64 解码函数. 然后 encPipe 和 decPipe 分别存放编码数据和解码数据, 分别有四个: 其中 EncPipeLine 中…

Unity地面交互效果——4、制作地面凹陷轨迹

大家好,我是阿赵。   上一篇介绍了曲面细分着色器的基本用法和思路,这一篇在曲面细分的基础上,制作地面凹陷的轨迹效果。 一、思路分析 这次需要达到的效果是这样的: 从效果上看,这个凹陷在地面下的轨迹&#xff0…

PostMan授权认证使用

Authorization 对于很多应用,出于安全考虑我们的接口并不希望对外公开。这个时候就需要使用授权(Authorization)机制。 授权过程验证您是否具有访问服务器所需数据的权限。 当发送请求时,通常必须包含参数,以确保请求具有访问和返回所需数据…

蓝桥杯算法竞赛第一周题型总结

本专栏内容为:蓝桥杯学习专栏,用于记录蓝桥杯的学习经验分享与总结。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库🚚 🌹&#x1f33…

skynet学习笔记02— skynet介绍、skynet基础API与环境变量

01、Skynet与Actor模型 在系统Skynet之前,先了解一下Skynet与Actor模型,下列是风云大佬的介绍以及一个大佬的博客 https://github.com/cloudwu/skynet/wiki/GettingStartedhttps://blog.csdn.net/qq769651718/article/details/79432793 02、Skynet基础…

python升级pip的时候一直失败

如图,一直提示使用 python.exe -m pip install --upgrade pip 进行升级pip,但是执行这句命令又不成功.然后综合了几篇文章以后使用了下面的命令可以升级了 python -m pip install --upgrade pip --user -i https://mirrors.aliyun.com/pypi/simple/ 主要是在推荐的语句上使用…

润色论文Prompt

你好,我现在开始写论文了,我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx,我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…

Android Studio新建项目下载依赖慢,只需一个操作解决

新建的安卓工程,下载依赖贼慢怎么办?水一篇吧。 首先新建工程,建好以后项目就自动开始下载了,底部开始出现进度条,但是进度条一直不怎么动,网速也就十几k,要是等他下载得下一天。 直入主题&…

第四节(2):修改WORD中表格数据的方案

《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网…

Django之三板斧的使用,全局配置文件介绍,request对象方法,pycharm链接数据库,Django链接数据库,ORM的增删改查

【1】三板斧(3个方法)的使用 Httpresponse() 括号内写什么字符串,返回的就是什么字符串返回的是字符串 render(request, 静态文件 ) request是固定的静态文件是写在templates文件夹里面的,如,HTML文件 redirect( 重定向的地址 ) 重…

Markdown使用教程

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

基于VSCode + PlatformIO创建运行第一个esp32程序

文章目录 使用VSCode创建项目安装驱动下载驱动安装驱动连接开发板电脑识别开发板 编写程序烧录程序第一步、编译程序第二步、烧录程序第三步、开发板观察效果 原理讲解项目源码 在之前的课程,我们已经介绍了ESP32单片机,并且也已经安装好了开发环境&…

干洗店洗鞋店管理系统app小程序;

干洗店洗鞋店管理系统是一款专业的洗衣店管理软件,集成了前台收费收银系统、会员卡管理系统和财务报表系统等强大功能。界面简洁优美,操作直观简单。这款系统为干洗店和洗衣店提供了成本分析、利润分析、洗衣流程管理等诸多实用功能,用全新的…

深度学习 opencv python 公式识别(图像识别 机器视觉) 计算机竞赛

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的数学公式识别算法实现 该项目较为新颖,适合作为竞赛课题方向,学…

嵌入式养成计划-49----ARM--计算机相关理论--ARM相关内容

一百二十三、计算机相关理论 123.1 计算机的组成 目前的计算机都还是 冯诺依曼体系 ,也就是由:输入、输出、运算器、存储器、控制器,这个五个部分构成。输入:Input,常见的输入设备,比如鼠标,键…

LeetCode | 234. 回文链表

LeetCode | 234. 回文链表 O链接 这里的解法是先找到中间结点然后再将中间节点后面的节点逆序一下然后再从头开始和从中间开始挨个比较如果中间开始的指针到走最后都相等,就返回true,否则返回false 代码如下: struct ListNode* reverseLis…

18. 深度学习 - 从零理解神经网络

文章目录 本文目标预测趋势与关系波士顿房价预测 Hi, 你好。我是茶桁。 我们终于又开启新的篇章了,从今天这节课开始,我们会花几节课来理解一下深度学习的相关知识,了解神经网络,多层神经网络相关知识。并且,我们会尝…

ModStartBlog v8.5.0 评论开关布局调整,系统后台全面优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 …