【无标题】西安交通大学提出少锚点的端到端车道线检测算法Polar R-CNN

Abstract

车道线检测在自动驾驶中是一个关键且充满挑战的任务,特别是在实际场景中,由于车道线可能因其他车辆而被遮挡、形状纤细且长度较长,检测难度增大。现有基于锚点的检测方法通常依赖于预设的锚点来提取特征,并随后对车道线的位置和形状进行优化。然而,这些方法依赖手动设置锚点的方式繁琐,且为了适应不同的数据集通常需要大量密集的锚点。此外,为消除冗余预测而使用的非极大值抑制(NMS)在复杂场景中效果有限,影响实际部署。本文提出了一种新颖的基于锚点的车道检测方法Polar R-CNN。通过引入局部和全局极坐标系统,Polar R-CNN可以灵活地生成锚点,并显著减少锚点数量,同时保持性能。此外,我们设计了一个三重检测头,结合启发式结构支持无NMS的检测模式,在车道线密集的场景中增强了部署效率和性能。实验结果表明,Polar R-CNN在Tusimple、CULane、LLAMAS、CurveLanes和DL-Rail五个主流数据集上均达到了具有竞争力的性能,且具有轻量化设计和简化结构。

代码获取:https://github.com/ShqWW/PolarRCNN

 欢迎加入自动驾驶实战群

Introduction

车道线检测是一项重要的计算机视觉任务,尤其是在自动驾驶领域,目的是识别和跟踪道路上的车道线。尽管理想环境下的检测取得了显著进展,但在夜间驾驶、眩光、拥堵和雨天等恶劣条件下仍具挑战,车道线可能被遮挡或受损。此外,车道线形状细长且拓扑结构复杂,也增加了检测难度。

方法概述

传统车道检测主要依赖手工特征提取和车道形状建模,使用方法包括Canny边缘检测、霍夫变换和可变形模板等,但这些方法在低清晰度或特征不明显的场景下表现不佳。近年来,深度学习技术的进步使得基于卷积神经网络(CNN)和Transformer结构的深度模型在车道检测中获得了显著成功。然而,尽管分割类和参数化模型提供了端到端解决方案,但它们对车道形状的敏感性影响了鲁棒性。

基于目标检测模型(如YOLO、Faster R-CNN)的锚点方法被引入车道检测领域。代表性方法包括LaneATT和CLRNet,通过预定义锚点和扩大特征提取视野,锚点方法在性能上取得了优势,但存在以下缺点:

需要大量的锚点覆盖不同的车道分布,导致冗余锚点;使用NMS消除冗余预测,但在车道线密集的场景中效果不佳,尤其在分叉或多车道情况下。

解决方案:Polar R-CNN

为了解决上述问题,本文提出了Polar R-CNN方法:

局部极坐标模块:基于极坐标系统生成精确的锚点位置,减少了在稀疏场景中所需的锚点数量。与现有方法(如CLRNet)使用的192个锚点相比,Polar R-CNN只需20个锚点即可有效覆盖车道真值。

三重检测头及图神经网络(GNN)模块:为避免NMS后处理,设计了基于图神经网络的检测结构,实现了NMS自由的检测流程,适用于稀疏和密集场景下的车道线检测。

高效的端到端训练:结合极坐标系统和NMS自由检测模式,Polar R-CNN实现了快速且高效的车道线检测。通过在五个主流数据集上的实验验证,该方法在使用更少锚点和无NMS模式下,仍能保持高性能表现。

3.Polar R-CNN

olar R-CNN的整体架构如图3所示。该模型在车道检测中的流程与Faster R-CNN 类似,包括一个骨干网络、特征金字塔网络(FPN)、作为区域提议网络(RPN)的局部极坐标模块(LPM)、以及作为感兴趣区域(RoI)池化模块的全局极坐标模块(GPM)。接下来,我们将首先介绍极坐标下的车道锚表示方式,然后详细描述在Polar R-CNN中设计的LPM和GPM。

图片

A. 车道和车道锚的表示方式

车道通常具有纤细、细长和弯曲的形状。良好的车道先验信息有助于模型进行特征提取和位置预测。

作为射线表示的车道和车道锚。给定宽度为W、高度为H的输入图像,车道可由一组2D点 图片表示,这些点的y坐标等距分布,即图片,其中N为数据点的数量。由于y坐标是固定的,因此一个车道可以通过其x坐标唯一确定。先前的研究引入了车道先验(即车道锚),这些锚在图像平面上表现为直线,并作为参考。从几何角度来看,车道锚可以看作是由起点图片和方向定义的射线。车道检测模型的主要任务是估计从车道锚到车道实例真实位置的x坐标偏移量。

然而,将车道锚表示为射线会带来一些限制,尤其是车道锚的起点可能有无限多个,这使得其定义变得模糊和主观。如图4(a)所示,先前的研究将起点定义为图像的边界,如图4(a)中的绿色点;而[15]中的研究则将起点定义为其在图像中的实际可见位置(如图4(a)中的紫色点)。此外,车道的遮挡和损坏会显著影响这些起点的检测,要求模型具备较大的感受野。基本上,在笛卡尔坐标系下,一条直线仅有两个自由度:斜率和截距,这意味着可以通过两个参数而非射线表示中的三个冗余参数(即两个起点参数和一个方向参数)来描述车道锚。

图片

极坐标表示。如上所述,使用射线表示的车道锚点存在一些缺陷。为了解决这些问题,我们引入了车道锚点的极坐标表示。在数学中,极坐标是一个二维坐标系统,其中平面上的每个点由与参考点(即极点)的距离和与参考方向(即极轴)的夹角θ来确定。图4(b)显示,给定黄色点对应的极点后,可以通过两个参数唯一地定义一条直线的车道锚点:极点的径向距离r和从极轴到车道锚点垂线的逆时针角度θ,其中图片图片

为了更好地利用CNN的局部归纳偏置特性,我们定义了两种类型的极坐标系统:局部极坐标系统和全局极坐标系统。局部极坐标系统用于生成车道锚点,而全局极坐标系统则在整个图像中表达这些锚点并将它们回归到真实的车道实例。鉴于局部和全局系统的不同作用,我们为Polar R-CNN采用了类似于Faster R-CNN 的两阶段框架。

图片

局部极坐标系统旨在预测适用于稀疏和密集场景的车道锚点。在该系统中,极点分布在特征图的格点上,称为局部极点。如图5左侧所示,局部极点分为正极点和负极点。正极点(即蓝点)的半径小于阈值,否则被分类为负极点(即红点)。每个局部极点负责预测一个车道锚点。虽然一个真实的车道可能生成多个车道锚点(如图5所示),绿色车道实例周围有三个正极点,预计生成三个车道锚点。

在局部极坐标系统中,每个车道锚点的参数基于其对应局部极点的位置。然而,在实际操作中,一旦生成车道锚点,其确切位置就变得不可更改且与其原始局部极点无关。为了简化Polar R-CNN第二阶段中车道锚点的表示,设计了一个全局极坐标系统,具有唯一的极点作为整个图像的参考点。该全局极点的位置是手动设定的,位于整个车道图像数据集中观察到的静态消失点附近。这种方法确保了在图像的全局上下文中使用一致的极坐标来表达车道锚点,从而方便了对真实车道实例的精确回归。

B. 局部极坐标模块(LPM)

图片

如图3所示,通过特征金字塔网络(FPN)提取了三个层级的特征图,分别记作 图片。为了在图像中生成高质量的车道锚点,提出了局部极坐标模块(LPM),它将最高层级的特征图 图片作为输入,并输出一组车道锚点及其置信得分。如图6所示,它首先通过下采样操作图片生成尺寸为图片的低维特征图 :

图片

然后将下采样后的特征图输入到两个分支:回归分支图片和分类分支 图片,即:

图片

回归分支包括单个1×1的卷积层,其目标是生成车道锚点,通过输出它们的角度 和半径,即 图片图片,这些量定义在之前介绍的局部极坐标系统中。同样,为了简化,分类分支 图片仅由两个1×1卷积层组成,用于预测局部极点的置信热图 图片,每个局部极点都与一个特征点相关联。通过丢弃低置信度的局部极点,该模块有效提高了选中潜在正前景车道锚点的可能性,同时剔除了背景锚点。

LPM的损失函数。为训练LPM,我们为每个局部极点定义了以下标签:将每个局部极点到对应车道曲线的最小距离作为真实半径 ,并将局部极点到最近曲线点的向量方向作为真实角度。因此,得到局部极点的标签集 图片,其中当第j个局部极点为正时 图片,为负时图片。一旦建立了回归和分类标签,如图5所示,LPM可以使用回归分支的SmoothL1损失 图片和分类分支的二元交叉熵损失 图片进行训练。LPM的损失函数如下:

图片

其中 图片表示LPM中正极点的数量。

Top-K锚点选择。如上所述,在训练阶段,所有图片的锚点(与特征图中的每个局部极点相关)都被考虑为候选者。然而,其中一些锚点只是背景锚点。我们选择置信度最高的K个锚点作为前景候选者输入到第二阶段(即全局极坐标模块)。在训练过程中,所有锚点都作为候选项,其中 图片。这有助于全局极坐标模块(即第二阶段)学习包括各种负背景锚点样本的多样化特征。相反,在评估阶段,可以排除一些低置信度的锚点,使图片。这种策略有效过滤了潜在的负锚点,降低了第二阶段的计算复杂度。在稀疏场景中,通过这种方式维持锚点分布的适应性和灵活性,同时减少了锚点的总数。接下来的实验将展示不同Top-K锚点选择策略的有效性。

C. 全局极坐标模块

我们提出了一个新颖的全局极坐标模块(Global Polar Module, GPM)作为第二阶段来实现最终车道线预测。如图3所示,GPM从LPM(局部极坐标模块)提出的锚点采样特征,并提供最终车道线检测结果的精确位置和置信分数。GPM的总体架构如图7所示。从图中可以看到,它包含两个组件:一个ROI池化层(RoI Pooling Layer)和一个三重头部(triplet head),具体细节如下所述。

RoI池化层。此层设计用于从特征图中对车道线锚点进行特征采样。为便于采样操作,我们首先将局部极坐标中的正车道线锚点的半径转换为等效的全局极坐标系统中的半径,具体转换公式如下所示:

图片

其中,图片图片分别表示全局极点和第j个局部极点的笛卡尔坐标。值得注意的是,角度 保持不变,因为局部和全局极坐标系统共用相同的极轴。接下来,对每个车道线锚点的特征点进行采样,具体如下:

图片

其中,第j个车道线锚点的y坐标图片从图像上垂直均匀采样,如前所述。公式(6)和公式(7)的证明见附录A。然后,第j个车道线锚点的坐标可以表示为图片图片

给定来自FPN(特征金字塔网络)的不同层级特征图图片,我们可以分别提取每个位置的通道特征,并得到图片的通道特征,分别记为图片。为了增强表示能力,我们借鉴文献[16]中的加权和策略,将三个层级的特征组合在一起,具体如下:

图片

其中,图片代表分配给N个采样点的可训练聚合权重,符号“◦”表示逐元素相乘(即Hadamard积)。我们并未直接将三层采样特征级联成图片图片,而是采用自适应求和的方法,将特征维度显著降低至图片,是初始维度的三分之一。张量的加权和被展平为向量图片,并通过线性变换整合:

图片

其中,图片用于进一步降低集成特征图片的维度,从而得到最终的RoI特征图片,随后输入至三重头部。

三重头部。车道线检测头用于基于RoI池化特征图片对LPM生成的车道线锚点进行分类和回归。众所周知,传统的车道线检测头通常配备一个一对多(O2M)分类子头和一个一对多(O2M)回归子头。然而,一对多机制(即,一个真值对应多个候选项)会导致每条车道线生成冗余预测,从而需要NMS(非极大值抑制)后处理操作。然而,NMS不可微且非端到端,这导致了手动设置超参数的挑战,并且性能可能不佳。为实现端到端学习且无需NMS后处理,我们提出了一种用于车道线检测的三重头模块。

图片

如上图所示,三重头部包含三个组件:O2M分类、O2M回归和另一个一对一(O2O)分类。每个车道线锚点的特征图片分别被送入上述三个子头中。为了保持简洁和高效,O2M分类和O2M回归子头均通过两个多层感知机(MLP)应用于图片,然后O2M分类子头生成置信分数图片,O2M回归子头为每个车道线锚点生成x坐标偏移图片。关于O2M分类和O2M回归子头的更多细节可参考。O2O分类子头被引入以在无NMS的范式中生成非冗余车道线候选项。然而,直接使用一对一策略(即,针对每个真实车道线分配一个正锚点)基于提取的特征会损害模型的学习。因此,提出的O2O分类子头同时考虑了O2M分类子头的置信度先验图片和极坐标参数的空间几何先验(即角度θ和半径r),并应用这些先验来自适应地优化车道线锚点特征图片,从而生成优化后的车道线锚点特征图片。结构设计灵感来自Fast NMS,更详细的信息请参见附录B。具体来说,O2O分类子头首先计算第i个锚点与其x坐标和第j个锚点与其x坐标之间的语义距离,如下所示:

图片

其中,图片表示第i个预测与第j个预测之间的隐含语义距离。ReLU是ReLU激活函数,MLPedge表示一个两层的MLP算子,图片是待训练的模型参数。然而,基于上述语义距离进行真值实例的一对一分配仍然困难,因为某些分叉锚点可能具有相似的距离。为了增加锚点间的语义距离差异,我们需要抑制相似或重叠锚点的特征。基于此,我们设计了一个邻接矩阵图片,定义如下:

图片

其中⊙表示逐元素相乘,图片图片分别是置信度先验邻接矩阵和几何先验邻接矩阵。置信度先验邻接矩阵图片

图片

这里,和是分别对应第i和第j车道线锚点的置信分数,由O2M分类子头预测。根据公式(14),的作用是使具有较高置信分数的车道线锚点抑制那些置信分数较低的锚点。为了利用几何先验,并基于极坐标表示(即全局极坐标半径和角度θ),我们进一步引入几何先验邻接矩阵图片

图片

其中和  是用于测量几何距离的阈值。基于几何先验和置信度先验邻接矩阵的定义,整体邻接矩阵 A可以视为一个有向图,每个车道锚点作为一个节点,RoI特征图片作为输入特征。具体来说,如果邻接矩阵 A中的元素  等于1,那么就存在从第 i个锚点指向第 j个锚点的有向边,这意味着在第 i 个锚点的置信分数高于第 j 个锚点且其几何距离足够小(即小于预设的阈值)时,第 j 个锚点可能会被第 i 个锚点抑制。

通过考虑邻接矩阵 A 引发的车道锚点的抑制效应,车道锚点特征 图片可以从语义距离张量图片中进一步优化如下:

图片

其中 图片图片是沿着邻接矩阵 A 的第 j 列且元素位置的逐元素最大池化算子。这一方法的灵感来源于现有的工作[,旨在从可能抑制优化后的车道锚点的车道锚点中提取最具区别性的特征。利用优化后的锚点特征图片,最终的O2O分类子头的置信分数通过一个三层的MLP生成:

图片

如上所述,O2O分类子头由公式(10)-(17)构成,这可以被视为一种由神经网络驱动的有向图结构,被称为图神经网络(GNN)模块。

无NMF的双重置信度选择。借助邻接矩阵 A,语义特征 图片 之间的差异性被放大,从而在O2O分类子头生成的置信度分数图片中产生了显著的差距,使它们更易于区分。因此,与传统方法不同,我们无需将O2M分类子头获得的置信度分数图片 输入到NMS后处理阶段来去除冗余候选项,而是实施了以下双重置信度选择标准来选择正样本锚点:

图片

其中和是两个置信度阈值。该图片可以在没有NMS后处理的情况下允许非冗余的正样本预测,因为O2O分类子头增强了相似锚点之间的置信度分数差异,使其对两个置信度阈值的敏感度降低。

GPM的损失函数。在获得O2O分类子头的正样本候选集 图片 后,应用匈牙利算法进行标签分配,即正样本锚点与真实实例之间的单一对应分配。对于O2M分类和O2M回归子头,我们使用与SimOTA相同的方法进行标签分配。更多关于标签分配和代价函数的细节见附录C和D。在训练中,分别对O2O分类子头和O2M分类子头应用了Focal损失,分别记为 图片 和 图片。此外,我们采用了排名损失 图片 以扩大O2O分类子头正负置信度之间的差距。请注意,在训练阶段我们停止O2O分类子头的梯度流,以保证RoI特征学习的质量。

为了训练O2M回归子头,我们重新定义了GIoU概念(更多细节参见附录C),并采用了GIoU损失 图片来回归每个正样本车道锚点的x坐标偏移 图片。车道的端点则使用SmoothL1损失图片进行训练。此外,我们提出了一种辅助损失 图片以促进全局特征的学习。如图8所示,锚点和真实值被划分为若干段,每个锚点段被回归到对应真实值段的主要成分。辅助损失图片帮助检测头更深层次地理解全局几何结构,在评估阶段去掉辅助回归分支。最终,GPM的分类损失图片和回归损失 图片如下所示:

图片

其中 图片 是用于调整不同损失项影响的常数权重。

D. 总体损失函数

结合两阶段损失,总体损失函数定义如下:

图片

其中图片用于训练第一阶段LPM的分类和回归参数,图片用于训练第二阶段GPM的相关参数。

IV. 实验

1. 与最新方法的比较

表 I、II、III、IV 和 V 显示了我们提出的模型与其他方法的比较结果。我们展示了两种版本的模型结果:基于 NMS 的版本(记为 Polar R-CNN-NMS)和无需 NMS 的版本(记为 Polar R-CNN)。NMS 版本使用 O2M 头部得到的预测图片经过 NMS 后处理,而无需 NMS 的版本则通过双置信度选择来获得预测结果。

图片

图片

为了确保公平对比,我们在CULane和CurveLanes数据集上也包含了CLRerNet 的结果,因为我们使用了相似的训练策略和数据集划分。比较结果显示,我们的模型在五个数据集上均表现出较强的竞争力。具体而言,在CULane、TuSimple、LLAMAS和DL-Rail这些稀疏场景数据集上,我们的模型优于其他基于锚点的方法。此外,无NMS版本的性能几乎与基于NMS的版本相同,这突显了O2O分类子头在稀疏场景中去除冗余预测的有效性。在CurveLanes数据集上,无NMS版本的F1值和召回率优于其他方法。

我们还对比了锚点数量和处理速度。图9展示了多个基于锚点的方法在CULane数据集上使用的锚点数量。我们提出的模型仅使用了最少的提议锚点(20个),同时在CULane上实现了最高的F1分数。它在竞争上不逊色于像CLRerNet这样使用192个锚点并应用跨层优化的先进方法。而使用同样20个锚点的稀疏型Laneformer则未达到最佳表现。需要注意的是,我们的模型设计结构更为简单,没有复杂的跨层优化组件,这表明灵活锚点在极坐标下对稀疏场景中性能提升的关键作用。此外,由于其简单的结构和较少的锚点,我们的模型比大多数方法具有更低的延迟,如图10所示。

图片

2. 消融研究

为了验证和分析 Polar R-CNN 不同组件的有效性和影响,我们在 CULane 和 CurveLanes 数据集上进行了多项消融研究。

关于极坐标系统和锚点数量的消融研究。为了评估局部极坐标对锚点的重要性,我们分析了每个组件(即角度和半径)对模型性能的贡献。表 VI 显示了角度和半径参数对性能的不同程度的影响。此外,我们在两种锚点提案策略下进行实验,即“固定”锚点和“动态”锚点。“固定”表示由 CLRNet 训练的固定锚点配置(192 个锚点)。而“动态”则指由 LPM 提出的锚点(20 个锚点)。实验结果显示,在固定锚点配置下模型性能提高了 0.48%,在动态锚点配置下提高了 0.3%。此外,LPM 提出的灵活锚点方案在使用较少锚点的情况下实现了更优的性能。

图片

在稀疏场景中的 NMS-free 模块消融研究。我们在 CULane 数据集上进行了多项实验,以评估 NMS-free 模块在稀疏场景下的性能。表 VII 显示了如果不使用 GNN 建立锚点之间的关系,即使采用一对一分配,Polar R-CNN 也无法实现 NMS-free 模式。此外,置信度优先的邻接矩阵 ACA_CAC 也证明了 O2M 置信度得分在 NMS-free 模式中的重要性。其他组件(如几何优先的邻接矩阵 AGA_GAG 和排序损失)也对 NMS-free 块的性能起到了一定的作用。

图片

为了比较 NMS-free 与传统 NMS 模式,我们在“动态”锚点和“固定”锚点策略下对 NMS-free 块进行了实验。表 VIII 展示了这些实验结果。“O2M”表示 NMS(图 7 中灰色虚线路径),而“O2O”表示 NMS-free 模式(图 7 中绿色路径)。后缀“-B”表示头部仅由 MLP 组成,而“-G”表示头部包含 GNN 块。在固定锚点策略下,尽管没有 GNN 的 O2O 分类子头可以有效消除冗余预测,加入 GNN 结构后性能仍有所提升。在动态锚点策略下,由于锚点重叠较高,未使用 GNN 块的 O2O 分类子头未能有效去除冗余预测。在固定和动态锚点策略下,包含 GNN 块的 O2O 分类子头均能成功消除冗余预测,表明标签分配和头部架构设计在实现无冗余的端到端检测中至关重要。

图片

我们还研究了 O2O 分类子头的停梯度策略。表 IX 显示,O2O 分类子头的梯度会对 O2M 分类子头(具有 NMS 后处理)和 O2O 分类子头都产生负面影响。此现象表明,一对一分配会对特征学习引入显著的偏差,突显了停梯度策略对保持最佳性能的重要性。

图片

在密集场景中的 NMS-free 模块消融研究。虽然在稀疏场景中证明了可以用 O2O 分类子头替代 NMS,但在密集场景中 NMS 的局限性依然存在。为了探究 NMS-free 块在密集场景中的表现,我们在 CurveLanes 数据集上进行了实验,结果详见表 X。

图片

结论

主要贡献

1.本文提出了结合局部和全局极坐标系统的锚点生成策略,大大减少了锚点数量的同时提高了检测性能。

2.本文设计了结合GNN模块的三重检测头,支持无NMS的检测模式,增强了解释性。

3.本文在五个数据集上进行了广泛实验,展示了该方法在性能、效率和锚点优化方面的优势。

文章引用:Polar R-CNN: End-to-End Lane Detection with Fewer Anchors

最后别忘了,帮忙点“在看”。  

您的点赞,在看,是我创作的动力。

AiFighing是全网第一且唯一以代码、项目的形式讲解自动驾驶感知方向的关键技术。

长按扫描下面二维码,加入知识星球。

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

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

相关文章

【手撕排序3】归并排序

🍃 本系列包括常见的各种排序算法,如果感兴趣,欢迎订阅🚩 🎊个人主页:小编的个人主页 🎀 🎉欢迎大家点赞👍收藏⭐文章 ✌️ 🤞 🤟 🤘 &#x1f91…

Vue中使用Antd中a-table实现表格数据列合并展示

原数据 根据需求实现当前两列数据中有相同数据时,合并列单元格 实现 源码 数据 const dataSource = ref([{id: 1,pl: "冰箱",zznd: "P1",sm: "说明说明说明1",dw: "台",gs: "1",dj: "100"},{id: 1,pl: "冰…

数据结构-数组(稀疏矩阵转置)和广义表

目录 1、数组定义 1)数组存储地址计算示例①行优先②列优先 2)稀疏矩阵的转置三元组顺序表结构定义 ①普通矩阵转置②三元组顺序表转置稀疏矩阵③稀疏矩阵的快速转置 3)十字链表结构定义 2、广义表定义 1)基本操作①GetHead②GetT…

【Spring】Spring Web MVC基础入门~(含大量例子)

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:什么是Spring Web MVC 1:Servlet 2:总结 二:MVC …

有向图的完全可达性(有向图搜索全路径的问题) C#DFs

在考察输入输出方面我觉得是道难题了 第一次遇见邻接表的数据结构该怎么声明 卡码网105 在力扣没找见完全相同的题 感觉需要多练习多复习这种类型的题 105. 有向图的完全可达性 题目描述 给定一个有向图,包含 N 个节点,节点编号分别为 1&…

登陆页面渗透测试常见的20种思路与总结

【渗透测试】16个实用谷歌浏览器插件分享 飞雪网络安全人才培养计划,绝对零区,公益教学! 思路总结 1、之前是否已经留过后门,是,直接getshell,否,进行测试 2、SQL注入&万能密码&#xf…

qt QWebSocketServer详解

1、概述 QWebSocketServer 是 Qt 框架中用于处理 WebSocket 服务器端的类。它允许开发者创建 WebSocket 服务器,接受客户端的连接,并与之进行双向通信。WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议,它使得客户端和服务器之间的数…

掌握分布式系统的38个核心概念

天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢? 1. 架构设计 这一节将从一些经典的开源系统架…

中小跨境卖家如何选择物流?

跨境物流作为电商交易的核心环节,其复杂性和多变性对卖家来说不言而喻。本文将为您详细解析跨境物流的七大流程、常见物流测评以及推荐的工具,帮助您在激烈的市场竞争中把握物流优势,提升业务效率和客户满意度。 跨境物流七大流程 1. 启运国出…

6大国有银行软开的薪资待遇清单

牛客上刷到一条关于计算机专业值得去的银行软开清单,其中对 6 大国有银行软开的薪资待遇分析我觉得很有必要同步给大家看一看。 截图信息来自牛客的漫长白日梦 其中邮储软开是最值得推荐的(offer 投票没输过),二线城市转正后第一个完整年的收入在 30 万左右,一线城市更高…

我们来学mysql -- EXPLAIN之ID(原理篇)

EXPLAIN之ID 题记ID 题记 2024美国大选已定,川普剑登上铁王座,在此过程中出谋划策的幕僚很重要,是他们决定了最终的执行计划在《查询成本之索引选择》中提到,explain的输出,就是优化器(幕僚)选…

蓝桥杯-网络安全比赛题目-遗漏的压缩包

小蓝同学给你发来了他自己开发的网站链接, 他说他故意留下了一个压缩包文件,里面有网站的源代码, 他想考验一下你的网络安全技能。 (点击“下发赛题”后,你将得到一个http链接。如果该链接自动跳转到https,…

新疆高校大数据实验室案例分享

高校大数据实验室建设,企业可以提供技术支持、实训平台和项目案例,高校则提供科研和教学资源,实现产学研一体化。不仅有利于大数据技术的应用和人才培养也有利于区域发展。 泰迪与新疆合作的院校包括新疆大学、昌吉学院等 新疆大…

关于Flutter空安全升级方案整理

前言 Flutter 从 2.0 版本开始支持空安全&#xff08;Null Safety&#xff09;。dart 版本为&#xff1a; environment:sdk: ">2.12.0 < 3.0.0"升级到空安全后&#xff0c;由于语法的变动&#xff0c;基本上整个工程&#xff0c;代码都爆红&#xff0c;这对项…

干货 | 2024年数据要素白皮书(免费下载)

导读&#xff1a;白皮书在对比分析国际数据领域发展现状的基础上&#xff0c;围绕数据要素市场化配置改革这一主线&#xff0c;从数据高质量供给、数据创新应用、体制机制建设、产业探索方向四大方面展现了数据要素发展过程中&#xff0c;各类主体的新作为、新成效&#xff0c;…

RTT 内核基础学习

RT-Thread 内核介绍 内核是操作系统的核心&#xff0c;负责管理系统的线程、线程间通信、系统时钟、中断以及内存等。 内核位于硬件层之上&#xff0c;内核部分包括内核库、实时内核实现。 内核库是为了保证内核能够独立运行的一套小型的类似C库的函数实现子集。 这部分根据编…

六通道CAN集线器(协议型)

一、功能概述 SG_CanHub_600 是一款具有六路通道的工业级智能 CAN 数字隔离中继集线器。 SG_CanHub_600 能够实现信号再生、延长通信距离、提高总线负载能力、匹配不同速 率 CAN 网络&#xff0c;同时强大的 ID过滤功能可以极大降低 CAN 总线负荷&#xff0c;并具有故障指…

Web应用性能测试工具 - httpstat

在数字化时代&#xff0c;网站的性能直接影响用户体验和业务成功。你是否曾经在浏览网页时&#xff0c;遇到加载缓慢的困扰&#xff1f;在这个快速变化的互联网环境中&#xff0c;如何快速诊断和优化Web应用的性能呢&#xff1f;今天&#xff0c;我们将探讨一个强大的工具——h…

【Linux】从零开始使用多路转接IO --- 理解EPOLL的 LT水平触发模式 与 ET边缘触发模式

当你偶尔发现语言变得无力时&#xff0c; 不妨安静下来&#xff0c; 让沉默替你发声。 --- 里则林 --- 从零开始认识多路转接 1 EPOLL优缺点2 EPOLL工作模式 1 EPOLL优缺点 poll 的优点(和 select 的缺点对应) 接口使用方便&#xff1a;虽然拆分成了三个函数&#xff0c;…

kafka+zookeeper的搭建

kafka从2.8版本开始&#xff0c;就可以不用配置zookeeper了&#xff0c;但是也可以继续配置。我目前使用的kafka版本是kafka_2.12-3.0.0.tgz&#xff0c;其中前面的2.12表示是使用该版本的scala语言进行编写的&#xff0c;而后面的3.00才是kafka当前的版本。 通过百度网盘分享…