算法类学习笔记 ———— 障碍物检测

news/2024/9/17 15:17:55/ 标签: 算法

文章目录

  • 介绍
  • 基于图像的障碍物检测
    • 基于二维图像的障碍物检测
      • YOLO系列障碍物检测
      • SSD障碍物检测
      • Faster RCNN障碍物检测
    • 基于图像的三位障碍物检测
  • 基于激光雷达的障碍物检测
    • 基于几何特征和网格
      • 边缘模板的创建
      • 非最大值抑制原理提取边缘信息
    • VoxelNet障碍物检测
  • 基于视觉和激光雷达融合的障碍物检测
    • 空间融合
    • 时间融合

介绍

 障碍物检测是无人驾驶汽车环境感知模块中的重要组成部分。准确的障碍物检测决定着无人驾驶汽车行驶的安全性。目前障碍物检测技术可以概括为如下三种方法:
   1)基于图像的障碍物检测;
   2)基于激光雷达的障碍物检测;
   3)基于视觉和激光雷达融合的障碍物检测。

基于图像的障碍物检测

 基于图像的障碍物检测算法已经发展的较为成熟,大致可以分为一阶段检测算法和二阶段检测算法。一阶段检测算法有YOLO和SSD等,二阶段检测算法主要是RCNN这一流派。当前的二阶段算法大多是在Faster RCNN基础上的改进。两种算法相比,一阶段算法的速度是快于二阶段算法的,而在准确性上,二阶段算法优于一阶段算法

基于二维图像的障碍物检测

YOLO系列障碍物检测

  YOLO(You Only Look Once )是将物体检测作为回归问题求解的一种一阶段检测算法。它基于一个单独的端到端网络,完成从原始图像的输入到物体位置和类别的输出。从网络设计上, YOLO 与 RCNN 、 Fast RCNN 和 Faster RCNN 的区别如下:
   (1) YOLO 调练和检溯均是在一个单独网络中进行,没有显式地求取区域候选框的过程,这是它相比基于候选框方法的优势。而 RCNN / Fast RCNN 采用分离的模块求取候选框,训练过程因此也是分成多个模块进行。 Faster RCNN 使用 RPN ( Region Proposal Network )卷积网络替代RCNN / Fast RCNN 的选择性搜索模块,将 RPN 集成到 Fast RCNN 检测网络中,得到一个统一的检测网络。尽管 RPN 与 Fast RCNN 共享卷积层,但是在模型训练过程中,需要反复训练 RPN 网络和 Fast RCNN 网络。
   (2) YOLO 输入图像经过一次推理,便能得到图像中所有物体的位置和其所属类别及相应的置信概率,而 RCNN / Fast RCNN / Faster RCNN 将检测结果分为两部分求解,物体类别(分类问题)和物体位置,即标注框( boundingbox )。


 接下来介绍一下 YOLO 系列障碍物检测核心思想。
   1)网络定义。 YOLO 检测网络包括24个卷积层和2个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。 YOLO 网络借鉴了 GoogleNet 分类网络结构,不同的是, YOLO 未使用 Inception 模块,而是使用1×1卷积层(此处1×1卷积层的存在是为了跨通道信息整合)和3x3卷积层简单替代。 YOLO 论文中,还给出一个更轻快的检测网络 fast YOLO ,它只有9个卷积层和2个全连接层。使用 Titan X GPU, fast YOLO 可以达到155 f/ s 的检测速度,但是 mAP 值也从 YOLO 的63.4%降到了52.7%,却仍然远高于以往的实时物体检测方法( DPM )的 mAP 值。
   2)输出表达( representation )定义。本部分给出 YOLO 全连接输出层的定义。 YOLO 将输人图像分成 S×S 个格子,每个格子负责检测“落入”该格子的物体。若某个物体的中心位置的坐标落人到某个格子,那么这个格子就负责检测出这个物体。每个格子输出 B 个标注框(包含物体的矩形区域)信息,以及 C 个物体属于某种类别的概率信息。标注框信息包含5个数据值,分别是 x 、 y 、 w 、 h 和 c。其中x、 y 是指当前格子预测得到的物体的标注框的中心位置的坐标。 w 、 h 是标注框的宽度和高度。注意,实际训练过程中, w 和 h 的值使用图像的宽度和高度进行归一化到[0,1]区间内;x 、 y 是标注框中心位置相对于当前格子位置的偏移值,并且一同归化到[0,1]。c反应当前标注框是否包含物体以及物体位置的准确性,计算方式如下:

confidence=P(object)

 其中,若标准框包含物体,则P(object)=1;否则P(object)=0。  因此,YOLO网络最终的全连接层的输出维度是S×S×(B×5+C)。YOLO论文中,训练采用的输入图像分辨率是448×448像素,S=7,B=2;采用VOC 20类标注物体作为训练数据,C=20。因此输出向量为7×7×(20+2×5)=1470维。

在这里插入图片描述
   3)损失(loss)函数定义。YOLO使用均方和误差作为loss函数来优化模型参数,即网络输出的S×S×(B×5+C)维向量与真实图像的对应S×S×(B×5+C)维向量的均方和误差。如下式所示,coordError、iouError和classError分别代表预测数据与标定数据之间的坐标误差、IOU误差和分类误差。
l o s s = ∑ i = 0 s 2 c o o r d E r r o r + i o u E r r o r + c l a s s E r r o r loss = \sum\limits_{i=0}^{s^2}coordError + iouError + classError loss=i=0s2coordError+iouError+classError
 YOLO对上式loss的计算进行了如下修正:
   1)位置相关误差(坐标、IOU)与分类误差对网络loss的贡献值是存在差异的,因此在计算loss时,使用λcoord=5修正coordError;
   2)在计算IOU误差时,包含物体的格子和不包含物体的格子,二者的IOU误差对网络loss的贡献值是不同的。若采用相同权值,不包含物体的格子的confidence值近似于0,变相放大了包含物体的格子的confidence误差在计算网络参数梯度时的影响。为此,YOLO使用λnoobj=0.5修正iouError;
   3)对于相等的误差值,大物体误差对检测的影响小于小物体误差对检测的影响。是因为相同的位置偏差占大物体的比例小于同等偏差占小物体的比例。YOLO将物体大小的信息项(w和h)进行求平方根来改进此问题。


 YOLO方法模型训练依赖于物体识别标注数据。因此,对于非常规物体形状或比例,YOLO的识别检测效果不理想。YOLO采用了多个下采样层,网络中学习到的物体特征并不精细,会影响检测效果。YOLO的loss函数中虽然对大物体IOU误差和小物体IOU误差进行了处理,但从实际的角度来看无法根本解决问题。因此,对于小物体,小的IOU误差也会对网络优化过程造成影响,从而降低物体检测的准确性。

SSD障碍物检测

 SSD ( SingleShotMultiboxDetector )也是一种单一阶段检测算法,只需要用到图像1次,不需要产生候选框再进行分类和回归,而是直接在图像中不同位置进行边界框的采样,然后使用卷积层进行特征提取后直接进行分类和回归。相比基于候选框的方法, SSD 极大地提高了的检测速度。


 接下来介绍一下 SSD 检测的主要设计理念。
   (1)使用不同尺度下的特征图进行检测。 SSD 通过提取不同尺度下的特征图来做检测,其网络结构与 YOLO 的比较如图所示。
在这里插入图片描述
   它使用了六种不同尺寸的特征图来进行检测。在卷积神经网络中,较低层级的特征图尺寸较大,在这种特征图上的候选框在原图上的覆盖范围较小;较高层级的特征图的尺寸较小,而其候选框在原图上的覆盖范围大。如图所示。
在这里插入图片描述
   尺寸为8x8的特征图划分了更多单元格,但是每个单元格在原图中所占范围较小。通过对多个层级上的候选框进行匹配,有利于更精确地找到与不同尺寸目标最匹配的边界框。
 (2)采用卷积层做检测。 与 YOLO 在全连接层之后做检测不同的是, SSD 直接采用卷积对不同特征图进行特征提取。如网络结构对比图所示,对于尺寸为 m×n ,维数为 p 的特征图, SSD 使用3×3×p的卷积枝来进行卷积。其输出一种为用于分类的置信度分数,另一种为用于回归的位移量。另外,卷积层还通过候选框层生成候选框坐标,每层产生的候选框个数是一定的。
 (3)采用不同尺度和纵横比的候选框。 SSD 借鉴了与 Faster RCNN 类似的候选框思想,在每个单元格设置不同尺度和纵横比的默认框,如上图所示,每个单元格设定有四种不同尺度的默认框。对于一个尺寸为 m×n的特征图。假定每个单元格有k个默认框,则该特征图共有m×n×k个默认框。如网络结构对比图中所示,该网络共产生8732(38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4)个默认框。
 对于每个默认框,SSD的预测值主要有两方面 —— 分类的置信度和边界框的回归值。在分类中,SSD会把背景单独作为一类。在VOC数据集上,SSD的每个默认框会输出21类置信度,其中20类作为VOC的目标种类。边界框的回归值与Faster RCNN类似,实际上是预测真实边界框g相对于默认框d的中心(cx,cy)和宽(w)、高(h)的转换量,预测值的真实值的计算方式为:
g ^ c x = g c x − d c x d w \hat{g}^{cx} = \frac{g^{cx} - d^{cx}}{d^w} g^cx=dwgcxdcx
g ^ c y = g c y − d c y d h \hat{g}^{cy} = \frac{g^{cy} - d^{cy}}{d^h} g^cy=dhgcydcy
g ^ w = log ⁡ ( g w d w ) \hat{g}^w = \log(\frac{g^w}{d^w}) g^w=log(dwgw)
g ^ h = log ⁡ ( g h d h ) \hat{g}^h = \log(\frac{g^h}{d^h}) g^h=log(dhgh)
   因此,假定该数据集有 c 种目标,则每个默认框需要预测 c +1个类别概率和4个坐标相关的转换量。在训练过程中, SSD 会在开始阶段将这些默认框与真实框进行匹配,如在上图中,对猫和狗分别采用适合它们形状的默认框,蓝色框匹配到了猫的真实框,红色框匹配到了狗的真实框。在匹配过程中,首先对于每个真实框,找与其 IOU 最大的默认框进行匹配;然后,对于剩余的默认框,若其与某一真实框的 IOU 大于设定阈值,SSD 也会将它们进行匹配。也就是说,一个真实框可能会与多个默认框匹配。这种匹配方法简化了网络的学习问题,使得网络可以在多个框中选择预测分数最高的,而不是只能用重合度最大的框来做预测。
   另外,与真实框匹配的默认框记为正样本,未匹配的记为负样本,显然这样产生的负样本要远远多于正样本。为了保证正负样本比例尽量平衡, SSD 将负样本按置信度误差排序,并选择排名靠前的,使得负样本与正样本的比例约为3:1。
 (4)损失( loss )函数定义。 SSD 的损失函数由位置误差( localization loss , loc )和置信度误差( confidence loss , conf )组成。令xijp表示第 i 个默认框是否与第 j 个真实框匹配, N 为匹配的默认框总数, c 为类别置信度预测值, g 为真实边界框, l 为预测框,则总的损失函数为
L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) L(x,c,l,g)=\frac{1}{N} (L_{conf}(x,c) +\alpha L_{loc}(x,l,g)) L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))
   对于位置误差Lloc,采用Smooth L1 loss;
L l o c ( x , l , g ) = ∑ i ∈ P o s N ∑ m ∈ ( c x , c y , w , h ) N x i j k s m o o t h L 1 ( l i m − g ^ j m ) L_{loc}(x,l,g) = \sum\limits_{i \in Pos}^{N} \sum\limits_{m \in (cx,cy,w,h)}^{N} x_{ij}^{k}smooth_{L1}(l_{i}^{m} - \hat{g}_{j}^{m}) Lloc(x,l,g)=iPosNm(cx,cy,w,h)NxijksmoothL1(limg^jm)
   对于置信度Lconf,采用了softmax loss:
L c o n f ( x , c ) = − ∑ i ∈ P o s N x i j p l o g ( c ^ i p ) − ∑ i ∈ N e g l o g ( c ^ i p ) L_{conf}(x,c) = -\sum\limits_{i \in Pos}^{N} x_{ij}^{p} log(\hat{c}_{i}^{p}) - \sum\limits_{i \in Neg} log(\hat{c}_{i}^{p}) Lconf(x,c)=iPosNxijplog(c^ip)iNeglog(c^ip)
c ^ i p = e x p ( c i p ) ∑ p e x p ( c i p ) \hat{c}_{i}^{p}=\frac{exp(c_i^p)}{\sum\limits_p exp(c_i^p)} c^ip=pexp(cip)exp(cip)
   总误差函数中权重系数α通过交叉验证设置。

Faster RCNN障碍物检测

 经过RCNN和Fast RCNN的积淀,Ross B. Girshick等人在2016年提出了新目标检测框 —— Faster RCNN。Faster RCBB不同于 YOLO ,它是一种二阶段的检测算法。 RCNN 系列算法如图所示。
在这里插入图片描述
 RCNN 以及 Fast RCNN 都无法做到端到端的训练, Faster RCNN 则将体征提取模块、候选框生成模块以及边框回归和目标分类模块都整合在了一个网络中,使得综合性能有较大提高、在检测速度方面尤为明显。
   (1)特征提取模块。Faster RCNN 特征提取网络使用的VGG16是牛津大学计算机视觉组和 Deepmind 公司的研究人员一起研发的深度卷积神经网络。他们探索卷积神经网络中的深度、宽度和性能之间的关系,通过反复堆叠3X3卷积和2x2的最大值池化,成功构建一个16层的网络。输人图像大小是3x224x224,输出特征则为51x39X256。
   (2)候选框生成模块( RPN )。经典的检测方法生成检测框都非常耗时,如 Opencv 的 Adaboost 方法使用滑动窗口和图像金字塔生成检测框;或如 RCNN 使用 SS ( Selective Search )方法生成检测框。而 Faster RCNN 则抛弃了传统的滑动窗口和 SS 方法,直接使用 Region Proposal Networks ( RPN )生成检测框,这也是 Faster RCNN 的巨大优势,能极大提升检测框的生成速度。特征可以看作一个尺度51x39的256通道图像,对于该图像的每一个位置,考虑9个可能的候选窗口:三种面积(1282,2562,5122)×三种比例(1:1,1:2,2:1),这些候选框窗口称为锚点。
在这里插入图片描述
   RPN实际分为两个组件:一个组件通过softmax分类anchor获得前景和背景;另一个组件用于计算对anchor的边框偏移量,以获得精确的候选框。
   (3)边框回归和目标分类模块。在通过RPN得到候选框之后,使用ROI pooling将每个候选框所对应的特征都转换成7x7的大小。再将每个候选框的特征输入到边框回归和目标分类模块中,这样可以得到每个候选框的类别,类别数是n+1,n是n中障碍物类别,1则是背景。对于那些非背景的目标狂,则会进行边框修正。在Faster RCNN中主要有两个损失:一个是分类损失,另一个是标注框回归损失。对于分类损失来说就是一个简单的交叉熵,而标注框回归损失采用的平滑的L1损失。
s m o o t h L 1 ( x ) = { 0.5 x 2 × 1 σ 2 ∣ x ∣ < 1 σ 2 ∣ x ∣ − 0.5 其他 smooth_{L1}(x)= \begin{cases} 0.5x^2 \times \frac{1}{\sigma^2} & \text{$|x|< \frac{1}{\sigma^2}$} \\ |x| - 0.5 & \text {其他} \end{cases} smoothL1(x)={0.5x2×σ21x0.5x<σ21其他

基于图像的三位障碍物检测

 尽管Faster RCNN、YOLO、SSD等算法能够准确检测出障碍物在图像中的位置,但是对于现实世界的障碍物都是三维的。这就意味着大部分应用都需要有目标物体的三维的长宽高信息、空间信息、朝向信息偏转角等。如下图所示,在自动驾驶场景下,需要从图像中提供目标物体的长宽高、空间、朝向等信息。鸟瞰投影的信息对于后续自动驾驶场景中的路径规划和控制有着至关重要的作用。目前三维目标检测正处于高速发展时期,主要综合利用单目摄像头、双目摄像头、多线激光雷达进行三维目标检测。从成本的角度考虑,激光雷达>双目摄像头>单目摄像头;从现阶段的准确率来看,激光雷达>双目摄像头>单目摄像头。
在这里插入图片描述

基于激光雷达的障碍物检测

基于几何特征和网格

 几何特征包括直线、圆和矩形等。基于几何特征的方法首先对激光雷达的数据进行处理,采用聚类算法将数据聚类并与障碍物的几何特征进行对比,对障碍物进行检测和分类。这使得利用几何特征的方法在无人驾驶方面较为常见。为了提高对不同点云数据检测的可靠性,基于几何特征的方法也可以与光谱特征结合,将几何和影像特征综合考虑,从多个维度对障碍物进行识别,同时引入权重系数来反映不同的特征对识别的影响。对于非结构化的道路,障碍物的形状复杂,较难用几何形状去描述,此时需要用基于网格的方法来识别此类障碍物。该方法将激光雷达的数据投影到网格地图中,然后利用无向图相关方法对点云数据进行处理。网格的大小和结构可以自定义,用网格分布图像来表示障碍物,分辨率越高的网格,表示的障碍物越复杂,但同时需要较高的计算复杂度和内存。
 这里简单介绍一下基于几何特征的模板匹配原理。

边缘模板的创建

 我们首先从模板图像的边缘创建一个数据集或模板模型,该数据集或模板模型将用于目标图像中去搜索与模板图像相近或相同的图像。边缘检测的方法与canny边缘检测的方法类似。Sobel算子在横向和纵向两个方向可以与图像作平面卷积。对于模板图像某点(x,y)可以得出两个方向的梯度向量Gx,Gy。我们可以计算该像素点的复制梯度G和梯度方向θ:
G = G x 2 + G y 2 G=\sqrt{G_x^2+ G_y^2} G=Gx2+Gy2
θ = tan ⁡ − 1 ( G x G y ) \theta = \tan^{-1} (\frac{G_x}{G_y}) θ=tan1(GyGx)

非最大值抑制原理提取边缘信息

 sobel算子检测出来的边缘太粗了,我们需要抑制那些梯度不够大的像素点,只保留最大的梯度,从而达到瘦边的目的。这些梯度不够大的像素点很可能是某一条边缘的过渡点。按照高数的极大值的定义,即对点(x0,y0)的某个邻域内所有(x,y)都有f(x,y)≤(f(x0,y0),则称f在(x0,y0)具有一个极大值,极大值为f(x0,y0)。简单方案是判断一个像素点的8邻域与中心像素谁更大,但这很容易筛选出噪声,因此我们需要用梯度和梯度方向来辅助确定。
如下图所示,中心像素C的梯度方向是蓝色直线dTmp1,dTmp2是梯度直线上与邻域交点的值,那么只需比较中心点C与dTmp1和dTmp2的大小即可。由于这两个点的像素不知道,假设像素变化是连续的,就可以用g1、g2和g3、g4进行线性插值估计。设g1的幅值M(g1),g2的幅值M(g2),则M(dtmp1)=w*M(g2)+(1-w)*M(g1) ,其w=distance(dtmp1,g2)/distance(g1,g2) 。也就是利用g1和g2到dTmp1的距离作为权重,来估计dTmp1的值。经过非最大值抑制可以滤除大部分非边缘点。

VoxelNet障碍物检测

 VoxelNet障碍物检测为了方便进行障碍物检测,激光雷达数据需要一定的人力对数据进行整理,对于距离较远的物体,激雷达扫描出的物体轮廓信息在网络进行识别时效果可能并不理想,为此需要投入更多的人工流程去处理激光雷达数据。为了解决这一难点,减少人力,在 VoxelNet 的研究中,消除了对点云进行手动提取特征的过程,并提出了统一的端到端的三维检测网络。 VoxelNet 将原始点云作为输人,但由于现有激光雷达返回的点云数据包含的坐标点数量较大,多为数万到数十万,对计算量和内存的需求过大, VoxelNet 除了减少人力标注外,也着重解决了如何让网络高效处理更多的激光点云数据。如图所示, VoxelNet 主要由三个模块组成:特征学习网络、中间卷积层和区域建议网络。
在这里插入图片描述
 特征学习网络主要将点云划分为体素 Voxel 形式,通过 VFE 层提取特征,得到体素级的特征向量,包括以下几个步骤:
   (1)体素划分
   (2)分组
   (3)随机抽样
   (4)堆叠体素特征编码
   (5)稀疏张量表示

基于视觉和激光雷达融合的障碍物检测

空间融合

 建立精确的雷达坐标系、三维世界坐标系、摄像机坐标系、图像坐标系和像素坐标系之间的坐标转换关系,是实现多传感器数据的空间融合关键。

时间融合

 雷达和视觉信息除在空间上需要进行融合外,还需传感器咋时间上同步采集数据,实现时间的融合。


http://www.ppmy.cn/news/1523431.html

相关文章

计算机毕业设计 智能推荐旅游平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

ThinkPHP+redis 实现延迟任务 实现自动取消订单,自动完成订单

在 ThinkPHP 中结合 Redis 实现延迟任务&#xff0c;可以用于自动处理订单取消、自动完成等功能。Redis 的 ZSET&#xff08;有序集合&#xff09;功能非常适合实现延迟任务队列。以下是详细的实现步骤&#xff1a; 1. 准备工作 确保你的环境中已安装 Redis&#xff0c;并在 …

【LabVIEW学习篇 - 18】:人机界面交互设计02

文章目录 错误处理函数简单错误处理器通用错误处理器清除错误合并错误错误代码至错误簇转换查找第一个错误 鼠标指针 错误处理函数 在LabVIEW中&#xff0c;是通过错误输入簇和错误输出簇来传递错误信息&#xff0c;可以将底层错误信息传递到上层VI。设计人员需要对不同程度的…

基于Java+SpringBoot+Vue+MySQL的高校物品捐赠管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的高校物品捐赠管理系统【附源码文档】、…

Jenkins 执行 shell 时报错 Host key verification failed.

1. 问题描述 在 jenkins 中执行下面的 shell 语句时 sshpass -p "123456" scp -r * dep192.168.1.100:/home/dep/Desktop/报错 Host key verification failed.可能原因是由于首次登录时需要输入 yes 导致无法连接成功。 The authenticity of host 192.168.1.100…

Android平台RTMP|RTSP播放器如何回调YUV或RGB数据?

技术选型 我们知道&#xff0c;Android平台一般RTMP|RTSP播放器通常不直接提供回调YUV或RGB数据的功能。如果播放端有视觉分析或类似的需求&#xff0c;需要播放端&#xff0c;能支持YUV或ARG的数据回调&#xff0c;一般来说&#xff0c;可参考的方法如下&#xff1a; 1. 使用…

2024 天池云原生编程挑战赛决赛名单公布,9 月 20 日开启终极答辩

历时 4 个月&#xff0c;2024 天池云原生编程挑战赛决赛名单公布&#xff01; 本届大赛规模创新高&#xff0c;参赛战队达 20000 支&#xff0c; 广覆盖国内外优秀高校和杰出企业&#xff01;吸引了来自北京大学、清华大学等 176 所国内外优秀高校&#xff0c;以及美团、米哈游…

关于SpringBoot项目yml配置数据库、redis、mq等中间件的用户密码敏感信息加密问题的解决方案

一、问题描述 一般情况下,yml里边的配置信息 都是在项目部署时动态管理的,一般不存在泄密或者不安全的情况,但是,不凡有一些脑袋有泡的客户,要对你项目源码进行安全性检测。故提供如下解决方案: 二、关于中间件Redis、MQ等对用户名或密码进行加密。 一般可在其对应的配…

React第三章(tsx语法入门 )

tsx语法入门 FAQ tsx跟jsx有什么区别 答: 基本没有没有区别只是在jsx语法上增加了类型。 jsx是什么&#xff1f; 答&#xff1a;jsx是js的语法扩展&#xff0c;允许在js中编写html代码。 例如&#xff1a;const fn () > <div>小满是谁&#xff1f;没听说过<…

【AIGC】InstructPixPix:基于文本引导的图像编辑技术

github:diffusers/examples/instruct_pix2pix/train_instruct_pix2pix_sdxl.py at main huggingface/diffusers GitHub 论文&#xff1a;https://arxiv.org/pdf/2211.09800 摘要 我们提出了一种从人类指令编辑图像的方法&#xff1a;给定一个输入图像和告诉模型做什么的书面…

【佳学基因检测】如何升级一个不再维护的软件包中的PHP代码?

如何升级一个不再维护的软件包中的PHP代码&#xff1f; 为什么要升级一个不再维护但是仍在使用的软件包中的PHP代码&#xff1f; 升级一个不再维护但仍在使用的软件包中的 PHP 代码是一个复杂但重要的过程。虽然这些软件包可能已经不再活跃地维护或更新&#xff0c;但升级其代…

用go语言实现树和哈希表算法

算法复杂度 判断一个算法的效率通常基于其计算复杂度&#xff0c;这主要与算法访问输入数据的次数有关。计算机科学中常用大O表示法来描述算法的复杂度。例如&#xff0c;O(n)的算法只需访问一次输入数据&#xff0c;因此优于O(n)的算法&#xff0c;后者则优于O(n)的算法&…

MySql Index索引使用注意

MySql Index索引使用注意事项 use exercise_linux; -- 索引使用 -- 最左前缀法则&#xff08;联合索引才遵循&#xff09; -- 如果使用了多列&#xff08;联合索引&#xff09;&#xff0c;要遵守最左前缀法则&#xff1b;最左前缀法则是指查询从索引的最左列开始&#xff0c;…

资料分析(2)

C B 增长量不变就是1002020 上面是利滚利:按照20%当利息 本题:涨跌幅度的意思就是增长率&#xff0c;本题是按照增长率不变的情况下进行计算D B 7551400X>1.2*100000 B B B 总体增量部分增量之和 先进行计算固定通信业务收入的增长量移动通信业务实现收入的增长量 增长量现期…

【漏洞利用】2018年-2024年HVV 6000+个漏洞 POC 合集分享

此份poc 集成了Zabbix、用友、通达、Wordpress、Thinkcmf、Weblogic、Tomcat等 下载链接: 链接: https://pan.quark.cn/s/1cd7d8607b8a

递归搜索与回溯专题篇二

目录 N皇后 有效的数独 解数独 单词搜索 黄金矿工 不同路径III N皇后 题目 思路 根据题意可知&#xff0c;要想得到n皇后的摆放方案&#xff0c;结果须满足每一行及每一列都只有一个皇后&#xff0c;且每个主对角线和副对角线上只能有一个皇后&#xff0c;我们的做法是&…

8Manage PM:项目控制管理新手指南

在项目团队启动并执行其任务的过程中&#xff0c;项目经理承担着关键的责任&#xff0c;包括但不限于&#xff1a;密切监控项目进展、定期提交关于进展、问题及潜在风险的报告&#xff0c;并在必要时与团队成员及客户协商&#xff0c;对项目计划进行适当的调整。 如果项目方向…

C语言练习题之 数组中出现次数超过一半的数

题目描述 给一个长度为 n 的数组&#xff0c;数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次&#xff0c;超过数组长度的一半&#xff0c;因此输出2。 数据范围&…

项目日志——日志落地模块的设计、实现、测试

文章目录 日志落地模块设计实现扩展实现测试 日志落地模块 设计 功能是&#xff0c;将格式化完成后的日志消息字符串&#xff0c;输出到指定的位置 支持将日志落地到不同的位置 标准输出指定文件滚动文件 滚动文件按照时间或者大小进行滚动切换&#xff0c;可以按照天数对…

《物理教师》

投稿指南&#xff1a; 稿件要求 1. 文稿应资料可靠、数据准确、具有创造性、科学性、实用性。应立论新颖、论据充分、数据可靠&#xff0c;文责自负&#xff08;严禁抄袭&#xff09;&#xff0c;文字要精炼。 2. 姓名在文题下按序排列&#xff0c;排列应在投稿时确定。作者…