BEVFormerV2 论文阅读

论文链接

BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision

0. Abstract

  • 提出了一种新颖的 BEV 检测器,具有透视监督,收敛速度更快,更适合现代图像基础架构
  • 优先考虑通过引入透视视图监督来简化BEV检测器的优化
  • 提出了一个两阶段的BEV检测器,其中来自透视头的建议被送入鸟瞰视图头进行最终预测

1. Intro

  • 典型的BEV模型基于图像主干构建,随后通过视角转换模块将透视图像特征提取到BEV特征中,然后通过BEV特征编码器和一些特定任务的头部进一步处理
  • 在适应现代图像骨干网络时面临以下问题:
    • 自然图像与自动驾驶场景之间的领域差距。在通用的2D识别任务上预训练的骨干网络无法准确感知三维场景,尤其是估计深度。
    • 当前BEV检测器的复杂结构。以 BEVFormer 为例。三维边界框和物体类别标签的监督信号经过视图编码器和物体解码器分离于图像骨干网络,而每个编码器和解码器都由多层Transformer组成。将通用的2D图像骨干网络进行自动驾驶任务的适应时,渐变流动会受到堆叠Transformer层的干扰
  • 为了解决上述在将现代图像主干应用于BEV识别中的困难,将透视监督引入BEVFormer中,即从透视视图任务中获得额外的监督信号,并直接应用于主干
    • 在主干上构建了一个透视式3D检测头,它以图像特征作为输入,并直接预测目标物体的3D边界框和类别标签。这个透视头的损失,称为透视损失,作为辅助检测损失被添加到由BEV头产生的原始损失(BEV损失)中

本文贡献

  • 透视监督是将通用的2D图像主干适应到BEV模型的关键。通过透视视图中的检测损失明确添加这种监督
  • 提出了一种新颖的两阶段BEV检测器,BEVFormer v2。它由透视3D和BEV检测头组成,前者的建议与后者的对象查询相结合
  • 通过将本文的方法与最新开发的图像主干相结合,并在nuScenes数据集上取得了显著的改进,突显其有效性

2. Related Works

2.1 BEV 3D 目标检测器

  • 早期工作包括:OFT , Pseduo LiDAR , 和 VPN。它们揭示了如何将透视特征转化为BEV特征,但只针对单个相机或较少知名的任务
    • OFT 率先采用了从 2D 图像特征到单目 3D 物体检测的 3D BEV 特征的转换
    • Pseudo LiDAR 根据单目深度估计和相机内参创建了伪点云,并随后在 BEV 空间中进行处理
    • VPN 是第一个将多视角相机输入融合到一个自顶向下视图的特征图中进行语义分割的方法
  • 现代方法受益于整合来自2D-3D视图转换提供的不同视角传感器特征的便利
    • LSS 通过在 BEV 柱特征汇聚时引入潜在深度分布来扩展 OFT
    • PETR 设计了一种不需要显式构建 BEV 特征的方法。透视特征图逐元素与 3D 位置嵌入特征映射融合,并应用后续 DET 落式解码器进行目标检测
    • BEVFormer 利用空间交叉注意力进行视图转换,利用时间自注意力进行时间特征融合

2.2 相机三维目标检测中的辅助损失

  • 在单目3D目标检测中,辅助损失是普遍存在的,因为大多数方法都是基于2D检测器
    • Mono Con 利用多达5种不同的2D监督,充分利用了2D辅助
    • 对于BEV检测器,BEVDepth 利用Li - DAR点云对其中间深度网络进行监督
    • MV-FCOS3D + + 引入了透视监督来训练其图像主干,但检测器本身只受BEV损失的监督

2.3 两级3D目标检测器

  • 尽管两级检测器在基于LiDAR的三维目标检测中很常见,但它们在基于相机的三维检测中的应用却知之甚少
  • 在两个阶段中使用来自透视主干的相同特征并没有为第二阶段头部提供信息增益
  • 本文的两级检测器同时利用了视角和BEV视角的特征,因此可以同时获得图像和BEV空间的信息

3. BEVFormer V2

  • 采用现代2D图像骨架进行BEV识别,无需繁琐的深度预训练,可以为下游自动驾驶任务解锁许多可能性
  • 提出了BEVformer v2,一个两阶段的BEV检测器,它将BEV和透视监督结合在一起,以便在BEV检测中无扰地采用图像骨干

3.1 总体架构

Fig.1 BEVFormer v2 的整体架构。图像主干生成多视图图像的特征。透视 3D 头进行透视预测,然后将其编码为对象查询。BEV头为编码器-解码器结构。空间编码器通过聚合多视图图像特征来生成 BEV 特征,然后由时间编码器收集历史 BEV 特征。解码器将混合对象查询作为输入,并根据 BEV 特征进行最终的 BEV 预测。整个模型使用两个检测头 L p e r s L_{pers} Lpers L b e v L_{bev} Lbev 的两个损失项进行训练。

  • BEVFormer v2主要由五个部分组成:图像骨干、透视3D检测头、空间编码器、改进的时间编码器和BEV检测头

    • 与原来的 BEVFormer 相比,除空间编码器外的所有组件都进行了更改
    • BEVFormer v2 中使用的所有图像骨架都没有使用任何自动驾驶数据集或深度估计数据集进行预训练
    • 引入透视3D检测头,方便2D图像主干的适配,为BEV检测头生成目标建议
    • 采用一种新的时态BEV编码器,以更好地整合长期时态信息
    • BEV 检测头现在接受一组混合对象查询作为输入
  • 将第一阶段的提议和学习到的对象查询结合起来,形成第二阶段的新混合对象查询

3.2 透视监督

首先分析鸟瞰模型的问题,以解释为什么需要额外的监督

  • 典型的 BEV 模型维护附加到 BEV 平面的网格状特征,其中每个网格聚合来自多视图图像的相应 2D 像素处的特征的 3D 信息。它根据 BEV 特征预测目标对象的 3D 边界框,将这种对 BEV 特征施加的监督称为 BEV 监督

  • 3D 到 2D 视图转换和 DETR 头引入的 BEV 监督的两个根本问题

    Fig.2 透视监督(a)和BEV监督(B)的比较。透视检测器的监督信号密集且直接针对图像特征,而 BEV 检测器的监督信号稀疏且间接

    • 监督对于图像特征来说是隐式的。该损失直接应用于 BEV 特征,而在 3D 到 2D 投影和对图像特征的仔细采样之后,其作用变为间接
    • 监督对于图像特征来说是稀疏的。只有少数参与对象查询的 BEV 网格会造成损失。因此,只有这些网格的 2D 参考点周围的稀疏像素才能获得监控信号
  • 因此,在训练过程中会出现不一致的情况:BEV 检测头依赖于图像特征中包含的 3D 信息,但它为骨干网络如何编码这些信息提供的指导不足

与 BEV 头相比,透视 3D 头对图像特征进行逐像素预测,为适应 2D 图像主干提供更丰富的监督信号,将这种对图像特征施加的监督定义为透视监督

  • 与BEV监督不同,透视检测损失直接且密集地应用于图像特征

3.3 透视损失

透视监督是优化 BEV 模型的关键

  • 在 BEVformer v2 中,通过辅助透视损失引入透视监督

    • 在主干上构建透视3D检测头来检测透视图中的目标物体
    • 采用类似 FCOS3D 的检测头,它可以预测 3D 边界框的中心位置、大小、方向和投影中心度
    • 该头的检测损失,表示为透视损失 L p e r s \mathcal{L}_{pers} Lpers,作为BEV损失 L b e v \mathcal{L}_{bev} Lbev 的补充,促进骨干网的优化

    L t o t a l = λ b e v L b e v + λ p e r s L p e r s (1) \mathcal{L}_{total} = λ_{bev}\mathcal{L}_{bev} + λ_{pers}\mathcal{L}_{pers} \tag{1} Ltotal=λbevLbev+λpersLpers(1)

3.4 改进的时间编码器

  • BEVFormer 使用循环时间自注意力来合并历史 BEV 特征。但时间编码器无法利用长期时间信息,简单地将循环步骤从 4 增加到 16 不会产生额外的性能增益
  • 通过使用简单的扭曲和连接策略重新设计了 BEVFormer v2 的时间编码器
    • 给定不同帧 k 处的 BEV 特征 B k B_k Bk首先根据帧 t 和帧 k 之间的参考帧变换矩阵 T k t = [ R ∣ t ] ∈ S E 3 T^t_k = [\mathbf{R}|\mathbf{t}] ∈ SE3 Tkt=[Rt]SE3 B k B_k Bk 双线性扭曲到当前帧作为 B k t B^t_k Bkt
    • 然后,沿着通道维度将先前的 BEV 特征与当前的 BEV 特征连接起来,并使用残差块来降维
    • 为了保持与原始设计类似的计算复杂性,使用相同数量的历史 BEV 特征,但增加了采样间隔
    • 除了受益于长期时间信息之外,新的时间编码器还解锁了在离线 3D 检测设置中利用未来 BEV 功能的可能性

3.5 两级 BEV 检测器

设计了一种新颖的结构,将两个头集成到一个两级预测管道中,即两级 BEV 检测器

  • BEV 头部中的对象解码器是 DETR 解码器,使用一组学习的嵌入作为对象查询,通过训练了解目标对象可能位于的位置。然而,随机初始化的嵌入需要很长时间才能学习适当的位置
  • 在推理过程中,所有图像的学习对象查询都是固定的,这可能不够准确,因为对象的空间分布可能会有所不同

解决方法

  • 透视头的预测通过后处理进行过滤,然后融合到解码器的对象查询中,形成两阶段过程
  • 这些混合对象查询提供了高分(概率)的候选位置,使 BEV 头部更容易在第二阶段捕获目标对象
  • 应该注意的是,第一阶段的建议不一定来自透视检测器,例如来自另一个 BEV 检测器,但实验表明,只有透视的预测对第二阶段 BEV 头有帮助

3.6 具有混合对象查询的解码器

  • 为了将第一阶段提案融合到第二阶段的对象查询中,BEVformer v2 中 BEV 头的解码器基于 BEVFormer 中使用的 Deformable DETR 解码器进行了修改
  • 解码器由堆叠交替的自注意力层和交叉注意力层组成。交叉注意力层是一个可变形注意力模块[44],它将以下三个元素作为输入
    • 内容查询:查询特征产生采样偏移量和注意力权重
    • 参考点:值特征上的2D点作为每个查询的采样参考
    • 价值特征:需要关注的BEV特征

在原始的 BEVFormer 中,内容查询是一组学习的嵌入,并且参考点是使用线性层从一组学习的位置嵌入中预测的。在 BEVformer v2 中,从透视头获取建议,并通过后处理选择其中的一部分

Fig.3 BEVFromer v2 中 BEV 头的解码器。第一阶段建议的投影中心用作每个图像的参考点(紫色的),并将它们与每个数据集学习的内容查询和位置嵌入(蓝色的)结合起来作为混合对象查询

  • 所选提案的 BEV 平面上的投影框中心用作每个图像的参考点,并与位置嵌入生成的每个数据集的参考点相结合
  • 每个图像的参考点直接指示物体在 BEV 平面上的可能位置,使解码器更容易检测目标物体

4. Experiments

4.1 数据集与指标

  • 数据集:nuScenes
  • 指标:五个真阳性指标,即 ATE、ASE、AOE、AVE 和 AAE,用于测量平移、缩放、分别是方向、速度和属性误差。此外,它还通过将检测精度 (mAP) 与五个真阳性指标相结合来定义 nuScenes 检测分数 (NDS)

4.2 实验设置

  • 使用多种类型的主干网进行实验:ResNet、DLA、VoVNet 和 InternImage

  • 所有主干网均使用在 COCO 数据集的 2D 检测任务上预先训练的检查点进行初始化

  • 透视损失和 BEV 损失的损失权重设置为 λ b e v = λ p e r s = 1 λ_{bev} = λ_{pers} = 1 λbev=λpers=1。我们使用 AdamW 优化器,并将基础学习率设置为 4e-4

    Tab.1 BEVFormer v2 和其他 SoTA 方法的 nuScenes 测试集上的 3D 检测结果。† 表明 V2-99 [13] 使用额外数据 [27] 在深度估计任务上进行了预训练。 ‡ 表示使用 CBGS 的方法,该方法会将 1 epoch 延长为 4.5 epoch。我们选择仅训练 BEVFormer v2 24 个时期,以便与以前的方法进行公平比较

4.3 基准测试结果

  • 将提出的 BEVFormer v2 与现有最先进的 BEV 探测器进行比较,包括 BEVFormer 、PolarFormer、PETRv2、BEVDepth 和 BEVStereo
  • 由表1可以看出:
    • 具有 InternImage-B 主干的 BEVFormer v2 优于所有现有方法,这表明通过透视监督,不再需要在单目 3D 任务上预训练主干
    • 采用 InternImage-XL 的 BEVFormer v2 以 63.4% NDS 和 55.6% mAP 的成绩超越了 nuScenes 相机 3D 异议排行榜上的所有条目,以 2.4% NDS 和 3.1% mAP 超过第二名的方法 BEVStereo。示了释放现代图像骨干力量用于 BEV 识别的巨大好处

4.4 消融和分析

4.4.1 透视监督的有效性

为了确认透视监督的有效性,将 3D 检测器与表中不同视图监督组合进行了比较

Tab.2 nuScenes val 集上具有不同视图监督组合的 3D 检测器的检测结果。所有模型均在没有时间信息的情况下进行训练

  • 与 Perspective Only 检测器相比,BEV Only 检测器利用多视图图像实现了更好的 NDS 和 mAP,但其 mATE 和 mAOE 更高,表明了 BEV 监督的根本问题
  • 透视和 BEV 检测器实现了最佳性能,并且优于仅 BEV 检测器
  • 显着的改进主要来自以下两个方面
    • 在正常视觉任务上预训练的主干网无法捕获3D场景中对象的一些属性,包括深度、方向和速度,而透视监督引导的主干网能够提取信息关于此类属性
    • 与一组固定的对象查询相比,我们的混合对象查询包含第一阶段预测作为参考点,帮助 BEV 头部定位目标对象
4.4.2 透视监督的概括

所提出的透视监督预计将使不同架构和规模的骨干网受益

Tab.3 nuScenes val 集上不同 2D 图像主干的透视监督结果。 ‘BEV Only’和‘Perspective & BEV’与 Tab.2 相同. 所有骨干网均使用 COCO [20] 预训练权重进行初始化,并且所有模型均在没有时间信息的情况下进行训练

BEVForemr v2(BEV 和视角)将所有主干网的 NDS 提高了约 3%,mAP 提高了约 2%,这表明它可以推广到不同的架构和模型大小

4.4.3 训练选项

我们针对不同时期训练 BEV Only 模型和 BEVFormer v2(BEV 和 Perspective)

Tab.4 比较不同训练时期下仅使用 BEV 监督的模型以及同时使用 Perspective 和 BEV 监督的模型。这些模型在 nuScenes val 集上进行评估。所有模型都是在没有时间信息的情况下进行训练的

  • BEV & Perspective 模型比 BEV Only 模型收敛得更快,证实辅助透视损失有助于优化
  • 表明仅靠 BEV 监督无法很好地适应图像主干
4.4.4 检测头选项

BEVFormer v2 中可以使用各种类型的透视和 BEV 检测头

  • 对于透视头,候选者是 DD3D 和 DETR3D ;对于 BEV 头,候选者是 Deformable DETR 和 Group DETR

    Tab.5 BEVFormer v2 中透视头和 BEV 头不同选择的比较。这些模型在 nuScenes val 集上进行评估。所有模型都是在没有时间信息的情况下进行训练的

  • 对于透视头,DD3D 比 DETR3D 更好

  • Group DETR head 是 Deformable DETR head 的扩展,它利用分组对象查询和每个组内的自注意力。 Group DETR 为 BEV 头实现了更好的性能,但需要更多的计算量

4.4.5 附加功能的消融

消除了 BEVFormer v2 中使用的附加功能,以确认它们对最终结果的贡献

  • 图像级数据增强 (IDA),图像随机水平翻转
  • 较长的时间间隔
  • 双向时间编码器
  • 透视监督

Tab.6 在 nuScenes val 集上对 BEVFormer v2 的附加功能进行消融研究。所有模型均使用 ResNet-50 主干网络和时间信息进行训练。 “Pers”、“IDA”、“Long”和“Bi”分别表示透视监督、图像级数据增强、长时间间隔和双向时间编码器

5. 总结

  • 将通用 2D 图像主干网适应 BEV 检测器的优化问题。为了解决这个问题,我们通过从额外的视角 3D 检测头添加辅助损失,将视角监督引入到 BEV 模型中
  • 将两个检测头集成为两级检测器,即BEVFormer v2。成熟的透视头提供第一阶段的对象建议,这些建议被编码到 BEV 头的对象查询中以进行第二阶段的预测

局限性

  • 由于计算和时间限制,目前没有在更大规模的图像主干上测试本文的方法

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

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

相关文章

光磁记录实现数据冷存储

通过一定强度的短脉冲可以在掺杂了钴离子的钇铁石榴石的磁性层上记录数据。据开发商介绍,这种新颖的光学存储机制有可能成为一种通用的、节能型数据存储技术,并替代现有的存储技术,这源于该技术能够完成超低热度的快速磁盘读写过程&#xff0…

aop在项目中的实际运用_【消防验收】防火玻璃在实际运用中的四大关键问题

扫码入群,与消防企业同行交流!防火玻璃虽然开始在建筑中大量使用,但如何正确使用防火玻璃,使用哪种类型的防火玻璃,哪些部位可以使用防火玻璃等问题在实际运用中仍有很多盲区。同时,很多建设单位、设计单位…

CondenserDotNet - 使用 Kestrel 和 Consul 的 API 反向代理库!

简介CondenserDotNet - 使用 Kestrel 和 Consul 的 API 反向代理库!特点•Consul 客户端库,包括服务注册、发现和配置•反向代理•交互式 UI,用于查看有关代理的统计信息配置示例配置遵循 LIFO 策略,以最后注册的配置为准var conf…

pdf转tiff

概述 基于Java&#xff0c;将pdf转成单一的tiff文件。 MAVEN依赖 <groupId>com.sun.media</groupId><artifactId>jai_codec</artifactId><version>1.1-mr</version> </dependency> <dependency><groupId>javax.media<…

配置PHP启动Apache服务报错

为什么80%的码农都做不了架构师&#xff1f;>>> 在新的服务器&#xff08;centos 6.3&#xff09;编译安装完php-5.4.8&#xff0c;再配置好php.ini和httpd.conf后&#xff0c;启动apache-2.4.3的时候&#xff0c;命令执行/usr/local/apache2/bin/apachectl start时…

嵌入式WiFi芯片价格战已经打响 MCU企业该醒悟了

在物联网万物互联的驱动下&#xff0c;无可厚非&#xff0c;嵌入式WiFi芯片市场成为了“引爆点”&#xff0c;预计2016年的总出货量将达到1亿颗。面对如此巨大的“诱惑”&#xff0c;国内外WiFi芯片企业自然干劲十足&#xff0c;本想好好大干一场。万万没想到&#xff0c;WiFi芯…

linux系统下图像处理开发板,Linux系统入门教程:五大图像处理软件

发文章时&#xff0c;总免不了要用图片说话。经过长时间的磨合&#xff0c;在Linux桌面系统下有几款图片处理软件我已经用得比较顺手了。这几款软件在Linux世界使用广泛&#xff0c;各个Linux发行版的软件仓库中都有自带的安装包&#xff0c;而且这几款软件运行稳定、界面美观。…

BZOJ1001 狼抓兔子 终于过了!

时间来不及了&#xff0c;先贴代码吧&#xff01;有时间再写。 好苦逼啊&#xff0c;WA了若干次&#xff0c;还有一次RE&#xff0c;一次TLE。 虽然主要运用的算法和资料都由师兄提供了。还是太弱了&#xff0c;太天真了。 首先&#xff0c;数据范围就WA了&#xff0c;RE了&…

如何使用GeneralUpdte构建客户端自动升级功能

一、概要本篇文章将向各位小伙伴介绍GeneralUpdate组件的使用&#xff0c;帮助第一次接触开发者快速上手应用在自己或企业项目中。如果本篇文章对您有帮助&#xff0c;希望帮忙点一下star。感谢各位开发者的支持。帮助文档讲解视频&#xff1a;https://www.bilibili.com/video/…

30道四则运算题目---课堂作业--软件工程c++

问题&#xff1a;设计一程序&#xff0c;给二年级小学生随机产生四则运算题目。 一、设计思考问题&#xff1a; 1.四则运算需要俩个运算数和一个运算符。 2.如何产生随机数? 3.如何实现随机产生四则运算&#xff1f; 4.题目是否符合小学生学习范围&#xff1f;&#xff08;减法…

javascript 函数属性prototype(转)

在JavaScript中并没有类的概念&#xff0c;但javascript中的确可以实现重载&#xff0c;多态&#xff0c;继承。这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释。 1、prototype 在JavaScript中并没有类的概念&#xff0c;但JavaScript中的确可以实…

java离职交接文档_财务人员工作交接你知道么?没处理好不止将来风险大还可能违法...

今天给大家分享一下在工作中&#xff0c;财务人员应该怎么保护自己&#xff1f;1.虚假报销那些事儿在企业内部报销程序中&#xff0c;部分管理人员往往安排下属或助理经办报销程序&#xff0c;所有的费用申请、报销单据的填写均系下属完成&#xff0c;而一旦虚假报销案件浮出水…

SQL Server 数据库没有有效所有者的三种解决办法

问题描述: 开发的过程中,操作系统出了问题,决定重装系统。但是没有将SQL Server中的数据库文件分离出来,直接将系统格了。在新系统数据库中附加了数据库文件,一切还算正常,但当打开数据库关系图的时候出现了问题,如下图所示: 针对以上问题,网上有很多解决办法,但是由…

Javascript:原型模式类继承

原型模式每个函数&#xff08;准确说不是类、对象&#xff09;都有一个prototype属性&#xff0c;这个属性是一个指针&#xff0c;指向一个对象。使用原型对象的好处是可以让所有对象实例共享它包含的属性和方法。1.原型对象&#xff08;1&#xff09;当创建一个新函数&#xf…

C# 学习经验分享

NET 20 周年的学习挑战赛刚结束了第⼀阶段&#xff0c;不知道各位⼩伙伴参加了没有&#xff1f;有⼈问现在学习 C# 是不是有点过时&#xff1f;也有⼈问现在C# 能做什么&#xff1f;更有⼈问学习 C# 能否找到⼯作 &#xff1f;或者你从不同的专家&#xff0c;不同的从业者可以有…

有限服务器延时计算_机房设备功率统计,UPS不间断电源和蓄电池的计算选择

当然了&#xff0c;也可以不用这么麻烦&#xff0c;网上有UPS计算器的&#xff0c;输入条件直接求个结果就行了。弱电笔记&#xff5c;弱电&#xff08;安防&#xff09;计算器诺&#xff0c;就上面那个&#xff01;下面进入正文&#xff1a;一个计算机机房有4台PC机&#xff0…

linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘

云主机有两块硬盘&#xff0c;第一块硬盘盘一般为10G&#xff0c;用于安装系统&#xff0c;第二块磁盘根据云主机类型不同&#xff0c;大小也不相同。我们建议您在使用的时候第二块硬盘作为数据盘&#xff0c;存放你的网站数据&#xff0c;这样在您恢复系统的时候&#xff0c;数…

Visual Studio/SQL Server系统开发常见问题归纳

问题1.在利用C Sharp(操作系统为Windows7 64位)将Excel数据导入到SQL Server 2005中时,出现如下提示: 解决办法:VS菜单栏 生成→“配置管理器→平台→新建→x86。

Xamarin效果第十八篇之GIS中复合型Mark

在前面一篇文章中简单在GIS上添加了最基础的Mark,今天再次分享一下早几天摸索的复合型Mark;啥也不说了都在效果里:1、关于数据我就是直接抓的高德的(至于后面需要的参数那就自行抓):https://restapi.amap.com/v3/airquality/aqilist?2、至于Mark无非就是用了CompositeSymbol:C…

WPF定时刷新UI界面

代码&#xff1a; using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Wi…