当前位置: 首页 > news >正文

【论文笔记】NeuRAD: Neural Rendering for Autonomous Driving

原文链接:https://arxiv.org/abs/2311.15260

1. 引言

神经辐射场(NeRF)应用在自动驾驶中,可以创建可编辑的场景数字克隆(可自由编辑视角和场景物体),以进行仿真。但目前的方法或者需要大量的训练时间,或者对传感器的建模过于简单(导致仿真和真实数据的间隙),或者性能较低。
在这里插入图片描述
本文提出NeuRAD,一种可编辑的新视图合成模型。该方法可以处理大型自动驾驶场景,建模了重要的传感器特性(如相机的卷帘式快门、激光雷达的光束发散)。此外,本文的模型简单,其中静态和动态元素通过位置嵌入分辨。NeuRAD有泛化性和SotA性能。

3. 方法

本文的NeuRAD在各数据集上均有低重建误差和推断时间,其总览如下图所示。
在这里插入图片描述

3.1 场景表达和传感器建模

神经场景表达:本文使用神经特征场(NFF,是NeRF和类似方法的推广)。给定位置 x x x和视线方向 d d d,NFF输出隐式几何 s s s和特征向量 f f f,并进行体积渲染。

为提取射线 r ( τ ) = o + τ d r(\tau)=o+\tau d r(τ)=o+τd的特征,沿射线采样 N r N_r Nr个点,并使用传统的alpha合成方法聚合这些采样点的特征:
f ( r ) = ∑ i = 1 N r w i f i , w i = α i ∏ j = 1 i − 1 ( 1 − α j ) (1) f(r)=\sum_{i=1}^{N_r}w_i f_i,w_i=\alpha_i\prod_{j=1}^{i-1}(1-\alpha_j)\tag{1} f(r)=i=1Nrwifi,wi=αij=1i1(1αj)(1)
这里 α i \alpha_i αi表示点 x i = o + τ i d x_i=o+\tau_i d xi=o+τid的不透明度, w i w_i wi为沿射线从原点到 x i x_i xi的累积透射率。本文使用能恢复高质量几何的有符号距离函数(SDF)表达隐式几何并近似得到不透明度:
α i = 1 1 + e β s i \alpha_i=\frac{1}{1+e^{\beta s_i}} αi=1+eβsi1
其中 s i s_i si x i x_i xi处的SDF值, β \beta β为可学习参数。使用更精确的SDF公式能提高性能,但需要对每个3D点进行梯度计算,从而影响运行时间。

相机建模:对相机射线集合进行体积渲染,生成特征图 F ∈ R H f × W f × N f \mathcal{F}\in\mathbb{R}^{H_f\times W_f\times N_f} FRHf×Wf×Nf。然后使用CNN上采样渲染得到更高分辨率的最终图像 I ∈ R H I × W I × 3 \mathcal{I}\in\mathbb{R}^{H_I\times W_I\times 3} IRHI×WI×3。这样可以减少渲染的射线数量。

激光雷达建模:将激光雷达的发射脉冲视为射线,进行体积渲染。设激光雷达点对应的射线为 r ( τ ) = o + τ d r(\tau)=o+\tau d r(τ)=o+τd,其中 o o o为激光雷达原点, d d d为归一化光束方向。射线的期望深度 E [ D l ( r ) ] = ∑ i = 1 N r w i τ i \mathbb{E}[D_l(r)]=\sum_{i=1}^{N_r}w_i\tau_i E[Dl(r)]=i=1Nrwiτi。预测强度时,根据式(1)得到特征,并通过MLP。

射线丢弃的建模在激光雷达的建模中很重要,但基于物理的建模不可行,因其依赖低级传感器的(未公开的)检测逻辑。使用MLP将(1)式的输出特征映射为射线丢弃概率 p d ( r ) p_d(r) pd(r)。由于使用的数据集未作考虑,本文未建模激光雷达光束的第二返回。

3.2 扩展神经特征场

将神经特征场扩展为学习函数 ( s , f ) = N F F ( x , t , d ) (s,f)=NFF(x,t,d) (s,f)=NFF(x,t,d),其中时间 t t t作为输入,以建模动态物体。

结构:给定位置 x x x和时间 t t t,本文查询参与者感知的哈希编码。然后将编码送入小型MLP计算有符号距离 s s s和中间特征 g ∈ R N g g\in\mathbb{R}^{N_g} gRNg。使用球面谐波编码视线方向 d d d,使模型捕捉视线相关的特征。最后,使用MLP联合处理方向编码和 g g g,使用 g g g的跳跃连接增强后,得到 f f f

场景组成:本文将场景分解为两个部分,静态背景和刚性动态参与者集合,其中每个动态参与者由一个3D边界框和SO(3)姿态定义。其目的有二:简化学习过程与实现可编辑性(参与者可以在训练完成后被移动)。本文使用统一的NFF处理各场景元素,其中动态和静态成分的区分来自于参与者感知的哈希编码。编码策略很直接:若给定的样本 ( x , t ) (x,t) (x,t)位于边界框内,就使用一种函数编码;否则使用另一种函数。

无界静态场景:本文对静态场景使用多分辨率哈希网格。但由于静态场景的无界性,本文使用了MipNeRF-360的收缩方法,从而能使用单一哈希网格精确表达附近的道路元素和远处的云。

刚性动态参与者:若样本 ( x , t ) (x,t) (x,t)位于边界框内,则 x x x和视线方向 d d d会转化到 t t t时刻的参与者坐标系中。这使得可以像静态场景一样,从时间无关的多分辨率哈希网格中采样特征。与使用多个哈希网格表达不同参与者的方法相比,本文使用单一4D哈希网格(其中第4维度表示参与者索引),以并行采样所有参与者的特征。

3.3 汽车数据建模

多尺度场景:对汽车数据使用神经渲染的一大挑战是处理数据中的多层次细节。过去的方法如Zip-NeRF使用多采样和降权法建模视锥,能极大提高性能,但运行时间也极大增加了。

本文的方法基于哈希网格特征相对视锥的大小来进行降权。将射线 r ( τ ) = o + τ d r(\tau)=o+\tau d r(τ)=o+τd建模为金字塔,其横截面积为 A ( τ ) = r ˙ h r ˙ v τ 2 A(\tau)=\dot{r}_h\dot{r}_v\tau^2 A(τ)=r˙hr˙vτ2,其中 r ˙ h , r ˙ v \dot{r}_h,\dot{r}_v r˙h,r˙v分别为水平和垂直的光束发散性,基于图像的patch大小或激光雷达的光束发散性得到。对区间 [ τ i , τ i + 1 ) [\tau_i,\tau_{i+1}) [τi,τi+1)之间的视锥截体,记其两端的截面面积分别为 A i A_i Ai A i + 1 A_{i+1} Ai+1,其体积为
V i = τ i + 1 − τ i 3 ( A i + A i A i + 1 + A i + 1 ) V_i=\frac{\tau_{i+1}-\tau_i}{3}(A_i+\sqrt{A_iA_{i+1}}+A_{i+1}) Vi=3τi+1τi(Ai+AiAi+1 +Ai+1)
其位置编码 e i e_i ei x i = o + τ i + τ i + 1 2 d x_i=o+\frac{\tau_i+\tau_{i+1}}{2}d xi=o+2τi+τi+1d处的结果。对第 l l l层的、分辨率为 n l n_l nl的哈希网格,其位置编码的权重为 w i , l = m i n ( 1 , 1 n l V i 1 / 3 ) w_{i,l}=\mathtt{min}(1,\frac{1}{n_lV_i^{1/3}}) wi,l=min(1,nlVi1/31),即单元格大小( 1 / n l 3 1/n_l^3 1/nl3)与截锥体积之比。

高效采样:渲染大尺度场景的另一困难是高效采样。由于需要同时渲染附近物体细节丰富的纹理和远处物体的视差,沿射线均匀采样需要大量采样点,导致计算可行性低。

本文根据幂函数沿射线采样,即沿射线距离越远的地方,采样点越稀疏。但这样也需要大量的采样。因此本文使用两轮提案采样,其中轻量级NFF采样沿射线的权重分布,并根据权重采样新样本集合。这样可以得到细化的样本集合,沿射线关注相关区域,以查询完整的NFF。为监督提案网络,本文使用抗混叠在线蒸馏;额外使用激光雷达监督,对应的损失项为3.4节中的 L d \mathcal{L}^d Ld L w \mathcal{L}^w Lw

建模卷帘式快门:标准的NeRF假设图像的所有像素来自相同原点 o o o,但许多相机有卷帘式快门,即像素是按顺序捕获的。此时相机的原点会在不同行之间变化。这对于侧视相机来说影响很大。激光雷达也有相同的情况,即激光雷达扫描是在一段时间内采集得到的。本文通过为每个射线分配时间,并根据估计的运动调整原点,来建模卷帘式快门。详见附录E。

不同的相机设置:不同的相机可能会有不同的捕捉参数,如曝光时间。本文为每个传感器使用简单的编码,并与 g g g一起输入第二个MLP。在体积渲染之后,也会使用这些传感器编码,从而极大地减小计算开销。

带噪声的参与者姿态:本文的模型依赖动态参与者的估计姿态。为考虑估计误差,本文将参与者姿态作为模型的可学习参数,并联合优化之。姿态被表达为平移 t ∈ R 3 t\in\mathbb{R}^3 tR3和旋转的6D表示。

3.4 损失

本文使用相机和激光雷达观测作为监督 L = L image + L lidar \mathcal{L}=\mathcal{L}^\text{image}+\mathcal{L}^\text{lidar} L=Limage+Llidar

图像损失:图像损失是逐patch计算的,然后将 N p N_p Np个patch的损失取均值。损失包含重建项和感知项:
L image = 1 N p ∑ i = 1 N p λ rgb L i rgb + λ vgg L i vgg \mathcal{L}^\text{image}=\frac{1}{N_p}\sum_{i=1}^{N_p}\lambda^\text{rgb}\mathcal{L}^\text{rgb}_i+\lambda^\text{vgg}\mathcal{L}^\text{vgg}_i Limage=Np1i=1NpλrgbLirgb+λvggLivgg
其中重建项 L i rgb \mathcal{L}^\text{rgb}_i Lirgb为像素之间的平方误差,感知损失 L i vgg \mathcal{L}^\text{vgg}_i Livgg与pix2pixHD中的相同。

激光雷达损失:使用激光雷达提供的几何先验,通过为激光雷达射线添加深度损失,并为空区域进行权重衰减以惩罚密度。此外,还引入强度损失和预测的射线丢弃概率损失:
L lidar = 1 N ∑ i = 1 N λ d L i d + λ int L i int + λ p d L i p d + λ w L i w \mathcal{L}^\text{lidar}=\frac{1}{N}\sum_{i=1}^{N}\lambda^\text{d}\mathcal{L}^\text{d}_i+\lambda^\text{int}\mathcal{L}^\text{int}_i+\lambda^{p_d}\mathcal{L}^{p_d}_i+\lambda^\text{w}\mathcal{L}^\text{w}_i Llidar=N1i=1NλdLid+λintLiint+λpdLipd+λwLiw
其中深度损失 L i d \mathcal{L}^\text{d}_i Lid和强度损失 L i int \mathcal{L}^\text{int}_i Liint为平方误差,对于丢弃的射线,不进行强度监督,仅惩罚传感器距离较低的估计。射线丢弃概率损失 L i p d \mathcal{L}^{p_d}_i Lipd使用二元交叉熵损失。权重衰减被用于激光雷达距离在 ϵ \epsilon ϵ以上的观测:
L i w = ∑ τ i , j > ϵ ∥ w i j ∥ 2 \mathcal{L}^\text{w}_i=\sum_{\tau_{i,j}>\epsilon}\|w_{ij}\|_2 Liw=τi,j>ϵwij2
其中 τ i , j \tau_{i,j} τi,j为激光雷达射线 i i i上样本 x i j x_{ij} xij的距离。丢弃射线仅在特定范围内进行权重衰减。最后,省略光程损失,因其有高计算代价,而性能提升很小。

4. 实验

NeuRAD在所有5个数据集上的实验有相同的超参数。

4.2 新视图合成

相机:本文的方法有更快的训练时间和SotA的性能。

激光雷达:由于射线丢弃的建模,NeuRAD能生成真实的激光雷达点云。

4.3 新场景生成

本文通过横向移动自车传感器(模拟自车改道)、纵向移动自车传感器(模拟传感器的放置位置变动)、参与者移动和旋转。由于无真值图像,本文以无移动的情况做为参考,报告FID值。将优化相机姿态能进一步提高锐度。

4.4 消融研究

使用CNN解码器可以极大增加质量与速度,且能减少渲染射线数并实现射线交互。精确的传感器建模(考虑卷帘式快门、将射线建模为视锥截体、传感器嵌入、考虑激光雷达射线丢弃)也能提高性能。使用统一的4D哈希网格替代独立的3D哈希网格不影响性能,但能极大提高速度。使用NeRF的密度估计替代SDF函数,性能几乎相同,这表明本文方法的灵活性:若需要建模物体表面,则可以使用SDF;但若场景存在雾、透明表面或其余SDF失效的情况,可以使用密度。

5.结论

局限性:NeuRAD假设所有参与者均为刚性,不支持变形。且许多建模对于大雨或大雪等恶劣天气无效。

补充材料

A. 实施细节

哈希网格:为静态场景和动态参与者使用两个不同的哈希网格。其中静态场景的哈希表远大于动态参与者,因为动态参与者在场景中的占比很小。

提案采样:首先根据幂函数 P ( 0.1 x , − 1.0 ) \mathcal{P}(0.1x,-1.0) P(0.1x,1.0)均匀采样,并进行两轮提案采样,由两个不同的密度场表达。密度场也使用参与者感知的哈希编码,但哈希表和特征维度更小。使用线性层解码密度。

D. 射线丢弃推断

推断激光雷达射线丢弃的过程因数据集不同而不同,但总的步骤包含三步:自车运动补偿的移除、二极管索引分配和点填充。原始点云、移除自车运动补偿后的点云以及填充点的点云的如下所示。

移除自车运动补偿:由于数据集的点云是经过自车运动补偿的,即其笛卡尔坐标在公共的坐标系下。直接将其转换到球坐标下获得水平角和俯仰角是不行的。

对时间 t t t的激光雷达点 ( x , y , z ) (x,y,z) (x,y,z),首先投影到世界坐标系下,然后根据已知的激光雷达姿态线性插值,得到 t t t时刻的激光雷达姿态。对于旋转角,使用四元数表达,进行球面线性插值。然后将点云投影回传感器坐标系下,并转化为球面坐标。
二极管索引分配:数据集使用旋转激光雷达,即一组二极管绕传感器360度旋转,每一个传感器对应一个俯仰角。可根据俯仰角得到二极管的索引值。由于移除自车运动补偿的不准确性,可设计聚类算法推断二极管索引。

接下来,为每一帧定义每个二极管的俯仰角范围(在激光雷达的俯仰角范围内均匀分布),然后使用直方图划分方法根据俯仰角将点云聚类,其中划分的区间数远大于二极管数。对于落在空区间的决策边界,记为真实边界。若真实边界数小于期望边界数,则在已有边界之间进行插值,直到数量满足要求:对距离最大的两个边界,根据垂直分辨率进行尽可能多的插值,得到更多决策边界。

点填充:经历上面两步后,可推断哪些激光射线不返回点。根据激光雷达的水平分辨率,定义水平角区间,若有点落入区间,则标记为又返回;其余区间通过线性插值得到水平角和俯仰角。

E. 建模卷帘式快门

在这里插入图片描述
上图为一帧激光雷达进行自车运动补偿后的BEV视图,可以从中间的断裂处看到卷帘式快门的影响。本文首先为每个射线分配时间戳。对于激光雷达,若数据集不提供射线时间戳,则基于水平角和传感器转速估计。对于图像,手动近似快门时间并为图像的不同行添加时间偏移量。然后线性插值传感器姿态以移动原点。此外,也在将射线样本点转化到参与者坐标系之前,插值了参与者的姿态。

F. 额外结果

提案采样:UniSim使用的基于激光雷达占用进行剪枝的均匀采样会导致无占用的远处物体被建模为天空,且近处物体则需要密集采样恢复细节。

传感器嵌入:可视化表明,忽视相机的不同设置会导致色彩和光照的偏移,通常发生在图像边缘处。引入传感器嵌入可以得到更精确的重建结果。

相机优化:NeRF依赖精确的传感器姿态,但数据集给出的姿态存在噪声。类似动态参与者姿态的优化(3.3节),本文也优化了相机的姿态。这样做能导致渲染锐度和FID指标增加,但新视图合成指标会有下降。这是因为姿态优化导致训练数据中的世界坐标和验证时的姿态不一致,使得验证时在略微偏移的位置进行渲染。可视化表明,使用相机优化能生成更清晰的图像,但评估性能更低。

F.1 局限性

可变形动态参与者:由于行人不符合刚性假设,会导致模糊的重建。

夜晚场景:夜晚场景包含大量与几何无关的测量噪声,且长的曝光时间与运动耦合,使得产生模糊或透明的参与者渲染结果;强光会导致光晕和透镜耀斑;来自自车或其余车辆的动态光照也未被建模。

时间变化的目标外表:如刹车灯和交通灯的建模,与可变形物体类似,但:不需要几何随时间变化,且可以视为离散状态;需要对其完全可编辑。

相关文章:

【论文笔记】NeuRAD: Neural Rendering for Autonomous Driving

原文链接:https://arxiv.org/abs/2311.15260 1. 引言 神经辐射场(NeRF)应用在自动驾驶中,可以创建可编辑的场景数字克隆(可自由编辑视角和场景物体),以进行仿真。但目前的方法或者需要大量的训…...

通信原理 | 分贝dB、功率、功率谱、功率谱密度、信噪比

文章目录 分贝功率和分贝的关系能量谱功率谱功率谱和功率谱密度是不同的功率谱密度随机信号和确知信号信噪比基本定义分贝表示应用分贝 分贝:(用dB表示)是量度两个相同单位之间数量比例的计量单位,主要用于度量声音强度。 1贝尔(B)=10分布(dB),即1B = 10dB 分贝是以美国…...

Go中的Context是什么?

在 Go 编程语言(通常称为 Golang)中,术语 "上下文 "指的是上下文包及其定义的上下文类型。上下文包用于跨 API 边界和进程间传输截止日期、取消信号和其他请求范围值。 上下文包的主要目的是管理并发或分布式系统中操作的生命周期…...

碳排放预测 | 基于ARIMA和GM(1,1)的碳排放预测(Matlab)

目录 预测效果基本介绍模型描述ARIMA模型GM(1,1)模型 程序设计参考资料 预测效果 基本介绍 基于ARIMA和GM(1,1)的碳排放预测(Matlab) 基于ARIMA(自回归移动平均模型)和GM(1,1)(灰色预测模型)的碳排放预测是…...

FPFA.一种二倍频电路代码描述以及测量详情

一、前言 1、因为需要倍频电路所以找了个二倍频的电路,通过fpga实际测量发现经过倍频后的电路峰值降低。不过这个也正常,因为该电路只要过触发点就会开始发生波形变化,而电路的触发值不是峰值。​​​​​​​ 2、继续对电路做倍频后信号做二…...

dotnet命令创建C#项目,VSCode打开

在命令行中创建项目并运行 1.首先安装.net 下载地址:.NET | 构建。测试。部署。 2.在 cmd 控制台输入 dotnet --vesion 检查版本号是否正常 3.我用git bash环境输入命令创建项目 // 创建文件夹 mkdir MyVSCode // 进入该文件夹 cd MyVSCode/ // 创建控制台项目 dotnet …...

在GitHub找开源项目

在 GitHub 的搜索框里: 使用搜索关键词可以在 GitHub 上快速的找你需要的开源项目: 限制搜索范围 通过 in 关键词 (大小写不敏感) 限制搜索范围: 公式搜索范围in:name xxx项目名包含xxxin:description xxx项目描述包含xxxin:readme xxx项目…...

GAMES101-LAB1

文章目录 一、问题简述二、框架准备三、作业参考3.1 模型矩阵3.1 参考代码 3.2 投影矩阵3.2.1 压扁操作(透视投影)3.2.2 正交投影3.2.3 参考代码 四、附件 一、问题简述 接下来的三次作业,将模拟一个基于CPU的光栅化渲染器的简化版本本次作业的任务是实现一个旋转矩…...

Docker 编译OpenHarmony 4.0 release

一、背景介绍 1.1、环境配置 编译环境:Ubuntu 20.04OpenHarmony版本:4.0 release平台设备:RK3568 OpenHarmony 3.2更新至OpenHarmony 4.0后,公司服务器无法编译通过,总是在最后几十个文件时报错,错误码4000&#xf…...

Vue 3 表单处理精讲:打造响应式注册表单的艺术

🧙‍♂️ 诸位好,吾乃诸葛妙计,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &…...

浅谈Guava Cache的参数使用

CacheLoader 用于数据加载方式比较固定且统一的场景,在缓存容器创建的时候就需要指定此具体的加载逻辑。通常开发中使用时我们需要继承CacheLoader类或写一个匿名实现类实现其load方法和reload方法 load方法 当执行get操作没有命中缓存或者判断缓存已经超出expir…...

交通流预测 | Matlab基于KNN-BiLSTM的交通流预测(对比SVR、LSTM、GRU、KNN-LSTM)

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 交通流预测 | Matlab基于KNN-BiLSTM的交通流预测(对比SVR、LSTM、GRU、KNN-LSTM) 程序设计 完整程序和数据获取方式:私信博主回复Matlab基于KNN-BiLSTM的交通流预测(对…...

云卷云舒:面向业务的智能运维(上)

1、BAIOPS-业务智能运维 智能运维(AIOps-Algorithmic IT Operations基于算法的IT运维)是人工智能技术在IT运维领域的运用,引用Gartner 的报告的一段话“到2020年,将近50%的企业将会在他们的业务和IT运维方面采用AIOps&#xff0c…...

centos 7.4 docker

centos 7.4 docker 1.查看系统版本 cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)哈1 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 哈1-02 cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 哈1-22 cat /etc/redhat…...

零基础学人工智能:TensorFlow 入门例子

识别手写图片 因为这个例子是 TensorFlow 官方的例子,不会说的太详细,会加入了一点个人的理解,因为TensorFlow提供了各种工具和库,帮助开发人员构建和训练基于神经网络的模型。TensorFlow 中最重要的概念是张量(Tenso…...

go从0到1项目实战体系二一:gin框架安装

(1). 设置公用的代理服务地址: 如果设置了全局可忽略. $ export GOPROXYhttps://goproxy.io // linux > go env可以查看 $ export GOPROXYhttps://goproxy.cn // linux国内镜像 $ set GOPROXYhttps://goproxy.io // windows(2). 创建以下目录: 请忘记GOPATH目录…...

运用JavaSE知识实现图书管理系统

目录 一.Main函数二.用户类三.普通用户类四.管理员类五.图书类六.书架类七.操作类1.操作接口2.增加操作3.删除操作4.查找操作5.展示操作6.借阅操作7.归还操作8.退出系统 总结 这篇图书管理系统是对JavaSE知识总结复习的一个小作业,检测自己对知识的掌握程度。 一.Ma…...

微信小程序生成一个天气查询的小程序

微信小程序生成一个天气查询的小程序 基本的页面结构和逻辑 页面结构:包括一个输入框和一个查询按钮。 页面逻辑:在用户输入城市名称后,点击查询按钮,跳转到天气详情页面,并将城市名称作为参数传递。 主要代码 index…...

Seata源码——TCC模式解析02

初始化 在SpringBoot启动的时候通过自动注入机制将GlobalTransactionScanner注入进ioc而GlobalTransactionScanner继承AbstractAutoProxyCreatorAbstract 在postProcessAfterInitialization阶段由子类创建代理TccActionInterceptor GlobalTransactionScanner protected Obje…...

缓存-Redis

Springboot使用Redis 引入pom依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>在application.yml、application-dev.yml中配置Redis的访…...

PADS Layout安全间距检查报错

问题&#xff1a; 在Pads Layout完成layout后&#xff0c;进行工具-验证设计安全间距检查时&#xff0c;差分对BAK_FIXCLK_100M_P / BAK_FIXCLK_100M_N的安全间距检查报错&#xff0c;最小为3.94mil&#xff0c;但是应该大于等于5mil&#xff1b;如下两张图&#xff1a; 检查&…...

ebpf基础篇(二) ----- ebpf前世今生

bpf 要追述ebpf的历史,就不得不提bpf. bpf(Berkeley Packet Filter)从早(1992年)诞生于类Unix系统中,用于数据包分析. 它提供了数据链路层的接口,可以在数据链路层发送和接收数据.如果网卡支持混杂模式,所有的数据包都可以被接收,即使这些数据包的目的地址是其它主机. BPF最为…...

我的一天:追求专业成长与生活平衡

早晨的序幕&#xff1a;奋斗的开始 今天的一天始于清晨的6点47分。实现了昨天的早睡早起的蜕变计划。洗漱完成之后&#xff0c;7点17分出门&#xff0c;7点33分我抵达公司&#xff0c;为新的一天做好准备。7点52分&#xff0c;我开始我的学习之旅。正如我所体会的&#xff0c;“…...

【动态规划】斐波那契数列模型

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 前言 算法原理 1.状态表示 是什么&#xff1f;dp表(一维数组…...

机器人运动学分析与动力学分析主要作用

机器人运动学分析和动力学分析是两个重要的概念&#xff0c;它们在研究和设计工业机器人时起着关键作用。 1. 机器人运动学分析&#xff1a; 机器人运动学是研究机器人运动的科学&#xff0c;它涉及机器人的位置、速度、加速度和轨迹等方面。机器人运动学分析主要包括正解和逆…...

【Java 基础】33 JDBC

文章目录 1. 数据库连接1&#xff09;加载驱动2&#xff09;建立连接 2. 常见操作1&#xff09;创建表2&#xff09;插入数据3&#xff09;查询数据4&#xff09;使用 PreparedStatement5&#xff09;事务管理 3. 注意事项总结 Java Database Connectivity&#xff08;JDBC&…...

Unity中Shader缩放矩阵

文章目录 前言一、直接相乘缩放1、在属性面板定义一个四维变量&#xff0c;用xyz分别控制在xyz轴上的缩放2、在常量缓存区申明该变量3、在顶点着色器对其进行相乘&#xff0c;来缩放变换4、我们来看看效果 二、使用矩阵乘法代替直接相乘缩放的原理1、我们按如下格式得到缩放矩阵…...

Nessus详细安装-windows (保姆级教程)

Nessus描述 Nessus 是一款广泛使用的网络漏洞扫描工具。它由 Tenable Network Security 公司开发&#xff0c;旨在帮助组织评估其计算机系统和网络的安全性。 Nessus 可以执行自动化的漏洞扫描&#xff0c;通过扫描目标系统、识别和评估可能存在的安全漏洞和弱点。它可以检测…...

Stream流的简单使用

stream流的三类方法 获取Stream流 ○ 创建一条流水线,并把数据放到流水线上准备进行操作中间方法 ○ 流水线上的操作 ○ 一次操作完毕之后,还可以继续进行其他操作终结方法 ○ 一个Stream流只能有一个终结方法 ○ 是流水线上的最后一个操作 其实Stream流非常简单&#xff0c;只…...

智能优化算法应用:基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蛇优化算法4.实验参数设定5.算法结果6.参考文…...

vue和react diff的详解和不同

diff算法 简述&#xff1a;第一次对比真实dom和虚拟树之间的同层差别&#xff0c;后面为对比新旧虚拟dom树之间的同层差别。 虚拟dom 简述&#xff1a;js对象形容模拟真实dom 具体&#xff1a; 1.虚拟dom是存在内存中的js对象&#xff0c;利用内存的高效率运算。虚拟dom属…...

智能优化算法应用:基于鹈鹕算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鹈鹕算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鹈鹕算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鹈鹕算法4.实验参数设定5.算法结果6.参考文献7.MA…...

10:IIC通信

1&#xff1a;IIC通信 I2C总线&#xff08;Inter IC BUS&#xff09; 是由Philips公司开发的一种通用数据总线&#xff0c;应用广泛&#xff0c;下面是一些指标参数&#xff1a; 两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff0c;串行时钟线&#xff09;、SDA&a…...

互联网上门洗衣洗鞋小程序优势有哪些?

互联网洗鞋店小程序相较于传统洗鞋方式&#xff0c;具有以下优势&#xff1b; 1. 便捷性&#xff1a;用户只需通过手机即可随时随地下单并查询&#xff0c;省去了许多不必要的时间和精力。学生们无需走出宿舍或校园&#xff0c;就能轻松预约洗鞋并取件。 2. 精准定位&#xff1…...

Java中如何优雅地根治null值引起的Bug问题

1. Java对象为null会引发的问题 NullPointerException&#xff1a;当你尝试调用或访问一个null对象的属性或方法时&#xff0c;Java会抛出NullPointerException异常。例如&#xff0c;如果你有一个名为person的变量&#xff0c;它被设置为null&#xff0c;然后你尝试调用perso…...

C# WPF上位机开发(子窗口通知父窗口更新进度)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 这两天在编写代码的时候&#xff0c;正好遇到一个棘手的问题&#xff0c;解决之后感觉挺有意义的&#xff0c;所以先用blog记录一下&#xff0c;后…...

XUbuntu22.04之跨平台容器格式工具:MKVToolNix(二百零三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

vue中的生命周期和VueComponent实例对象

生命周期 生命周期又叫生命周期钩子&#xff0c;生命周期函数 生命周期是&#xff0c;Vue在关键的时刻帮我们调用的一些特殊名字的函数 生命周期的this指向vm或者组件实例对象 mounted会将初始化的Dom挂载到页面上 <template><div class"hello"><…...

Hooked协议掀起WEB3新浪潮

随着区块链技术和加密货币的兴起&#xff0c;币圈已经成为全球范围内的一个热门领域。在这个充满机遇与挑战的行业中&#xff0c;Hook机制正逐渐成为一种重要的技术手段&#xff0c;为投资者、开发者以及相关机构提供了更多的选择和可能性。本文将详细介绍币圈中的Hook机制&…...

【图文教程】windows 下 MongoDB 介绍下载安装配置

文章目录 介绍MySQL 之间的区别和适用场景差异数据模型&#xff1a;查询语言&#xff1a;可扩展性&#xff1a;数据一致性&#xff1a; 下载安装环境变量配置 介绍 MongoDB 是一种开源的、面向文档的 NoSQL 数据库管理系统。它使用灵活的文档模型来存储数据&#xff0c;这意味…...

算法复杂度-BigO表示法

1.时间复杂度--大O表示法 算法的渐进时间复杂度&#xff0c;T(n)O(f(n)) T&#xff08;n&#xff09;表示算法的渐进时间复杂度 f&#xff08;n&#xff09;表示代码执行的次数 O&#xff08;&#xff09;表示正比例关系 2.常用的时间复杂度量级 3.举例 &#xff08;1&am…...

测试理论知识五:功能测试、系统测试、验收测试、安装测试、测试的计划与控制

模块测试的目的是发现程序模块与其接口规格说明之间的不一致。 功能测试的目的是为了证明程序未能符合其外部规格说明。 系统测试的目的是为了证明软件产品与其初始目标不一致。 1. 功能测试 功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。功能测试通…...

太阳能爆闪警示灯

适用场所&#xff1a; 适用于高压线,塔吊,路政,船舶,种植,塔机,航海航道等场所起警示作用。 产品特点&#xff1a; 光控无开关&#xff0c;白天不闪&#xff0c;昏暗环境自动闪烁&#xff0c;无需手动操作&#xff0c;省时省事; 采用红色LED作光源&#xff0c;亮度高&#…...

怎么为pdf文件添加水印?

怎么为pdf文件添加水印&#xff1f;PDF是一种很好用的文件格式&#xff0c;这种格式能够很有效的保护我们的文件&#xff0c;但有时可能还会被破解&#xff0c;这种时候在PDF上添加水印就是比较好的方法。 综上所述&#xff0c;PDF是保密性很强的文件&#xff0c;但添加水印能够…...

基于ssm医药信息管理系统论文

基于SSM的医药信息管理系统的设计与实现 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于医药信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&#xff…...

Ceph存储体系架构?

Ceph体系架构主要由RADOS和RADOS GW和RBD以及CephFS构成。 RADOS&#xff08;Reliable, Autonomic Distributed Object Store&#xff09;是Ceph的底层核心&#xff0c;RADOS本身也是分布式存储系统&#xff0c;CEPH所有的存储功能都是基于RADOS实现。RADOS由两个组件组成&…...

详解现实世界资产(RWAs)

区块链中的现实世界资产&#xff08;RWAs&#xff09;是代表实际和传统金融资产的数字通证&#xff0c;如货币、大宗商品、股票和债券。 实际世界资产&#xff08;RWA&#xff09;的通证化是区块链行业中最大的市场机会之一&#xff0c;潜在市场规模可达数万万亿美元。理论上&…...

Windows漏洞利用开发——利用ROP绕过DEP保护

实验6 Windows漏洞利用开发 6.1实验名称 Windows漏洞利用开发 6.2实验目的 学习windows漏洞利用开发&#xff0c;使用kali linux相关工具对windows内目标程序进行漏洞利用 6.3实验步骤及内容 第三阶段&#xff1a;利用ROP绕过DEP保护 了解DEP保护理解构造ROP链从而绕过DEP…...

合并两个有序链表算法(leetcode第21题)

题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a;输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a;输入&#xff1a;l1 [], l2 [] 输…...

二维码初体验 com.google.zxing 实现续 - web api封装

文章目录 一、概述二、最终效果三、源码结构四、完整代码 一、概述 在 二维码初体验 com.google.zxing 实现 我们实现了二维码的生成&#xff0c;但是大部分情况下&#xff0c;二维码的相关功能是作为API接口来提供服务的。 我们下面便演示在springboot、Knife4j下封装api接口…...