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

【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯

在这里插入图片描述


文章目录

  • 摘要
  • 一、引言
  • 二、主要方法
    • 2.1 3D-aware Memory Bank
    • 2.2 三维分割的渲染与下游应用
  • 三、实验
    • 消融实验
    • 应用: Scene Manipulation


地址:https://www.gaga.gallery
标题:Gaga: Group Any Gaussians via 3D-aware Memory Bank
来源:加利福尼亚大学;Nvidia;Google

摘要

  Gaga,一个通过利用zero shot分割模型预测的不一致的2D mask来重建和分割开放世界的3D场景的框架。与之前严重依赖于视频物体跟踪的3D场景分割方法相比,Gaga利用了空间信息,并有效地关联了不同相机pose中的物体mask
。通过消除训练图像中连续视图变化的假设,Gaga展示了对相机姿态变化的鲁棒性,特别有利于稀疏采样的图像,确保了精确的mask标签的一致性。此外,Gaga适应了来自不同来源的二维分割mask,并在不同的开放世界zero shot分割模型中表现出了稳健的性能
,增强了其通用性。

  

  


一、引言

  有效的开放世界三维分割对场景的理解和操作至关重要。尽管2D分割技术有了显著的进步,例如SAM和EntitySeg ,将这些方法扩展到3D领域,但遇到了确保多视图图像之间一致的mask标签分配的挑战。具体来说,不同视图的mask可能有不同的mask id,因为多视图图像是由二维分割模型单独处理的。简单地将这些不一致的二维掩模提升到3D中会导致模糊性,导致三维场景分割效果较差。因此,我们认为,在将每个掩模提升到3D之前,为每个掩模分配一个多视图一致的通用掩模ID是至关重要的。我们将此任务称为掩码关联。

  先前的研究工作[9,26]建立在三维重建的高斯溅射[3DGS],试图通过将多视图图像数据集视为视频序列,采用现成的视频对象跟踪方法[6]来解决这一任务。然而,这种设计依赖于多视图图像之间的视图变化最小的假设,这种情况在现实世界的3D场景中可能并不一致地存在。因此,这些方法会与类似的物体或被遮挡的物体作斗争,这些物体会不时地消失和重新出现,如图2所示。

在这里插入图片描述

  因此,我们分析了三维mask关联和视频对象跟踪任务之间的基本差异:对固有的三维信息的利用。具体来说,不同视图的同一对象的mask应对应于同一组三维高斯。因此,如果两组分散的三维高斯分布之间有很大的重叠,我们可以从具有相同通用mask ID的不同视图分配两个mask

  基于这种直觉,我们提出了Gaga,一个框架,将任何3D高斯进行分组,并在不同视图中呈现一致的3D分割。给定一组假设的RGB图像,我们首先使用高斯溅射法重建一个三维场景,并使用开放世界分割方法提取二维掩模。随后,我们迭代地构建一个三维感知存储库,它收集和存储按类别分组的高斯数据。具体来说,对于每个输入视图,我们使用相机参数将每个二维掩模投影到三维空间中,并在内存库中搜索与失投影掩模重叠最大的类别。根据重叠的程度,我们要么将掩码分配给一个现有的类别,要么创建一个新的类别。最后,按照上述掩模关联过程,我们利用一致的二维掩模学习每个高斯分布的特征进行渲染分割。

  我们的方法Gaga能够1)合成新的RGB视图图像,分割具有固有的三维一致性;2)基于二维分割掩模对三维高斯分布进行分组,为场景操作提供精确的三维实例分割;3)适应任何二维分割方法,不需要额外的掩模预处理。我们的贡献总结如下:

  • 我们提出了一个框架,使用由开放世界分割模型生成的不一致的二维掩模来重建和分割三维场景。
  • 为了解决二维掩模跨视图的不一致性,我们设计了一个3守护软件存储库,收集相同语义组的高斯数据。然后使用这个内存库跨不同的视图对齐2D掩模。
  • 研究结果表明,该方法可以有效地利用任何二维分割掩模,使其易于适用于合成新的视图图像和分割mask。
  • 我们在不同的数据集和具有挑战性的场景上进行了全面的实验,包括稀疏输入视图,以定性和定量地证明所提方法的有效性

二、主要方法

  高斯的图像像素渲染公式:

在这里插入图片描述

  身份编码。每个高斯分配一个16维特征,通过分类器 L L L 解码为一个逐像素的分割mask ID m x , y m_{x,y} mx,y的每个像素(x,y):

在这里插入图片描述
产生的mask IDs 由 2D 分割masks监督。

2.1 3D-aware Memory Bank

  给定带pose图像,目标是重建一个具有语义标签的三维场景进行分割渲染。为此,首先利用高斯溅射法进行场景重建。然后使用一种开放世界的二维分割方法,如SAM [14]或EntitySeg [21]来预测每个输入图像的类未知分割。然而,由于分割模型独立地处理每个输入图像,所得到的掩模自然不是多视图一致的。为了解决这个问题,[9,26]假设附近的输入视图是相似的,并应用一个视频对象跟踪器来关联不同视图的不一致的2D掩模。然而,这个假设可能并不适用于所有的3D场景,特别是当输入视图是稀疏的时。

  Gaga的灵感来自于跨多个视图的面具关联任务和视频中的跟踪对象之间的根本差异:3D信息的整合。为了在不同的视图中可靠地生成一致的mask,我们提出了一种利用三维信息的方法,而不依赖于对输入图像的任何假设:在不同视图中属于同一实例的mask将对应于三维空间中的同一高斯群。因此,这些高斯分布应该被分组在一起,并分配一个相同的 group ID。

  我们首先将每个二维分割mask与其相应的三维高斯分布关联起来。具体地说,给定每个输入图像的pose,将所有三维高斯splat到相机帧上。随后,对于图像中的每个mask,识别出哪些三维高斯被投影在该mask中。这些高斯模型应该被识别为3D mask的表示,并作为关联不同视角的mask的指导。

  值得注意的是,mask通常描述了在当前相机pose下的前景物体的形状。然而,如图4 (a)所示,很大一部分高斯对二维分割mask的像素没有贡献,因为它们代表了位于后面的对象。为了解决这个问题,我们选择最接近相机帧的三维高斯的前x%作为mask对应的高斯。x是一个超参数,根据场景的性质进行调整。如图4 (b)行1所示,基于整个mask选择对应的高斯不能准确地表示大的mask的形状,且不能将不同像机pose的mask关联起来。为了解决这个问题,我们提出了一种策略,将图像划分为32个×32个patch,将每个patch内最接近像机帧的三维高斯的前x%的集合识别为mask m m m的对应高斯,记为G (m)。如图4 (b)行2所示,这种简单的策略有效地提高了不同视图间关联掩模的一致性。.

  3D-aware Memory Bank用于收集并分组三维高斯,用来关联不同视图中的mask:给定一组图像,先将第一张图像中每个mask的相应高斯分储到一个group中,并使用一个group ID来初始化3d感知记忆库。对于后续图像的二维mask,首先找到对应的高斯,然后将其分配给内存库中的已有group;如果它们与内存库中的现有group没有相似之处,则建立一个新的group

  通过高斯重叠,来分配Group ID。这里,我们通过共享高斯的百分比来定义两组3DGS的相似性。具体来说,给定二维mask m m md 对应的3DGS(记为 G ( m ) G(m) G(m) 和Memory Bank中的group i i i(记为G_i)的3DGS,计算共享高斯(利用索引) G ( m ) ∩ G i G(m)∩G_i G(m)Gi的重叠的比例:

在这里插入图片描述
如果group i i i在Memory Bank的所有组中与mask m m m 的重叠最高,且大于阈值,则:

在这里插入图片描述

2.2 三维分割的渲染与下游应用

  在分配group ID之后,由同一组3DGS投影的mask应该在不同的视图中具有相同的ID。与Gaussian grouping]类似,使用这些mask作为伪标签,并通过训练身份编码将它们提升到3D。由于已经预训练过3DGS,所以只修复其他属性(例如,位置、不透明度等)

  

  

三、实验

  数据集。使用了一个场景理解数据集LERF-Mask [26],以及两个室内场景数据集:Replica[23]和ScanNet [8]。LERF-Mask是基于LERF数据集[12],并由[26]的作者用任务和地面真相进行了注释。它包含了3个场景:figurines, ramen,和 teatime。对于每个场景,选择6-10个对象作为文本查询,并使用Grounding DINO [17]从渲染的分割中选择mask ID。Replica[23]和ScanNet使用了8个场景,每个场景包含180张训练图像和相同数量的图像用于测试。在ScanNet中使用了7个场景,每个场景包含超过300张训练图像和大约100张测试图像。请注意,所有注释的分割mask在训练期间都是不可用的。

  评估指标。使用mIoU和边界IoU(mBIoU)对LERF-Mask数据集进行评估。Replica和ScanNet使用真实全光学分割,不考虑类别信息。为了处理预测的和真实mask标签之间的差异,我们计算了基于IoU的最佳线性分配。此外,以IoU = 0.5为标准,我们报告了精度和召回率。

表1与表2:
在这里插入图片描述

在这里插入图片描述

  实验细节。我们使用SAM [14]和Entity[21]来分割2D掩码,通过对置信度较高的mask排序,分低于0.5的mask被丢弃。先训练30K原始高斯溅射,然后冻结其他参数,训练10K的身份编码;选择最接近相机帧的前20%三维高斯函数作为mask对应的3D高斯。新的group ID的重叠阈值设置为0.1。为了公平比较,我们训练高斯分组[26]进行40K迭代,所有用于训练三维高斯的参数的身份编码与[3DGS]和[Gaussian grouping]相同。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

消融实验

  Gaga对训练图像数量变化的鲁棒性(分别对replica数据集按比例0.3、0.2、0.1和0.05的副本稀疏采样),效果如表3:
在这里插入图片描述
在这里插入图片描述

与GaussianGrouping相比,Gaga对训练图像数量减少的敏感性较低,这可以从IoU下降值较小得到证明。可视化结果如图7所示。只有5%的训练数据,Gaga仍然可以提供准确的分割掩模,而高斯分组由于不准确的跟踪,无法为很大一部分物体提供掩模。

在这里插入图片描述

应用: Scene Manipulation

  Gaga实现了高质量、多视图一致的3D分割,有利于Scene Manipulation任务,因为我们可以准确地分割3D对象的高斯分布并编辑它们的属性。利用预先训练的具有身份编码的三维高斯模型,我们使用经过身份编码训练的分类器来预测每个三维高斯模型的掩模标签。随后,我们选择与目标对象共享相同mask标签的三维高斯,并编辑它们的属性,如对象着色、删除和位置移动

在这里插入图片描述

其他消融实验:

在这里插入图片描述


相关文章:

【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯

文章目录 摘要一、引言二、主要方法2.1 3D-aware Memory Bank2.2 三维分割的渲染与下游应用 三、实验消融实验应用: Scene Manipulation 地址:https://www.gaga.gallery 标题:Gaga: Group Any Gaussians via 3D-aware Memory Bank 来源:加利福…...

【Linux系统】—— 编译器 gcc/g++ 的使用

【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理(进行宏替换)2.2 编译(生成汇编)2.3 汇编(生成机器可识别代码)2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…...

读西瓜书的数学准备

1,高等数学:会求偏导数就行 2,线性代数:会矩阵运算就行 参考:线性代数--矩阵基本计算(加减乘法)_矩阵运算-CSDN博客 3,概率论与数理统计:知道啥是随机变量就行...

【数据结构篇】顺序表 超详细

目录 一.顺序表的定义 1.顺序表的概念及结构 1.1线性表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 二.动态顺序表的实现 1.准备工作和注意事项 2.顺序表的基本接口: 2.0 创建一个顺序表 2.1 顺序表的初始化 2.2 顺序表的销毁 2.3 顺序表的打印 3.顺序…...

Flink把kafa数据写入Doris的N种方法及对比。

用Flink+Doris来开发实时数仓,首要解决是如何接入kafka实时流,下面是参考Doris官方文档和代码,在自己项目开发的实践中总结,包括一些容易踩坑的细节。 目录 Routine Load方法 接入kafka实时数据 踩坑的问题细节 Flink Doris Connector方法 完整示例 Routine Load方法…...

leetcode刷题记录(七十八)——105. 从前序与中序遍历序列构造二叉树

(一)问题描述 105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)105. 从前序与中序遍历序列构造二叉树 - 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一…...

imread和jpeg_read在MATLAB中处理图像时的不同

目录 1.功能差异 2.输出格式 3.颜色空间 4.处理阶段 5.用途 6.性能 1.功能差异 imread:这个函数用于读取各种格式的图像文件(包括JPEG、PNG、BMP等)并将其转换为MATLAB中的矩阵。它适用于读取图像并直接在空间域中进行处理。jpeg_read…...

P9069 [Ynoi Easy Round 2022] 堕天作战 TEST_98 Solution

Description 给定长为 n n n 的序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​),有 m m m 个操作,分以下两种: modify ⁡ ( l , r , k ) \operatorname{modify}(l,r,k) modify(l,r,k):对于所有…...

SCPI命令笔记

1. 读取设备信息 *IDN? 2. 复位仪器 *RST 3. 清除设备的状态寄存器和事件队列 *CLS 4. 读取设备数据(发一个指令,读取一次) READ? 5. 读取设备电压(功能和第4条命令达到一样的效果) MEAS:VOLT? 6. 读取设备电流 (功能和第4条命令达到一样的效果) MEAS:CURR? 7.…...

TCP创建通信前的三次握手(为啥不是两次?)

1.三次握手的过程 客户端发送 SYN(同步)报文 客户端向服务器发送 SYN 标志的数据包,请求建立连接,表示 "你好,我要连接你"。 服务器回复 SYNACK(同步确认)报文 服务器收到 SYN 后&am…...

2024.ailx10的年终总结

已经工作7年啦,今年网络安全行业愈发寒冷,几乎所有友商都在做安全GPT,说实话,AI确实颠覆了传统的网络安全运营,以前需要安服处置告警,以后可能就不需要了,大家日子都不好过,越是简单…...

洛谷P8837

[传智杯 #3 决赛] 商店 - 洛谷 代码区&#xff1a; #include<stdio.h> #include<stdlib.h> int cmp(const void*a,const void *b){return *(int*)b-*(int*)a; } int main(){int n,m;scanf("%d%d",&n,&m);int w[n];int c[m];for(int i0;i<n;…...

【Day23 LeetCode】贪心算法题

一、贪心算法 贪心没有套路&#xff0c;只有碰运气&#xff08;bushi&#xff09;&#xff0c;举反例看看是否可行&#xff0c;&#xff08;运气好&#xff09;刚好贪心策略的局部最优就是全局最优。 1、分发饼干 455 思路&#xff1a;按照孩子的胃口从小到大的顺序依次满足…...

以太网详解(五)GMII、RGMII、SGMII 接口时序约束(Quartus 平台)

文章目录 接口时序Avalon Streaming 接口时序Receive TimingTransmit Timing GMII 接口时序Receive TimingTransmit Timing RGMII 接口时序Receive TimingTransmit Timing 如何创建 .sdc 约束文件三速以太网系统时钟信号创建 set_input_delay&#xff0c;set_output_delay 约束…...

Java中的错误与异常详解

Java中的错误与异常详解 Java提供了一种机制来捕获和处理程序中的异常和错误。异常和错误都继承自 Throwable 类&#xff0c;但它们有着不同的用途和处理方式。 1. Error&#xff08;错误&#xff09; Error 是程序无法处理的严重问题&#xff0c;通常由 JVM&#xff08;Java…...

使用 HTML 开发 Portal 页全解析

前言 在当今数字化时代&#xff0c;网站作为企业和个人展示信息、提供服务的重要窗口&#xff0c;其重要性不言而喻。而 Portal 页&#xff0c;作为网站的核心页面之一&#xff0c;承担着引导用户、整合信息等关键任务。那么&#xff0c;如何使用 HTML 开发一个功能齐全、界面…...

高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计

三、CentralCache&#xff08;中心缓存&#xff09;_内存设计 &#xff08;一&#xff09;Span的创建 // 页编号类型&#xff0c;32位下是4byte类型&#xff0c;64位下是8byte类型 // #ifdef _WIN64 typedef unsigned long long PageID; #else _WIN32 typedef size_t PageI…...

Js:DOM中的样式(包含行内样式、滚动样式、可见区域样式等)

这部分还在更新 1、 获取行内样式&#xff1a;元素.style.样式名称 2、 获取当前正在显示的样式&#xff08;只能读&#xff0c;不能修改&#xff0c;想要修改要使用style&#xff09;&#xff1a; ① 只有ie支持&#xff1a;元素.currentStyle.样式名称 ② 其他浏览器&…...

【leetcode 26】28.找出字符串中第一个匹配项的下标 | 实现 strStr()==❗不会❗==

在一个串中查找是否出现过另一个串&#xff0c;这是KMP的看家本领。 // 方法一 class Solution {public void getNext(int[] next, String s){int j -1;next[0] j;for (int i 1; i < s.length(); i){while(j > 0 && s.charAt(i) ! s.charAt(j1)){jnext[j];}if…...

Unity自学之旅04

Unity自学之旅04 Unity自学之旅④&#x1f4dd; 跳跃&#x1f42f; 攻击&#x1f984; GUIGUI前置&#xff0c;显示收集物品数量和角色HpUGUI游戏暂停和重新开始 &#x1f917; 总结归纳 Unity自学之旅④ &#x1f4dd; 跳跃 public class PlayerBehaviorRigid : MonoBehavio…...

Unreal Engine 5 C++ Advanced Action RPG 十章笔记

第十章 Survival Game Mode 2-Game Mode Test Map 设置游戏规则进行游戏玩法 生成敌人玩家是否死亡敌人死亡是否需要刷出更多 肯定:难度增加否定:玩家胜利 流程 新的游戏模式类游戏状态新的数据表来指定总共有多少波敌人生成逻辑UI告诉当前玩家的敌人波数 3-Survival Game M…...

[Unity 热更方案] 使用Addressable进行打包管理, 使用AssetBundle进行包的加载管理.70%跟练

在正常的开发过程中我们经常遇到一些关于热更的方案,有一些已有的方案供我们选择,但是实机情况往往不尽如人意,各有优缺点. 现在我们同样有一个热更的需求,但是要求打包简单,加载过程可查,防止出现一些资源和流程的问题. 下面介绍我在项目中使用的方案. 打包方面使用Addressabl…...

人工智能领域单词:英文解释

目录 1、前言2、单词组1&#xff1a;15个3、单词组2&#xff1a;15个4、单词组3&#xff1a;15个5、单词组4&#xff1a;15个6、单词组5&#xff1a;15个 1、前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加关注哦&#xff0…...

工业网口相机:如何通过调整网口参数设置,优化图像传输和网络性能,达到最大帧率

项目场景 工业相机是常用与工业视觉领域的常用专业视觉核心部件&#xff0c;拥有多种属性&#xff0c;是机器视觉系统中的核心部件&#xff0c;具有不可替代的重要功能。 工业相机已经被广泛应用于工业生产线在线检测、智能交通,机器视觉,科研,军事科学,航天航空等众多领域 …...

NextJs - ServerAction获取文件并处理Excel

NextJs - ServerAction获取文件并处理Excel 一. 客户端二. ServerAction 处理 一. 客户端 use client; import { uploadExcel } from actions/batchInquirySystem/api; import type { UploadProps } from antd; import { Upload } from antd;/*** 创建问询内容*/ const Page …...

【深度学习项目】语义分割-FCN网络(原理、网络架构、基于Pytorch实现FCN网络)

文章目录 介绍深度学习语义分割的关键特点主要架构和技术数据集和评价指标总结 FCN网络FCN 的特点FCN 的工作原理FCN 的变体和发展FCN 的网络结构FCN 的实现&#xff08;基于Pytorch&#xff09;1. 环境配置2. 文件结构3. 预训练权重下载地址4. 数据集&#xff0c;本例程使用的…...

集群、分布式及微服务间的区别与联系

目录 单体架构介绍集群和分布式架构集群和分布式集群和分布式区别和联系 微服务架构的引入微服务带来的挑战 总结 单体架构介绍 早期很多创业公司或者传统企业会把业务的所有功能实现都打包在一个项目中&#xff0c;这种方式就称为单体架构 以我们都很熟悉的电商系统为例&…...

ConvBERT:通过基于跨度的动态卷积改进BERT

摘要 像BERT及其变体这样的预训练语言模型最近在各种自然语言理解任务中取得了令人印象深刻的性能。然而&#xff0c;BERT严重依赖于全局自注意力机制&#xff0c;因此存在较大的内存占用和计算成本。尽管所有的注意力头都从全局角度查询整个输入序列以生成注意力图&#xff0…...

C# 网络协议第三方库Protobuf的使用

为什么要使用二进制数据 通常我们写一个简单的网络通讯软件可能使用的最多的是字符串类型&#xff0c;比较简单&#xff0c;例如发送格式为(head)19|Msg:Heart|100,x,y,z…&#xff0c;在接收端会解析收到的socket数据。 这样通常是完全可行的&#xff0c;但是随着数据量变大&…...

「2024 博客之星」自研Java框架 Sunrays-Framework 使用教程

文章目录 0.序言我的成长历程遇到挫折&#xff0c;陷入低谷重拾信心&#xff0c;迎接未来开源与分享我为何如此看重这次评选最后的心声 1.概述1.主要功能2.相关链接 2.系统要求构建工具框架和语言数据库与缓存消息队列与对象存储 3.快速入门0.配置Maven中央仓库1.打开settings.…...

【Elasticsearch】Springboot编写Elasticsearch的RestAPI

RestAPI 初始化RestClient创建索引库Mapping映射 判断索引库是否存在删除索引库总结 ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。 官方文档地址 由于ES目前最新版本是8.8&#xff0c;提供了全…...

Swift语言的学习路线

Swift语言的学习路线 引言 在现代程序开发中&#xff0c;Swift语言逐渐成为了移动应用程序开发的重要工具&#xff0c;尤其是在iOS和macOS平台上。自2014年发布以来&#xff0c;Swift以其易读性和强大的功能&#xff0c;受到越来越多开发者的青睐。对于初学者而言&#xff0c…...

63,【3】buuctf web Upload-Labs-Linux 1

进入靶场 点击pass1 查看提示 既然是上传文件&#xff0c;先构造一句话木马&#xff0c;便于用蚁剑连接 <?php eval($_POST[123])?> 将这两处的检查函数删掉 再上传木马 文件后缀写为.php 右键复制图片地址 打开蚁剑连接 先点击测试连接&#xff0c;显示成功后&…...

Leetcode:2239

1&#xff0c;题目 2&#xff0c;思路 循环遍历满足条件就记录&#xff0c;最后返回结果值 3&#xff0c;代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…...

自然语言处理与NLTK环境配置

自然语言处理(Natural Language Processing, NLP)是人工智能的重要分支,专注于计算机如何理解、分析和生成自然语言。自然语言是人类用于交流的语言,如中文、英文等,这使得自然语言处理成为沟通人与计算机的桥梁。近年来,NLP在诸多领域得到广泛应用,包括文本分析、语言翻…...

分布式搜索引擎02

1. DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1. DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c…...

使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法

在开发 Spring Boot 项目时&#xff0c;日志是调试和监控的重要工具。Spring Boot 默认支持 Logback 作为日志系统&#xff0c;并提供了 logback.xml 和 logback-spring.xml 两种配置方式。这篇文章将详细介绍这两者的区别、各自的优缺点以及最佳实践。 目录 一、什么是 Logbac…...

【爬虫开发】爬虫开发从0到1全知识教程第12篇:scrapy爬虫框架,介绍【附代码文档】

本教程的知识点为&#xff1a;爬虫概要 爬虫基础 爬虫概述 知识点&#xff1a; 1. 爬虫的概念 requests模块 requests模块 知识点&#xff1a; 1. requests模块介绍 1.1 requests模块的作用&#xff1a; 数据提取概要 数据提取概述 知识点 1. 响应内容的分类 知识点&#xff1a…...

鸿蒙UI(ArkUI-方舟UI框架)-开发布局

文章目录 开发布局1、布局概述1&#xff09;布局结构2&#xff09;布局元素组成3&#xff09;如何选择布局4&#xff09;布局位置5&#xff09;对子元素的约束 2、构建布局1&#xff09;线性布局 (Row/Column)概述布局子元素在排列方向上的间距布局子元素在交叉轴上的对齐方式(…...

代码随想录_字符串

字符串 344.反转字符串 344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 思路: 双指针 代…...

2025年1月17日(点亮三色LED)

系统信息&#xff1a; Raspberry Pi Zero 2W 系统版本&#xff1a; 2024-10-22-raspios-bullseye-armhf Python 版本&#xff1a;Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习目标&#xff1a;…...

Spring Boot自动配置原理:如何实现零配置启动

引言 在现代软件开发中&#xff0c;Spring 框架已经成为 Java 开发领域不可或缺的一部分。而 Spring Boot 的出现&#xff0c;更是为 Spring 应用的开发带来了革命性的变化。Spring Boot 的核心优势之一就是它的“自动配置”能力&#xff0c;它极大地简化了 Spring 应用的配置…...

React技术栈搭配(全栈)(MERN栈、PERN栈)

文章目录 1. MERN 栈2. PERN 栈3. React Next.js Node.js4. JAMstack (JavaScript&#xff0c; APIs&#xff0c; Markup)5. React GraphQL Node.js6. React Native Node.js结论 React作为前端框架已经成为了现代web开发的重要组成部分。在全栈开发中&#xff0c;React通常…...

Linux - 线程池

线程池 什么是池? 池化技术的核心就是"提前准备并重复利用资源". 减少资源创建和销毁的成本. 那么线程池就是提前准备好一些线程, 当有任务来临时, 就可以直接交给这些线程运行, 当线程完成这些任务后, 并不会被销毁, 而是继续等待任务. 那么这些线程在程序运行过程…...

以Python构建ONE FACE管理界面:从基础至进阶的实战探索

一、引言 1.1 研究背景与意义 在人工智能技术蓬勃发展的当下,面部识别技术凭借其独特优势,于安防、金融、智能终端等众多领域广泛应用。在安防领域,可助力监控系统精准识别潜在威胁人员,提升公共安全保障水平;金融行业中,实现刷脸支付、远程开户等便捷服务,优化用户体…...

使用Sum计算Loss和解决梯度累积(Gradient Accumulation)的Bug

使用Sum计算Loss和解决梯度累积的Bug 学习 https://unsloth.ai/blog/gradient&#xff1a;Bugs in LLM Training - Gradient Accumulation Fix 这篇文章的记录。 在深度学习训练过程中&#xff0c;尤其是在大批量&#xff08;large batch&#xff09;训练中&#xff0c;如何高…...

mfc操作json示例

首先下载cJSON,加入项目; 构建工程,如果出现, fatal error C1010: unexpected end of file while looking for precompiled head 在cJSON.c文件的头部加入#include "stdafx.h"; 看情况,可能是加到.h或者是.cpp文件的头部,它如果有包含头文件, #include &…...

C语言练习(18)

一个班10个学生的成绩&#xff0c;存放在一个一维数组中&#xff0c;要求找出其中成绩最高的学生成绩和该生的序号。 #include <stdio.h>#define STUDENT_NUM 10 // 定义学生数量int main() {int scores[STUDENT_NUM]; // 定义存储学生成绩的一维数组int i;// 输入10个…...

LeetCode 热题 100_全排列(55_46_中等_C++)(递归(回溯))

LeetCode 热题 100_两数之和&#xff08;55_46&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;递归&#xff08;回溯&#xff09;&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08…...

编译chromium笔记

编译环境&#xff1a; windows10 powershell7.2.24 git 2.47.1 https://storage.googleapis.com/chrome-infra/depot_tools.zip 配置git git config --global user.name "John Doe" git config --global user.email "jdoegmail.com" git config --global …...