VastGaussian:用于大型场景重建的巨大3D高斯函数

VastGaussian:用于大型场景重建的巨大3D高斯函数

  • 摘要
  • Introduction
  • Related Work
  • Preliminaries
  • Method

VastGaussian: Vast 3D Gaussians for Large Scene Reconstruction.

摘要

现有基于NeRF的大型场景重建方法在视觉效果和渲染速度方面往往存在限制。虽然最近的3D高斯分裂在小型和以目标为中心的场景上表现良好,但将其扩展到大型场景由于受到有限的视频内存、漫长的优化时间和明显的视觉外观变化等问题而面临挑战。

为了解决这些挑战,作者提出了VastGaussian,这是第一种基于3D高斯喷射的高质量重建和大型场景实时渲染的方法。作者提出了一种逐步分割策略,将大型场景划分为多个单元,其中训练相机和点云根据一种空中空间感知的可见性标准进行适当分布。这些单元在并行优化后合并成一个完整的场景。作者还将在优化过程中引入解耦的外观建模,以减少渲染图像中的外观变化。作者的方法优于现有的NeRF-based方法,并在多个大型场景数据集上取得了最先进的结果,实现了快速优化和高保真的实时渲染。

项目页面:https://vastgaussian.github.io

Introduction

大规模场景重建对于许多应用至关重要,包括自动驾驶[22, 33, 54],航空测绘[6, 13]以及虚拟现实,这些应用需要照片级的视觉质量和实时渲染。一些方法[41, 44, 52, 53, 61]被提出来扩展神经辐射场(NeRF)[31]到大规模场景,但它们仍然缺乏细节或者渲染速度缓慢。近期,3D高斯 splatting (3DGS) [21]作为一项具有视觉质量和渲染速度优异性能的有前景的方法出现,使得在1080p分辨率下实现照片级实时渲染成为可能。它也被应用于动态场景重建[28, 51, 55, 56]和3D内容生成[12, 42, 59]。然而,这些方法专注于小规模和以目标为中心的场景。当应用于大规模环境时,存在几个可扩展性问题。首先,3D高斯函数的数量受到给定视频内存的限制,而大型场景丰富的细节需要大量的3D高斯函数。简单地将3DGS应用于大规模场景将导致要么重建质量低,要么内存不足错误。为了直观解释,一个32GB的GPU可以用来优化大约1100万个3D高斯函数,而在Mip-NeRF 360数据集[3]中的小型Garden_场景,其面积不足100平方米,已经需要大约580万个3D高斯函数进行高保真重建。其次,需要对整个大型场景作为一个整体进行足够次数的迭代优化,这可能是耗时的,并且在没有良好正则化的情况下可能不稳定。第三,在大规模场景中,光照通常不均匀,捕获的图像中存在明显的外观变化,如图2(a)所示。3DGS倾向于生成低不透明度的大型3D高斯函数来补偿不同视角之间的差异。例如,明亮的斑点往往出现在曝光高的图像中靠近相机的地方,而暗斑点与曝光低的图像相关联。这些斑点在从新视角观察时变成了空中不愉快的漂浮物,如图2(b, d)所示。在这里插入图片描述
为了解决这些问题,作者提出了基于3D高斯溅射的大场景重建方法——Vast 3D高斯(VastGaussian)。作者以分而治之的方式重建大型场景:将大型场景划分为多个单元,独立优化每个单元,并最终将它们合并成完整的场景。由于这些单元在空间尺度上更精细且数据大小较小,因此更容易优化。一种自然而简单的划分策略是根据它们的位置将训练数据地理分布。这可能导致由于相邻两个单元之间通用相机较少而在边界处产生伪影,且如果没有足够的监督可能会在空中产生悬浮物。因此,作者提出了基于可见性的数据选择方法,以逐步融入更多训练相机和点云,这确保了无缝合并并消除了空中的悬浮物。作者的方法比3DGS具有更好的灵活性和可扩展性。这些单元中的每一个都包含较少的3D高斯分布,这降低了内存需求和优化时间,尤其是在使用多个GPU并行优化时。合并场景中包含的3D高斯总数可以大大超过整个场景训练时的数量,从而提高重建质量。此外,作者可以通过融入新单元或仅对特定区域进行微调来扩展场景,而无需重新训练整个大型场景。

为了减少由外观变化引起的漂浮物,提出了结合外观嵌入[29]的生成潜在优化(GLO)[5]用于基于NeRF的方法[41, 61]。这种方法通过光线行进采样点,并将点特征与外观嵌入一起输入到MLP中,以获得最终的颜色。渲染过程与优化相同,仍然需要外观嵌入作为输入。它不适合3DGS,因为其渲染是通过逐帧栅格化而不是通过MLP完成的。因此,作者提出了一种新颖的解耦外观建模,仅在优化过程中应用。作者逐像素地将外观嵌入附加到渲染的图像上,并将它们输入到CNN中,以获得用于在渲染图像上应用外观调整的变换图。作者通过惩罚渲染图像与其真实图像之间的结构差异来学习常数信息,同时,在调整后的图像上计算光度损失,以适应训练图像中的外观变化。作者只需要一致的渲染,所以这个外观建模模块在优化后可以丢弃,从而不会降低实时渲染速度。

在几个大型场景基准测试上的实验证实了作者的方法优于基于NeRF的方法。作者的贡献总结如下:

作者介绍了VastGaussian,这是第一种基于3D高斯溅射的大场景高保真重建和实时渲染方法。

作者提出了一种逐步数据划分策略,该策略将训练视图和点云分配到不同的单元格中,从而实现并行优化和无缝合并。

作者引入了解耦的外观建模到优化过程中,这可以抑制由于外观变化引起的漂浮物。在优化后,可以丢弃这个模块以获得实时渲染速度。

Related Work

Large Scene Reconstruction
在过去的几十年中,基于图像的大型场景重建取得了重大进展。一些研究[1、16、23、34、38、39、62]遵循运动结构(SfM)流程来估计相机姿态和稀疏点云。后续研究[17、19]基于多视图立体(MVS)从SfM输出生成密集点云或三角网格。随着NeRF[31]近年来成为照片级真实新颖视图合成的流行3D表示形式[35],许多变体被提出以改善质量[2、45、47、48、49、57、2、24、44、54],提高速度[8、9、11、14、20、32、36、37、40、43、46、58、60],扩展到动态场景[7、15、18、25、27、50]等。一些方法[41、44、52、53、61]将其扩展到大型场景。Block-NeRF[41]将城市划分为多个区块,并根据其位置分配训练视图。Mega-NeRF[44]使用基于网格的划分,并将图像中的每个像素通过其射线穿过的不同网格分配给它们。与这些启发式分割策略不同,Switch-NeRF[61]引入了NeRF专家混合框架来学习场景分解。Grid-NeRF[53]不执行场景分解,而是结合了基于NeRF和基于网格的方法。尽管这些方法的渲染质量显著优于传统方法,但它们仍然缺乏细节并且渲染速度慢。最近,3D高斯溅射[21]引入了一种具有高质量和实时渲染能力的表达性显式3D表示,在1080p分辨率下。然而,将其扩展到大型场景并不是一件容易的事。作者的VastGaussian是第一个通过场景划分、优化和合并的新颖设计来实现这一点的。

Varying Appearance Modeling
外观变化是在变化的光照或不同的摄像机设置(如自动曝光、自动白平衡和色调映射)下基于图像的重建中常见的问题。NRW [30] 以数据驱动的方式训练一个外观编码器,使用对比损失,它以延迟着色的深度缓冲区作为输入并生成一个外观嵌入(AE)。NeRF-W [29] 将AE附加到基于射线的行进中的点状特征上,并将它们输入到MLP以获得最终颜色,这在许多基于NeRF的方法[41, 44, 61]中成为了标准做法。Ha-NeRF [10] 将AE设置为跨不同视图的全局表示,并通过视图一致性损失来学习它。在作者的VastGaussian中,作者将AE与渲染的图像连接起来,将它们输入到CNN以获得变换图,并使用变换图来调整渲染的图像以适应外观变化。

Preliminaries

在本文中,作者提出了基于三维高斯溅射(3DGS)[21]的大场景重建和渲染方法 VastGaussian。3DGS通过一组三维高斯分布 G G G来表示几何和外观。每个三维高斯由其位置、各向异性协方差、不透明度和用于视点相关颜色的球面谐波系数来描述。在渲染过程中,每个三维高斯被投影到图像空间作为一个二维高斯。这些投影的二维高斯被分配到不同的图块中,然后按点基体积渲染方式[63]对它们进行排序和alpha混合,形成一个渲染图像。

用于优化场景的数据集包含一个稀疏点云 P P P和训练视图 V = { ( C i , I i ) } V=\{(C_i, I_i)\} V={(Ci,Ii)},其中 C C C是第 i i i个相机, I I I是相应的图像。 P P P C C C是通过从 V V V中进行Structure-from-Motion(SfM)估计得到的。 P P P用于初始化3D高斯分布,而 V V V用于基于可微渲染和梯度优化的3D高斯分布。对于相机 C C C,通过可微光栅化器 R R R获得的渲染图像 I R = R ( G , C ) I_{R}=R(G,C) IR=R(G,C)。以下是根据 I R I_{R} IR I I I之间的损失函数优化3D高斯分布属性:
L = ( 1 − α ) L 1 ( I R , I i ) + α L D − S S I M ( I T , I i ) L = (1 - \alpha) L1(I_{R}, I_{i}) + \alpha LD-SSIM(I_{T}, I_{i}) L=(1α)L1(IR,Ii)+αLDSSIM(IT,Ii)
其中 α \alpha α是一个超参数,而 L D − S S I M LD-SSIM LDSSIM表示D-SSIM损失[21]。这个过程与自适应点加密交错进行,当点的累积梯度达到一定阈值时触发。

Method

3DGS [21] 在小规模和以目标为中心的场景中表现良好,但当扩展到大型环境时,由于视频内存限制、漫长的优化时间和外观变化,它会遇到困难。在本文中,作者将3DGS扩展到大型场景,以实现实时和高品质的渲染。作者 Proposal 将大型场景划分为多个单元格,并在单独优化后进行合并。在第四部分1.1节,作者引入了一种渐进式数据分区策略,该策略具有考虑空中可见性的计算。第四部分1.2节详细阐述了如何优化单个单元格,展示了作者解耦的外观建模方法,以捕捉图像中的外观变化。最后,在第四部分1.3节中,作者描述了如何合并这些单元格。

Progressive Data Partitioning
作者将大型场景划分为多个单元格,并将点云P的一部分和视图V分配给这些单元格以进行优化。这些单元格中的每一个都包含较少的3D高斯分布,这对于内存容量较低情况下的优化更加适合,并且在并行优化时需要的训练时间较少。作者的渐进式数据分区策略的流程图如图3所示。在这里插入图片描述
基于摄像机位置的分区划分。 如图3(a)所示,作者根据摄像机在地面平面上的投影位置来划```
分场景,并确保每个单元格包含相似数量的训练视图,以保证在相同迭代次数下不同单元格之间的优化平衡。不失一般性,假设一个 m × n m \times n m×n的网格单元很好地适应所讨论的场景,作者首先沿着一个轴线将地面平面划分为 m m m个部分,每个部分大约包含 ∣ V ∣ / m |V|/m V∣/m个视图。然后这些部分沿着另一个轴线进一步细分为 n n n段,每段大约包含 ∣ V ∣ / ( m × n ) |V|/(m \times n) V∣/(m×n)个视图。虽然这里作者以网格为基础的划分为例,但作者的数据分区策略同样适用于其他基于地理划分的方法,比如扇区化和四叉树。

基于位置的数据选择。如图3(b)所示,作者在扩展边界后,将训练视角 V V V和点云 P P P的一部分分配给每个单元格。具体来说,假设第 j j j个区域在一个 h × C h \times C h×C的矩形内界定;原始边界按照一定的比例扩大,本文中为20%,从而得到一个更大的尺寸为 ( 1 + 0.2 ) × ( C + 0.2 ) × C ′ (1+0.2) \times (C+0.2) \times C' (1+0.2)×(C+0.2)×C的矩形。作者根据扩展后的边界将训练视角 V V V分割为 { V } i \{V\}_i {V}i,并以同样的方式将点云 P P P分割为 { P } i \{P\}_i {P}i

基于可见性的相机选择。作者发现上一步选择的相机不足以进行高保真重建,这可能导致细节较差或出现漂浮物伪影。为了解决这个问题,作者提出根据可见性标准增加更多相关的相机,如图3©所示。对于一个尚未选择的相机 C C C,设 Q i j Q_{ij} Qij为图像 I j I_j Ij中第 j j j个单元的投影面积, Q j Q_j Qj I j I_j Ij的面积;可见性定义为 Q i j / Q j Q_{ij}/Q_j Qij/Qj。那些可见性值大于预定义阈值 T T T的相机被选中。

请注意,不同的计算 Q i j Q_{ij} Qij的方式会导致不同的摄像机选择。如图3(e)所示,一种自然而简单的解决方案是基于分布在物体表面的三维点。这些点投影到 I j I_j Ij上形成一个面积为 S Q SQ SQ的凸包。这种计算对空域是盲目的,因为它只考虑了表面。因此,在这种计算中,由于在第 j j j个单元上的低可见性,一些相关的摄像头没有被选中,这导致了对空域的监督不足,并且无法抑制空中漂浮物。

作者引入了一种考虑空域的可见性计算方法,如图3(f)所示。具体来说,由第 j j j个单元格中的点云形成一个轴对齐的边界框,其高度选为最高点与地面平面之间的距离。作者将边界框投影到 I j I_j Ij上,并得到一个凸包区域 Q j ′ Q_j' Qj. 这种考虑空域的解决方案考虑了所有可见空间,这确保了给定一个适当的可见性阈值,选择对该单元格优化有重要贡献的视图,并为空域提供足够的监督。

基于覆盖范围的点选择。在将更多相关的摄像头添加到第 j j j个单元的摄像头集合 V j V_j Vj之后,作者将所有在 V j V_j Vj中视图覆盖的点添加到 P j P_j Pj中,如图3(d)所示。新选择的点可以为该单元的优化提供更好的初始化。如图3(g)所示,一些在第 j j j个单元外的物体可以被 V j V_j Vj中的某些视图捕捉到,由于没有适当的初始化而导致深度歧义,会在错误的位置生成新的3D高斯分布来拟合这些物体。然而,通过添加这些物体点进行初始化,可以轻松创建正确位置的新3D高斯分布来拟合这些训练视图,而不是在第 j j j个单元中产生浮动点。需要注意的是,在单元优化后,单元外部生成的3D高斯分布将被移除。

Decoupled Appearance Modeling
在光照不均匀条件下拍摄的图像中存在明显的外观变化,如图2 (a-d)所示,3DGS倾向于在不同视图中产生浮点物以补偿这些变化。
为了解决这个问题,一些基于NeRF的方法[29,41,44,61]在逐像素光线行进中,将外观嵌入与基于点的特征连接起来,并将它们输入到辐射MLP中以获得最终的颜色。这种方法不适合3DGS,因为3DGS的渲染是通过逐帧光栅化实现的,不使用MLPs。相反,作者将解耦的外观建模引入到优化过程中,这产生了一个转换图来调整渲染图像以适应训练图像中的外观变化,如图4所示。具体来说,作者首先将渲染图像进行下采样,这不仅可以防止转换图学习高频细节,还可以减少计算负担和内存消耗。然后,作者将一个长度为 m m m的外观嵌入 L L L连接到下采样后三通道图像的每个像素上,得到一个具有 3 + m 3+m 3+m个通道的2D图 D i D_i Di。将 D i D_i Di输入到一个卷积神经网络(CNN)中,该网络逐步将 D i D_i Di上采样以生成与 T T T同分辨率的 M i M_i Mi。最后,通过使用 M i M_i Mi进行逐像素转换 T T T,得到具有外观变化图像 I j I_j Ij在这里插入图片描述

=T(I_j;M_i;).
在作者的实验中,一个简单的逐像素乘法在作者使用的数据集上表现良好。外观嵌入和卷积神经网络(CNN)与3D高斯分布一同优化,使用的损失函数是根据方程式( 1 1 1)修改得来的: = ( 1 − α ) L 1 ( I i , I i ) + α L D − s s I M ( I ′ , I i ) =(1 - \alpha)L1(I_i,I_i) + \alpha LD-ssIM(I',I_i) =(1α)L1(Ii,Ii)+αLDssIM(I,Ii)
由于LD-ssIM主要惩罚结构的不相似性,将它应用于 I j I_j Ij 和真实图像 I i I_i Ii之间使得 I j I_j Ij中的结构信息接近 I i I_i Ii,而将外观信息留给和卷积神经网络(CNN)去学习。损失 L L L被用于外观可变渲染和 I j I_j Ij之间,它用于拟合可能与其他图像在外观上有所变化的真实图像 I i I_i Ii。经过训练后,期望 I j I_j Ij能与其他图像保持外观一致,从而让3D高斯分布能够学习所有输入视图的平均外观和正确的几何形状。这种外观建模在优化后可以被丢弃,而不会降低实时渲染的速度。
Seamless Merging
在独立优化所有单元之后,作者需要将它们合并以获得完整的场景。对于每个优化的单元,在边界扩展之前,作者删除了原始区域外的3D高斯分布(图3(a))。否则,它们可能成为其他单元中的浮动物。然后作者合并这些非重叠单元的3D高斯分布。由于在作者数据划分中相邻单元之间有一些共同的训练视角,因此合并后的场景在外观和几何上是无缝的,没有明显的边界伪影。因此,无需像Block-NeRF [41]那样进行进一步的外观调整。合并场景中包含的3D高斯分布总数可以大大超过整个场景训练时的数量,从而提高重建质量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Python的校园舆情管理系统(附源码、文档说明)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

SpringAMQP-消息转换器

这边发送消息接收消息默认是jdk的序列化方式,发送到服务器是以字节码的形式,我们看不懂也很占内存,所以我们要手动设置一下 我这边设置成json的序列化方式,注意发送方和接收方的序列化方式要保持一致 不然回报错。 引入依赖&#…

微信小程序之转盘抽奖

1. 实现效果 2. 实现过程 话不多说&#xff0c;直接上代码 /**index.wxml */ <view class"title">旋转大转盘</view> <view class"rote-box fcc"><view class"box fcc"><image class"bg" src"/stat…

亚马逊跨境电商,如何制作产品安装视频二维码?

对于海外电商平台的商家来说&#xff0c;售后的客服工作也非常重要。产品破损、物流延误&#xff0c;或者使用体验不好、产品安装太复杂、缺少一个零件、发错颜色……任何一个新增的差评都够商家头疼好久&#xff0c;说服买家修改或者删除差评总要费很大工夫。 所以&#xff0…

【Python贪吃蛇】:编码技巧与游戏设计的完美结合

文章目录 &#x1f525;一、运行效果&#x1f4a5;二、游戏教程✈1. 导入模块❤️2. 初始化游戏元素☔3. 改变蛇移动的方向&#x1f44a;4. 绘制方块&#x1f680;5. 检查蛇头是否在游戏区域内&#x1f308;6. 定义蛇的移动函数&#x1f3ac;7. 绑定键盘事件 ⭐三、完整代码 &a…

探索美国动态IP池:技术赋能下的网络安全新篇章

在数字化飞速发展的今天&#xff0c;网络安全成为了各行各业关注的焦点。特别是在跨国业务中&#xff0c;如何保障数据的安全传输和合规性成为了企业面临的重要挑战。美国动态IP池作为一种新兴的网络技术&#xff0c;正逐渐走进人们的视野&#xff0c;为网络安全提供新的解决方…

LeetCode 0994.腐烂的橘子:广度优先搜索(BFS)

【LetMeFly】994.腐烂的橘子&#xff1a;广度优先搜索(BFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/rotting-oranges/ 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子…

韵搜坊(全栈开发)-- 项目介绍

文章目录 项目介绍技术栈前端后端 业务流程 后端地址&#xff1a; https://github.com/IMZHEYA/zhesou-backend 前端地址&#xff1a; https://github.com/IMZHEYA/zhesou-frontend 图标设计&#xff08;AI生成&#xff09;&#xff1a; 项目介绍 一个聚合搜素平台&#xff…

SaToken框架实现在Rpc上下文的login处理逻辑

最近在工作中遇到一个需求&#xff0c;需要在项目A中实现一个rpc接口供其他项目调用&#xff0c;接口返回登录token&#xff0c;从而实现其他项目的用户能免密登录到项目A。 项目A是用了SaToken来做的鉴权&#xff0c;原本我的打算是直接在rpc中调用StpUtil.login()方法来实现登…

速锐得深入解析吉利几何CAN总线数据通信网络的拓扑层级框架技术

在现代汽车工业中&#xff0c;车辆的电子控制单元&#xff08;ECU&#xff09;之间的通信至关重要。这种通信大多通过控制器局域网络&#xff08;CAN&#xff09;总线实现&#xff0c;它是德国BOSCH公司于20世纪80年代初开发的一种串行数据通信协议。随着技术的不断进步&#x…

【数据结构】之栈的应用——有效的括号

文章目录 有效的括号 有效的括号 原题链接&#xff1a;有效的括号 详解栈的链接 这道题可以利用栈来解决 1.左括号入栈 2.右括号与出栈顶左括号匹配 //创建一个动态的栈 typedef char STDateType; typedef struct Stack {STDateType* a;//储存指定数据类型的数组int top…

Verilog中信号发生器的代码实现

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 描述 题目描述&#xff1a; 请编写一个信号发生器模块&#xff0c;根据波形选择信号wave_choise发出相应的波形&#xff1a;wave_choice0时&#xff0c;发出方波信号&#xff1b;wave_choice1时&#xff0c;发出锯齿…

栈的实现与OJ括号匹配

今日备忘录: "不破不立. " 本文索引 1. 前言2. 顺序表与链表的区别3. 什么是栈4. 栈的实现5. OJ括号匹配6. 总结 1. 前言 人总是在坍塌中重建, 有些东西必须摧毁, 才能迎来新生, 不管是那些消耗你的人, 还是令你感到焦虑的事情, 还是一份你觉得毫无意义并且又不喜欢…

CSS3私有前缀+新增盒模型相关属性+新增背景属性(如果想知道CSS3私有前缀、新增盒模型相关属性的知识点,那么只看这一篇就足够了!)

前言&#xff1a;CSS3 是CSS2 的升级版本&#xff0c;它在CSS2 的基础上&#xff0c;新增了很多强大的新功能&#xff0c;从而解决一些实际面临的问题。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下本篇文章的…

解聘7名教授!高校取消终身教授制度,启动全员“末位淘汰”

如今&#xff0c;高校是越来越卷了&#xff0c;身处其中的每个人似乎都无法避免。 前一段时间&#xff0c;国内某985高校说是要搞职称降级聘任&#xff0c;另一所985高校说要淘汰多少比例的教师&#xff0c;引发学术圈广泛讨论。 国外呢&#xff0c;同样要卷起来了&#xff0…

[代码比较工具下载及使用]你真的需要一个代码比较工具

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到资源分享系列 这里有你想要的各种高质量资源 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭建个人网站 …

STM32-LCD液晶屏(ILI9341)

MCU&#xff1a;STM32F103VET6 开发环境&#xff1a;STM32CubeMXMDK5 目录 STM32液晶屏LCD&#xff08;ILI9341&#xff09; LCD液晶显示 液晶控制原理 ILI9341液晶控制器简介 8080写时序 8080读时序 FSMC模拟8080时序 液晶屏的信号线 STM32CubeMX配置FSMC 测试部分 …

都是免费的SSL证书,有什么区别

国内做SSL证书的服务商还是比较多&#xff0c;但也不是所有服务商都提供免费的SSL证书&#xff0c;一般只有少数几家提供免费SSL证书。那么&#xff0c;同样都是免费的SSL证书&#xff0c;有哪些不一样的地方呢&#xff1f; 1、验证类型&#xff1a;免费SSL证书通常只提供域名…

网络实验新境界,PNETLab模拟器部署指南

在网络工程领域&#xff0c;拥有一个可靠的网络实验平台至关重要。PNETLab模拟器是一款功能强大的网络仿真工具&#xff0c;它支持包括华为、华三、锐捷、思科在内的多种设备&#xff0c;并且以开源免费的形式提供&#xff0c;这使得它在业界备受青睐。 软件介绍 PNETLab&am…

网络安全防护:抵御DDoS和CC攻击

在当今数字化时代&#xff0c;网络安全已成为任何组织或个人不可忽视的重要议题。DDoS&#xff08;分布式拒绝服务&#xff09;攻击和CC&#xff08;命令与控制&#xff09;攻击作为两种最为常见的网络攻击方式&#xff0c;给网络运营者和用户带来了巨大的威胁和影响。本文将介…