自动驾驶3D目标检测综述(三)

news2024/11/25 7:03:37

前两篇综述阅读理解放在这啦,有需要自行前往观看:

第一篇:自动驾驶3D目标检测综述(一)_3d 目标检测-CSDN博客

第二篇:自动驾驶3D目标检测综述(二)_子流行稀疏卷积 gpu实现-CSDN博客

本篇是第三篇,从第四章开始介绍。


目录

一、单目3D目标检测

(一)仅基于图像的单目3D目标检测

1、单阶段基于锚点的方法

2、单阶段无锚点的方法

3、两阶段方法

4、潜力和挑战

(二)深度信息辅助的单目3D目标检测

1、基于激光雷达伪图像的方法

2、潜力和挑战

(三)先验引导的单目3D目标检测

1、目标形状

2、几何一致性

3、时间限制

4、分割

5、潜力和挑战

二、基于立体图像的3D目标检测

三、多视角3D目标检测


第四章 基于相机的3D目标检测

在这个章节主要介绍一些基于相机的3D目标检测的方法,分别会回顾和分析单目3D目标检测(又分为仅基于图像、深度信息辅助和先验引导的方法)、基于立体图像的3D目标检测和多相机下的3D目标检测方法。首先看一张基于相机3D目标检测方法的总体回顾图。

由图可以看到,基于立体图像和先验引导的3D目标算子最早被提出(2015年),紧接着是深度信息辅助的算子(2018年),再是仅基于图像的算子(2019),最后是多相机的3D目标算子(2021)。其中基于先验引导的算子方法最多,截止2022年共有19种不同的方法提出;基于多相机的算子方法最少,截止2022年仅有两种方法,分别是DERT3D和ImVoxelNet。

一、单目3D目标检测

单个图像所提供的深度信息有限(甚至可以说从单图像上无法获取深度信息),这也就导致了在3D空间中使用单图像进行目标检测非常困难。主要困难还是准确地预测3D目标的位置。虽然科学家们也在解决这个问题方面做出了很大的努力,例如例如几何约束和形状先验的方法从图像中推断深度信息,但问题仍未得到很好解决。单目的3D检测方法依旧比基于雷达的方法效果更差,这也是由于3D定义的能力较差,这也为整个研究界留下了一个开放性的挑战。

(一)仅基于图像的单目3D目标检测

启发于2D的检测方法,单目3D目标检测的一种直接的解决方案就是通过卷积神经网络从图像中回归得到3D边界框参数。这种直接回归的方法也就很自然地向2D检测网络架构借用了一些设计思路,并且能够以端到端的方式进行训练。这些方法能够被分为单阶段/两阶段或者基于锚点/无锚点的方法。仅基于图像的单目3D检测方法示意如下图所示:

可以看到分别是单阶段基于锚点的方法、单阶段无锚点和两阶段的方法。下面会详细介绍。

下图是这两种方法分类图:

1、单阶段基于锚点的方法

基于锚点的单目检测方法依靠的是一种置于每一个图像像素的2D到3D锚点框,并且使用了一种2D卷积神经网络从锚点中回归得到目标参数。每一个像素表示为[u,v],3D锚点框[w^{a},h^{a},l^{a},\theta ^{a}]_{3D},分别代表宽(width)、高(height)、长(length)和偏转角度。2D边界框[w^{a},h^{a}]_{2D},分别表示宽和高,深度信息锚点d^{a}是预先定义好的。一张图像首先通过卷积网络预测3D边界框的偏移量\delta _{3D}=[\delta _{x},\delta _{y},\delta _{z},\delta_{d},\delta _{w},\delta _{h},\delta _{l},\delta _{\theta }]和2D边界框偏移量\delta _{2D}=[\delta _{x},\delta _{y},\delta _{w},\delta _{h}]。于是,2D边界框b_{2D}=[x,y,w,h]可以解码为:

[x,y]_{2D}=[u,v]+[\delta _{x},\delta _{y}]_{2D}\cdot[w^{a},h^{a}]_{2D},

[w,h]_{2D}=e^{[\delta _{w},\delta _{h}]_{2D}}\cdot [w^{a},h^{a}]_{2D}

3D边界框b_{3D}=[x,y,z,l,w,h,\theta ]_{3D}可以解码为:

[u^{c},v^{c}] = [u,v]+[\delta _{x},\delta _{y}]_{3D}\cdot [w^{a},h^{a}]_{2D},

[w,h,l]_{3D}=e^{[\delta _{w},\delta _{h},\delta _{l}]_{3D}}\cdot [w^{a},h^{a},l^{a}]_{3D},

d^{c}=d^{a}+\delta _{3D},\theta _{3D}=\theta_{3D}^{a}+\delta_{\theta _{3D}},

其中[u^{c},v^{c}]是图像平面上的投影目标中心。最后,投影中心及其深度信息一起被转换成3D目标的中心[x,y,z]_{3D}:

d^{c}\cdot \begin{bmatrix} u^{c}\\ v^{c} \\ 1 \end{bmatrix}=K T \begin{bmatrix} x\\ y\\ x\\ 1 \end{bmatrix}_{3D}

其中K和T是摄像头的内参数和外参数。

2、单阶段无锚点的方法

单阶段无锚点的单目检测方法不借助锚点的辅助从图像中预测3D目标的各种属性。图像首先经过一个2D卷积神经网络然后再应用多个检测头单独预测目标的属性。检测头通常包含一个预测目标种类的种类检测头、一个预测大致中心点[u,v]的关键点预测头、一个基于中心点来预测中心偏移offset[\delta _{x},\delta _{y}]的偏移检测头、一个预测深度偏移\delta _{d}的深度检测头、一个预测目标尺寸[w,h,l]的尺寸检测头和一个预测目标偏转角\alpha的航向角检测头。三维目标的中心点[x,y,z]可以由投射中心[u^{c},v^{c}]和深度信息d^{c}得到:

d^{c}=\sigma ^{-1}\left ( \frac{1}{\delta _{d}+1} \right ),u^{c}=u+\delta _{x},v^{c}=v+\delta _{y}

d^{c}\cdot \begin{bmatrix} u^{c}\\ v^{c} \\ 1 \end{bmatrix}=K T \begin{bmatrix} x\\ y\\ x\\ 1 \end{bmatrix}_{3D}

这里的\sigma指的是sigmoid函数。目标的偏航角\theta可以由观察角\alpha转换得到:

\theta =\alpha +arctan\left ( \frac{x}{z} \right )

3、两阶段方法

两阶段单目检测方法通常是将传统的两阶段二维目标检测框架延伸到三维目标检测上。具体来说就是在第一阶段使用二维的检测器从输入特征图中生成二维边界框,然后在第二阶段通过从二维ROI中预测三维目标参数将二维边界框拓展到三维空间中。

4、潜力和挑战

这种仅基于图像的方法旨在通过修改的二维目标检测框架从图像中直接回归得到三维边界框参数。由于这些方法是从二维检测方法中获取灵感的,故它们也就自然地受益于二维目标检测和基于图像的网络架构的进步。大部分的方法可以不进行预训练和置后处理从而端到端的进行训练,而这是非常简单和高效的。

这种方法的关键挑战就是对于每个目标能够精准预测其深度信息d^{c}。然而,基于单目图像的深度评估是一个非常困难的问题,并且这个问题也会因为只有边框级别的监督信号而变得越来越严重。

(二)深度信息辅助的单目3D目标检测

在单目三维目标检测中深度评估是非常困难和具有挑战性的,为了能够得到更加精确的结果,许多文章中都采用了预训练的辅助性深度评估网络。具体一点就是单目图像首先经过一个预训练的深度评估器生成深度图像,接下来有两种处理单目图像和深度图像的方法:基于深度图像的方法融合图像和深度地图,采用一种专门的神经网络生成深度注意特征,这种特征能够增强检测性能。激光雷达伪图像将深度图像转换成一种激光雷达伪图像点云图,基于激光雷达的检测器被应用在点云上以预测三维目标。基于深度信息辅助的单目三维目标检测的大致阐述如下图所示:

这上面主要有三种方法:基于深度信息的单目三维目标检测方法、基于激光雷达伪图像的单目三维目标检测方法和基于碎片化的单目三维目标检测方法。

这些方法的分类如下表所示:

其中2D指的是二维的卷积神经网络,3D是点云的网络。

1、基于激光雷达伪图像的方法

基于激光雷达伪图像的方法将深度图像转换成激光雷达伪图像点云图,之后应用基于激光雷达的检测器从点云图中检测三维目标。Wang等人首先将激光雷达伪图像点云图作为一种数据表示方法引入,他们将深度地图D\epsilon \mathbb{R}^{H\times W}转换成伪点云图D\epsilon \mathbb{R}^{HW\times 3}。就是对于深度图像中每一个像素点[u,v]及其深度值d,相机坐标系统下的相应三维点坐标[x,y,z]按照以下公式进行计算:

x=\frac{\left ( u-c_{u} \right )\times z}{f_{u}},y=\frac{\left ( v-c_{c} \right )\times z}{f_{v}},z=d

[c_{u},c_{v}]代表相机主点,f_{u},f_{v}分别是水平和垂直坐标轴上的焦距。因此伪点云图D就能够通过在三维空间对深度地图中的每个像素点进行反向投影得到。D用作表示伪激光雷达点云图:其本质上是一种三维点云图但是是从深度图像而非真实激光雷达传感器中提取的。最终,将基于激光雷达的三维目标检测器应用在这种伪激光雷达点云图上来预测三维目标。有许多文章都尝试对其进行改进:有使用颜色信息对这种伪点云图进行增强的、还有引入实例分割的、设计渐进式坐标转换方案的、通过独立前景和背景的预测来增强基于像素的深度评估、从真实激光雷达点云中进行领域适应的以及一种新型物理传感器设计。

还有些人对传统利用伪激光雷达表示进行单目三维目标检测的观点进行挑战。他们进行深度调查并提供了一种有见地的观察:伪激光雷达表示的力量来自于坐标转换而不是点云表示。因此每个像素编码为一个三维坐标的坐标地图就可以通过获得与伪激光雷达点云表示相当的结果。这种观察让我们能够直接在坐标地图上应用二维卷积网络来预测三维目标,这样就省去了采用费时间的基于激光雷达的点云检测器的需要了。

2、潜力和挑战

深度信息辅助的单目三维目标检测方法更加追求通过预训练的深度预测网络来获得准确的深度信息。深度图像表示和伪激光雷达表示都能够很大程度上提高单目检测的性能。然而,与进需要三维边界框释文的仅基于图像的方法相比,预训练的深度预测网络需要更多昂贵的地面实况深度图,并且它也对端到端训练的整体框架产生更大的危害。另外,预训练的深度评估网络泛化能力差,预训练深度图通常在目标数据集上校准较差,尤其是其标准需要根据目标数据集进行调整。因此在用于深度预训练的源域和单目检测的目标域之间存在一条无形的域沟。鉴于驾驶场景通常都多样且复杂,在某一限制域进行的预训练深度网络可能在现实世界表现不那么好。

(三)先验引导的单目3D目标检测

许多方法都尝试通过采用来自图像的目标形状和场景几何的隐式先验知识解决单目三维目标检测方法的问题。先验知识能够通过引入预训练的子网络和辅助性任务获得,且它们能够提供额外信息或限制帮助精准定位三维目标。广泛使用的先验知识包括目标形状、几何一致性、时间限制以及分割信息。先验类型的展示如下图所示:

我们可以看到,形状先验知识通常是一些目标模型,如CAD模型、点线框架、SDF、点云和体素;几何一致性通常是二维到三维边界框一致性、关键点评估、目标高度深度限制、目标间关系和地平面限制;分割信息通常是将图像中不同目标进行分割;时间限制展示的一帧图像前后帧的图像对比。

这种方法的分类表如下:

1、目标形状

许多方法都直接从图像中对三维目标进行形状重建,重建的形状能够被进一步用来决定三维目标的位置和姿态。上述展示图中展示了五种重建表示:CAD(计算机设计辅助模型)、点线模型、SDF(有符号距离函数)、点和体素。

2、几何一致性

给一个外在矩阵T\epsilon SE\left ( 3 \right ),它能够将目标框架下的3D坐标转换成相机框架,并且相机内在矩阵K能够将3D坐标投影到图像平面,目标框架下的三维点[x,y,z]投影成图像像素左边[u,v]可以表示为:

d\cdot \begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=KT\begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}

其中d是相机框架下转换后的3D坐标深度信息,上述公式提供了三维点和二维图像像素坐标之间的几何关系,这种关系可以用在支持预测的三维目标与图像上的二维目标之间一致性的许多种方法上。主要有五种集合限制的单目检测:2D到3D边界框一致性、关键点、目标高度到深度关系、物体间关系以及地平面限制。

在某些工作中,最小化重投影误差被用来支持2D到3D边界框的一致性。这些方法引入了后处理步骤来最优化3D目标参数,这通常是在图像上逐渐将3D边界框你拟合到2D边界框。

3、时间限制

三维目标时间关联也能作为一种强有效的先验知识。 时间目标关系已经被用作深度指令和带有三维卡尔曼过滤器的多框架目标融合。

4、分割

图像分割主要在两个方面帮到单目三维检测:在某些工作中,目标分割对实力形状重建至关重要;分割能够揭示图像像素在透视图视角下是否存在于三维目标内部,而这种信息能够帮助定位三维目标。

5、潜力和挑战

通过形状重建能够从图像中获得更多目标形状的细节信息,而这对三维目标检测是非常有帮助的。我们也能通过投影或渲染比较损失获得更多准确的检测结果。然而,对于这种方法仍有两项挑战:形状重建通常需要预训练一个重建网络这样一个额外步骤,这将破坏端到端单目检测管道的训练;其次,目标形状通常从CAD模型而非现实世界获得,这也就导致了增加了一项将重建目标泛化于现实世界场景中去的挑战。

几何一致性广泛应用并且能够提高检测精确度。然而,一些方法将几何一致性表述为一种最优化问题并在后处理中优化目标参数,这是非常耗费时间且破坏端到端的。

图像分割在单目三维检测中是非常有用的信息。然而,训练分割网络需要昂贵的像素注释。额外数据集上的预训练分割模型将会遇到泛化的问题。

二、基于立体图像的3D目标检测

问题和挑战 基于立体图像的三维目标检测旨在通过一对图像检测三维目标。相比于单目图像,一对立体图像能够提供更多用于推测精确深度信息的几何限制。因此,基于立体图像的方法通常能够在检测性能上获得比单目检测更好的结果。然而,立体相机通常需要非常精确的校准和同步,这在实际应用上难以实现。

给予立体图像方法的阐述如下图所示:

这种方法的分类表如下:

立体匹配和深度估计 一个立体相机拍摄一次能够产生一对图像,即左图像I_{L}和右图像I_{R}。通过立体匹配技术,利用多视图几何从成对的立体图像估计视差图。理想状态下,左图像上的每个像素点(u,v)都在右图像上有一个对应的像素点(u,v+p),其中p是视察值。这样两个像素点就在图像上的相同三维位置。最终,多视图也可以通过下面的公式转换成深度图像:

d=\frac{f\times b}{p}

其中d是深度值,f是焦距,b是立体相机的基准线长度。来自图像的基于像素的多视图限制相比于单目深度预测提供了更加准确的深度评估。

基于二维检测的方法 传统二维目标检测框架能够经过修改来解决立体图像检测问题。具体而言,成对的立体图像传入一个基于图像的检测器和Siamese骨干网络分别为左右图像生成左右兴趣区域(RoIs)。在第二阶段左右兴趣区域被融合用于评估三维目标参数。立体R-CNN首次提出拓展二维检测框架到立体三维检测。这种设计样式已经被应用在很多文章中:Qin提出了一种在第二阶段的新颖的立体三角剖分学习子网络;Xu等人通过以目标为中心的立体匹配和实例分割学习实例级差异;Peng等人提出了一种自适应实例级时差估计;Chen等人介绍了一种基于能量的立体三维目标检测框架。

基于伪激光雷达的方法 从立体图像中预测的视差图能够转换成深度图像然后再转为伪激光雷达点。因此,与单目检测方法相似,伪激光雷达表示也能够用于基于立体图像的三维目标检测方法中。这些方法尝试改进立体匹配中的视差估计,以实现更精确的深度预测。You等人在立体匹配网络中引入了一种深度成本量;Qian等人提出了一种端到端立体匹配和检测框架;Kongigshof等人使用语义分割并为分别为前景和背景单独预测视差;Garg等人提出了一种视差估计的Wassertein损失。

基于体积的方法 有许多方法直接跳过伪激光雷达表示并且直接在三维立体体积上执行三维目标检测。DSGN提出了一种从立体匹配网络中衍生出的三维几何体积并在体积上应用一种基于网格的三维检测器检测三维目标。Guo和Wang等人分别通过知识蒸馏和三维特征体积对其进行了改进。

潜力和挑战 与单目检测方法相比,基于立体图像的方法通过立体匹配技术能够获得更精确的深度信息和视差估计,这同样带来了更强壮的目标定位能力且显著提高了三维目标检测性能。然而,辅助性的立体匹配网络也带来了额外时间和内存占用。与基于激光雷达的三维目标检测相比,从立体图像中检测能在自动驾驶场景中够作为一个更便宜的三维感知的解决方案。然而,在基于立体图像和基于激光雷达的三维目标检测方法之间仍存在不可忽视的性能差距。

三、多视角3D目标检测

问题和挑战 自动驾驶车辆通常配备多摄像头以从多视角获取完整的环境信息。最近,多视角三维目标检测迅速发展,一些多视角三维检测方法视图通过投影多视角图像到鸟瞰图来构造一个统一的BEV空间,之后将基于BEV的检测器应用到统一的BEV特征图之上检测三维目标。没有精确的深度信息是很难完成从相机视角到鸟瞰图的转换的,所以图像像素和他们对应的鸟瞰图位置无法完美对齐。如何完成从相机视角到鸟瞰图视角的转换是这种方法的主要挑战。其他方法采用由鸟瞰图视角生成的三维目标查询并且应用跨视图注意的Transformers进行目标查询和多视图图像特征。主要挑战就是如何恰当地生成三维目标查询和在Transformers中设计更多有效的注意方法。

多视角三维目标检测方法示意图如下:

基于BEV的多视角三维目标检测 LSS Philion和Fidler是一项开创性的工作,它提出了一种lift-splat-shoot样式来解决多视角相机的BEV感知问题。LSS主要有三个步骤。Lift:基于堆栈的深度预测被用于图像像素、多视角图像特征被提升至具有深度堆栈的三维截锥。Splat:三维截锥被溅射进一个统一的BEV平面、图像特征以端到端的方式转换成BEV特征。Shoot:下游感知任务在BEV特征图上执行。这种范式已经成功应用于许多下面的工作中:BEVDet使用一种四步骤的多视角检测管道来改进LSS,其中图像视角编码器从多视角图像中编码特征,视角转换器将图像特征从相机视角转换成鸟瞰图,BEV编码器进一步编码BEV特征,最后检测头应用到BEV特征上进行三维检测。Huang等人工作中的主要瓶颈是深度预测,因为这总是不精确的且会导致相机视角到鸟瞰图的不精确特征转换。为了获得更精确的深度信息,许多文章采用最小化从多视角图像和过去帧图像中获取的附加信息,例如Li等人采用显示深度监督,Wang等人引入环绕视角时间立体,Li等人使用东塔时间立体图像,Park等人结合短期和长期时间立体图像用作深度预测。另外,也有些文章(Xie等人,Huang等人)完全摈弃了深度堆栈的设计和分类深度预测。他们仅假设沿射线的深度分布不均匀,所以相机到鸟瞰图转换也能够以更高的效率完成。

基于查询的多视角三维目标检测 除了基于BEV的方法,还有一种方法中目标查询从鸟瞰图中生成并与相机视图特征交互。受到目标检测中Transformers改进的启发,DETR3D引入了一组稀疏的三维目标查询并且每组查询斗鱼一个三维参考点相关联。三维参考点通过投影它们的三维位置到多视角图像平面后目标查询与图像特征通过Transformers层进行交互进行图像特征的收集。最终,每一个目标查询将会解码出一个三维边界框。下面许多文章视图改进这种设计范式,例如引进空间感知跨视图注意(Doll等人)并在图像特征上添加三维位置嵌入(Liu等人)。BEVFormer(Li等人)介绍了一种基于密集网格的BEV查询并且每一个查询与一组涵盖一组三维参考点的柱子相关联。空间交叉注意应用在目标查询和空间图像特征上以获取空间信息,时间自注意用于目标查询和过去的BEV查询以融合时间信息。

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

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

相关文章

【Linux | 计网】TCP协议详解:从定义到连接管理机制

目录 1.TCP协议的定义: 2.TCP 协议段格式 3.TCP两种通信方式 4.确认应答(ACK)机制 解决“后发先至”问题 5.超时重传机制 那么, 超时的时间如何确定? 6.连接管理机制: 6.1.三次握手: 为什么需要3次握手,一次两次不行吗…

Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图

用户打开 PDF 文档时,他们会看到 PDF 的初始视图。默认情况下,打开 PDF 时不会显示书签面板或缩略图面板。在本文中,我们将演示如何设置文档属性,以便每次启动文件时都会打开书签面板或缩略图面板。 Spire.PDF for .NET 是一款独…

2024年12月Gesp七级备考知识点拾遗第一期(图的定义及遍历)

目录 总序言 知识点拾遗​编辑 度数 环 二叉树 图的遍历 深度优先 广度优先 连通与强连通 有什么不同 构成分别至少需要几条边(易错题)? 无向连通图 有向强连通图 完全图 什么是完全图 无向完全图最少边数 有向完全图最少边…

Doris 的Explain 和 Profile

什么是 explain? 执行计划是对一条 SQL 具体的执行方式和执行过程的描述。例如,对于一个涉及两表连接的 SQL,执行计划会展示这两张表的访问方式信息、连接方式信息,以及各个操作之间的顺序。 在 Doris 系统中提供了 Explain 工具…

QT QVBoxLayout控件 全面详解

本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizonta…

对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris()函数查找学习举例

对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris()函数查找学习举例 对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris函数查找学习举例 对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris()函数查找学习举例一、鸢尾花数据位置二、鸢尾花…

动态反馈控制器(DFC)和 服务率控制器(SRC);服务率和到达率简单理解

目录 服务率和到达率简单理解 服务率 到达率 排队论中的应用 论文解析:队列等待成本动态感知控制模型 动态反馈和队列等待成本意识: 服务速率调整算法: 动态反馈控制器(DFC)和 服务率控制器(SRC) SRC公式4的原理 算力资源分配系统中的调整消耗 举例说明 服务…

微信小程序上传微信官方审核流程(1)

1,打开微信开发者工具 2,微信开发者工具右上角有一个上传按钮,点击上传按钮 3,点击完上传按钮会弹出一个上传成功的提示,点击提示框中的确定按钮 4,点击完确定按钮后会显示填写版本好和项目备注 5&#x…

优先算法 —— 双指针系列 - 复写零

目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作:从左到右(错误) 从右到左 总结一下解决方法: 如何找到最后一个复写的数 特殊情况 完整步骤: 3. 代码 1. 复写零 题目链接:1089. 复写零 - 力…

Spring源码学习(一):Spring初始化入口

写在前面 ​   作为一个刚步入职场的小白,对Spring(SpringBoot)的了解只停留在会用,并未对其内部的原理有过学习。在公司导师的指导下,开始进一步学习Spring的源码,毕竟Spring源码是Spring全家桶的基础&…

IntelliJ+SpringBoot项目实战(十三)--在SpringBoot中整合Mybatis-plus

mybatis-plus是基于mybatis基础上的增强的持久层框架&#xff0c;也是目前Java项目开发的主流框架。本文介绍在SpringBoot中集成mybtais-plus的方法以及使用mybatis-plus开发增删改查模块。 一、引入mybatis-plus 在openjweb-core工程中引入mybatis-plus依赖: <dependency&…

Vector底层实现详解

一、vector的介绍 vector是表示可变大小数组的序列容器 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而且…

【2024 Optimal Control 16-745】【Lecture4】equality-constraints.ipynb功能分析

代码实现了一个二次优化问题的可视化解法&#xff0c;包括目标函数、约束以及优化路径。提供了两种优化方法&#xff1a;牛顿法和高斯-牛顿法&#xff0c;用于对比效果。利用了自动微分工具 ForwardDiff 来计算约束曲率。 环境初始化并导入依赖库 # 激活当前文件夹下的项目环境…

【国产MCU】-GD32F470-串行外设接口(SPI)

串行外设接口(SPI) 文章目录 串行外设接口(SPI)1、SPI介绍1.1 SPI特性1.2 SPI信号1.3 SPI 时序和数据帧格式1.4 NSS 功能1.5 SPI运行模式2、SPI控制器寄存器列表3、SPI控制器驱动API介绍4、SPI应用4.1 SPI初始化流程4.2 数据发送与接收串行外设接口(Serial Peripheral Int…

Docker安装ubuntu1604

首先pull镜像 sudo docker run -d -P m.daocloud.io/docker.io/library/ubuntu:16.04国内使用小技巧&#xff1a; https://github.com/DaoCloud/public-image-mirror pull完成之后查看 sudo docker images 运行docker sudo docker run -d -v /mnt/e:/mnt/e m.daocloud.io/…

2024 年:Kubernetes 包管理的新前沿

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;历代文学&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;高并发设计&#xf…

飞凌嵌入式T113-i开发板RISC-V核的实时应用方案

随着市场对嵌入式设备的功能需求越来越高&#xff0c;集成了嵌入式处理器和实时处理器的主控方案日益增多&#xff0c;以便更好地平衡性能与效率——实时核负责高实时性任务&#xff0c;A核处理复杂任务&#xff0c;两核间需实时交换数据。然而在数据传输方面&#xff0c;传统串…

VSCode 汉化教程【简洁易懂】

VSCode【下载】【安装】【汉化】【配置C环境&#xff08;超快&#xff09;】&#xff08;Windows环境&#xff09;-CSDN博客 我们安装完成后默认是英文界面。 找到插件选项卡&#xff0c;搜索“Chinese”&#xff0c;找到简体&#xff08;更具你的需要&#xff09;&#xff08;…

【Mac】VMware Fusion Pro 安装 CentOS 7

1、下载镜像 CentOS 官网阿里云镜像网易镜像搜狐镜像 Mac M1芯片无法直接使用上述地址下载的最新镜像&#xff08;7.9、9&#xff09;&#xff0c;会一直卡在安装界面&#xff08;在 install 界面按 enter 回车无效&#xff09;&#xff0c;想要使用需要经过一系列操作&#…

运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置 描述&#xff1a;在现在微服务、云原生的环境下&#xff0c;通常我们会在企业中部署Docker和Kubernetes集群&#xff0c;并且会在企业内部…