LVI-GS:港大待开源、雷达-视觉-惯紧耦合,实时渲染

文章目录

  • 摘要
  • 一、 介绍
  • 二、相关工作
    • A 基于NeRF的SLAM
    • B 基于3DGS的SLAM
  • 三、方法
    • A 超原语
    • B. 3D 高斯投影
    • C. 关键帧管理
    • D. 基于金字塔的训练
    • E. 高斯映射
  • 四、实验


摘要

文章:github
介绍:介绍

3D高斯溅射(3DGS)在快速渲染和高保真建图方面展现了其优势。本文提出了LVI-GS,一种紧密耦合的LiDAR-视觉-惯性建图框架,结合了3DGS技术,利用LiDAR与图像传感器的互补特性,捕捉三维场景的几何结构和视觉细节。为此,3D高斯点通过彩色化的LiDAR点云初始化,并通过可微渲染进行优化。为了实现高保真建图,我们提出了一种基于金字塔的训练方法,有效地学习多层次特征,并结合由LiDAR测量推导的深度损失以增强几何特征感知。通过精心设计的高斯地图扩展、关键帧选择、线程管理和自定义CUDA加速策略,我们的框架实现了实时的照片级真实建图。通过数值实验评估,我们的方法在与最先进的3D重建系统的对比中展现出了优越的性能。
在这里插入图片描述

在这里插入图片描述

一、 介绍

同时定位与建图(SLAM)系统在多个领域中发挥着不可或缺的作用,包括机器人技术、增强现实和自主导航[1]。这些系统通过在构建地图的同时估计自身在环境中的位置,使设备能够理解并导航复杂的环境。有效的SLAM系统既需要精确的定位能力,也需要全面的场景重建能力。
传统的SLAM系统使用地标[2]、点云[3]、占用网格[4]、符号距离函数(SDF)体素网格[5]或网格[6]来表示环境。在这些方法中,点云作为一种直接的场景表示方式,能够通过传感器如相机和LiDAR轻松获取。基于点云的SLAM系统可以实现精确的定位,并构建稀疏或密集地图,尽管这些地图通常缺乏丰富的视觉细节。
神经辐射场(NeRF)的出现为高保真场景重建提供了一种新方法[7]。NeRF通过优化一个连续的体积场景函数,隐式地表示场景,且所需的内存最小化。一些基于NeRF的SLAM方法利用该框架的新型视图合成和高保真重建能力来建模场景。例如,iMAP[8]构建了一个隐式的3D占用和颜色模型,用于跟踪,而NICE-SLAM[9]则通过粗到细的方法表示较大的场景。像Vox-Fusion[10]、CoSLAM[11]和ES-SLAM[12]等增强型方法在一定程度上提升了SLAM系统的性能。然而,由于涉及大量的优化过程,这些系统难以实现实时性能。此外,使用多层感知器存储地图会面临灾难性遗忘和有限边界等问题,这可能妨碍场景重建。
3D高斯溅射(3DGS)提供了一种令人兴奋的替代方法,通过可微的3D高斯形状原始体素提供连续且可适应的3D场景建模表示[13][14]。作为一种半隐式建图方法,它在优化和渲染速度上有显著优势,尽管牺牲了一些新视图合成的能力。尽管基于优化,3DGS与点云和曲面云相似,因此继承了它们的高效性、局部性和适应性——这些特性有助于SLAM建图。3DGS的渲染速度可达到每秒200帧(1080p分辨率),且初始化时使用点云,使其能够利用传统SLAM系统生成的稀疏或密集点云来实现高保真图像[15]。
最近,一些将3D高斯整合到SLAM中的方法显示出了良好的效果。例如,SplaTAM[16]、MonoGS[15]、GS-SLAM[17]和Photo-SLAM[18]等方法利用RGB-D或RGB数据建立完整的SLAM系统。然而,这些技术在大规模、不可控的户外环境中遇到困难,尤其是在复杂的光照、复杂的背景和快速运动的挑战下。尽管LiDAR为3D高斯提供了高质量的几何初始化,并且在户外环境中通常比相机更为鲁棒,但将LiDAR整合进SLAM系统时也带来了独特的挑战。LIV-Gaussianmap[19]和LetsGo[20]利用LiDAR初始化3D高斯,而Gaussian-LIC[21]则结合LiDAR-惯性-相机系统进行全面的3D高斯构建。然而,像LIV-Gaussianmap[19]和LetsGo[20]这样的系统仅限于离线处理,Gaussian-LIC[21]则需要复杂的前端里程计和大量关键帧的维护。

总体而言,本研究的主要贡献可以概括如下:

  • 我们开发并实现了一个复杂的实时LVI-GS系统,能够维护动态的超原始体素模块。该系统利用3D高斯溅射(3DGS)技术,在三维空间中进行高质量、实时渲染,确保对复杂环境的高效且准确的表示。
  • 为了进一步提升系统的性能和可扩展性,我们采用了粗到细的地图构建方法。该方法结合了RGB图像金字塔和深度图像金字塔,逐步在不同层次的细节上精炼地图。此外,我们实施了先进的线程管理技术,以优化计算效率,确保在大数据集的情况下仍能顺利进行实时操作。
  • 为了提高地图表示和渲染质量,我们设计了一个强大的关键帧管理策略,有效地选择和处理关键帧。通过在系统中加入深度损失,我们提升了3D高斯地图的精确度,进而实现了更加精准的重建和视觉上更优的渲染效果。

在这里插入图片描述

二、相关工作

A 基于NeRF的SLAM

经典的基于NeRF的SLAM系统完全依赖于多层感知器(MLP)。它们通过将环境编码到神经网络的权重中,在通过场景发射的光线沿途的不同点查询该函数,从而渲染出具有高视觉保真度和现实光照效果的新视图。作为第一个基于NeRF的SLAM系统,iMAP[8]通过联合优化光度和几何损失,确保接近帧率的相机跟踪。然而,受限于MLP的容量,它在较大的环境中容易遇到较为简单的重建问题,并且在处理大规模场景时可能遭遇灾难性遗忘。为了解决这个问题,后续的工作集中于结合隐式MLP和结构化特征的优势,显著提升场景的可扩展性和精度。例如,NICE-SLAM[9]采用分层策略,集成多级本地数据,有效解决了过度平滑的重建和大规模场景中的可扩展性限制问题。Vox-Fusion使用八叉树来管理体素,为场景提供了可扩展性。ESLAM[12]、Co-SLAM[11]、GO-SLAM[22]和Point-SLAM[23]引入了多尺度特征平面、组合平滑、细节编码、实时全局优化和动态神经点云表示等创新方法,在提高内存效率和可扩展性的同时,增强了场景重建、相机跟踪和地图保真度。OrbeezSLAM[24]、NeRF-SLAM[25]和NeRF-VO[26]则通过提高跟踪频率和姿态估计精度,改善了基于NeRF的SLAM方法在里程计中的表现。

B 基于3DGS的SLAM

与基于NeRF的SLAM相比,基于3DGS的方法通过密集损失提供了更快、更真实的渲染、更强的地图容量和更高效的优化。SplaTAM[16]采用简化的3D高斯体素进行准确的相机姿态估计和场景优化,从而提高了渲染效率和地图精度。与之相比,GS-SLAM[17]利用3D高斯、透明度和球面谐波表示场景,具有自适应高斯管理和强大的相机跟踪能力,但在大规模场景中面临深度数据质量和内存使用的挑战。MonoGS[15]是第一个使用单目相机实现3DGS SLAM的工作。GS-ICP[27] SLAM通过采用G-ICP[28]跟踪过程,利用3D高斯溅射的显式特性。Photo-SLAM[18]利用ORB-SLAM3[29]提供的精确姿态估计来重建混合高斯地图。一些方法还将LiDAR作为传感器进行整合。Gaussian-LIC[21]实现了一个实时的LiDAR-惯性-相机SLAM系统,依赖于紧耦合的LiDAR-惯性-相机里程计。MM-Gaussian[30]开发了一个重定位模块,用于在定位失败时纠正系统的轨迹。同时,MM3DGS-SLAM[31]采用视觉-惯性框架来优化相机姿态,并解决了单目深度估计中的尺度模糊问题。

三、方法

我们的框架通过两个并行线程实现完整的系统功能。一个线程处理里程计,而另一个线程执行3D高斯的实时优化。两个线程协同工作,共同维护一个共享的超原始模块。在这两个线程之间,数据如3D点云、相机姿态、相机图像和深度信息会进行交换。

A 超原语

我们维护一个超原语模块,包含3D点云、体素和3D高斯。为了高效访问3D点云进行3D高斯初始化,地图点被组织成固定大小的体素(例如,0.1 m x 0.1 m x 0.1 m)。体素的激活是通过最近添加的点的存在来确定的(例如,在过去的一秒钟内)。一个已激活的体素表示最近有更新,而一个去激活的体素则表示没有最近的更新。

此外,在视觉-惯性里程计(VIO)模块中,如果某个点的投影误差或光度误差超过指定阈值[32],该点会被移除。对于点云中的每个点,我们首先识别其在网格中的位置;如果该位置已经存在点,则该点会被丢弃。我们还会调节每个体素内的点的数量,以保持控制的密度。通过这一初步过滤过程,随着里程计的进行,所获得的点云避免了冗余地添加3D高斯。

B. 3D 高斯投影

我们的场景表示是3DGS,用一组各向异性高斯 G \mathcal{G} G 来映射它。每个高斯包括不透明度 o ∈ [ 0 , 1 ] o \in [0,1] o[0,1],中心位置 μ ∈ R 3 \mu \in \mathbb{R}^3 μR3,RGB颜色 c,半径 r 和3D协方差矩阵 Σ ∈ R 3 × 3 \Sigma \in \mathbb{R}^{3 \times 3} ΣR3×3。给定一个中心位置 μ \mu μ 和3D协方差矩阵 Σ \Sigma Σ,高斯分布定义为

D ( x ) = exp ⁡ ( − 1 2 ( x − μ ) Σ − 1 ( x − μ ) T ) ( 1 ) \mathcal{D}(x) = \exp\left(-\frac{1}{2}(x-\mu)\Sigma^{-1}(x-\mu)^T\right) \quad (1) D(x)=exp(21(xμ)Σ1(xμ)T)(1)

因为每个高斯形状都是一个椭球体,我们对3D高斯的协方差进行参数化如下:

Σ = R S S T R T ( 2 ) \Sigma = RSS^T R^T \qquad (2) Σ=RSSTRT(2)

其中 S ∈ R 3 S \in \mathbb{R}^3 SR3 是描述3D尺度的向量, R ∈ R 3 × 3 R \in \mathbb{R}^{3 \times 3} RR3×3 表示旋转矩阵。3DGS不是沿着相机光线遍历,而是通过对3D高斯的迭代进行光栅化,从而忽略了渲染过程中的空白空间。鉴于3DGS使用了体积渲染,没有必要直接推导出表面。而是通过将 N \mathcal{N} N 个3D高斯通过涂染和混合的方式合并,确定像素的颜色 C p \mathcal{C}_p Cp

C p = ∑ i ∈ N c i α i ∏ j = 1 i − 1 ( 1 − α j ) ( 3 ) \mathcal{C}_p = \sum_{i \in \mathcal{N}} c_i \alpha_i \prod_{j=1}^{i-1} (1 - \alpha_j) \qquad (3) Cp=iNciαij=1i1(1αj)(3)

类似地,使用相同的方法,我们也可以通过以下方式获得深度 D p \mathcal{D}_p Dp

D p = ∑ i ∈ N d i α i ∏ j = 1 i − 1 ( 1 − α j ) ( 4 ) \mathcal{D}_p = \sum_{i \in \mathcal{N}} d_i \alpha_i \prod_{j=1}^{i-1} (1 - \alpha_j) \qquad (4) Dp=iNdiαij=1i1(1αj)(4)

我们还渲染了一个可见性图像,它用于确定当前像素的可见性。

V p = ∑ i ∈ N α i ∏ j = 1 i − 1 ( 1 − α j ) ( 5 ) \mathcal{V}_p = \sum_{i \in \mathcal{N}} \alpha_i \prod_{j=1}^{i-1} (1 - \alpha_j) \qquad (5) Vp=iNαij=1i1(1αj)(5)

其中最终的不透明度 α i \alpha_i αi 是学习到的不透明度 o i o_i oi 和高斯的乘积:

α i = o i exp ⁡ ( − 1 2 ( x ′ − μ ′ ) Σ ′ − 1 ( x ′ − μ ′ ) T ) ( 6 ) \alpha_i = o_i \exp\left(-\frac{1}{2} \left(x' - \mu'\right) \Sigma'^{-1} \left(x' - \mu'\right)^T\right) \qquad (6) αi=oiexp(21(xμ)Σ1(xμ)T)(6)

其中坐标 x ′ x' x μ ′ \mu' μ 都在投影空间中。

我们的最终目标是将3D高斯投影到2D平面上进行渲染以获得高保真图像,这个过程通常被称为“涂染”。当我们获得图像和传感器位置变换 [ Q i w , T i w ] \left[Q_{i w}, T_{i w}\right] [Qiw,Tiw] 时,因此,将3D高斯 ( μ W , Σ W ) \left(\mu_{W}, \Sigma_{W}\right) (μW,ΣW) 投影到2D高斯 ( μ I , Σ I ) \left(\mu_{I}, \Sigma_{I}\right) (μI,ΣI) 的函数是

μ I = [ Q i w , T i w ] ⋅ μ W , Σ I = J Q i w Σ W Q i w T J T ( 7 ) \mu_{I} = [Q_{iw}, T_{iw}] \cdot \mu_{W}, \quad \Sigma_{I} = JQ_{iw} \Sigma_{W} Q_{iw}^T J^T \qquad (7) μI=[Qiw,Tiw]μW,ΣI=JQiwΣWQiwTJT(7)

其中 J 是投影变换的雅可比矩阵的线性近似。 Q i w Q_{iw} Qiw T i w T_{iw} Tiw 分别是传感器姿态的旋转和平移分量。

C. 关键帧管理

我们通过超原语模块获得点云,将每 N l N_{l} Nl 个点以及相应的相机姿态和图像打包进一个单一帧中,以备后续选择。所有着色的LiDAR点都被用于初始化3D高斯。我们对图像进行关键帧选择,评估那些没有运动模糊的图像。表现出旋转或平移超过指定阈值的图像被添加到关键帧序列中:

∥ R i − R i − 1 ∥ > τ r 或 ∥ T i − T i − 1 ∥ > τ t ( 8 ) \left\|R_{i} - R_{i-1}\right\| > \tau_{r} \quad \text{或} \quad \left\| T_{i} - T_{i-1}\right\| > \tau_{t} \qquad (8) RiRi1>τrTiTi1>τt(8)

此外,对于每个新添加的关键帧,我们评估其与之前关键帧的视觉重叠。如果重叠超过指定阈值,表明高度相似,该帧被认为是多余的,不会被添加到序列中。此外,还对高斯添加应用了一个过滤标准。我们计算当前关键帧视点的累积不透明度,选择满足透明度要求的3D高斯。如果 V p ≤ τ α \mathcal{V}_{p} \leq \tau_{\alpha} Vpτα,则过滤掉该点。而且,在利用关键帧中的所有着色LiDAR点进行3D高斯初始化之前,我们引入了一个缓冲容器来延迟关键帧序列与地图的集成。这种延迟防止了由前一帧初始化的高斯的不透明度在能够从后续帧的视点观察到之前迅速降低到可修剪的阈值,从而确保3D高斯可以从多个视角用于训练。

D. 基于金字塔的训练

在我们大规模的3D高斯场景表示中,我们采用渐进式训练方法来优化训练3D高斯场的效率,同时保持渲染质量。通过在不同分辨率下使用彩色和深度图像,我们构建了彩色和深度图像的金字塔,通过逐步细化细节层次来改进训练过程。具体来说,我们将高斯图划分为多尺度表示,以捕捉不同层次的细节。输入的彩色和深度图像经过重复下采样,使我们能够从粗糙到精细分辨率逐步训练3D高斯。在训练过程中,我们优先考虑低分辨率数据以优化粗略级别的细节。经过一定次数的迭代后,我们逐步减少下采样的级别,最终使用原始输入分辨率完成训练。这种方法确保了高效的训练,同时在各个细节层次上保持了3D高斯场景的高质量表示。

l 0 : ( I r n , D r n , P n ( I g t ) , P n ( D g t ) ) l 1 : ( I r n − 1 , D r n − 1 , P n − 1 ( I g t ) , P n − 1 ( D g t ) ) ⋮ l n : ( I r 0 , D r 0 , P 0 ( I g t ) , P 0 ( D g t ) ) ( 9 ) \begin{align*}& l_{0}:(I_{r}^{n},D_{r}^{n},P^{n}(I_{gt}),P^{n}(D_{gt}))\\ & l_{1}:\left(I_{r}^{n-1},D_{r}^{n-1},P^{n-1}(I_{gt}),P^{n-1}(D_{gt})\right)\\ &\quad\vdots\\ & l_{n}:\left(I_{r}^{0},D_{r}^{0},P^{0}(I_{gt}),P^{0}(D_{gt})\right)\end{align*}\qquad(9) l0:(Irn,Drn,Pn(Igt),Pn(Dgt))l1:(Irn1,Drn1,Pn1(Igt),Pn1(Dgt))ln:(Ir0,Dr0,P0(Igt),P0(Dgt))(9)

在这里,l表示金字塔的级别, I r I_{r} Ir 表示渲染的彩色图像, D r D_{r} Dr 表示渲染的深度图像。 P ( I gt ) P(I_{\text{gt}}) P(Igt) 表示彩色金字塔,而 P ( D gt ) P(D_{\text{gt}}) P(Dgt) 表示深度金字塔。

E. 高斯映射

在接收到每个关键帧后,我们初始化3D高斯。对于第一帧,我们处理整个点云,提取点的3D坐标作为3D高斯的中心。我们计算每个点到原点的平方欧几里得距离,确保最小值以防止零距离。不透明度参数使用逆Sigmoid函数进行初始化。对于颜色信息,我们从点云的颜色数据中提取特征,并存储在一个张量中,其中RGB通道对应于球谐系数。尽管我们使用了球谐函数(Spherical Harmonics, SH),但初始的SH阶数设置为0。随着优化迭代和关键帧的增加,SH阶数逐渐增加,以更好地适应多个视角,上限为3。

我们对每个接收到的关键帧进行一次优化,作为一个子图。随后,在管理关键帧序列时,接收到新帧后,我们随机打乱所有关键帧,然后随机选择一个帧进行优化。为确保每个关键帧的优化一致性并维持地图的完整性,我们为每个关键帧的优化迭代次数设定了一个上限。达到此限制的关键帧将从关键帧序列中移除。

我们通过最小化图像损失 L c \mathcal{L}_{c} Lc 和几何损失 L d \mathcal{L}_{d} Ld 来优化3D高斯的参数,包括旋转、缩放、密度和球谐系数(SH):

L = L c + λ d L d ( 10 ) \mathcal{L} = \mathcal{L}_c + \lambda_d \mathcal{L}_d \quad (10) L=Lc+λdLd(10)

图像损失由光照误差和两幅图像之间的结构相似性(SSIM)误差组成:

L c = ( 1 − λ ) L 1 ( I , C ( G , T c ) ) + λ L ssim ( 11 ) \mathcal{L}_c = (1 - \lambda) \mathcal{L}_1(I, \mathcal{C}(\mathcal{G}, T_c)) + \lambda \mathcal{L}_{\text{ssim}} \quad (11) Lc=(1λ)L1(I,C(G,Tc))+λLssim(11)

几何损失定义为渲染深度 D \mathcal{D} D 和LiDAR测量深度 D lidar \mathcal{D}_{\text{lidar}} Dlidar 之间的 L 1 \mathcal{L}_{1} L1 损失:

L d = ∑ ∥ D − D lidar ∥ ( 12 ) \mathcal{L}_d = \sum \left\|\mathcal{D} - \mathcal{D}_{\text{lidar}}\right\| \quad (12) Ld=DDlidar(12)

在这里插入图片描述

四、实验

在这里插入图片描述
图 2:不同3DGS SLAM系统的定性性能比较。

在这里插入图片描述
图 3:来自hkust校园00(m2)序列[32]的四个帧的渲染示例和详细视图。红线代表运行轨迹,而(a)-(d)显示了在不同位置的四个选定的渲染图像,突出了玻璃表面、树枝和台阶等细节。红矩形内的区域被放大,以便与真实情况相比较。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

2024年中国AI大模型场景应用趋势蓝皮书【附47页PPT】

目录 01 AI大模型行业应用概况 02 AI大模型行业应用现状及案例 03 AI大模型行业应用痛点及解决方案 04 AI大模型行业应用前景趋势及投资机会分析 如何学习AI大模型 ? “最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。 这句话,放在…

基于Zynq FPGA对雷龙SD NAND的测试

一、SD NAND 特征 1.1 SD 卡简介 雷龙的 SD NAND 有很多型号,在测试中使用的是 CSNP4GCR01-AMW 与 CSNP32GCR01-AOW。芯片是基于 NAND FLASH 和 SD 控制器实现的 SD 卡。具有强大的坏块管理和纠错功能,并且在意外掉电的情况下同样能保证数据的安全。 …

Spring Boot框架下的教育导师匹配系统

第一章 绪论 1.1 选题背景 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信…

鉴源实验室·加密技术在汽车系统中的应用

随着汽车技术的快速发展,现代汽车已经不再是简单的交通工具,而是融合了多种智能功能的移动终端。无论是自动驾驶、车联网(V2X),还是车内娱乐系统,数据传输和存储已经成为汽车生态系统中的关键环节。然而&am…

Oracle数据库是什么?

Oracle Database,又名 Oracle RDBMS,简称 Oracle。Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或B/S体系…

利用Docker Compose构建微服务架构

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 利用Docker Compose构建微服务架构 引言 Docker Compose 简介 安装 Docker Compose 创建项目结构 编写 Dockerfile 前端 Dockerf…

macOS15.1及以上系统bug:开发者证书无法打开,钥匙串访问无法打开一直出现图标后立马闪退

团队紧跟苹果最新系统发现bug:今日设备信息如下,希望能带给遇到这个问题的开发者一点帮助。 错误图如下: 点击证书文件后,先出现钥匙串访问图标,后立马闪退消失 中间试过很多方法,都是一样的表现,最后好在解决了,看网上也没有相关的帖子,这里直接写解决办法和导致原因…

牵手APP引领交友新风尚,多元匹配助力寻找心仪伴侣

第54次《中国互联网络发展状况统计报告》数据显示,截至2024年6月,我国网民规模近11亿人,互联网普及率达78.0%。网络平台的普及,在便捷生活的同时,也衍生出一系列全新的领域与服务生态。如今,线上交友作为一…

C#WPF使用CommunityToolkit.Mvvm库

C#WPF之快速理解MVVM模式 接上篇介绍MVVM,这里使用相关库介绍MVVM。 CommunityToolkit.Mvvm CommunityToolkit.Mvvm介绍 CommunityToolkit.Mvvm是Microsoft Community Toolkit的一部分,它是一个轻量级但功能强大的MVVM(Model-View-ViewMod…

Pr 视频效果:ASC CDL

视频效果/颜色校正/ASC CDL Color Correction/ASC CDL ASC CDL ASC CDL效果通过对红、绿、蓝三个原色通道的独立调整,实现对图像色彩的精确控制。在此基础上,还可用于调整处理后图像的整体饱和度。 ◆ ◆ ◆ 效果选项说明 斜率 Slope、偏移 Offset和功…

【Linux】网络编程:应用层协议—HTTP协议(超详细)

目录 一、HTTP协议概念 HTTP协议的基本概念 HTTP的工作流程 二、认识URL URL 的基本结构 URLencode与URLdecode 三、认识HTTP协议 四、HTTP请求格式 1. 请求行(Request Line) 2. 请求报头(Request Headers) 3. 空行&a…

kelp protocol

道阻且长,行而不辍,未来可期 有很长一段时间我都在互联网到处拾金,but,东拼西凑的,总感觉不踏实,最近在老老实实的看官方文档 & 阅读白皮书 &看合约,挑拣一些重要的部分配上官方的证据,和过路公主or王子分享一下,愿我们早日追赶上公司里那些可望不可及大佬们。…

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件,用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容,并通过滚动机制来查看全部内容。这对于显示大量信息(如长列表、长篇文本或大型图像等&…

【Qt聊天客户端-min_Bug】客户端请求失败分析

1. 问题复现 问题出现的背景:编写同意好友请求websocket通知功能时,电脑异常断电后,重启项目出现该为Bug 服务端日志 客户端发送请求 客户端日志 2. 排查 307行日志正常打印,说明请求发送的没有问题,开始排查连接问…

推荐一款PowerPoint转Flash工具:iSpring Suite

iSpring Suite是一款PowerPoint转Flash工具,使用iSpring Suite 8可以轻松的将PPT演示文档转换为对Web友好的Flash影片格式。软件界面简洁,使用方便。为什么要转换成flash格式呢?Flash格式的最大特点是体积小巧、易于分发,兼容所有的操作系统…

有的网站是通过js控制页面新打开一个tab页的,但是我想通过注入js脚本修改为在当前页面打开

如果网站通过 JavaScript 控制在新标签页中打开页面(例如使用 window.open()),你可以通过注入脚本来修改其行为,使其在当前页面打开。 解决方案 你可以通过覆盖 window.open 函数来强制将所有新页面在当前窗口中打开。以下是一个…

论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck

论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck 1 背景1.1 问题1.2 本文提出的方法 2 创新点3 方法4 模块4.1 问题描述4.2 深度特征提取模块4.3 同任务渐进式训练策略 5 效果5.1 和SOTA方法对比 论文:https://arxi…

TQZC706开发板教程:ADRV9009观测双通道接收波形

本例程使用ZC706加ADRV9009修改HDL项目,在vivaod中使用ila实时抓取两路接收波形。 将网盘链接中的BOO.BIN文件复制到SD卡中,插入开发板,并将开发板的启动模式设置为SD卡启动。插入电源,JTAG和串口。 在NO-OS的ADRV9009的项目中&am…

物联优化汽车齿轮锻造

在汽车齿轮的锻造工艺中,锻造温度、锻造压力与行程、锻造速度与锤击方式以及热处理工艺等核心参数扮演着举足轻重的角色。这些参数的精准控制与实时监测,对于提升生产效率、确保产品质量、削减生产成本以及推动生产智能化转型具有不可估量的价值。明达技…

低代码解锁跨平台应用开发新境界

数字化转型中,企业面临应用开发挑战,低代码平台成为理想选择。ZohoCreator提供统一开发环境、拖拽设计、预置模板等,支持高效构建跨平台应用,确保数据安全与合规,助力企业数字化转型。 一、低代码平台是什么&#xff1…