新风向?——2DGS(2D高斯泼溅)横空出世

news2024/9/22 17:21:56

之前读完了3D高斯泼溅,收获颇丰,可没想到的是2D高斯泼溅也在三月份接踵而至。让我们一起解读一下!
论文地址: 2D Gaussian Splatting for Geometrically Accurate Radiance Fields
代码地址: 2d-gaussian-splatting

一. 论文解读

Abstract

作者认为,3D高斯虽然最近很火,但是它也有一个比较大的缺陷——**由于多视图的不一致性,3D高斯泼溅无法很好的表示物体的几何表面。**因此作者提出了2D高斯泼溅,其核心在于 将3D体积折叠为一组2D定向平面高斯圆盘。 2D高斯泼溅能够在建模表面时提供视图一致的几何表面。为了精准恢复薄表面和稳定优化,作者引入了 基于光线投射和光栅化的视角精确2D泼溅过程,并且加入了深度失真和法向一致性来确保重建的质量。

1.1 Introduction

作者首先提出来过去的工作不咋样balabala,然后转而引入自己的2D高斯泼溅。
2D高斯泼溅使用基元来表示物体,每个基元定义为一个定向的椭圆形圆盘。
具体来说,3DGS在像素射线和3D高斯的交点处评估高斯值,这导致从不同视点渲染时深度不一致。相反,2DGS的方法利用显式的射线-泼溅交点,导致视角准确的泼溅,此外,2D高斯基元中的固有表面法线通过法线约束实现了直接的表面正则化。

然而只依靠光度损失来重建仍然存在问题,为了增强重建并实现更光滑的表面,作者引入了两个正则化项:**深度失真和法线一致性。**深度失真项集中处理沿射线分布在狭窄范围内的2D基元,解决了渲染过程中忽略高斯之间距离的限制。法线一致性项最小化渲染法线图与渲染深度梯度之间的差异,确保由深度和法线定义的几何体对齐。

总而言之,本篇论文的contribution如下:

  • 作者提出了一种高效的可微分2D高斯渲染器,通过利用2D表面建模、射线-泼溅交点和体积积分,实现了视角准确的泼溅。
  • 作者引入了两个正则化损失,用于改进和无噪声的表面重建。
  • 我们的方法相比其他显式表示方法,在几何重建和新视图合成结果上达到了最新的水平。

如下图所示就是3DGS和2DGS在几何表面的差异。左边是3DGS,右边是2DGS,可以看出,当相机在左边和右边分别观察时,3DGS的两次观察结果的交点平面是不一致的。而2DGS可以确保看到的是同一个平面。
在这里插入图片描述

1.2 Related Work

1.2.1 新视角合成

作者在这一段中再次总结了NeRF与3DGS的工作,然后再次强调2DGS怎么怎么好。
我这里有一篇快速了解NeRF和3DGS的文章:
NeRF与3DGS速通

1.2.2 3D重建

这部分同样没什么好说的,作者提出2DGS将重建速度提高了一个数量级。但是我认为这很有可能在3DGS中就已经达成。

1.2.3 可微分的基于点的图形

作者提出,本文他们将展示使用2D高斯基元进行详细的表面重建。还强调了在优化过程中额外正则化损失的重要作用,展示了它们对重建质量的显著影响。

然后作者礼貌起见,还是把3DGS单列出来提了一嘴hh

1.2.4 最近的工作

**最近的工作就是3DGS,SuGaR以及NeuSG。**与SuGaR不同,SuGaR使用3D高斯近似2D高斯,而我们的方法直接采用2D高斯,简化了过程并增强了结果几何,而无需额外的精细化。NeuSG联合优化3D高斯基元和隐式SDF网络,并仅从SDF网络中提取表面,而我们的方法利用2D高斯基元进行表面近似,提供了一种更快且概念上更简单的解决方案。

1.3 3DGS

在3DGS这篇文章中,相关的作者使用3D基于的形式来表示物体:
G ( p ) = exp ⁡ ( − 1 2 ( p − p k ) ⊤ Σ − 1 ( p − p k ) ) \mathcal{G}(\mathbf{p})=\exp \left(-\frac{1}{2}\left(\mathbf{p}-\mathbf{p}_{k}\right)^{\top} \Sigma^{-1}\left(\mathbf{p}-\mathbf{p}_{k}\right)\right) G(p)=exp(21(ppk)Σ1(ppk))
其中3D维度下,坐标之间的协方差矩阵近似计算公式为:
Σ = R S S ⊤ R ⊤ \Sigma=\mathbf{R S S}^{\top} \mathbf{R}^{\top} Σ=RSSR
之后,为了最终实现在2D层面的渲染,3D视角通过视图变化矩阵W(先转化为相机视角),再乘以投影矩阵J得到了2D层面的协方差矩阵。
Σ ′ = J W Σ W ⊤ J ⊤ \Sigma^{\prime}=\mathbf{J} \mathbf{W} \Sigma \mathbf{W}^{\top} \mathbf{J}^{\top} Σ=JWΣWJ
最后,实现像素级别的重建:
c ( x ) = ∑ k = 1 K c k α k G k 2 D ( x ) ∏ j = 1 k − 1 ( 1 − α j G j 2 D ( x ) ) \mathbf{c}(\mathbf{x})=\sum_{k=1}^{K} \mathbf{c}_{k} \alpha_{k} \mathcal{G}_{k}^{2 D}(\mathbf{x}) \prod_{j=1}^{k-1}\left(1-\alpha_{j} \mathcal{G}_{j}^{2 D}(\mathbf{x})\right) c(x)=k=1KckαkGk2D(x)j=1k1(1αjGj2D(x))

然而(作者是会写论文的,每隔几段就要批评一下3DGS来凸显自己hh),3DGS在表面重建中遇到了很大的挑战:
首先,3D 高斯的体积辐射表示与表面的薄性质相冲突。其次,3DGS 无法本质上建模表面法线,但是这一点对于高质量表面重建至关重要。第三,3DGS 的光栅化过程缺乏多视图一致性,导致不同视点的 2D 交点平面不同 。此外,使用仿射矩阵将 3D 高斯转换到射线空间仅在中心附近产生准确的投影,在周围区域则牺牲了视角准确性 。

其实总而言之,作者硬是把一个创新拉成三个。作者最大的贡献点就是解决了几何表面的重建不准确问题,记住这一点就好。

1.4 2DGS正式出场

1.4.1 模型架构

作者通过采用嵌入在3D空间中的“平坦”2D高斯来简化三维建模。在二维高斯模型中,2D基元将密度分布在平面圆盘内,并将法线定义为密度变化最剧烈的方向
接下来是2DGS的数学解释,前方高能!!!

首先我们可以找一个三维空间的点Pk作为一个基元建模的中心点,这个Pk同样是二维高斯分布的中心点。此外我们还知道两条主切向量tu和tv。根据tu和tv便可计算出发现向量及方向: t w = t u × t v \mathbf{t}_{w}=\mathbf{t}_{u} \times \mathbf{t}_{v} tw=tu×tv,由此得到的旋转矩阵 R = [ t u , t v , t w ] \mathbf{R}=\left[\mathbf{t}_{u}, \mathbf{t}_{v}, \mathbf{t}_{w}\right] R=[tu,tv,tw]是一个3×3的矩阵。除此之外,会有一个3×3的缩放对角矩阵,且该对角矩阵的最后一项(右下角那一项)为0。

这样,其实我们得到了2D坐标系下的一系列向量,那么可以经过一系列变化得到一个三维空间的点 P ( u , v ) \mathbf{P}(\mathbf{u}, \mathbf{v}) P(u,v)。完整公式如下:
P ( u , v ) = p k + s u t u u + s v t v v = H ( u , v , 1 , 1 ) ⊤  where  H = [ s u t u s v t v 0 p k 0 0 0 1 ] = [ R S p k 0 1 ] \begin{aligned}P(u, v) & =\mathbf{p}_{k}+s_{u} \mathbf{t}_{u} u+s_{v} \mathbf{t}_{v} v=\mathbf{H}(u, v, 1,1)^{\top} \\\text { where } \mathbf{H} & =\left[\begin{array}{cccc}s_{u} \mathbf{t}_{u} & s_{v} \mathbf{t}_{v} & \mathbf{0} & \mathbf{p}_{k} \\0 & 0 & 0 & 1\end{array}\right]=\left[\begin{array}{cc}\mathbf{R S} & \mathbf{p}_{k} \\\mathbf{0} & 1\end{array}\right]\end{aligned} P(u,v) where H=pk+sutuu+svtvv=H(u,v,1,1)=[sutu0svtv000pk1]=[RS0pk1]

我们举个例子:假设有如下参数,
p k = [ 1 , 1 , 1 ] t u = [ 1 , 0 , 0 ] t v = [ 0 , 1 , 0 ] s u = 2 s v = 3 u = 0.5 v = 0.5 \begin{array}{l}\mathbf{p}_{\mathbf{k}}=[1,1,1] \\\mathbf{t}_{\mathbf{u}}=[1,0,0] \\\mathbf{t}_{\mathbf{v}}=[0,1,0] \\s_{u}=2 \\s_{v}=3 \\u=0.5 \\v=0.5\end{array} pk=[1,1,1]tu=[1,0,0]tv=[0,1,0]su=2sv=3u=0.5v=0.5
通过公式计算可以得到:
P ( u , v ) = [ 1 , 1 , 1 ] + 2 ⋅ [ 1 , 0 , 0 ] ⋅ 0.5 + 3 ⋅ [ 0 , 1 , 0 ] ⋅ 0.5 = [ 1 , 1 , 1 ] + [ 1 , 0 , 0 ] + [ 0 , 1.5 , 0 ] = [ 2 , 2.5 , 1 ] P(u,v)=[1,1,1]+2⋅[1,0,0]⋅0.5+3⋅[0,1,0]⋅0.5=[1,1,1]+[1,0,0]+[0,1.5,0]=[2,2.5,1] P(u,v)=[1,1,1]+2[1,0,0]0.5+3[0,1,0]0.5=[1,1,1]+[1,0,0]+[0,1.5,0]=[2,2.5,1]

P(u,v)表示在三维空间中的具体点,是通过局部切平面的二维坐标 (u,v) 转换得到的。这个转换考虑了中心点、主切向量和缩放因子的影响,使得二维高斯分布可以嵌入到三维空间中。最后的(u,v,1,1)则是在齐次四维空间表示的坐标。

需要补充的是,对于uv空间的点(u,v),它的2D高斯可以通过2D标准高斯公式评估:
G ( u ) = exp ⁡ ( − u 2 + v 2 2 ) G(\mathbf{u})=\exp \left(-\frac{u^{2}+v^{2}}{2}\right) G(u)=exp(2u2+v2)

1.4.2 泼溅

作者通过找到三个位于不同平面上的交点来高效地定位射线-泼溅交点。
给定图像坐标 x=(x,y),我们将像素的射线参数化为两个正交平面(x平面和y平面)的交点。具体来说,x平面由法向量(−1,0,0) 和偏移量 x 定义。因此,x平面可以表示为一个四维齐次平面hx=(−1,0,0,x)。类似地,y平面为hy=(0,−1,0,y)。因此,射线r=(x,y) 由x平面和y平面的交点决定。

接下来,我们将这两个平面变换到二维高斯基元的局部坐标系,即uv坐标系,注意,使用变换矩阵 M 在平面上变换点等效于使用逆转置 M − T \mathbf{M}^{-T} MT变换齐次平面参数。因此,应用 ( W H ) − 1 (\mathbf{W H})^{-1} (WH)1等效于使用 ( W H ) T (\mathbf{W H})^{T} (WH)T,消除了显式矩阵逆运算,并得出:
h u = ( W H ) T h x h v = ( W H ) T h y \mathbf{h}_{\mathbf{u}}=(\mathbf{W H})^{T} \mathbf{h}_{\mathbf{x}} \quad \mathbf{h}_{\mathbf{v}}=(\mathbf{W H})^{T} \mathbf{h}_{\mathbf{y}} hu=(WH)Thxhv=(WH)Thy
之前我们得知,二维高斯平面上的点可以表示为 ( u , v , 1 , 1 ) (u, v, 1,1) (u,v,1,1),同时,交点应位于变换后的x平面和y平面上,因此:
h u ⋅ ( u , v , 1 , 1 ) T = h v ⋅ ( u , v , 1 , 1 ) T = 0 \mathbf{h}_{\mathbf{u}} \cdot(u, v, 1,1)^{T}=\mathbf{h}_{\mathbf{v}} \cdot(u, v, 1,1)^{T}=0 hu(u,v,1,1)T=hv(u,v,1,1)T=0
这导致了交点u(x) 的有效解:
u ( x ) = h u 2 h v 4 − h u 4 h v 2 h u 1 h v 2 − h u 2 h v 1 v ( x ) = h u 4 h v 1 − h u 1 h v 4 h u 1 h v 2 − h u 2 h v 1 u(\mathbf{x})=\frac{\mathbf{h}_{u}^{2} \mathbf{h}_{v}^{4}-\mathbf{h}_{u}^{4} \mathbf{h}_{v}^{2}}{\mathbf{h}_{u}^{1} \mathbf{h}_{v}^{2}-\mathbf{h}_{u}^{2} \mathbf{h}_{v}^{1}} \quad v(\mathbf{x})=\frac{\mathbf{h}_{u}^{4} \mathbf{h}_{v}^{1}-\mathbf{h}_{u}^{1} \mathbf{h}_{v}^{4}}{\mathbf{h}_{u}^{1} \mathbf{h}_{v}^{2}-\mathbf{h}_{u}^{2} \mathbf{h}_{v}^{1}} u(x)=hu1hv2hu2hv1hu2hv4hu4hv2v(x)=hu1hv2hu2hv1hu4hv1hu1hv4
其中, h i l h_{i}^{l} hil h j l h_{j}^{l} hjl是四维齐次平面参数的i-th参数。

除此之外,作者考虑到了其他的特殊解情况:

退化解 (Degenerate Solutions): 当二维高斯从倾斜角度观察时,在屏幕空间中可能会退化为一条线。这意味着在光栅化过程中,高斯分布可能会被忽略,从而导致渲染结果的精度降低。
为了处理这种情况,论文引入了一个低通滤波器来稳定优化过程。具体方法如下:
最大值滤波器:定义了一个新的高斯值 G ^ ( x ) \hat{\mathcal{G}}(x) G^(x),它取原始高斯值 G ( u ( x ) ) \mathcal{G}(\mathbf{u}(x)) G(u(x))和低通滤波器值 G ( x − c σ ) \mathcal{G}\left(\frac{\mathbf{x}-\mathbf{c}}{\sigma}\right) G(σxc)的最大值。这样可以确保即使在退化情况下,二维高斯分布仍然能被正确处理。
其中, u ( x ) u(\mathbf{x}) u(x)由上面的方程解给出,c是中心pk的投影。直观地说, G ^ ( x ) \hat{\mathcal{G}}(x) G^(x) 由固定的屏幕空间高斯低通滤波器限定,该滤波器的中心为 ck且半径为σ,在实验中,作者设置 σ = 2 / 2 \sigma=\sqrt{2} / 2 σ=2 /2以确保在渲染过程中使用足够的像素。

光栅化 (Rasterization):
光栅化是将高斯分布从几何表示转换为屏幕上的像素表示的过程。具体步骤如下:

  1. 计算屏幕空间边界框:为每个高斯基元计算屏幕空间的边界框,用于确定哪些像素会被影响。
  2. 深度排序和瓦片组织:根据高斯分布中心的深度进行排序,并根据边界框将它们组织成瓦片。这有助于优化渲染过程。
  3. 体积 alpha 混合:使用体积 alpha 混合从前到后集成高斯分布的 alpha 加权外观。这种方法确保了最终渲染图像的透明度和深度信息的正确处理。
    alpha 混合过程如下:
    c ( x ) = ∑ i = 1 c i α i G ^ i ( u ( x ) ) ∏ j = 1 i − 1 ( 1 − α j G ^ j ( u ( x ) ) ) \mathbf{c}(\mathbf{x})=\sum_{i=1} \mathbf{c}_{i} \alpha_{i} \hat{\mathcal{G}}_{i}(\mathbf{u}(\mathbf{x})) \prod_{j=1}^{i-1}\left(1-\alpha_{j} \hat{\mathcal{G}}_{j}(\mathbf{u}(\mathbf{x}))\right) c(x)=i=1ciαiG^i(u(x))j=1i1(1αjG^j(u(x)))
    参数解释如下:
    在这里插入图片描述

1.5 Training

作者们的二维高斯方法虽然在几何建模上有效,但在仅使用光度损失进行优化时可能会导致重建结果的噪声问题,这是三维重建任务固有的挑战。因此,作者提出来深度失真和法线一致性两个关键术语。

1.5.1 深度失真

问题:当使用三维高斯分布进行渲染时,不同高斯分布可能会在深度上有交叠,这会导致渲染结果中的深度和颜色出现混乱,特别是在不同的高斯分布看起来很接近但实际上应该有不同深度时。

解决方案:因此,引入深度失真正则化项,通过最小化交点之间的深度差距,来确保这些高斯分布在正确的深度位置上。这可以帮助集中权重分布,使得重建的几何形状更加清晰和准确。
公式如下:
L d = ∑ i , j ω i ω j ∣ z i − z j ∣ \mathcal{L}_{d}=\sum_{i, j} \omega_{i} \omega_{j}\left|z_{i}-z_{j}\right| Ld=i,jωiωjzizj

1.5.2 法线一致性

问题:在渲染过程中,如果二维高斯分布的法线(指向相机的方向)不一致,会导致表面不光滑,看起来不自然。特别是在处理半透明表面时,这个问题会更明显。
解决方案:引入法线一致性正则化项,通过对齐二维高斯分布的法线和实际表面的法线,确保重建的表面是光滑的,且局部几何形状准确。这意味着二维高斯分布的法线要与由深度图估计的表面法线一致。

作者将二维高斯分布泼溅的法线与深度图的梯度对齐,公式如下:
L n = ∑ i ω i ( 1 − n i ⊤ N ) \mathcal{L}_{n}=\sum_{i} \omega_{i}\left(1-\mathbf{n}_{i}^{\top} \mathbf{N}\right) Ln=iωi(1niN)
其中,i表示射线上的交叉泼测索引, ω \omega ω 表示交点的混合权重, n i \mathbf{n}_{i} ni代表泼测朝向相机的法线, N \mathbf{N} N是由附近深度点p估计的法线。具体来说, N \mathbf{N} N通过有限差分计算如下:
N ( x , y ) = ∇ x p × ∇ y p ∣ ∇ x p × ∇ y p ∣ \mathbf{N}(x, y)=\frac{\nabla_{x} \mathbf{p} \times \nabla_{y} \mathbf{p}}{\left|\nabla_{x} \mathbf{p} \times \nabla_{y} \mathbf{p}\right|} N(x,y)=xp×ypxp×yp
通过将泼溅法线与估计的表面法线对齐,作者确保二维泼溅在局部上逼近实际物体表面。

1.5.3 实验中用到的损失函数

本实验最终的损失函数公式如下:
L = L c + α L d + β L n \mathcal{L}=\mathcal{L}_{c}+\alpha \mathcal{L}_{d}+\beta \mathcal{L}_{n} L=Lc+αLd+βLn
参数解释如下:
在这里插入图片描述
作者通过实验得出,设定 α=1000 用于有界场景,α=100 用于无界场景,β=0.05 适用于所有场景。

时间原因,代码解析以后有空再更吧。

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

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

相关文章

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

Redis 可视化工具 RedisInsight 的保姆级安装以及使用 一、下载 RedisInsight二、安装 RedisInsight三、使用 RedisInsight四、新建 Redis 连接 一、下载 RedisInsight 官网 https://redis.io/insight/填写基本信息之后点击 DOWNLOAD 二、安装 RedisInsight 双击安装包 点击下一…

Kubeadm Online Install Kubernetes v1.30.1

文章目录 简介架构预备条件资源规划 基础配置配置网卡配置 hosts安装常用软件配置互信安装 ansible配置 hosts关闭 swapselinux防火墙文件句柄数配置内核参数日志主机配置代理 安装 containerd方法1. 适用于rocky-8.9-x86_64-dvd1.iso方法2 适用于 rocky-8.9-x86_64-minimal.is…

ARM IHI0069F GIC architecture specification (8)

3.2中断旁路支持 CPU interface可以支持中断信号旁路,使得当接口发出的中断信号被禁用时,传统中断信号被传递到PE上的中断请求输入,从而绕过GIC功能。 是否支持旁路由实际设计决定。 用于确定是否使用GICv3 FIQ和IRQ输出或旁路信号的控制取决…

DOS学习-目录与文件应用操作经典案例-del

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统的del命令是一个用于删除文件的命令行工具。以下…

Android Service应用详解

1、Service概括 由于手机屏幕的限制,通常情况下在同一时刻仅有一个应用程序处于激活状态,并能够显示在手机屏幕上,因此,应用程序需要一种机制,在没有用户界面的情况下,能够长时间在后台运行,实…

SQLI-labs-第二十五关和第二十五a关

目录 第二十五关 1、判断注入点 2、判断数据库 3、判断表名 4、判断字段名 5、获取数据库的数据 第二十五a关 1、判断注入点 2、判断数据库 第二十五关 知识点:绕过and、or过滤 思路: 通过分析源码和页面,我们可以知道对and和or 进…

n7. 图

1.定义 图的每个结构之间有着某种关系。 六度空间理论等; 1.1引子: 最短路径问题 1.2什么是图 表示一种多对多的关系 线性关系表示的是一对一的关系,树表示的是一对多的关系。其实线性表和树其实都可以认为是图的一种特殊的情况。包含&am…

【No More Room in Hell】地狱已满服务器一键开服多人联机教程

1、购买后登录服务器 进入控制面板后会出现正在安装的界面,安装大约5分钟(如长时间处于安装中请联系我们的客服人员) 2、连接游戏 2.1、安装完成后复制开机下方的IP地址 2.2、打开Steam点击左上角的查看➡服务器 点击收藏➡右下角号 粘贴地址…

重构与优化-前言

关注公众号畅读:IT技术馆 Java代码重构是优化现有代码结构、提升代码可读性、可维护性和性能的过程,而不会改变其外在行为。这包括命名规范、消除重复代码、改进设计模式的使用、优化数据结构和算法等。下面是一些常见的Java代码重构技巧及示例: 1. 重命名(Rename) 目的…

flutter 当Scaffold 不使用appBar 时,切换主题,状态栏图标 明暗色 不自动变化,导致与底色相同

一、问题 下图中实际状态栏并没有隐藏。 为了整体效果页面采用了上下渐变拼接色,并且没有加appBar。 这时候会出现状态栏图标并没有根据底色 进行反差显示。 就目前这个问题,并没有找到什么很好的办法。其原因 就是appBar 没有设置底色。 二、解决方法…

系统与软件工程性能测试方法标准

性能测试的种类包含以下几种: 1.负载测试 load testing 用户评估系统与软件在预期变化负载下的性能表现,负载通常位于低估,典型,高峰使用的预期条件之间。 注:性能效率测试的一种。 建立模型 导出测试覆盖项 对于…

香橙派AIpro开发板开箱体验,国产AI计算力实现可控

一、引言 1. 嵌入式AI技术背景与发展趋势 近年来,随着人工智能技术的飞速发展,嵌入式AI技术在各个领域得到了广泛应用。作为智能设备的核心部件,嵌入式AI开发板为开发者提供了高效、便捷的开发环境,推动了智能设备的不断创新和进步…

慧算账、百望云、税友股份“走进”AI深水区

配图来自Canva可画 自金税四期正式施行以来,税务领域开始以数字化为核心,“以数治税”成为财税市场发展的主要方向,财税数字化市场规模不断提升。 据共研产业咨询数据,2022年,我国财税数字化市场规模为436.2亿元&…

上海市港股通交易佣金手续费最低是多少?万0.8?恒生港股通ETF今起发行!港股通的价值如何?

港股通交易佣金概述 港股通的交易佣金可能会因证券公司和投资者的不同而有所差异。 上海市港股通交易佣金最低可以万分之零点八(0.008%),但这需要投资者与证券公司客户经理了解,进行沟通和申请。 一般来说,证券公司…

Autoware 软件功能(二)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G…

数据结构第二篇【关于java线性表(顺序表)的基本操作】

【关于java线性表(顺序表)的基本操作】 线性表是什么?🐵🐒🦍顺序表的定义🦧🐶🐵创建顺序表新增元素,默认在数组最后新增在 pos 位置新增元素判定是否包含某个元素查找某个…

爬虫学习--15.进程与线程(2)

线程锁 当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制 某个线程要更改共享数据时,先将其锁定,此时资源的状态为"锁定",其他线程不能改变,只到该线程释放资源,将资源的状态变成"非锁定…

PXI总线测试模块-6939 矢量信号发生器

频率范围:250kHz~6GHz 6939 矢量信号发生器 6939矢量信号发生器提供频率范围250kHz~6GHz的多制式信号,单边带相位噪声优于-120dBc/Hz10kHz(载波1GHz)、EVM优于1.0%,能够实现高纯连续波输出、模拟调制信号输…

贝叶斯:共轭先验(conjugacy)

共轭先验与共轭分布 在贝叶斯统计中,如果后验分布与先验分布属于同类,则先验分布与后验分布被称为共轭分布,而先验分布被称为似然函数的共轭先验。(要求后验分布与先验分布是同类分布,不要求似然函数分布相同。&#…

Linux系统编程——基础IO与文件描述符(管理已打开的内存文件)

目录 一,文件预备 二,C语言文件操作函数 2.1 默认打开的三个流 2.2 写文件 2.3 读文件 2.4 再次理解当前路径 三,Linux操作文件系统调用 3.1 open()和close() 3.1.1 第一个参数 3.1.2 *第二个参数 3.1.3 第三个参数 3.2 write(…