Edge Assisted Real-time Object Detection for Mobile Augmented Reality

2023-10-24 09:10

本文主要是介绍Edge Assisted Real-time Object Detection for Mobile Augmented Reality,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Edge Assisted Real-time Object Detection for Mobile Augmented Reality

1 INTRODUCTION

我们提出了一种系统,该系统通过设备上的快速目标跟踪方法显著地减少了卸载检测延迟,并隐藏了剩余的延迟。为了减少卸载延迟,它采用了动态ROI编码技术和并行流和推理技术。

动态ROI编码技术基于在最后卸载的帧中检测到的感兴趣区域(ROI)来调整每个帧上的编码质量以减少传输等待时间。关键的创新之处在于从先前帧的候选区域中识别出具有潜在感兴趣对象的区域。它在可能检测到对象的区域提供更高质量的编码,并在其他区域使用更强的压缩来节省带宽,从而减少延迟。

并行流和推理方法流水线处理流和推理过程,以进一步减少卸载延迟。我们提出了一种新的依赖关系感知推理方法,使基于切片的推理能够在不需要影响检测结果的情况下对CNN对象检测模型进行推理。在AR设备上,系统将渲染流水线与卸载流水线解耦,而不是等待每一帧的边缘云检测结果。为了实现这一点,它使用基于从编码视频帧中提取的运动矢量和从边缘云中处理的先前帧中缓存的对象检测结果的快速且轻量级的对象跟踪方法,以在存在运动的情况下调整当前帧上的边界框或关键点。该方法利用卸载时延低的优点,能够提供准确的目标检测结果,并为增强现实设备提供足够的时间和计算资源来绘制高质量的虚拟覆盖图。

此外,我们还引入了一种自适应的卸载技术,通过与之前的卸载帧相比,根据该帧的变化来决定是否对边缘云进行卸载处理,从而降低了系统的带宽和功耗。

2 CHALLENGES AND ANALYSIS

3 SYSTEM ARCHITECTURE

为了隐藏卸载对象检测任务造成的延迟,我们的系统将渲染过程和CNN卸载过程解耦到两个单独的管道中。

本地渲染管道在等待目标检测结果的同时开始跟踪场景并渲染虚拟叠加,然后在目标检测结果到达时将检测结果合并到下一帧的跟踪中。

动态感兴趣区域编码(DRE)的关键思想是降低帧中非感兴趣区域的编码质量,并基于较早的对象检测结果来保持可能包含感兴趣对象的候选区域的高质量。

自适应卸载技术,通过对比先前卸载帧,看是否有重大改变。为了提高效率,这种技术重用了来自动态RoI编码的编码视频帧中嵌入的宏块类型(帧间预测块或帧内预测块),以识别保证卸载对象检测的显著变化。

4 DYNAMIC ROI ENCODING

我们设计了一种动态ROI编码机制,将目标检测CNNs中产生的内部ROI与图像编码器连接起来。具体来说,它使用最后一帧处理后生成的CNN候选ROI来确定下一帧的编码质量。

它通过一个宏块将每个感兴趣的区域稍微放大来适应一定程度的运动,但很大程度上受益于在短时间间隔内捕获的两个帧之间的相似性。

虽然人们可能希望仅通过在前一帧检测到对象的区域中选择RoI来节省更多的带宽,但是这种方法经常会错过出现在场景中的新对象,因为包含这些对象的图像区域最终会被严重压缩。

但是,在如此严重压缩的区域中进行的更改通常仍被认为是CNN候选RoI集合(区域提案网络的输出)的一部分。因此,我们使用来自区域提议网络的ROI,使用低的预测置信阈值(即0.02)进行过滤。

为了使用这些选定的RoI来调整当前帧的编码质量,我们计算了一个QP表,该表定义了帧上每个宏块的编码质量(QP)。

5 PARALLEL STREAMING AND INFERENCE

由于输入帧的相邻值在计算上的依赖性,简单地运行推理然后根据帧的切片进行合并会导致边界附近出现大量错误的特征值。我们设计了一种依赖感知推理技术,它只在有足够输入特征点的情况下计算每一层特征点的区域。依赖性是由卷积层(有时也包括池化层)引起的,其中每个帧切片边界周围的特征计算也需要相邻切片。

6 MOTION VECTORS BASED OBJECT TRACKING

在这一部分中,我们介绍了基于运动矢量的目标跟踪,它能够使用从编码的视频帧中提取的运动矢量和从最后卸载的帧中缓存的目标检测结果来估计当前帧的目标检测结果。

在我们的实验中,我们发现运动矢量的精度随着当前帧和参考帧之间的时间间隔的增加而降低。

我们在NVIDIA Jetson TX2上实现的系统只需要2.24ms就可以完成这一运动跟踪过程,这为AR设备在16.7ms的延迟要求内渲染高质量的虚拟覆盖留下了足够的时间和计算资源。

7 ADAPTIVE OFFLOADING

自适应卸载机制的设计基于两个原则:(1)只有在前一个卸载的帧已经被边缘云完全接收到的情况下,该帧才有资格被卸载;(2)如果一个帧从最后一个卸载的帧开始明显地返回,则认为该帧是卸载的。

在编码帧内的两种类型的宏块(预测间块和预测内块)之间,我们通过实验发现,预测内块通常指的是新出现的区域,因为这些宏块在编码过程中无法在参考帧中找到参考像素块。

1.帧间是否发生大动作(包括用户的动作和对象的动作)
2.帧内是否有相当数量的变化像素出现。
一帧的运动由所有运动向量的总和来量化,新像素的数量由编码帧内预测的宏块的数量来估计。

8 IMPLEMENTATION

客户端。我们使用NVIDIA Jetson TX2的Jetpack SDK实现了客户端功能。该实现遵循图4中的设计。我们首先使用Jetpack Camera API创建一个以60fps运行的摄像头捕获会话,并使用Multimedia API将视频编码器注册为其帧消费者。为了实现ROI编码模块,我们使用setROIParams()函数来设置ROI及其QP delta值,以便基于在边缘云上生成的ROI来编码下一帧。

我们还支持了外部RPS控制模式,将每一帧的参考帧设置为当前缓存的检测结果的源帧,这样提取的运动向量就可以用来移动缓存的检测结果。

服务器端。服务器端的实现包括两个主要模块:并行解码和并行推理,它们被设计为运行在两个不同的线程中,以避免相互阻塞。

在并行解码线程中,系统一直在等待来自AR设备的编码帧片。一旦接收到切片,它会立即将其传递给视频解码器,以便在异步模式下进行解码,这不会阻止系统继续接收其他切片。我们使用NVIDIA Video Codec SDK来利用NVIDIA Titan XP GPU中的硬件加速视频解码器。解码每个切片后,系统会在附加到解码器的回调函数中将其传递给并行推理线程。

并行推理模块使用NVIDIA TensorRT实现,NVIDIA TensorRT是为NVIDIA GPU设计的高性能深度学习推理优化器。为了突破服务器端PC的推理延迟限制,我们使用TensorRT中的INT8校准工具对目标检测模型进行了优化,在相同的设置下获得了3-4倍的延迟改进。为了实现所提出的依赖A波推理方法,我们在每个卷积层和池化层之前添加一个PluginLayer,根据公式2调整它们的输入和输出区域。在整个帧的推理过程之后,边缘云将检测结果和QP图发送回AR设备以供进一步处理。

9 EVALUATION

在本节中,我们将从检测精度、检测延迟、端到端跟踪和渲染延迟、卸载延迟、带宽消耗和资源消耗等方面评估系统的性能。

[1] Liu Luyang. Edge Assisted Real-time Object Detection for Mobile Augmented Reality

这篇关于Edge Assisted Real-time Object Detection for Mobile Augmented Reality的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274174

相关文章

linux 下Time_wait过多问题解决

转自:http://blog.csdn.net/jaylong35/article/details/6605077 问题起因: 自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。 现象: 1、外部机器不能正常连接SSH 2、内向外不能够正常的ping通过,域名也不能正常解析。

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

java基础总结12-面向对象8(Object类)

1 Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗

MACS bdgdiff: Differential peak detection based on paired four bedGraph files.

参考原文地址:[http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html](http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html) 文章目录 一、MACS bdgdiff 简介DESCRIPTION 二、用法

王立平--Object-c

object-c通常写作objective-c或者obj-c,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。在MA

lua data time

local getTime = os.date(“%c”); 其中的%c可以是以下的一种:(注意大小写) %a abbreviated weekday name (e.g., Wed) %A full weekday name (e.g., Wednesday) %b abbreviated month name (e.g., Sep) %B full month name (e.g., Sep