经典文献阅读之--MGS-SLAM(单目稀疏跟踪和高斯映射与深度平滑正则化)

news2024/11/16 1:36:43

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。通过链接注册并联系客服,可以获得20元代金券(相当于6-7H的免费GPU资源)。欢迎大家体验一下~

0. 简介

本文介绍了一种基于高斯喷洒的密集视觉同时定位与地图构建(VSLAM)新框架。最近基于高斯喷洒的SLAM取得了有希望的结果,但依赖于RGB-D输入且在跟踪方面较弱。为了解决这些局限性,《MGS-SLAM: Monocular Sparse Tracking and Gaussian Mapping with Depth Smooth Regularization》首次独特地将先进的稀疏视觉里程计与密集高斯喷洒场景表示相结合,从而消除了基于高斯喷洒的SLAM系统对深度图的依赖并增强了跟踪的鲁棒性。在这里,稀疏视觉里程计在RGB流中跟踪相机姿态,而高斯喷洒负责地图重建。这些组件通过多视图立体(MVS)深度估计网络相互连接。我们提出了一种深度平滑损失,以减少估计深度图的负面影响。此外,稀疏视觉里程计和密集高斯地图之间的尺度一致性通过稀疏-密集调整环(SDAR)得以保持。相关代码已经在Github开源了


1. 主要贡献

所提出系统的关键贡献总结如下:

  • 首次引入结合稀疏视觉里程计和三维高斯喷洒的SLAM系统,实现仅使用RGB图像作为输入构建密集高斯地图。
  • 开发了一种预训练的多视图立体(MVS)深度估计网络,该网络利用稀疏里程计关键帧及其姿态来估计先验深度图,从而为高斯地图重建提供关键的几何约束。
  • 提出了一种几何深度平滑损失方法,以最小化估计的先验深度图不准确性对高斯地图的不利影响,并指导其对准到正确的几何位置。
  • 提出了一种稀疏-密集调整环(SDAR)策略,以统一稀疏视觉里程计和密集高斯地图的尺度一致性。

2. 方法

我们的方法使用RGB图像作为输入,并行执行相机姿态估计和逼真的密集地图构建。正如图2所示,该方法的核心思想是使用预训练的多视图立体(MVS)网络将单目稀疏视觉里程计与密集高斯喷洒地图相结合,并通过稀疏-密集调整环(SDAR)保持稀疏点云地图与密集高斯地图之间的尺度一致性。

在这里插入图片描述

图2. 系统流程。系统以RGB视频流作为输入,并行运行前端和后端处理。在前端,稀疏视觉里程计从图像中提取特征块以估计姿态。这些估计的姿态和图像作为输入被传递到预训练的多视图立体(MVS)网络,该网络估计先验深度图。在后端,估计的先验深度图和图像结合前端提供的姿态被用作监督信息来构建高斯地图。前端和后端通过稀疏-密集调整环(SDAR)策略保持尺度一致性。

具体来说,在前端部分,通过跟踪RGB图像为后端提供粗略的相机姿态和先验深度图(参见III-A节)。在后端部分,使用高斯表示密集地图,并联合优化地图和前端提供的粗略姿态(参见III-B节)。在系统组件部分,报告系统初始化、系统关键帧选择以及通过SDAR策略校正稀疏点云地图与密集高斯地图之间的尺度(参见III-C节)。

3. 稀疏视觉里程计前端

为了实现更精确的相机姿态跟踪并在后端映射之前提供密集深度几何信息,我们的框架前端基于深度特征块视觉里程计(Deep Patch Visual Odometry, DPVO)算法【25】构建。DPVO是一种基于学习的稀疏单目视觉里程计方法,通过在特征块图上构建和优化误差来估计相机姿态并构建稀疏点云地图

给定输入的RGB视频流,场景表示为一组相机姿态 T ∈ S E ( 3 ) N T \in SE(3)^N TSE(3)N 和一系列从图像中提取的方形图像特征块 P P P,并将它们添加到双向特征块图中,该图将特征块与帧连接起来。方形特征块 k k k 从帧 i i i 在帧 j j j 中的重投影可以表示为:

p j = K T i j p i \mathbf{p}_j = \mathbf{K} \mathbf{T}_{ij} \mathbf{p}_i pj=KTijpi

其中, K \mathbf{K} K 是相机内参矩阵, T i j \mathbf{T}_{ij} Tij 是从帧 i i i 到帧 j j j 的变换矩阵, p i \mathbf{p}_i pi p j \mathbf{p}_j pj 分别是特征块在帧 i i i 和帧 j j j 中的坐标。

通过这种方式,DPVO 在特征块图上优化重投影误差,从而精确估计相机的姿态,并为后端的密集映射提供稀疏的几何深度信息。

P k i j ∼ K T j T i − 1 K − 1 P k i \begin{equation} \mathbf{P}_k^{ij} \sim \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k^i \end{equation} PkijKTjTi1K1Pki

其中, K \mathbf{K} K 是相机内参矩阵, P k i = [ u , v , 1 , d ] T \mathbf{P}^i_k = [u, v, 1, d]^T Pki=[u,v,1,d]T 表示帧 i i i 中的特征块 k k k,[u, v] 表示图像中的像素坐标,(d) 表示逆深度。

DPVO 的核心是一个更新算子,用于计算每条边 ( k , i , j ) ∈ ϵ (k, i, j) \in \epsilon (k,i,j)ϵ 的隐藏状态。它通过优化特征块图上的重投影误差来预测一个二维校正向量 δ i j k ∈ R 2 \delta_{ij}^k \in \mathbb{R}^2 δijkR2 和置信权重 ψ i j k ∈ R 2 \psi_{ij}^k \in \mathbb{R}^2 ψijkR2。通过光流校正作为约束执行捆绑调整(Bundle Adjustment,BA),使用非线性最小二乘法进行迭代更新和相机姿态以及特征块深度的细化。捆绑调整的代价函数如下:

∑ ( k , i , j ) ∈ ϵ ∥ K T j T i − 1 K − 1 P k i − [ P ˉ k i j + δ k i j ] ∥ ψ k i j 2 \begin{equation} \sum_{(k,i,j) \in \epsilon} \left\| \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k^i - \left[ \mathbf{\bar{P}}_k^{ij} + \delta_k^{ij} \right] \right\|^2_{\psi_k^{ij}} \end{equation} (k,i,j)ϵ KTjTi1K1Pki[Pˉkij+δkij] ψkij2

其中, ∥ ⋅ ∥ ψ \| \cdot \|_{\psi} ψ 表示马氏距离, P ˉ \mathbf{\bar{P}} Pˉ 表示特征块的中心。

3.1 多视图先验深度估计

后端的密集高斯映射需要几何深度图的监督。不同于之前的方法【26】,我们使用预训练的多视图立体(MVS)网络在DPVO的关键帧窗口上估计先验深度图,如图3所示。受单目深度估计方法【27】的启发,我们的MVS网络完全由二维卷积组成,采用由粗到细的结构逐步细化估计的先验深度图,以减少MVS网络的运行时间。

在这里插入图片描述

图3. 先验深度估计网络。网络的输入是来自稀疏视觉里程计的图像及其相机姿态。通过特征金字塔网络(Feature Pyramid Network, FPN)提取图像特征,并通过变形操作转换为二维代价体积。最后,采用由粗到细的策略对特征进行编码和解码,生成深度图。

具体来说,当前由稀疏视觉里程计跟踪的帧被用作参考图像 I 0 I^0 I0。此外,我们使用之前的 N N N 个关键帧作为一系列原始图像 I n ∈ 1 , … , N I^{n \in 1, \ldots, N} In1,,N。这些图像及其相应的相机姿态作为MVS网络的输入。利用特征金字塔网络(FPN)模块,我们为每个图像提取三层图像特征 F i s F^s_i Fis,其中 s s s 表示层索引, i i i 表示图像索引。每一层包含的图像特征是上一层长度和宽度的两倍。在每一层中,原始图像的图像特征通过可微分的变形操作与参考图像的图像特征点对点相乘,得到维度为 D × H s × W s D \times H^s \times W^s D×Hs×Ws 的代价体积,并通过二维卷积编码和解码获得每一层的先验深度图。上一层估计的深度图被上采样作为下一层的参考深度图,以减少下一层的深度样本数量。每一层都进行类似的编码和解码操作,最终深度图在三层之后估计完成,以实现由粗到细的效果。我们的MVS深度估计网络在ScanNet数据集【28】上进行训练,采用尺度不变的损失函数以适应稀疏视觉里程计的相对姿态:

L s i s = 1 H s W s ∑ i , j ( g i , j s ) 2 − λ ( H s W s ) 2 ( ∑ i , j g i , j s ) 2 \begin{equation} \mathcal{L}^{s}_{si} = \sqrt{\frac{1}{H^s W^s} \sum_{i,j} \left(g^{s}_{i,j}\right)^2 - \frac{\lambda}{\left(H^s W^s\right)^2} \left(\sum_{i,j} g^{s}_{i,j}\right)^2} \end{equation} Lsis=HsWs1i,j(gi,js)2(HsWs)2λ(i,jgi,js)2

其中,$g^s_{i,j} = \uparrow_{\text{gt}}(\log \hat{D}^s_{i,j} - \log D^{\text{gt}}{i,j}) 。 。 D^{\text{gt}}{i,j}$ 表示一个真实的深度图,通过上采样操作 ↑ gt \uparrow_{\text{gt}} gt 对齐到预测深度 D ^ i , j s \hat{D}^s_{i,j} D^i,js 的大小。常数 λ \lambda λ 为 0.85。

此外,损失函数中还添加了多视图损失和法线损失,以保持深度估计的几何一致性:

L m v s = 1 N H s W s ∑ n , i , j ∣ ↑ g t log ⁡ T 0 n ( D ^ i , j s ) − log ⁡ D n , i , j g t ∣ (4) L n o r m a l s = 1 2 H s W s ∑ i , j ( 1 − N ^ i , j s ⋅ N i , j s ) (5) \mathcal{L}_{mv}^{s}=\frac{1}{NH^{s}W^{s}}\sum_{n,i,j}\left|\uparrow_{gt}\log\mathbf{T}_{0n}(\hat{D}_{i,j}^{s})-\log D_{n,i,j}^{gt}\right|\text{(4)}\\\mathcal{L}_{normal}^{s}=\frac{1}{2H^{s}W^{s}}\sum_{i,j}(1-\hat{N}_{i,j}^{s}\cdot N_{i,j}^{s})\text{(5)} Lmvs=NHsWs1n,i,j gtlogT0n(D^i,js)logDn,i,jgt (4)Lnormals=2HsWs1i,j(1N^i,jsNi,js)(5)

其中, T 0 n T_{0n} T0n 表示从参考图像到原始图像 n n n 的变换矩阵。 N ^ i , j s \hat{N}^s_{i,j} N^i,js N i , j s N^s_{i,j} Ni,js 分别表示预测的法向量和真实的法向量。最终的多视图立体(MVS)深度估计网络损失函数如下:

L = ∑ s = 0 l 1 2 s ( λ s i L s i s + λ m v L m v s + λ n o r m a l L n o r m a l s ) ( 6 ) \mathcal{L}=\sum_{s=0}^l\frac1{2^s}(\lambda_{si}\mathcal{L}_{si}^s+\lambda_{mv}\mathcal{L}_{mv}^s+\lambda_{normal}\mathcal{L}_{normal}^s)\quad(6) L=s=0l2s1(λsiLsis+λmvLmvs+λnormalLnormals)(6)

其中 l l l 为2,我们将损失权重 λ s i \lambda_{si} λsi λ m v \lambda_{mv} λmv λ n o r m a l \lambda_{normal} λnormal 分别设置为1.0、0.2和1.0。

4. 三维高斯喷洒映射后端(核心)

后端的主要职责是进一步优化前端提供的粗略姿态并映射高斯场景。这个部分的关键在于可微渲染和深度平滑正则化损失,通过计算渲染结果与真实值之间的损失,并通过反向梯度传播调整粗略姿态和高斯地图。

4.1 可微高斯地图表示

我们使用三维高斯喷洒作为场景的密集表示。三维高斯喷洒是一种高效的三维空间表示方法,它以类似点云的方式映射场景,避免了像NeRF那样在空间的空白区域进行采样,并且能够实时渲染。单个三维高斯 p i ∈ R 3 p_i \in \mathbb{R}^3 piR3 在三维场景中的影响如下:

f ( p i ) = σ ( o i ) ⋅ exp ⁡ ( − 1 2 ( p i − μ i ) T Σ − 1 ( p i − μ i ) ) ( 7 ) f(p_i)=\sigma(o_i)\cdot\exp(-\frac{1}{2}(p_i-\mu_i)^T\Sigma^{-1}(p_i-\mu_i))\quad(7) f(pi)=σ(oi)exp(21(piμi)TΣ1(piμi))(7)

其中, o i ∈ R o_i \in \mathbb{R} oiR 表示高斯分布的透明度, μ i ∈ R 3 \mu_i \in \mathbb{R}^3 μiR3 是高斯分布的中心, Σ = R S S T T T ∈ R 3 , 3 \Sigma = RSS^TT^T \in \mathbb{R}^{3,3} Σ=RSSTTTR3,3 是协方差矩阵,由 S ∈ R 3 S \in \mathbb{R}^3 SR3 缩放分量和 R ∈ R 3 , 3 R \in \mathbb{R}^{3,3} RR3,3 旋转分量计算得出。三维高斯分布投影到图像平面的表达式如下:

μ I = π ( T C W ⋅ μ W ) Σ I = J W Σ W W T J T \begin{align} \mu_I &= \pi (\mathbf{T}_{CW} \cdot \mu_W) \tag{8} \\ \Sigma_I &= J W \Sigma_W W^T J^T \tag{9} \end{align} μIΣI=π(TCWμW)=JWΣWWTJT(8)(9)

其中, π ( ⋅ ) \pi(\cdot) π() 表示三维高斯中心的投影, T C W ∈ S E ( 3 ) T_{CW} \in SE(3) TCWSE(3) 是从世界坐标到相机坐标的三维空间变换矩阵, J J J 是投影变换的雅可比矩阵的线性近似, W W W T C W T_{CW} TCW 的旋转分量。方程 (8) 和 (9) 是可微分的,这确保了高斯地图可以使用一阶梯度下降来连续优化地图的几何和光度,使地图能够渲染为逼真的图像。一个像素颜色 C p C_p Cp 是通过喷洒和混合来自 N N N 个高斯的结果:

C p = ∑ i ∈ N c i o i ∏ j = 1 i − 1 ( 1 − o j ) \begin{equation} C_p = \sum_{i \in N} c_i o_i \prod_{j=1}^{i-1} (1 - o_j) \tag{10} \end{equation} Cp=iNcioij=1i1(1oj)(10)

其中, c i c_i ci 是高斯 i i i 的颜色, o i o_i oi 是高斯 i i i 的透明度。

4.2 映射优化损失

我们修改了原始三维高斯喷洒的损失函数,并添加了更多几何约束,使其更适合像 SLAM 这样的在线映射系统。具体来说,我们的损失函数由四个部分组成:光度损失、深度几何损失、深度平滑正则化损失和各向同性损失。

在光度损失中,计算当前相机姿态 T C W T_{CW} TCW 下渲染的彩色图像与真实彩色图像之间的 L1 损失:

L p h o = ∥ I ( G , T C W ) − I g t ∥ 1 \begin{equation} \mathcal{L}_{pho} = \left\| I(\mathcal{G}, \mathbf{T}_{CW}) - I^{gt} \right\|_1 \tag{11} \end{equation} Lpho= I(G,TCW)Igt 1(11)

其中, I ( G , T C W ) I(\mathcal{G}, T_{CW}) I(G,TCW)是从高斯分布 G \mathcal{G} G 渲染的彩色图像, I g t I_{gt} Igt 是真实的彩色图像。

D p = ∑ i ∈ N z i o i ∏ j = 1 i − 1 ( 1 − o j ) \begin{equation} D_p = \sum_{i \in N} z_i o_i \prod_{j=1}^{i-1} (1 - o_j) \tag{12} \end{equation} Dp=iNzioij=1i1(1oj)(12)

为了提高高斯地图的几何精度,我们同样渲染了深度图,类似于方程 (10):

L g e o = ∥ D ( G , T C W ) − D ˉ d ∥ 1 \begin{equation} \mathcal{L}_{geo} = \left\| D(\mathcal{G}, \mathbf{T}_{CW}) - \bar{D}_d \right\|_1 \tag{13} \end{equation} Lgeo= D(G,TCW)Dˉd 1(13)

其中, D ( G , T C W ) D(G, T_{CW}) D(G,TCW) 是从高斯分布 G \mathcal{G} G 渲染的深度图, D ‾ d \overline{D}_d Dd 是通过 SDAR 策略优化的先验深度图。优化过程见第 III-C 节。

从 MVS 网络获得的先验深度图可能并不完全准确。如图 4 所示,直接使用这些深度图会在高斯地图的几何重建中导致错误的引导。因此,我们引入了深度平滑正则化损失:

L s m o o t h = ∥ d i , j − 1 − d i , j ∥ 2 + ∥ d i + 1 , j − d i , j ∥ 2 \begin{equation} \mathcal{L}_{smooth} = \left\| d_{i,j-1} - d_{i,j} \right\|_2 + \left\| d_{i+1,j} - d_{i,j} \right\|_2 \tag{14} \end{equation} Lsmooth=di,j1di,j2+di+1,jdi,j2(14)

其中, d i , j d_{i,j} di,j 表示渲染深度图中像素坐标 ( i , j ) (i, j) (i,j) 的深度值。通过对渲染深度图中相邻像素进行正则化,它减少了先验深度图误差的影响。

…详情请参照古月居

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

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

相关文章

线性代数|机器学习-P9向量和矩阵范数

文章目录 1. 向量范数2. 对称矩阵S的v范数3. 最小二乘法4. 矩阵范数 1. 向量范数 范数存在的意义是为了实现比较距离,比如,在一维实数集合中,我们随便取两个点4和9,我们知道9比4大,但是到了二维实数空间中&#xff0c…

认识Spring 中的BeanPostProcessor

关于BeanPostProcessor和BeanFactoryPostProcessors,将分2篇文章来写,这篇文章是对Spring 中BeanPostProcessor进行了总结 先看下大模型对这个类的介绍,随后再看下这两个类的示例,最后看下这两个类的实现。 这两个类从名字看都很类…

堆盘子00

题目链接 堆盘子 题目描述 注意点 SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈 解答思路 将多个栈存储到一个List中,当入栈时,如果List中最后一个栈容量已经达到cap,则需要新建一个栈,将元素推到…

压缩视频在线压缩网站,压缩视频在线压缩工具软件

在数字化时代,视频成为了人们记录和分享生活的重要载体。然而,视频文件一般都非常大,这不仅占据了大量的存储空间,也给视频的传输和分享带来了不便。因此,压缩视频成为了许多人必须掌握的技能。本文将详细介绍如何压缩…

Golang | Leetcode Golang题解之第138题随机链表的复制

题目: 题解: func copyRandomList(head *Node) *Node {if head nil {return nil}for node : head; node ! nil; node node.Next.Next {node.Next &Node{Val: node.Val, Next: node.Next}}for node : head; node ! nil; node node.Next.Next {if…

【一百零九】【算法分析与设计】树状数组求解前缀最大值,673. 最长递增子序列的个数,树状数组求前缀区间最大值

树状数组求解前缀最大值 树状数组可以求解和前缀区间有关的问题,例如前缀和,前缀区间最值. 可以利用 l o g n log_n logn​的时间复杂度快速查找前缀信息. 利用树状数组查询前缀区间中最大值问题. 树状数组下标1位置存储arr数组下标1位置的最大值. 树状数组2位置存储arr数组1,…

树的重心-java

主要通过深度优先搜索来完成树的重心,其中关于树的重心的定义可以结合文字多加理解。 文章目录 前言☀ 一、树的重心☀ 二、算法思路☀ 1.图用邻接表存储 2.图的遍历 3.算法思路 二、代码如下☀ 1.代码如下: 2.读入数据 3,代码运行结果 总结 前言☀ 主…

《PyTorch 实战宝典》重磅发布!

Pytorch 是目前常用的深度学习框架之一,比起 TF 的框架环境配置不兼容,和 Keras 由于高度封装造成的不灵活,PyTorch 无论是在学术圈还是工业界,都相当占优势。 不夸张地说,掌握了 PyTorch ,就相当于走上了…

Cloudpods 强大的多云管理平台部署

简介 Cloudpods 是一款简单、可靠的企业IaaS资源管理软件。帮助未云化企业全面云化IDC物理资源,提升企业IT管理效率。 Cloudpods 帮助客户在一个地方管理所有云计算资源。统一管理异构IT基础设施资源,极大简化多云架构复杂度和难度,帮助企业…

[ue5]建模场景学习笔记(5)——必修内容可交互的地形,交互沙(2)

1需求分析: 继续制作可交互沙子内容,前面我们已经让角色在指定区域留下痕迹,那么能否让区域移动起来,这样才能逐步满足角色走到哪里都能产生交互痕迹,满足更大的地图。 2.操作实现: 1.首先建立角色能产生…

12、SpringBoot 源码分析 - 自动配置深度分析五

SpringBoot 源码分析 - 自动配置深度分析五 refresh和自动配置大致流程OnClassCondition的createOutcomesResolver创建结果解析器StandardOutcomesResolver的resolveOutcomes解析结果StandardOutcomesResolver的getOutcomeClassNameFilter的MISSING判断是否没有 ThreadedOutcom…

【YOLOv5/v7改进系列】改进池化层为SPP、SPPF、SPPCSPC

一、导言 池化层(Pooling Layer)是卷积神经网络(Convolutional Neural Networks, CNNs)中的一个重要组成部分,主要用于减少输入数据的空间尺寸(例如,图像的宽度和高度),…

3D打印随形透气钢:技术革新引领模具制造新潮流

在模具制造领域,透气钢一直扮演着重要角色,它能够有效解决模具困气问题,提高注塑成型的效率和质量。然而,传统的透气钢制造方法受限于工艺和材料,难以满足复杂模具的需求。随着3D打印技术的飞速发展,3D打印…

kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群,一起学习,共同进步。文章底部关注我,公众号后台加我微信入群,备注kettle。 1、群里有不定时会有同学反馈执行SQL脚本步骤使用有问题,那么咱们今天一起来学习下该步…

【数据分析基础】实验一 Python运算符、内置函数、序列基本用法

一、实验目的 熟练运用Python运算符。熟练运用Python内置函数。掌握Python的基本输入输出方法。了解lambda表达式作为函数参数的用法。掌握列表、元组、字典、集合的概念和基本用法。了解Python函数式编程模式。 二、实验内容: 1. 在命令模式测试如下命令&#x…

AI-知识库搭建(一)腾讯云向量数据库使用

一、AI知识库 将已知的问答知识,问题和答案转变成向量存储在向量数据库,在查找答案时,输入问题,将问题向量化,匹配向量库的问题,将向量相似度最高的问题筛选出来,将答案提交。 二、腾讯云向量数…

【C++题解】1261. 韩信点兵

问题:1261. 韩信点兵 类型: 题目描述: 韩信有一对士兵,他想知道有多少人,他就让士兵报数,如果按照 1 到 5 报数,最末一个士兵报的数为 1 。 按照 1 到 6 报数,最末一个士兵报的数为…

Oracle EBS AP发票创建会计科目错误:子分类帐日记帐分录未按输入币种进行平衡

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: 提交“创建会计科目”请求提示错误信息如下: 中文报错: 该子分类帐日记帐分录未按输入币种进行平衡。请检查日记帐分录行中输入的金额。 英文报错:The subledger journal entry does not balance i…

【Stable Diffusion】(基础篇二)—— Stable Diffusion图形界面介绍和基本使用流程

本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在上一篇博客中,我们成功…

数字科技如何助力博物馆设计,强化文物故事表现力?

国际博物馆日是每年为了推广博物馆和文化遗产,而设立的一个特殊的日子,让我们可以深入探讨博物馆如何更好地呈现和保护我们的文化遗产,随着近年来的数字科技发展,其在博物馆领域的应用越来越广泛,它为博物馆提供了新的…