[论文阅读]CT3D——逐通道transformer改进3D目标检测

CT3D

论文网址:CT3D
论文代码:CT3D
CT3D

简读论文

本篇论文提出了一个新的两阶段3D目标检测框架CT3D,主要的创新点和方法总结如下:

  1. 创新点:

(1) 提出了一种通道注意力解码模块,可以进行全局和局部通道聚合,生成更有效的解码权重。

(2) 提出了建议到点嵌入模块,可以有效地将建议信息编码到每个原始点中。

(3) 整个框架端到端,可以非常方便的和任何高质量的建议生成网络结合,实现强大的建议优化。

  1. 方法:

(1) 利用SECOND作为默认的建议生成网络,由于其生成的建议质量很高。

(2) 对每个建议,采样256个原始点,计算这些点与建议框8个角点的相对坐标作为点特征。

(3) 通过多头自注意力层refine点特征,捕捉点之间的全局上下文信息。

(4) 提出通道注意力解码模块,先重复查询和键的矩阵乘法,然后点积重加权到键上,生成解码权重。既保留了全局信息,也强调了通道级别的局部信息。

(5) 最终解码后的全局特征,馈入两个全连接层分别预测 confidence 和 box regression。

(6) 使用IoU误差、分类误差和回归损失进行端到端训练。

本方法在KITTI和Waymo数据集上验证了其有效性,明显超过之前的状态矩阵方法。

摘要

尽管基于点云的3D目标检测近年来取得了快速发展,但缺乏灵活和高性能的提案细化仍然是现有最先进的两阶段检测器的一大障碍。之前关于完善3D提案的工作依赖于人工设计的组件,例如关键点采样、集合抽象和多尺度特征融合来生成强大的3D目标表示。然而,这样的方法捕获点之间丰富的上下文依赖关系的能力有限。本文利用高质量的区域提议网络和一个Transformer架构,构成两阶段的3D目标检测架构(CT3D)。CT3D同时执行提案感知嵌入和聚合每个提议通道上下文点的功能。具体来说,CT3D使用使用提案的关键点进行空间上下文建模,并在编码模块中学习注意力传播,将提案映射到点嵌入。接下来,一个新的通道解码模块通过通道重新加权来丰富查询键交互,以有效的合并多级上下文,这有助于更准确的对象预测。大量实验表明,CT3D方法具有良好的性能和可扩展性。CT3D在KITTI测试3D检测基准中的中型车类别中达到了81.77%的ap,优于最先进的3D检测器。

引言

从点云数据中检测三维物体被认为是未来自动驾驶汽车(AV)不可或缺的一部分。与已经成熟运用的二维检测算法不用,其成功主要是由于图像像素的规则结构,LiDAR点云通常是稀疏的,无序的和不均匀分布的。这使得类似CNN的操作不太适合直接处理非结构化的点云数据。为了应对这些挑战,许多方法采用点云体素化或自定义离散化。几种方法[Multi-view convolutional neural networks for 3d shape recognition-2015,Vehicle detection from 3d lidar using fully convolutional network-2016]将点云投影到鸟瞰图(BEV)表示并应用标准的2D卷积。但是,它将不可避免的牺牲某些几何细节,这些细节对于生成准确的定位至关重要。其他方法[Multi-view 3d object detection network for autonomous driving-2017,Second-2018]将点云绘制成3D体素网格并使用常规3D CNN在网格空间中执行计算,但这类方法存在与网格更精细相关的计算瓶颈。点云检测任务的重大突破是由于点云表示的有效深度架构,例如volumetric convolution[Second] 和 permutation invariant convolution[Pointnet]。
最近,大多数用于3D目标检测的最先进的方法采用由3D区域提议生成和提议特征细化组成的两阶段框架。请注意,最流行的区域提议网络(RPN)骨干在KITTI 3D检测基准上实现了超过95%的召回率,而这种方法仅实现了78%的平均精度(AP)。造成这种差距的原因是,在遮挡或长距离的情况下,难以对目标进行编码并从3D提案中提取鲁棒特征。因此,如何在提议的特征细化阶段,有效的建模点之间的几何关系,并利用准确的位置信息对实现良好性能是至关重要的。一个重要的模型家族是PointNet及其变体,他们使用灵活的感受野通过局部区域和置换不变网络来聚合特征。然而,这些方法涉及大量的手工设计,例如,相邻球半径和网格大小。另一类模型是基于体素的方法,它使用3D卷积收集来自相邻体素的信息。但由于体素量化和对超参数的敏感性,这些方法的性能并不是最优的。后来的研究进一步应用point-voxel混合策略来捕获多尺度特征,同时保留细粒度定位,但与特定的RPN架构密切相关。
本文做了两个主要贡献。首先,提出了一个新的端到端的两阶段的3D目标检测框架,称为CT3D。受最近基于Transformer的2D检测方法DETR的启发,该方法使用CNN主干提取特征,并使用encoder-decoder Transformer增强ROI区域特征,本文设计了CT3D,以在第一阶段生成3D边界框,然后通过在解码器中结合新颖的Transformer架构和通道重新加权机制来学习每个提案表示。所提出的框架在准确性和效率方面表现出非常强的性能,因为可以方便地与任何高质量的RPN骨干相结合。
第二个贡献是自定义Transformer,它比传统的而基于point/voxel的特征聚合机制提供了几个好处,尽管逐点卷积或体素卷积具有局部和全局上下文建模的能力,但在增强感受野或参数优化等方面仍存在一些限制。此外,基于点云的3D目标检测器还必须处理具有挑战性的丢失/噪声检测,如遮挡和与几个点的距离模式。最近,Transformer中的自注意力已经成为捕获远程交互的基本构件,因此在获取背景信息以丰富远处物体或增加假阴性的置信度方面是一个自然而然地选择。在这一思想地启发下,本文初步提出了一种提案到点地嵌入方法,以便在编码器模块中对RPN提案信息进行有效编码。此外,考虑到编码点的全局和局部通道特性,本文采用了通道重新加权的方法来增强标准Tranformer解码器。其目的是扩大特征解码空间,在这里可以计算关键字嵌入的每个通道维度上的注意力分布,从而增强查询关键字交互的表现力。

相关工作

基于点云表示的三维目标检测 : 最近,在学习原始LiDAR点云的有效表示方面取得了很大进展。一个值得注意的部分是PointNet系列,它采用排列不变操作来聚合点特征。F-PointNet为每个3D平截头体内的点云生成区域级特征。PointRCNN使用PointNet++来分割前景3D点,并使用分割功能完善提议。STD通过将稀疏点特征转换为密集体素表示,进一步扩展了提议的细化。此外,3DSSD通过基于特征距离的新采样策略改进了基于点的方法。然而,类似PointNet的架构仍然存在有限的能力来捕获LiDAR数据的局部结构。另一类方法旨在将非结构化点云体素化为常规的2D/3D网格,在该网格上可以很容易的应用传统的CNN。先驱的工作将点云编码为2D鸟瞰图特征图,以生成高度准确的3D候选框,激发了许多基于鸟瞰图表示的有效方法。VoxelNet将这些点转换为一个紧凑的特征表示。Second引入了3D稀疏卷积,用于高效的3D体素处理。这些基于体素的方法仍然集中在细分的体素,而不是自适应建模的局部几何结构。此外,已经提出了各种基于点-体素的方法用于多尺度特征聚合。SA-SSD提出了一种基于3D体素CNN的辅助网络。PV-RCNN及其变体VoelRCNN采用3D体素CNN作为RPN来生成高质量的提议,然后利用PointNet来聚合网格周围的体素特征。然而,这些混合方法需要大量手工制作的功能设计。
基于Transformer的目标检测 : 由于Transformer在计算机视觉领域的许多成功,最近发展了一种新的物体检测范例。由于Transformer模型在学习局部上下文感知表示方面非常有效,DETR将检测视为集合预测问题,并采用具有并行解码的Transformer来检测2D图像中的目标。DETR的一个变体进一步开发了一个可变性的注意力模块,以采用跨尺度聚合。对于点云,最近的方法[Pct-2020,Point transformer-2020]也探索了使用self-attention进行分类和分割任务。

CT3D for 3D Object Detection

鉴于广泛使用的 RPN 主干(如 3D 体素 CNN [33])生成的提案,当前最先进的提案细化方法专注于细化由卷积层提取的中间多阶段体素特征,遇到困难包括额外的超参数优化和设计通用模型。本文相信具有精确位置信息的原始点足以完善检测建议。考虑到这一观点,本文通过在 RPN 网络之上部署精心设计的 Transformer 来直接利用原始点云来构建 CT3D 框架。具体来说,整个 CT3D 检测框架由三部分组成,即用于生成提案的 RPN 主干、用于提案特征细化的通道级 Transformer 和用于对象预测的检测头。
CT3D

RPN for 3D Proposal Generation

从具有 3 维坐标和 C 维点特征的点云 P 开始,RPN 生成的预测 3D 边界框由中心坐标 pc = [xc, yc, zc]、长度 lc、宽度 wc、高度 hc 和方向θc。本文采用 3D 体素 CNN SECOND 作为默认 RPN,因为它具有高效率和准确性。请注意,任何高质量的 RPN 都应该可以在本文的框架中轻松替换,并且可以通过端到端方式进行训练。

Proposal-to-point Encoding Module

为了完善生成的 RPN 提案,采用了两步策略。具体来说,第一个提议到点嵌入步骤将提案映射到点特征,然后第二个自注意力编码步骤是通过对相应提案内点之间的相对关系进行建模来细化点特征。
Proposal-to-point Embedding. : 考虑到 RPN 生成的提案,根据提案在点云中划定了按比例缩放的 RoI 区域。其目的是通过尽可能多地包裹所有对象点来补偿提案与相应的地面实况框之间的偏差。具体来说,缩放后的 RoI 区域是一个高度无限、半径为 的圆柱体,其中 α 是超参数,l、w 表示区域的长度和宽度。分别提出建议。此后,取出缩放RoI内随机采样的N=256个点(N={p1,…,pN})以进行进一步处理。
首先,我们计算每个采样点与proposal中心点之间的相对坐标,以统一输入距离特征,表示为 Δpc i = pi − pc, ∀pi ∈ N。一个简单的想法是直接连接proposal将信息放入每个点特征中,即 [Δpc i , lc, wc, hc, θc, fr i ],其中 fr i 是原始点特征,例如反射。然而,提案的大小方向表示仅产生适度的性能,因为 Transformer 编码器根据上述几何信息重新定向的效果可能较差。
在这里插入图片描述
值得注意的是,关键点通常在检测任务中提供更明确的几何属性,我们提出了一种新颖的关键点减法策略来计算每个点与相应提案的八个角点之间的相对坐标。计算出的相对坐标为 Δpj i = pi − pj, j = 1,…, 8,其中 pj 是第 j 个角点的坐标。请注意,lc、wc、hc 和 θc 消失,但包含在距离信息的不同维度中。通过这种方式,新生成的相对坐标 Δpj i 可以被视为提案信息的更好表示。如上图左侧所示,对于每个点pi,proposalguided点特征可以表示为:
在这里插入图片描述
其中 A(·) 是线性投影层,用于将点特征映射到高维嵌入。
Self-attention Encoding. : 然后将嵌入的点特征输入多头自注意力层,然后是具有残差结构的前馈网络(FFN),以编码丰富的上下文关系和点依赖性,以细化点特征。如上图右半部分所示,这种自注意力编码方案与原始 NLP Transformer 编码器几乎具有相同的结构,除了位置嵌入,因为它已经包含在点特征中。表示 X = [fT 1 , . 。 。 , fT N]T ∈ RN×D 作为维度为 D 的嵌入点特征,有 Q = WqX; K=WkX; V = WvX,其中 Wq,Wk,Wv ∈ RN×N 是线性投影,Q、K 和 V 是所谓的查询、键和值嵌入。然后通过多头自注意力机制处理这三个嵌入。在 H-head 注意力情况下,Q,K 和 V 进一步分为 Q = [Q1, . 。 。 ,QH],K = [K1,. 。 。 ,KH],且 V = [V1,. 。 。 ,VH],其中 Qh,Kh,Vh ∈ RN×D′ , ∀h = 1, . , H 和 D′ = D/H 。多头自注意力后的输出由下式给出:
在这里插入图片描述
其中 σ(·) 是 softmax 函数。下面,应用简单的 FFN 和残差算子,结果如下:
在这里插入图片描述
其中 Z(·) 表示加法和归一化算子,F(·) 表示具有两个线性层和一个 Relu 激活的 FFN。本文观察到,由 3 个相同的自注意力编码模块组成的堆栈非常适合本文的 CT3D 框架。

Channel-wise Decoding Module

在本小节中,设法将编码器模块中的所有点特征(即 ^X)解码为全局表示,并由 FFN 进一步处理以进行最终检测预测。与标准 Transformer 解码器不同,标准 Transformer 解码器使用自编码器-解码器注意机制转换 M 个多个查询嵌入,本文的解码器仅根据以下两个事实操作一个查询嵌入:

  • M 查询嵌入会遭受较高的内存延迟,尤其是在处理大量提案时。
  • M 个查询嵌入通常独立地转换为 M 个单词或对象,而本文的提案细化模型只需要一次预测。
    一般来说,解码器之后的最终建议表示可以被视为所有点特征的加权和,本文的关键动机是确定专用于每个点的解码权重。下面,首先分析标准解码方案,然后开发改进的解码方案以获得更有效的解码权重。
    在这里插入图片描述
    Standard Decoding. : 标准解码方案利用 D 维的可学习向量(即查询嵌入)来聚合所有通道的点特征。如图3(a)所示,每个注意力头中所有点特征的最终解码权重向量为:
    在这里插入图片描述
    其中 Kˆ h 是通过编码器输出的投影计算出的第 h 个头的关键嵌入,qˆ h 是相应的查询嵌入。请注意,向量 qˆ h ˆKT h 的每个值都可以视为各个点(即每个密钥嵌入)的全局聚合,后续的 softmax 函数根据归一化向量中的概率为每个点分配解码值。因此,解码权重向量中的值是从简单的全局聚合导出的,缺乏局部通道建模,这对于学习点云的 3D 表面结构至关重要,因为不同的通道通常在点云中表现出很强的几何关系。
    Channel-wise Re-weighting. : 为了强调关键嵌入 K^ T h 的通道信息,一个简单的解决方案是基于 K^T h 的所有通道计算点的解码权重向量。也就是说,为每个通道生成D个不同的解码权重向量,以获得D个解码值。此外,对这些D个解码值引入线性投影以形成统一的通道方式解码向量。如图 3(b) 所示,用于解码权重向量的新通道方式重新加权可以总结为:
    在这里插入图片描述
    其中 s 是将 D′ 个解码值压缩为重新加权标量的线性投影,^σ(·) 沿 N 维度计算 softmax。然而,由 ^σ(·) 计算的解码权重与每个通道相关联,因此忽略了每个点的全局聚合。因此,我们可以得出结论,标准解码方案侧重于全局聚合,而通道方式重加权方案则集中于通道方式局部聚合。为了结合它们的特点,我们提出了一种扩展的通道方式重加权方案,如下所示。
    Extended Channel-wise Re-weighting. : 具体来说,首先重复查询嵌入和键嵌入的矩阵乘积,将空间信息传播到每个通道中,然后将输出按元素与键嵌入相乘以保持通道差异。如图 3 © 所示,这种新颖的扩展通道方式重加权方案为所有点生成以下解码权重向量:
    在这里插入图片描述
    其中 ρ(·) 是重复算子,使得 R1×N → RD′×N。这样,与通道方式重加权方案相比,我们不仅可以保持全局信息,而且与标准解码方案相比,可以丰富局部和详细的通道交互。此外,与其他两种方案相比,这种扩展的通道方式重新加权仅带来 1K+(字节)的增加。结果,最终解码的提案表示可以描述如下:
    在这里插入图片描述
    其中值嵌入 ^V 是从 ^X 获得的线性投影。

Detect head and Training Targets

在前面的步骤中,输入点特征被汇总为 D 维向量 y,然后将其输入到两个 FFN 中,分别用于预测相对于输入 3D 提案的置信度和框残差。
为了输出置信度,训练目标被设置为 3D 提案与其相应的地面实况框之间的 3D IoU。给定3D提案的IoU及其对应的ground-truth框,分配置信度预测目标,如下所示:
在这里插入图片描述
其中αF和αB分别是前景和背景IoU阈值。此外,回归目标(上标 t)由提案及其相应的地面实况框(上标 g)编码,由下式给出:
在这里插入图片描述
其中在这里插入图片描述是提案框底边的对角线。

Training Losses

本文采用端到端策略来训练 CT3D。因此,总体训练损失是 RPN 损失、置信度预测损失和框回归损失的总和,如下所示:
在这里插入图片描述
这里,利用二元交叉熵损失作为预测置信度 c 来计算 IoU 引导的置信度损失:
在这里插入图片描述
此外,框回归损失采用:
在这里插入图片描述
其中 I(IoU ≥ αR) 表示只有 IoU ≥ αR 的提案才会对回归损失产生影响。

结论

本文提出了一个两级 3D 对象检测框架 CT3D,具有新颖的通道 Transformer 架构。本文的方法首先通过有效的提案到点嵌入将提案信息编码到每个原始点中,然后通过自注意力来捕获点之间的远程交互。随后,通过扩展的通道重加权方案将编码点特征转换为全局提案感知表示,该方案可以获得所有点的有效解码权重。 CT3D提供了一个灵活且高效的框架,对于点云检测任务特别有帮助。 KITTI 数据集和大规模 Waymo 数据集上的实验结果也验证了 CT3D 可以比最先进的方法取得显着改进。

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

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

相关文章

235. 二叉搜索树的最近公共祖先

235. 二叉搜索树的最近公共祖先 原题链接:完成情况:解题思路:_235二叉搜索树的最近公共祖先_递归_235二叉搜索树的最近公共祖先_简洁递归 参考代码:错误经验吸取 原题链接: 235. 二叉搜索树的最近公共祖先 https://…

zookeeper集群+kafka集群

Kafka3.0之前依赖于zookeeper Zookeeper开源,分布式的架构,提供协调服务(apache项目) 基于观察者模式设计的分布式服务管理架构 存储和管理数据,分布式节点上的服务接受观察者的注册,一旦分布式节点上的…

在Linux本地部署开源自托管导航页配置服务Dashy并远程访问

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航…

Spring 日志

日志的作用: 1.定位和发现问题 2.系统监控 3.数据采集 观察日志 先写一段打印日志的代码 日志内容 日志级别分类 默认日志级别是Info,级别一下的就不打印了 Spring 帮我们集成了日志框架,我们直接使用即可 我们测试一下用日志框架打印日志是如何 我们就会发现打印的结果跟…

《HelloGitHub》第 92 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …

enote笔记法之附录1——“语法词”(即“关联词”)(ver0.24)

enote笔记法之附录1——“语法词”(即“关联词”)(ver0.24) 最上面的是截屏的完整版,分割线下面的是纯文字版本: 作者姓名(本人的真实姓名):胡佳吉 居住地&#xff1…

定向网络攻击主要风险检查表

一、互联网入口攻击 二、内部网络横向攻击 三、集权类系统风险和要求 软件开发全资料获取:点我获取 定向网络攻击主要风险检查表分类测评项风险描述检查项检查结果整改建议互联网入口攻击应用网站安全漏洞应用系统和网站存在高风险安全漏洞,可能直接被…

推荐一款好用的BMP转PNG工具BMP2PNG

推荐一款好用的BMP转PNG工具BMP2PNG 自己写的一个BMP转PNG工具BMP2PNG 写这个工具是因为要使用传奇的部分素材在COCOS2DX使用, 但是COCOS2DX不支持BMP 如果直接将BMP转换到PNG的话,网上找到的工具都不支持透明色转换。难道要用PS一个一个抠图吗&#xf…

k8s-daemonset、job、cronjob控制器 6

Daemonset控制器(一个节点部署一个) 、 创建Daemonset控制器 控制节点上不能进行部署,有污点 解决方式: 扩容节点,token值过期的解决方法: 回收pod job控制器 需要使用perl镜像,仓库没有&…

OSCP系列靶场-Esay-1

总结 getwebshell : ftp可匿名登录 → 发现隐藏文件夹 → 发现ssh密钥 → 猜解ssh用户名 → ssh密钥登录 提 权 思 路 : 发现suid权限文件 → cpulimit提权 准备工作 启动VPN 获取攻击机IP → 192.168.45.191 启动靶机 获取目标机器IP → 192.168.179.130 信息收集-端口扫…

论文阅读——SEEM

arxiv: 分割模型向比较灵活的分割的趋势的转变:封闭到开放,通用到特定、one-shot到交互式。From closed-set to open-vocabulary segmentation,From generic to referring segmentation,From one-shot to interactive segmentati…

IDEA中springboot 提示 java: 找不到符号 符号: 变量 log

在以下位置加上该配置"-Djps.track.ap.dependenciesfalse" 然后重新启动项目,到此问题解决!!!

SpringCloud原理】OpenFeign之FeignClient动态代理生成原理

大家好,前面我已经剖析了OpenFeign的动态代理生成原理和Ribbon的运行原理,这篇文章来继续剖析SpringCloud组件原理,来看一看OpenFeign是如何基于Ribbon来实现负载均衡的,两组件是如何协同工作的。 一、Feign动态代理调用实现rpc流…

指纹芯片的工作原理及应用领域详解

指纹芯片是一种利用指纹识别技术的电子设备,可以通过扫描人体指纹的纹理特征,将其转化为数字化信息并进行存储和识别。指纹芯片广泛应用于各个领域,包括智能手机、银行和金融、门禁系统、身份验证等,因其高度准确、快速便捷的特点,得到了广大用户的青睐。 指纹芯片的原理是基于…

【MYSQL】表的基本查询

目录 前言 一、Create(增) 1.单行数据 全列插入 2.多行数据 指定列插入 3.插入否则更新 4.替换 二、Retrieve(查) 1.select列 1.1全列查询 1.2指定列查询 1.3查询字段为表达式 1.4为查询结果指定别名 1.5结果去重 …

2948. 交换得到字典序最小的数组 (分组排序)

Problem: 2948. 交换得到字典序最小的数组 文章目录 题目思路Code 题目 给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。 在一次操作中&#xff0c;你可以选择任意两个下标 i 和 j&#xff0c;如果 满足 |nums[i] - nums[j]| < limit &#xff0c;则交换…

[node] Node.js的Web 模块

[node] Node.js的Web 模块 什么是 Web 服务器&#xff1f;Web的应用架构http使用方式使用 Node 创建 Web 服务器使用 Node 创建 Web 客户端 什么是 Web 服务器&#xff1f; Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序&#xff0c;Web服务器…

算法通关村-----超大规模数据场景的问题

对20GB文件进行排序 问题描述 假设有一个20GB的文件&#xff0c;每行一个字符串&#xff0c;请说明如何对这个文件进行排序 问题分析 20GB的文件很难一次加载到内存中&#xff0c;可以采用分块策略&#xff0c;先使块内有序&#xff0c;在使块间有序。 实现思路 按照给定…

【重点文章】将Java程序打包成exe文件,无Java环境也可以运行(解决各种疑难杂症)

文章目录 一、将Java程序打成jar包二、将Jar打成exe三、加壳改造成安装包 编译器为IDEA 一、将Java程序打成jar包 2. 3. 你打的包一般会出现在根目录下面的out文件夹下面  当然你也可以用maven的package功能打包&#xff0c;效果是一样的   二、将Jar打成exe 使用工具e…

Opencv 极坐标变换

变换后图片 代码 // 以Center为极坐标原点&#xff0c;将RowFrom到RowTo的圆环&#xff0c;仅仅变换该范围内的点&#xff0c;忽略掉其他部分。 #include "polar_transeforme.hpp" #include <string>using namespace cv;void calculate_map(int rouFrom, int …