自动驾驶3D物体检测研究综述 3D Object Detection for Autonomous Driving: A Survey

在这里插入图片描述
本文介绍一篇最新的自动驾驶3D物体检测研究综述(2021年6月份发布),来源于中国人民大学,论文共26页,99篇参考文献。

论文链接为:https://arxiv.org/pdf/2106.10823.pdf


0. Abstract

自动驾驶被看作是避免人类遭受严重碰撞的最有希望的措施之一。其中,3D物体检测 是自动驾驶感知系统的核心基础,尤其是在路径规划、运动预测、碰撞避免等方面。

通常,在3D物体检测传感器标准布局中有立体/单目图像及相应的三维点云,其中点云能够提供准确的深度信息。但由于点云的稀疏性不规则性,以及相机视角与激光雷达鸟瞰视角之间的错位导致的模态协同、远距离的遮挡和尺度变化等原因,点云3D物体检测仍处于起步阶段。

最近,有大量的文献正在研究这一视觉任务,3D物体检测已经取得了巨大进展。为此,本文全面回顾了这一领域的最新进展,包括传感器、基础知识和最新的检测方法及其优缺点。此外,本文还介绍了3D物体检测评价指标并对公开数据集做了定量比较。


1. Introduction

(引言里作者介绍了自动驾驶对社会的影响,什么是自动驾驶,什么是3D物体检测,我这里只摘取什么是3D物体检测。)

什么是3D物体检测:3D物体检测是从3D传感器数据中检测物理对象,估计3D边界框及物体类别

3D物体检测是3D场景感知和理解的核心。目前常见的3D表示有:point clouds、meshes、volumetric grids,其中点云在许多情况下是最好的表示。点云既不像由大量面组成的meshes消耗存储空间,也不像volumetric grids由于量化而丢失原始几何信息,而且点云与原始激光雷达数据很接近。

Three types of commonly existing 3D representationsThe number of publications in 3D object detectionThe trend of heat change with time
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2. Sensors

自动驾驶汽车常用的传感器可分为两类:被动传感器 (Passive Sensors)主动传感器 (Active Sensors)

  • 被动传感器中单目相机具有信息丰富的颜色和纹理属性、更好的路标文本视觉识别、高帧速率和可忽略不计的成本等优点,然而,它缺乏深度信息,这对于准确的位置估计至关重要。为了克服这一点,立体相机使用匹配算法来对齐左右图像中的对应关系以进行深度恢复。

  • 主动传感器中激光雷达是一种具有透镜、激光和探测器三个基本组件的点对点发射设备,发出的光脉冲将以三维点的形式从周围环境中反射回来,形成“点云“。高稀疏性不规则性以及缺乏纹理属性是点云的主要特征,它与图像阵列有很好的区别,激光雷达的另一个问题是部署成本高。

下面的表格是单目相机、立体相机、激光雷达和固态激光雷达的优缺点比较。
在这里插入图片描述


3. Fundamentals

本文以KITTI自动驾驶数据集为例,下面是3D物体检测常用的符号规定、3D边界框的不同表达形式(常用的是7参数表达形式)、和3D物体检测的示意图(激光雷达坐标)。

Commonly used notationsComparison of the 3D bounding box parameterizationAn overview of 3D object detection from point clouds
在这里插入图片描述在这里插入图片描述在这里插入图片描述

坐标转换:由于现有的研究算法大多是基于KITTI数据集,本文以KITTI数据集为例介绍如何进行坐标转换。KITTI数据集中激光雷达和相机坐标系定义为:

  • 激光雷达坐标:x轴向前为正方向,y轴向左为正方向,z轴向上为正方向。
  • 相机坐标:x轴向前为正方向,y轴向为下正方向,z轴向前为正方向。

激光雷达坐标中的一个3D点 p=(x,y,z,1)Tp=(x,y,z,1)^{T}p=(x,y,z,1)T与对应的相机图像坐标 y=(u,v,1)Ty=(u,v,1)^Ty=(u,v,1)T之间的坐标转换关系为:
y=Prect (i)Rrect (0)Tvelo cam p\mathrm{y}=\mathrm{P}_{\text {rect }}^{(i)} \mathrm{R}_{\text {rect }}^{(0)} \mathrm{T}_{\text {velo }}^{\text {cam }} \mathrm{p}y=Prect (i)Rrect (0)Tvelo cam p

其中,投影矩阵Prect (i)\mathrm{P}_{\text {rect }}^{(i)}Prect (i)为:
Prect (i)=(fu(i)0cu(i)−fu(i)bx(i)0fv(i)cv(i)00010)\mathrm{P}_{\text {rect }}^{(i)}=\left(\begin{array}{cccc}f_{u}^{(i)} & 0 & c_{u}^{(i)} & -f_{u}^{(i)} b_{x}^{(i)} \\ 0 & f_{v}^{(i)} & c_{v}^{(i)} & 0 \\ 0 & 0 & 1 & 0\end{array}\right)Prect (i)=fu(i)000fv(i)0cu(i)cv(i)1fu(i)bx(i)00

则对应的相机内参Krect (i)\mathrm{K}_{\text {rect }}^{(i)}Krect (i)为:
Krect (i)=(fu(i)0cu(i)0fv(i)cv(i)001)\mathrm{K}_{\text {rect }}^{(i)}=\left(\begin{array}{cccc}f_{u}^{(i)} & 0 & c_{u}^{(i)} \\ 0 & f_{v}^{(i)} & c_{v}^{(i)} \\ 0 & 0 & 1 \end{array}\right)Krect (i)=fu(i)000fv(i)0cu(i)cv(i)1


4. 3D Object Detection Methods

如下图所示,根据输入数据模态,3D物体检测方法可以分为基于单目/立体图像、基于点云和基于多模态融合·的方法,这里也将各种方法划分为一阶段和两阶段了。基于点云的检测方法还可以进一步细分为基于多视图、基于体素、基于点、基于点与体素四种方法。为了明确区分不同的基于多模态融合的方法,本文提出了两种新的融合策略:基于序列融合基于并行融合的方法。

下面将依次介绍这几种检测方法。
在这里插入图片描述

4.1 Monocular/Stereo Image-based Methods

与二维物体检测方法十分相似,以单目/立体图像作为输入来预测三维实体。该方法通常可以分为三类(如下图所示):基于模板匹配基于几何特性,以及基于图像的伪激光雷达方法。
在这里插入图片描述


4.2 Point Cloud-based Methods

卷积神经网络的本质是稀疏交互权值共享,已被证明能够有效地利用规则域中的空间局部相关性,通过中心像素与其相邻像素的加权和。然而,由于点云是不规则无序的,直接进行卷积操作,会遭受形状信息的缺失和点云序列方差。如下图所示,由于点云序列不同,其最终得到的特征往往也会不同。
在这里插入图片描述
本文将基于点云的方法分为四类(如下图所示):基于多视图、基于体素、基于点云、基于点云体素的方法。
在这里插入图片描述


  • Multi-view-based Methods:将点云转换为前视图鸟瞰图表示,然后使用CNNs和标准的2D物体检测算法处理。
Visualization of point clouds from front viewFront ViewVisualization of point clouds from bird’s eye of viewBird’s Eye of View
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • Voxel-based Methods:将不规则点云转化为体素表示,通过 3D-CNNs 进行特征提取。基于体素的方法计算效率更高,但在离散化过程中不可避免导致信息丢失,导致定位精度下降。

下面是点云体素化的两种方式与三种聚合操作。

Comparisons of hard voxelization and dynamic voxelizationIllustration of voxel-wise representations via three aggregation operators
在这里插入图片描述在这里插入图片描述
  • Point-based Methods:使用原始点云数据,又两种类型方法:PointNet(++)及其变体或图形神经网络(GNNs)。尽可能保留原始点云的几何图形。

下面是PointNet++种提出的密度自适应层最远点采样法

Farthest Points Sampling
在这里插入图片描述在这里插入图片描述
  • Point-voxel-based Methods:点云特征学习的一个新的趋势,将体素特征与点的特征相结合。基于体素的特征表示方法会受到体素参数影响(低分辨率会导致粗粒度的定位精度,而高分辨率会增加计算量)。基于点的方法可以很容易地保留点云的不规则性和局部性,可以选择集合抽象,提供细粒度的邻域信息。

下面是几种有代表性的3D物体检测算法:

在这里插入图片描述在这里插入图片描述

4.3 Multimodal Fusion-based Methods

现在,自动驾驶种的3D物体检测主要依赖激光雷达来提供周围环境信息。尽管激光雷达很精确,但是过度依赖单个传感器是不够明智的。此外,点云远距离分辨率低、纹理信息差也是一个很大的问题。所以自动驾驶中经常需要使用单目相机或双目相机进行多传感器融合,可以同时提供精细纹理和RGB属性。如下图所示,当涉及长距离时,在LiDAR中很难区分行人和路标。
在这里插入图片描述
下面是多模态融合的两种方式:前融合和后融合:

General scheme for early fusionGeneral scheme for early fusion
在这里插入图片描述在这里插入图片描述

此外,本文还提出了两种新的融合方式:序列融合和并行融合。

  • 基于序列融合:以顺序方式利用多阶段特征,其中当前特征提取依赖于前一阶段。
  • 基于并行融合:在特征空间中进行融合,得到一个多模态的表示,然后输入到有监督的学习中去

下图是多模态融合的的发展:
在这里插入图片描述


5. Benchmark Evaluation

5.1 Metrics

这里以KITTI数据集为例,介绍了物体检测中的评价指标。这里有一个重要概念需要了解:IoU,如下图所示,表示了真值边界框与预测边界框的重合度,公式如下:
J(Bp,Bgt)=IoU3D=rotated 3Darea⁡(Bp∩Bgt)rotated 3Darea⁡(Bp∪Bgt)J\left(\mathcal{B}_{p}, \mathcal{B}_{g t}\right)=\mathrm{IoU}_{3 \mathrm{D}}=\frac{\text { rotated } 3 \mathrm{D} \operatorname{area}\left(\mathcal{B}_{p} \cap \mathcal{B}_{g t}\right)}{\text { rotated } 3 \mathrm{D} \operatorname{area}\left(\mathcal{B}_{p} \cup \mathcal{B}_{g t}\right)}J(Bp,Bgt)=IoU3D= rotated 3Darea(BpBgt) rotated 3Darea(BpBgt)
在这里插入图片描述
IoU超过一个阈值时,就判定检测结果为真阳性(TP);反之为假阳性(FP),同时未检测到的真值边界框则为假阴性(FN)。精准率PPP和召回率RRR定义如下:
P=TPTP+FP=TPall det ections R=TPTP+FN=TPall ground truths P=\frac{T P}{T P+F P}=\frac{T P}{\text { all det ections }} \\ R=\frac{T P}{T P+F N}=\frac{T P}{\text { all ground truths }}P=TP+FPTP= all det ections TPR=TP+FNTP= all ground truths TP

KITTI数据集中使用平均精准率(AP)来评价算法性能,计算公式如下:

AP=1N∑r∈SPinterpolate (r)\mathrm{AP}=\frac{1}{N} \sum_{r \in S} P_{\text {interpolate }}(r)AP=N1rSPinterpolate (r)
其中,Pinterpolate (r)=max⁡r~:r~≥rP(r~)P_{\text {interpolate }}(r)=\max _{\tilde{r}: \tilde{r} \geq r} P(\tilde{r})Pinterpolate (r)=maxr~:r~rP(r~),目前的KITTTI数据集使用的是40个召回率作为AP


5.2 Comprehensive Comparsion of the State-of-the-arts

下面是各种3D检测算法在KITTI数据集上的3D检测性能鸟瞰图检测性能比较。

3D object detection AP(%)BEV object detection AP (%)
在这里插入图片描述在这里插入图片描述

下面是各种3D检测算法在KITTI数据集上的3D检测鸟瞰图检测的PRC曲线图。

precision-recall curve on the 3D detection leaderboardprecision-recall curve on the BEV detection leaderboard
在这里插入图片描述在这里插入图片描述

下面是各种3D检测算法在速度和准确率上的对比,以及3D、2D、鸟瞰图检测性能的比较。

Performance vs Runtime(3D)Performance vs Runtime(BEV)2D, 3D and BEV object detection
在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.3 Emerging Datasets

本文还介绍了自动驾驶中常用的数据集,如下表所示。
在这里插入图片描述


5.4 Research Challenges and Opportunities

下面介绍了3D物体检测的未来研究方向:

  • 由于缺少深度信息,基于图像的方法与现有的基于LiDAR的方法还存在很大的差距。立体相机或单目相机比激光雷达便宜几个数量级,可获得重要的纹理信息。此外,在发生故障的情况下,有一个备用传感器可以避免过度依赖单个传感器的安全风险。因此,基于图像的方法仍然是一个很有前经的研究方向
  • 多模态融合理论上在获得更多信息时能产生更好的检测结果。然而,目前基于多模态融合的方法还远远落后于基于点云的方法。传感器同步和标定以避免随时间漂移对基于融合的方法也是一个巨大的挑战。如何将两者更好地结合在一起仍然是一个棘手的问题。
  • 使用图神经网络进行3D物体检测的研究目前还很少。
  • 基于点体素的方法(PV-RCNN,SA-SSD)是目前最有前景的研究方向之一,但仍有许多工作要做。
  • 伪激光雷达确实为处理图像数据提供了启示。另外,激光雷达与伪激光雷达融合也是一个值得努力的新方向。

6. Appendix

附录里作者额外介绍了3D物体检测中常用的4种损失函数

  • Basic loss :已知真值框为 (xgt,ygt,zgt,wgt,lgt,hgt,θgt)\left(x^{g t}, y^{g t}, z^{g t}, w^{g t}, l^{g t}, h^{g t}, \theta^{g t}\right)(xgt,ygt,zgt,wgt,lgt,hgt,θgt),其anchor 框为 (xa,ya,za,wa,la,ha,θa)\left(x^{a}, y^{a}, z^{a}, w^{a}, l^{a}, h^{a}, \theta^{a}\right)(xa,ya,za,wa,la,ha,θa),则两者定位回归残差为:

Δx=xgt−xada,Δy=ygt−yada,Δz=zgt−zaha,Δw=log⁡wgtwa,Δl=log⁡lgtla,Δh=log⁡hgthaΔθ=sin⁡(θgt−θa),da=(wa)2+(la)2\Delta x=\frac{x^{g t}-x^{a}}{d^{a}} ,\Delta y=\frac{y^{g t}-y^{a}}{d^{a}}, \Delta z=\frac{z^{g t}-z^{a}}{h^{a}}, \Delta w=\log \frac{w^{g t}}{w^{a}}, \Delta l=\log \frac{l^{g t}}{l^{a}}, \Delta h=\log \frac{h^{g t}}{h^{a}} \\\Delta \theta=\sin \left(\theta^{g t}-\theta^{a}\right), d^{a}=\sqrt{\left(w^{a}\right)^{2}+\left(l^{a}\right)^{2}}Δx=daxgtxa,Δy=daygtya,Δz=hazgtza,Δw=logwawgt,Δl=loglalgt,Δh=loghahgtΔθ=sin(θgtθa),da=(wa)2+(la)2

整个回归损失为:

Lloc=∑b∈(x,y,z,w,l,h,θ)SmoothL1 (Δb)\mathcal{L}_{l o c}=\sum_{b \in(x, y, z, w, l, h, \theta)} \quad \text { SmoothL1 }(\Delta \mathrm{b})Lloc=b(x,y,z,w,l,h,θ) SmoothL1 (Δb)

分类损失为focal loss
Lfocal (pt)=−αt(1−pt)γlog⁡(pt)\mathcal{L}_{\text {focal }}\left(p_{t}\right)=-\alpha_{t}\left(1-p_{t}\right)^{\gamma} \log \left(p_{t}\right)Lfocal (pt)=αt(1pt)γlog(pt)


  • IoU loss:这里提出了一个使用IoU该作为置信度,公式为:

q={1if iou >0.750if  iou <0.252iou −0.5otherwise q=\left\{\begin{array}{ll} 1 & \text { if iou }>0.75 \\ 0 & \text { if } \text { iou }<0.25 \\ 2 \text { iou }-0.5 & \text { otherwise } \end{array}\right.q=102 iou 0.5 if iou >0.75 if  iou <0.25 otherwise 

则损失函数为:Liou=−[qlog⁡(p)+(1−q)log⁡(1−p)]\mathcal{L}_{i o u}=-[q \log (p)+(1-q) \log (1-p)]Liou=[qlog(p)+(1q)log(1p)]

因此最终的损失函数为:L=1Npos (βloc Lloc +βiou Liou )\mathcal{L}=\frac{1}{N_{\text {pos }}}\left(\beta_{\text {loc }} \mathcal{L}_{\text {loc }}+\beta_{\text {iou }} \mathcal{L}_{\text {iou }}\right)L=Npos 1(βloc Lloc +βiou Liou )


  • Corner loss:这是最小化预测的八个顶点和真值框八个顶点间的差距,公式为:Lcorner =∑k=18∥Pk−Gk∥\mathcal{L}_{\text {corner }}=\sum_{k=1}^{8}\left\|P_{k}-G_{k}\right\|Lcorner =k=18PkGk

  • Bin-based loss:如图所示,将原始的回归问题转换为区间分类和更小的残差回归,能够提高模型的收敛速度。
    在这里插入图片描述

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

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

相关文章

Java中接口的多继承

我们知道Java的类只能继承一个类&#xff0c;但可以实现多个接口。但是你知道么&#xff1f;Java中的接口却可以继承多个接口。本文就来说一说Java中接口的多继承。 进入主题之前&#xff0c;先扩展一下。Java为什么只支持单继承呢&#xff1f; 我们不妨假设Java支持多继承&a…

详解基于IMU/GPS的行人定位: IMU/GPS Based Pedestrian Localization

本文介绍一篇使用 IMU/GPS 数据融合的行人定位论文&#xff0c;这里重点是理解本文提出的 Stop Detection 和 GPS Correction。 论文地址为&#xff1a;https://www.researchgate.net/publication/261452498_IMUGPS_based_pedestrian_localization 1. Introduction 低成本的 …

每次maven刷新jdk都要重新设置

pom.xml <java.version>17</java.version> 改为<java.version>1.8</java.version>

【CodeForces - 706D】Vasiliy's Multiset(01字典树)

题干&#xff1a; Author has gone out of the stories about Vasiliy, so here is just a formal task description. You are given q queries and a multiset A, initially containing only integer 0. There are three types of queries: " x" — add integer …

详解自动驾驶仿真框架OpenCDA: An Open Cooperative Driving Automation Framework Integrated with Co-Simulation

本文介绍一款同时支持协同驾驶开发与测试、自动驾驶全栈开发 和 CARLA-SUMO联合仿真的开源框架 OpenCDA&#xff0c;论文已收录于 ITSC 2021。主要feature有&#xff1a; 支持CARLA-SUMO联合仿真&#xff0c;CARLA端主管环境渲染、传感器模拟、车辆动力&#xff0c;Sumo端主管…

JavaMonitor 监视器

为什么wait(), notify()和notifyAll()必须在同步方法或者同步块中被调用&#xff1f; 当一个线程需要调用对象的wait()方法的时候&#xff0c;这个线程必须拥有该对象的锁&#xff0c;接着它就会释放这个对象锁并进入等待状态直到其他线程调用这个对象上的notify()方法。同样的…

KITTI自动驾驶数据集可视化教程

本文介绍关于自动驾驶数据集KITTI的基本操作&#xff0c;包括Camera和LiDAR可视化教程&#xff0c;源码已上传&#xff1a;https://download.csdn.net/download/cg129054036/20907604 1. 数据准备 将 KITTI 数据 (calib, image_2, label_2, velodyne) 添加到 dataset/KITTI/ob…

重读经典《Quaternion kinematics for the error-state Kalman filter》

本文将介绍一篇关于 四元数运动学的误差卡尔曼滤波 经典论文。本文结构如下&#xff1a; 第1章四元数定义和性质介绍&#xff0c;包括&#xff1a;加法、减法、乘法&#xff08;矩阵表示&#xff09;、模、幂数、指数运算等。第2章旋转群定义和性质介绍&#xff0c;包括&#…

【CodeForces - 789C】Functions again(最大子段和变形,dp,思维)

题干&#xff1a; Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandian superheroes Shean the Sheep and Stas the Giraffe were called in order to save the situation. Upon the arriving, they found that citizens are wo…

一步步编写操作系统 55 CPL和DPL入门2

接上节。 图中第132行的jmp指令&#xff0c;段选择子为SELECTOR_CODE&#xff0c;其RPL的值为RPL0&#xff0c;RPL0定义在include/boot.inc中&#xff0c;其值为0。选择子的索引部分值为1&#xff0c;表示对应GDT中第1个段描述符&#xff0c;该描述符的DPL为0&#xff0c;&…

详解停车位检测算法 Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark

本文介绍一篇基于深度学习的停车位检测论文&#xff1a;DeepPS&#xff0c;作者同时公开了数据集ps2.0&#xff0c;工作很扎实&#xff0c;对于入门停车位检测很有帮助&#xff0c;论文发表在 IEEE T-IP 2018。 项目链接为&#xff1a;https://cslinzhang.github.io/deepps/ 0…

Monitor(管程)是什么意思?Java中Monitor(管程)的介绍

本篇文章给大家带来的内容是关于Monitor&#xff08;管程&#xff09;是什么意思&#xff1f;Java中Monitor&#xff08;管程&#xff09;的介绍&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。 monitor的概念 管程&#x…

详解经典GPS辅助惯性导航论文 A GPS-aided Inertial Navigation System in Direct Configuration

本文介绍一篇 IMU 和 GPS 融合的惯性导航论文&#xff0c;重点是理解本文提出的&#xff1a;Dynamical constraints update、Roll and pitch updates 和 Position and heading updates。 论文链接为&#xff1a;https://www.sciencedirect.com/science/article/pii/S166564231…

详解停车位检测论文:Attentional Graph Neural Network for Parking-slot Detection

本文介绍一篇注意力图神经网络用于停车位检测论文&#xff0c;论文已收录于 RA-L2021。在之前的基于卷积神经网络的停车位检测方法中&#xff0c;很少考虑停车位标记点之间的关联信息&#xff0c;从而导致需要复杂的后处理。在本文中&#xff0c;作者将环视图中的标记点看作图结…

详解3D物体检测模型 SPG: Unsupervised Domain Adaptation for 3D Object Detection via Semantic Point Generation

本文对基于激光雷达的无监督域自适应3D物体检测进行了研究&#xff0c;论文已收录于 ICCV2021。 在Waymo Domain Adaptation dataset上&#xff0c;作者发现点云质量的下降是3D物件检测器性能下降的主要原因。因此论文提出了Semantic Point Generation (SPG)方法&#xff0c;首…

Waymo研发经理:《自动驾驶感知前沿技术介绍》

Waymo研发经理|自动驾驶感知前沿技术介绍这是Waymo研发经理&#xff08;VoxelNet作者&#xff09;的一个最新分享报告&#xff1a;《自动驾驶感知前沿技术介绍》。在这份报告里&#xff0c;介绍了Waymo在自动驾驶感知中五个研究方向的最新成果。 1. Overview of the autonomous…

几种常见软件过程模型的比较

瀑布模型 瀑布模型&#xff08;经典生命周期&#xff09;提出了软件开发的系统化的、顺序的方法。其流 程从用户需求规格说明开始&#xff0c;通过策划、建模、构建和部署的过程&#xff0c;最终提供一 个完整的软件并提供持续的技术支持。 优点&#xff1a; 1. 强调开发的…

两篇基于语义地图的视觉定位方案:AVP-SLAM和RoadMap

本文介绍两篇使用语义地图进行视觉定位的论文&#xff0c;两篇论文工程性很强&#xff0c;值得一学。 AVP-SLAM是一篇关于自动泊车的视觉定位方案&#xff0c;收录于 IROS 2020。论文链接为&#xff1a;https://arxiv.org/abs/2007.01813&#xff0c;视频链接为&#xff1a;ht…

【51Nod - 1270】数组的最大代价(dp,思维)

题干&#xff1a; 数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai&#xff0c;都满足1 < Ai < Bi。数组A的代价定义如下&#xff1a; &#xff08;公式表示所有两个相邻元素的差的绝对值之和&#xff09; 给出数组B&…

一步步编写操作系统 56 门、调用门与RPL序 1

小弟多次想把调用门和RPL分开单独说&#xff0c;但几次尝试都没有成功&#xff0c;我发现它们之间是紧偶合、密不可分&#xff0c;RPL的产生主要是为解决系统调用时的“越权”问题&#xff0c;系统调用的实现方式中&#xff0c;以调用门和中断门最为适合。由于以后我们将用中断…