【文章系列解读】Nerf
1. Nerf
NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
2020年8月3日
(0)总结
NeRF工作的过程可以分成两部分:三维重建和渲染。(1)三维重建部分本质上是一个2D到3D的建模过程,利用3D点的位置(x,y,z)及方位视角(θ,φ)作为输入,通过多层感知机(MLP)建模该点对应的颜色color(c)及体素密度volume density(σ),形成了3D场景的”隐式表示“(2)渲染部分本质上是一个3D到2D的建模过程,渲染部分利用重建部分得到的3D点的颜色及不透明度沿着光线进行整合得到最终的2D图像像素值。在训练的时候,利用渲染部分得到的2D图像,通过与Ground Truth做L2损失函数(L2 Loss)进行网络优化
(1)摘要
我们提出了一种方法,通过使用稀疏的输入视图集优化底层连续体积场景函数,实现合成复杂场景的新颖视图的最先进的结果。我们的算法使用全连接(非卷积)深度网络表示场景,其输入是单个连续 5D 坐标(空间位置 (x; y; z) 和观察方向 (θ; φ)),其输出是体积密度以及该空间位置处与视图相关的发射辐射率。我们通过查询沿相机光线的 5D 坐标来合成视图,并使用经典的体积渲染技术将输出颜色和密度投影到图像中。由于体积渲染本质上是可微分的,因此优化表示所需的唯一输入是一组具有已知相机姿势的图像。我们描述了如何有效地优化神经辐射场,以渲染具有复杂几何和外观的场景的逼真新颖视图,并展示了优于神经渲染和视图合成先前工作的结果。查看合成结果最好以视频形式观看,因此我们敦促读者观看我们的补充视频以获得令人信服的比较。
**图 1:**我们提出了一种方法,可以优化一组输入图像中场景的连续 5D 神经辐射场表示(任何连续位置处的体积密度和与视图相关的颜色)。我们使用体积渲染技术沿着光线累积该场景表示的样本,以从任何视点渲染场景。在这里,我们可视化了在周围半球上随机捕获的合成鼓场景的 100 个输入视图,并展示了根据优化的 NeRF 表示渲染的两个新颖视图。
(2)引言
在这项工作中,我们通过直接优化连续 5D 场景表示的参数,以一种新的方式解决长期存在的视图合成问题,以最大限度地减少渲染一组捕获图像的错误。
我们将静态场景表示为连续的 5D 函数,该函数输出空间中每个点 (x; y; z) 处每个方向 (θ; φ) 发射的辐射亮度,以及每个点的密度,其作用类似于如何控制变化的微分不透明度穿过 (x; y; z) 的光线会积累大量辐射。我们的方法优化了没有任何卷积层(通常称为多层感知器或 MLP)的深度全连接神经网络,通过从单个 5D 坐标 (x; y; z; θ; φ) 回归到单个 5D 坐标来表示该函数体积密度和与视图相关的 RGB 颜色。从特定视点渲染神经辐射场 (NeRF),我们:1) 使相机光线穿过场景以生成一组采样的 3D 点,2) 使用这些点及其相应的 2D 观看方向作为神经网络的输入来生成一组颜色和密度的输出,以及 3) 使用经典的体积渲染技术将这些颜色和密度累积成 2D 图像。因为这个过程自然是可微的,所以我们可以使用梯度下降来优化这个模型,通过最小化每个观察到的图像和从我们的表示呈现的相应视图之间的误差。跨多个视图最小化此错误可以鼓励网络通过向包含真实底层场景内容的位置分配高体积密度和准确的颜色来预测场景的连贯模型。图 2 直观地展示了整个管道。
我们发现,优化复杂场景的神经辐射场表示的基本实现并不能收敛到足够高分辨率的表示,并且在每条相机光线所需的样本数量方面效率低下。我们通过使用位置编码来转换输入 5D 坐标来解决这些问题,使 MLP 能够表示更高频率的函数,并且我们提出了一种分层采样过程来减少充分采样这种高频场景表示所需的查询数量。
我们的方法继承了体积表示的优点:两者都可以表示复杂的现实世界几何形状和外观,并且非常适合使用投影图像进行基于梯度的优化。至关重要的是,我们的方法克服了以高分辨率建模复杂场景时离散体素网格的高昂存储成本。总而言之,我们的技术贡献是:
(1) 一种将具有复杂几何形状和材料的连续场景表示为 5D 神经辐射场的方法,参数化为基本 MLP 网络。
(2)基于经典体积渲染技术的可微渲染程序,我们用它来优化标准 RGB 图像的这些表示。这包括分层采样策略,将 MLP 的容量分配给具有可见场景内容的空间。
(3)用于将每个输入 5D 坐标映射到更高维度空间的位置编码,这使我们能够成功优化神经辐射场以表示高频场景内容。
我们证明,我们得到的神经辐射场方法在数量和质量上都优于最先进的视图合成方法,包括将神经 3D 表示适合场景的工作以及训练深度卷积网络来预测采样体积表示的工作。据我们所知,本文提出了第一个连续神经场景表示,能够从自然环境中捕获的 RGB 图像中渲染真实物体和场景的高分辨率真实感新颖视图。
(3)相关工作
计算机视觉领域最近一个有前途的方向是在 MLP 的权重中对对象和场景进行编码,该权重直接从 3D 空间位置映射到形状的隐式表示,例如该位置处的符号距离 [6]。然而,到目前为止,这些方法无法以与使用离散表示(例如三角形网格或体素网格)表示场景的技术相同的保真度来再现具有复杂几何形状的现实场景。在本节中,我们回顾这两条工作,并将它们与我们的方法进行对比,该方法增强了神经场景表示的能力,以产生渲染复杂现实场景的最先进的结果。
使用 MLP 从低维坐标映射到颜色的类似方法也已用于表示其他图形函数,例如图像 [44]、纹理材料 [12,31,36,37] 和间接照明值 [38] 。
略
(4-1)模型结构:神经辐射场场景表示
我们将连续场景表示为 5D 向量值函数,其输入是 3D 位置 x = (x; y; z) 和 2D 观看方向 (θ; φ),其输出是发射颜色 c = (r; g ;b) 和体积密度 σ。在实践中,我们将方向表示为 3D 笛卡尔单位向量 d。我们用 MLP 网络 Fθ 来近似这个连续的 5D 场景表示: ( x , d ) → ( c , σ ) (\mathbf{x}, \mathbf{d}) \rightarrow(\mathbf{c}, \sigma) (x,d)→(c,σ) 并优化其权重 θ,以从每个输入 5D 坐标映射到其相应的体积密度和定向发射颜色。
图 2:我们的神经辐射场场景表示和可微渲染过程的概述。我们通过沿相机光线采样 5D 坐标(位置和观察方向)来合成图像 (a),将这些位置输入 MLP 以生成颜色和体积密度 (b),并使用体积渲染技术将这些值合成为图像 ( C)。该渲染函数是可微分的,因此我们可以通过最小化合成图像和地面真实观察图像之间的残差来优化场景表示(d)。
我们通过限制网络将体积密度 σ 预测为仅位置 x 的函数,同时允许将 RGB 颜色 c 预测为位置和观察方向的函数,从而鼓励表示实现多视图一致。为了实现这一点,MLP Fθ 首先使用 8 个全连接层(使用 ReLU 激活和每层 256 个通道)处理输入 3D 坐标 x,并输出 σ 和 256 维特征向量。然后,该特征向量与相机光线的观看方向连接,并传递到一个额外的全连接层(使用 ReLU 激活和 128 个通道),该层输出与视图相关的 RGB 颜色。
请参阅图 3,了解我们的方法如何使用输入观看方向来表示非朗伯效应的示例。如图 4 所示,在没有视图依赖性(仅 x 作为输入)的情况下训练的模型难以表示镜面反射。
(4-2)模型结构:具有辐射场的体渲染
我们的 5D 神经辐射场将场景表示为空间中任意点的体积密度和定向发射辐射度。我们使用经典体积渲染 [16] 的原理来渲染穿过场景的任何光线的颜色。体积密度 σ(x) 可以解释为射线终止于位置 x 处的无穷小粒子的微分概率。具有近边界和远边界 tn 和 tf 的相机光线 r(t) = o + td 的预期颜色 C® 为:
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) d t , where T ( t ) = exp ( − ∫ t n t σ ( r ( s ) ) d s ) C(\mathbf{r})=\int_{t_{n}}^{t_{f}} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) d t, \text { where } T(t)=\exp \left(-\int_{t_{n}}^{t} \sigma(\mathbf{r}(s)) d s\right) C(r)=∫tntfT(t)σ(r(t))c(r(t),d)dt, where T(t)=exp(−∫tntσ(r(s))ds)
图 3:与视图相关的发射辐射的可视化。我们的神经辐射场表示将 RGB 颜色输出为空间位置 x 和观察方向 d 的 5D 函数。在这里,我们可视化船舶场景的神经表示中两个空间位置的示例方向颜色分布。在 (a) 和 (b) 中,我们展示了来自两个不同相机位置的两个固定 3D 点的外观:一个位于船侧(橙色插图),一个位于水面(蓝色插图)。我们的方法预测这两个 3D 点的镜面反射外观的变化,并且在 © 中我们展示了这种行为如何在整个观察方向半球上持续推广。
函数 T(t) 表示光线从 tn 到 t 的累积透射率,即光线从 tn 传播到 t 而不撞击任何其他粒子的概率。从我们的连续神经辐射场渲染视图需要估计通过所需虚拟相机的每个像素追踪的相机光线的积分 C®。
我们使用求积法对这个连续积分进行数值估计。确定性求积通常用于渲染离散体素网格,它会有效地限制我们表示的分辨率,因为 MLP 只能在一组固定的离散位置进行查询。相反,我们使用分层抽样方法来划分 [tn; tf ] 放入 N 个均匀间隔的 bin 中,然后从每个 bin 内均匀随机抽取一个样本:
t i ∼ U [ t n + i − 1 N ( t f − t n ) , t n + i N ( t f − t n ) ] t_{i} \sim \mathcal{U}\left[t_{n}+\frac{i-1}{N}\left(t_{f}-t_{n}\right), t_{n}+\frac{i}{N}\left(t_{f}-t_{n}\right)\right] ti∼U[tn+Ni−1(tf−tn),tn+Ni(tf−tn)]
尽管我们使用一组离散样本来估计积分,但分层采样使我们能够表示连续的场景表示,因为它会导致在优化过程中在连续位置评估 MLP。我们使用这些样本通过 Max [26] 的体积渲染评论中讨论的求积规则来估计 C®:
C ^ ( r ) = ∑ i = 1 N T i ( 1 − exp ( − σ i δ i ) ) c i , where T i = exp ( − ∑ j = 1 i − 1 σ j δ j ) \hat{C}(\mathbf{r})=\sum_{i=1}^{N} T_{i}\left(1-\exp \left(-\sigma_{i} \delta_{i}\right)\right) \mathbf{c}_{i}, \text { where } T_{i}=\exp \left(-\sum_{j=1}^{i-1} \sigma_{j} \delta_{j}\right) C^(r)=i=1∑NTi(1−exp(−σiδi))ci, where Ti=exp(−j=1∑i−1σjδj)
其中 δ i = t i + 1 − t i \delta_{i}=t_{i+1}-t_{i} δi=ti+1−ti 是相邻样本之间的距离。这个用于从 ( c i , σ i ) \left(\mathbf{c}_{i}, \sigma_{i}\right) (ci,σi) 值集合计算 C ^ ( r ) \hat{C}(\mathbf{r}) C^(r) 的函数是微可微的,并且可简化为具有 alpha 值 α i = 1 − exp ( − σ i δ i ) \alpha_{i}=1-\exp \left(-\sigma_{i} \delta_{i}\right) αi=1−exp(−σiδi) 的传统 alpha 合成。
图 4:在这里,我们直观地看到了我们的完整模型如何从表示视点相关的发射辐射率以及通过高频位置编码传递输入坐标中受益。消除视图依赖性可防止模型在推土机履带上重新创建镜面反射。删除位置编码会大大降低模型表示高频几何和纹理的能力,导致外观过于平滑。
(4-3)模型结构:优化神经辐射场
在上一节中,我们描述了将场景建模为神经辐射场并根据该表示渲染新视图所需的核心组件。然而,我们发现这些组件不足以实现最先进的质量,如第 6.4 节所示)。我们引入了两项改进来能够表示高分辨率的复杂场景。第一个是输入坐标的位置编码,帮助 MLP 表示高频函数;第二个是分层采样过程,使我们能够有效地对这种高频表示进行采样。
(4-3-1)位置编码
尽管神经网络是通用函数逼近器[14],但我们发现让网络 Fθ 直接在 xyzθφ 输入坐标上运行会导致渲染在表示颜色和几何的高频变化方面表现不佳。这与 Rahaman 等人最近的工作[35]一致,该工作表明深度网络偏向于学习低频函数。他们还表明,在将输入传递到网络之前使用高频函数将输入映射到更高维度的空间可以更好地拟合包含高频变化的数据。
我们在神经场景表示的背景下利用这些发现,并表明将 Fθ 重新表述为两个函数 F Θ = F Θ ′ ∘ γ F_{\Theta}=F_{\Theta}^{\prime} \circ \gamma FΘ=FΘ′∘γ (一个已学习,一个未学习)的组合,可显着提高性能(见图 4 和表 2)。这里γ是从 R \mathbb{R} R 到更高维空间 R 2 L \mathbb{R}^{2L} R2L 的映射,并且 F Θ ′ F_{\Theta}^{\prime} FΘ′ 仍然是简单的常规MLP。形式上,我们使用的编码函数是:
γ ( p ) = ( sin ( 2 0 π p ) , cos ( 2 0 π p ) , ⋯ , sin ( 2 L − 1 π p ) , cos ( 2 L − 1 π p ) ) \gamma(p)=\left(\sin \left(2^{0} \pi p\right), \cos \left(2^{0} \pi p\right), \cdots, \sin \left(2^{L-1} \pi p\right), \cos \left(2^{L-1} \pi p\right)\right) γ(p)=(sin(20πp),cos(20πp),⋯,sin(2L−1πp),cos(2L−1πp))
该函数 γ(·) 分别应用于 x 中的三个坐标值中的每一个(它们被归一化为 [−1; 1])以及笛卡尔观察方向单位向量 d 的三个分量(通过构造,它们位于在[−1; 1]中)。在我们的实验中,我们将 γ ( x ) \gamma(x) γ(x) 设置为 L = 10,将 γ ( d ) \gamma(d) γ(d) 设置为 L = 4。
流行的 Transformer 架构 [47] 中使用了类似的映射,称为位置编码。然而,Transformers 将其用于不同的目标,即提供序列中令牌的离散位置作为不包含任何顺序概念的架构的输入。相反,我们使用这些函数将连续输入坐标映射到更高维度的空间,以使我们的 MLP 能够更轻松地逼近更高频率的函数。针对从投影建模 3D 蛋白质结构的相关问题的同时工作 [51] 也利用了类似的输入坐标映射。
(4-3-2)分层体积采样
我们沿着每条相机射线在 N 个查询点处密集评估神经辐射场网络的渲染策略效率很低:对渲染图像没有贡献的自由空间和遮挡区域仍然被重复采样。我们从体积渲染的早期工作中汲取灵感[20],并提出了一种分层表示,通过根据最终渲染的预期效果按比例分配样本来提高渲染效率。
我们不只是使用单个网络来表示场景,而是同时优化两个网络:一个“coarse”和一个“fine”。我们首先使用分层采样对一组 Nc 位置进行采样,并按照方程 2 和 3 中所述评估这些位置处的“粗”网络。给定此“粗”网络的输出,然后我们生成更明智的点采样沿着每条射线,样本偏向体积的相关部分。为此,我们首先重写等式中粗网络 C ^ c ( r ) \hat{C}_{c}(\mathbf{r}) C^c(r)的 alpha 合成颜色。公式 3 作为沿射线的所有采样颜色 ci 的加权和:
C ^ c ( r ) = ∑ i = 1 N c w i c i , w i = T i ( 1 − exp ( − σ i δ i ) ) \hat{C}_{c}(\mathbf{r})=\sum_{i=1}^{N_{c}} w_{i} c_{i}, \quad w_{i}=T_{i}\left(1-\exp \left(-\sigma_{i} \delta_{i}\right)\right) C^c(r)=i=1∑Ncwici,wi=Ti(1−exp(−σiδi))
将这些权重标准化为 w ^ i = w i / ∑ j = 1 N c w j \hat{w}_{i}=w_{i} / \sum_{j=1}^{N_{c}} w_{j} w^i=wi/∑j=1Ncwj 会产生沿射线的分段常数 PDF。我们使用逆变换采样从该分布中采样第二组 Nf 位置,在第一组和第二组样本的并集处评估我们的“fine”网络,并使用 公式3 计算光线 C ^ f ( r ) \hat{C}_{f}(\mathbf{r}) C^f(r) 的最终渲染颜色. 但使用所有 Nc+Nf 样本。此过程将更多样本分配给我们期望包含可见内容的区域。这解决了与重要性采样类似的目标,但我们使用采样值作为整个积分域的非均匀离散化,而不是将每个样本视为整个积分的独立概率估计。
(4-3-3)实施细节
我们为每个场景优化单独的神经连续体积表示网络。这仅需要捕获的场景 RGB 图像、相应的相机姿态和内在参数以及场景边界的数据集(我们使用地面实况相机姿态、内在参数和合成数据的边界,并使用 COLMAP 结构从运动包[39]估计真实数据的这些参数)。在每次优化迭代中,我们从数据集中的所有像素集中随机采样一批相机光线,然后遵循第 2 节中描述的分层采样。 5.2 从粗网络查询 Nc 样本,从精细网络查询 Nc + Nf 样本。然后我们使用第 2 节中描述的体积渲染过程。 4 渲染两组样本中每条光线的颜色。我们的损失只是粗略渲染和精细渲染的渲染像素颜色和真实像素颜色之间的总平方误差:
L = ∑ r ∈ R [ ∥ C ^ c ( r ) − C ( r ) ∥ 2 2 + ∥ C ^ f ( r ) − C ( r ) ∥ 2 2 ] \mathcal{L}=\sum_{\mathbf{r} \in \mathcal{R}}\left[\left\|\hat{C}_{c}(\mathbf{r})-C(\mathbf{r})\right\|_{2}^{2}+\left\|\hat{C}_{f}(\mathbf{r})-C(\mathbf{r})\right\|_{2}^{2}\right] L=r∈R∑[ C^c(r)−C(r) 22+ C^f(r)−C(r) 22]
其中 R 是每个批次中的光线集合,C®、 C ^ c ( r ) \hat{C}_{c}(\mathbf{r}) C^c(r)和 C ^ f ( r ) \hat{C}_{f}(\mathbf{r}) C^f(r)分别是光线 r 的地面实况、粗略体积预测和精细体积预测 RGB 颜色。请注意,即使最终渲染来自 C ^ f ( r ) \hat{C}_{f}(\mathbf{r}) C^f(r),我们也最小化 C ^ c ( r ) \hat{C}_{c}(\mathbf{r}) C^c(r) 的损失,以便粗网络的权重分布可以用于在精细网络中分配样本。
在我们的实验中,我们使用 4096 条射线的批量大小,每条射线在粗体积中的 Nc = 64 个坐标和精细体积中的 Nf = 128 个附加坐标处采样。我们使用 Adam 优化器 [18],其学习率从 5 × 10−4 开始,并在优化过程中以指数方式衰减到 5 × 10−5(其他 Adam 超参数保留默认值 β1 = 0:9, β2 = 0:999, 且 = 10−7 )。单个场景的优化通常需要大约 100-300k 次迭代才能在单个 NVIDIA V100 GPU 上收敛(大约 1-2 天)。
相关文章:

【文章系列解读】Nerf
1. Nerf NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 2020年8月3日 (0)总结 NeRF工作的过程可以分成两部分:三维重建和渲染。(1)三维重建部分本质上是一个2D到3D的建模过程ÿ…...

基于springboot,vue网上订餐系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术 :VueElementUI 服务端技术:springbootmybatisredis 本系统分用户前台和管理后台两部分,项…...
Nautilus Chain 更换全新测试网,主网即将在不久上线
目前,Nautilus Chain 正在为主网上线前的最后阶段做准备,据悉该链更新了全新的测试网,在此前版本的测试网的基础上进行了全新的技术升级,最新测试网版本与生态发展的技术规划更为贴近。本次测试网升级将会是最后一次测试网版本的迭…...
攻防世界web:Web_php_wrong_nginx_config,python3后门
网上的wp中关于Web_php_wrong_nginx_config的后门代码都是python2的(源码来自:Weevely:一个 PHP 混淆后门的代码分析 - Phukers Blog) 以下是转换成python3的版本 # encoding: utf-8from random import randint, choice from ha…...

【VUE】解决图片视频加载缓慢/首屏加载白屏的问题
1 问题描述 在 Vue3 项目中,有时候会出现图片视频加载缓慢、首屏加载白屏的问题 2 原因分析 通常是由以下原因导致的: 图片或视频格式不当:如果图片或视频格式选择不当,比如选择了无损压缩格式,可能会导致文件大小过大…...

spring复习:(35)在getBean时,在哪里根据普通bean和工厂bean进行区分处理来返回的?
在AbstractBeanFactory的doGetBean方法: 调用的getObjectForBeanInstance方法部分代码如下: 如果不是工厂bean,则直接将实例返回,否则调用getObjectFromFactoryBean方法获取工厂bean的getObject方法返回的对象 protected Object getObjectF…...

Jenkins全栈体系(二)
Jenkins 第三章 Jenkins Git Maven 自动化部署配置 十、几种构建方式 快照依赖构建/Build whenever a SNAPSHOT dependency is built 当依赖的快照被构建时执行本job 触发远程构建 (例如,使用脚本) 远程调用本job的restapi时执行本job job依赖构建/Build after other proj…...

c++11 标准模板(STL)(std::basic_istream)(九)
定义于头文件 <istream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的…...

OpenSource - Spring Startup Ananlyzer
文章目录 🚀Optimization of Spring Startup核心能力📈Spring应用启动数据采集报告应用启动时长优化 📈Spring应用启动数据采集报告安装jar包配置项应用启动自定义扩展 🚀应用启动时长优化支持异步化的Bean类型接入异步Bean优化 开…...

ES6迭代器、Set、Map集合和async异步函数
目录 迭代器 Iterator 的作用 Iterator 的遍历过程 Set Map集合 map和对象区别? async异步函数 迭代器 迭代器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口&…...

mac android studio设置跟mac系统一样的快捷键
mac版的android studio 跟mac系统的快捷键不一样,主要修改了下面几组操作,为了跟mac系统快捷键相同 setting->Keymap 搜索bottom 修改3个快捷键: cmd↓ 设置让鼠标移动到屏幕最后面 shiftcmd↓ 选中从当前位置到屏幕最下面 option↓. 或者 end 滚动到屏幕最下方 // 因为默认…...

Java-通过IP获取真实地址
文章目录 前言功能实现测试 前言 最近写了一个日志系统,需要通过访问的 IP 地址来获取真实的地址,并且存到数据库中,我也是在网上看了一些文章,遂即整理了一下供大家参考。 功能实现 这个是获取正确 IP 地址的方法,可…...
Java代码实现word转PDF
import com.spire.doc.Document; import com.spire.doc.FileFormat; import lombok.extern.slf4j.Slf4j; public class WordConvertPdf { /** * word转pdf * param wordPathName word文件路径及名称 * param pdfPathName pdf生成路径及名称 */ public static void wordToPdf(…...
Java设计模式-简单工厂(Simple Factory)模式
介绍 简单工厂(Simple Factory)模式,又称为静态工厂方法(Static Factory Method)模式。 由一个工厂类来创建具体产品,即创建具体类的实例。 简单工厂模式从概念上涉及三个角色: 抽象产品角色…...
微软所有业务线梳理
目录 一、Windows 二、Office 三、Surface 四、Xbox 五、Azure 六、Dynamics 七、LinkedIn 八、Bing...

SDN系统方法 | 1. 概述
随着互联网和数据中心流量的爆炸式增长,SDN已经逐步取代静态路由交换设备成为构建网络的主流方式,本系列是免费电子书《Software-Defined Networks: A Systems Approach》的中文版,完整介绍了SDN的概念、原理、架构和实现方式。原文: Softwar…...

【数据分享】1929-2022年全球站点的逐日平均压力数据(Shp\Excel\12000个站点)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…...

Profibus DP主站转Modbus TCP网关profibus从站地址范围
远创智控YC-DPM-TCP网关。这款产品在Profibus总线侧实现了主站功能,在以太网侧实现了ModbusTcp服务器功能,为我们的工业自动化网络带来了全新的可能。 远创智控YC-DPM-TCP网关是如何实现这些功能的呢?首先,让我们来看看它的Profib…...

MySQL子查询
😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🗼专栏系列:进入MySQL专栏知…...
学IT上培训班有用吗?
在学习IT技术的过程中,你是否也被安利过各种五花八门的技术培训班?这些培训班都是怎样向你宣传的,你又对此抱有着怎样的态度呢?在培训班里学技术,真的有用吗? 首先,IT行业是一个充满机遇和挑战…...
RMQ 算法详解(区间最值问题)
RMQ 算法详解(区间最值问题) 问题介绍解决方法暴力法ST表法基本思想算法步骤C实现 问题介绍 RMQ问题是OI中经常遇到的问题,主要是一下形式: 给你一堆数,不断的对里面的数进行操作,例如:让某个…...

git引用概念(git reference,git ref)(简化对复杂SHA-1哈希值的管理)(分支引用、标签引用、HEAD引用、远程引用、特殊引用)
文章目录 **引用的本质**1. **引用是文件**2. **引用的简化作用** **引用的类型**1. **分支引用(Branch References)**2. **标签引用(Tag References)**3. **HEAD 引用**4. **远程引用(Remote References)*…...
AURA智能助手在物联网(IoT)和数字化改造领域的使用
要设计一款在物联网(IoT)和数字化改造领域占据市场主导的AURA智能助手,产品经理需从行业痛点、技术架构、商业模式、生态整合四大维度切入,深度融合工业场景的特殊性。以下是系统性设计框架与落地策略: 一、精准定位:直击工业场景核心痛点 1. 解决企业级关键问题 场景痛…...
18-Oracle 23ai JSON二元性颠覆传统
在当今百花齐放的多模型数据库时代,开发人员常在关系型与文档型数据库间艰难取舍。Oracle Database 23ai推出的JSON关系二元性(JSON Relational Duality) 和二元性视图(Duality Views) 创新性地统一了两者优势…...

结合三维基因建模与智能体技术打造工业软件无码平台
通过深度整合 Protocol Buffers (Protobuf)、gRPC 及 Microsoft AI 技术,构建面向智能制造的高性能、智能化 PLM 平台。 一、Protocol Buffers 深度集成 1. 基因模型标准化定义 三维基因容器 Protobuf 规范: protobuf syntax "proto3"; pa…...
高防IP可以防护什么攻击类型?企业网络安全的第一道防线
“高防IP”成为企业构建网络安全防护体系的重要一环。尤其是对于金融、电商、游戏、政务等业务高度依赖网络稳定性的行业而言,确保系统724小时正常运行已经成为基本要求。高防IP到底可以防护哪些攻击类型?它又是如何帮助企业抵御风险、保障服务稳定运行的…...
分布式爬虫代理IP使用技巧
最近我们讨论的是分布式爬虫如何使用代理IP。在我们日常的分布式爬虫系统中,多个爬虫节点同时工作,每个节点都需要使用代理IP来避免被目标网站封禁。怎么解决代理IP问题显得尤为重要。 我们知道在分布式爬虫中使用代理IP是解决IP封禁、提高并发能力和实…...
Apache POI操作Excel详解
Maven依赖 <!-- 核心库(支持.xls) --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency><!-- 支持.xlsx格式 --> <dependency><groupId>org.a…...

LVDS的几个关键电压概念
LVDS的几个关键电压概念 1.LVDS的直流偏置 直流偏置指的是信号的电压围绕的基准电压,信号的中心电压。在LVDS中,信号是差分的, 两根线之间的电压差表示数据,很多时候两根线的电压不是在0v开始变化的,而是在某个 固定的…...

怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗
有时候咱们cesium加载模型时候型太黑,程序崩溃,不显示,位置不对模型太大怎么办 需要处理 可以联系Q:424081801 谢谢 需要处理 可以联系Q:424081801 谢谢...