掌桥专利:专业的专利平台
掌桥专利
首页

用于实时对象检测和跟踪的分布式计算

文献发布时间:2023-06-19 11:55:48


用于实时对象检测和跟踪的分布式计算

技术领域

本公开涉及视频数据中的对象检测和跟踪。

背景技术

视频数据中的对象检测和跟踪是用于许多当代应用和服务的技术基准的一部分,这些当代应用和服务包括自动驾驶、远程机器人手术、人口计数、产品识别、异常检测等。在典型设置中,这种技术可以被部署为例如在诸如交通工具之类的设备内的嵌入式解决方案,或者被部署为例如具有客户端的客户端-服务器应用,该客户端诸如是向随后执行对象检测的云数据中心发送原始数据(例如,视频帧的图像)的移动设备。用于对象检测的最佳执行的解决方案基于计算密集型的卷积神经网络(CNN)。

最快的基于CNN的视觉对象检测平台(例如,Darknet、TensorFlow)可以在一些硬件系统(例如,具有诸如NVIDIA Titan X图形处理单元(GPU)之类的强大处理器的台式计算机)上实时运行大小合理的通用CNN(例如,Yolo、Faster R-CNN)。然而,尽管移动设备的能力持续并快速改进,但是在智能电话、平板电脑或嵌入在网络边缘处的设备中(例如,机器人、无人机、传感器中)的其他小型计算机中执行对象检测仍然是非常困难的任务。

实际上,在可预见的未来,在电池供电的设备上运行具有现代视觉对象检测器的复杂度的算法可能仍将是一个挑战,特别是对于不包含强大的GPU、中央处理器(CPU)或张量处理单元(TPU)但是替代地基于相对便宜的、标准的、具有节能意识的CPU或现成的微控制器的设备而言。

发明内容

本文所描述的技术、设备和系统中的若干种通过利用用于执行对象检测和/或对象跟踪的分布式计算来解决该问题,其中,检测和/或跟踪由若干个节点(例如,ad hoc网络中的若干个节点)执行。计算的这种分布是随机的、自组织的(ad-hoc),并且可以考虑到特定设备的计算能力。

这些技术在资源受限的环境中可能特别有意义,在资源受限的环境中,设备形成了动态的ad-hoc网络,并且在电池电量和/或计算能力方面具有资源约束。在这种情况下,所公开的技术允许在多个设备之间分布用于对象检测和跟踪功能所消耗的电量。

下面详细说明用于分布式对象检测和跟踪的特定技术。根据这些技术中的若干种,来自一系列帧的第一当前帧被发送给第一节点,以检测第一对象。在作为回应接收到对第一当前帧中的第一对象进行分类和/或定位的对象检测信息之后,选择第二节点,并且第二当前帧被发送给第二节点,以用于更新的对象检测。另外,在等待更新的对象检测的结果的同时,第二当前帧之后的两个或更多个帧被发送给各相应的跟踪节点。从先前接收到的对象检测信息导出的、指示一个或多个对象的位置和/或类别的对象建模信息也被发送给各相应的跟踪节点中的每个。从各相应的跟踪节点中的每个接收针对第一对象的跟踪信息。

以下详细描述的技术包括用于跟踪视频流的一系列帧中的对象的位置的示例方法,其中,该方法包括以下步骤:从可用于对象检测的两个或更多个节点的集合中选择第一节点;以及向第一节点发送来自一系列帧的第一当前帧,以用于检测该帧中的第一对象。该方法通过以下步骤继续进行:从第一节点接收针对第一对象的对象检测信息。在从第一节点接收到针对第一对象的对象检测信息之后,该方法通过若干个附加步骤继续进行。首先,从可用于对象检测的两个或更多个节点的集合中选择第二节点,并且向第二节点发送来自一系列帧的第二当前帧,以用于第一对象的更新的检测。另外,将第二当前帧之后的两个或更多个帧中的每个帧发送给各相应的跟踪节点,其中,向相应的跟踪节点发送每个帧包括:从可用于跟踪的两个或更多个节点的集合中选择该相应的跟踪节点。在各种实施例中,从对象检测信息中导出的对象建模信息也被发送给各相应的跟踪节点中的每个–该对象建模信息可以与发送给跟踪节点的帧一起发送,或者可以被单独地提供给所有可用的跟踪节点。最后,从各相应的跟踪节点接收针对发送给跟踪节点中的每个跟踪节点的帧的第一对象的跟踪信息。

上述方法可以重复一次或多次。因此,在一些实施例中,上述示例方法还可以包括以下步骤:从第二节点接收针对第一对象的更新的对象检测信息;从可用于对象检测的两个或更多个节点的集合中选择第三节点;以及向第三节点发送来自一系列帧的第三当前帧,以用于第一对象的进一步更新的检测。该方法还可以包括以下步骤:向各相应的跟踪节点发送第二当前帧之后的两个或更多个帧中的每个帧,其中,向相应的跟踪节点发送每个帧包括:从可用于跟踪的两个或更多个节点的集合中选择该相应的跟踪节点;向各相应的跟踪节点中的每个发送从更新的对象检测信息中导出的更新的对象建模信息;以及从各相应的跟踪节点中的每个接收针对发送给该相应的跟踪节点的帧的第一对象的跟踪信息。将理解的是,可以重复该技术,直到例如不再需要或不再可能进行跟踪对象为止。

在下面的讨论中还将详细描述与上述方法及其变型相对应的设备和系统。

至少在一些实施例中,所公开的技术、设备和系统可以提供若干优点。例如,一般来说,这些技术不需要到集中式数据中心的连接,这意味着即使在传统的网络连接(例如,IEEE 802.11x或蜂窝网络)不可用的情况下,也可以在附近的设备之间进行检测。可以替代地使用低功率、短距离网络协议,例如,蓝牙或基于IEEE 802.15.4的网络堆栈(XBee、6LowPAN等)。另一优点在于这些技术可以在资源受限的环境中工作,在资源受限的环境中,设备的计算性能低和/或设备功耗受到限制。可以使用现有技术和标准来部署这些技术的一些实施例。

本文公开的技术、设备和系统不限于以上概述的那些。这些技术的变体以及这些技术的附加优点和用途将在下面描述。

附图说明

通过参考以下结合附图的描述,可以最好地理解实施例及其进一步的目的和优点,在附图中:

图1示出了根据一些所公开的实施例的节点和角色的示例配置。

图2示出了客户端节点和计算节点之间的交互的示例。

图3是根据当前公开的技术的一些实施例的信令流图。

图4示出了根据一些实施例的识别候选节点的示例。

图5示出了用于分布式对象检测和跟踪的示例技术。

图6示出了根据一些实施例的分割图像以用于分布式对象检测的示例。

图7是示出了根据一些实施例的示例方法的过程流程图。

图8是根据一些当前公开的实施例的示例设备的框图。

图9示出了根据一些实施例的基于计算机程序的实现。

具体实施方式

在未来几年中,可以预期的是移动设备将能够运行越来越精确的对象检测算法。然而,如上所述,在可预见的将来,在电池供电的设备上运行具有现代视觉对象检测器的复杂度的算法仍然是一个挑战,特别是对于不包含强大的GPU、CPU或TPU的设备而言。

同时,与对象检测相反,对象跟踪在各种设备上可能都是可行的,因为对象跟踪的复杂度小于对象检测的复杂度。

客户端-服务器模型(其中,由服务器执行对象检测和跟踪任务)的一种可能的备选方案是混合解决方案,该混合解决方案使用基于服务器的对象检测和基于客户端的对象跟踪的组合来提供一种对象检测解决方案,该对象检测解决方案比简单的对象跟踪更精确,但是不需要在客户端上运行计算成本高的对象检测器。然而,这种方法仍然需要访问服务器。

本文所描述的技术、设备和系统中的若干种通过利用用于执行对象检测和/或对象跟踪的分布式计算来解决该问题,其中,检测和/或跟踪由若干个节点(例如,ad hoc网络中的若干个节点)执行。计算的这种分布是随机的、自组织的(ad-hoc),并且可以考虑到特定设备的计算能力。

这些技术在资源受限的环境中可能特别有意义,在资源受限的环境中,设备形成了动态的ad-hoc网络,并且在电池电量和/或计算能力方面具有资源约束。在这种情况下,所公开的技术允许在多个设备之间分布用于对象检测和跟踪功能所消耗的电量。

可能特别适合这些技术的用例可以包括,例如:

-多架无人机飞越同一工业对象(或进行救援任务),其中,它们的任务需要对象检测。

-在工厂中(或者在管线中,或从事电网工作等)的一组现场工程师,他们的移动电话需要视觉对象检测以用于增强现实支持应用。

-在远程环境(例如,矿井、战区等)中操作的多个设备,在这些环境中,与服务器的连接不可用或非常昂贵。

本文描述的技术适合于在由多个节点组成的网络中实现。节点在网络中互连并且可达,该网络可以是基础结构网络,或者是动态创建的网状网络或ad-hoc网络,或者是两者的某种组合。

图1示出了可以利用当前公开的技术的对象检测和/或跟踪系统的两个示例配置。所示的包括客户端(“cl”)节点110、计算(“cmp”)节点130、主(“mst”)节点120和通用(“nd”)节点140的节点应被理解为逻辑节点,或“角色”,因为给定的设备可以在不同的时间根据这些角色中的不同角色发挥作用(act),并且在一些情况下,如下面进一步说明的,可以一次根据两个角色发挥作用。也就是说,应当理解,所示的计算节点130和通用节点140中的每个节点通常将对应于经由ad hoc或常规网络连接到其他设备的独特设备。

在对象检测和/或跟踪会话期间,图1所示的节点执行以下描述的角色。

客户端(“cl”)角色:该角色由请求执行对象检测和/或对象跟踪任务的节点扮演。该节点(被示为图1中的cl节点)负责将原始输入材料提供给计算(“cmp”)节点130,无论是直接(如图1的配置(a)所示)提供还是经由主(“mst”)节点120(如图1的配置(b)所示)提供。原始输入材料包括以某种格式(例如,在图像的情况下为JPEG、PNG、BMP、TIFF、GIF,在视频的情况下为MPEG-4、H.264、H.265)编码的图像数据或视频数据。

计算(“cmp”)角色:具有此角色的节点根据从主(“mst”)节点120接收到的分配执行对象检测和/或对象跟踪任务。该节点(在图1中被示为cmp节点130)接受图片帧(图像或从其中提取图片帧的视频)的形式的原始输入材料,并输出检测到的对象的种类及其在帧上的位置。由cmp节点130实施的对象检测服务被认为是无状态的,因为它不需要存储-与任务的分配一起提供用于提供任务的必要原始输入材料。下面提供对象检测任务的特定示例。

主(“mst”)角色:具有主角色的节点负责将计算角色分配给计算(“cmp”)节点。示例在图1中被示为mst节点120。这些分配是动态的,即,mst节点120可以例如基于当前的cmp节点性能或者在cmp节点130离开网络的情况下,重新分配计算角色。可选地,如图1的配置(b)所示,mst节点120可以用作来自客户端(“cl”)节点110的原始数据业务的端点。在这种情况下,mst节点120接受来自c1节点110的所有图像或视频帧,并选择向其转发所有图像或视频帧的cmp节点。在这种情况下,也可以将mst节点视为执行负载平衡任务,同时还努力经由cmp节点130提供适当计算能力的高可用性。

“nd”角色:为了完整起见,该节点在图1中被示为nd节点140,并且扮演与不主动执行对象检测和/或对象跟踪服务但是与其他节点相邻并且对其他节点可见的节点相对应的一般角色。这些节点没有资格作为mst和/或未被mst选择用作cmp节点。

如上所述,角色是逻辑性的。一个物理设备可以从所示角色中的一个转变到另一个,例如,从“cmp”转变到“nd”,反之亦然。例如,物理节点也可以具有mst角色和cmp角色两者。更进一步,物理节点可以支持多个对象检测会话,在一些实施例中,该物理节点例如针对一个会话是客户端节点(cl),针对另一会话是主节点(mst)和/或计算节点(cmp)。

在图1中,配置(a)可以被理解为mst节点120充当计算协调器的实施例,而配置(b)示出了mst节点120充当计算端点的实施例。如图所示,这意味着原始数据和对象检测/跟踪结果在前一配置中直接在c1节点110和cmp节点130之间传递,而在后者中两者都通过mst节点120。从图中可以看出,在配置(a)中,mst节点120选择cmp节点130(“节点选取”或“节点选择”)并管理cmp节点130,但不处理原始数据和对象检测/跟踪结果。另一方面,在配置(b)中,所有内容都通过mst节点120,使得c1节点110根本不需要直接与cmp节点130进行通信。

图2示出了c1节点110和cmp节点130之间的交互的示例。如图所示,c1节点110在图1的配置(a)按照来自充当协调器的mst节点120的指令直接地向cmp节点130发送原始输入材料,或在图1的配置(b)中经由充当计算端点的mst节点120向cmp节点130发送原始输入材料。对于对象检测任务,在视频数据的情况下,cmp节点130从该原始材料中提取帧,并检测帧中的一个或多个对象,同样直接地或经由mst节点120将对象检测信息返回给cl节点,对象检测信息包括例如根据对象种类对一个或多个对象的标识,以及指示对象在帧中的每个帧中的一个或多个位置的信息。在所示的示例中,返回给c1节点110的对象检测信息以JSON表示序列化。然而,对象检测信息的其他格式或表示是可能的。例如,对象检测信息可以包括在图像或视频上叠加有对象识别信息的图像或视频,如图2的右下方所示。在将多个帧分配给cmp节点130以用于给定的对象检测任务的情况下,将检测到的对象逐帧发送回cl节点110。检测到的对象的示例代码可以包括:

除了角色之外,还可以假设网络中的每个物理节点都具有一些基本属性。首先,每个物理节点具有标识符,例如,与物理节点的无线网络接口相对应的介质访问控制(MAC)地址。该标识符可以应要求被传送给其他节点,并在选择mst或cmp节点时使用。其次,每个物理节点具有某一存储装置(storage),在其中存储与网络中的其他物理节点相对应的信息。例如,可以针对其他节点存储一个或多个信誉得分(reputation score),以用于选择最佳的可用cmp节点或mst节点,其中这些信誉得分反映了节点在先前的对象检测会话中作为mst节点或cmp节点的性能。

在一些实施例中,可以例如通过基于网络中的节点的信誉投票或随机地将mst角色分配给网络中的节点,或者可以由分布式对象检测/跟踪系统的实施者对mst角色进行预选择/硬编码。在一些实施例中,mst节点120还能够以如下方式来委派责任:其有效地将处理模型从如本文所述的用于对象检测和对象跟踪两者的分布式计算的处理模型切换到常规的客户端-服务器模式,或者切换到由一个或多个服务器执行对象检测而由cl节点110和/或cmp节点130以分布式方式执行对象跟踪的客户端-服务器模式。例如,通过这种方法,如果上述无人机的集合突然获得了对这种计算资源的访问权限,则除了与无人机可访问的cmp节点130相对应的其他条目之外,每个无人机都可以用与目前可用的一个或多个服务器相对应的条目来更新由该无人机维护的“资源表”,其中,该新条目反映了一个或多个服务器相对于无人机的ad-hoc网络中的其他cmp节点130的更高的计算资源和电力资源。然后,如果随后丢失了与该服务器的连接,则所有无人机都可以通过删除该条目来更新其“资源表”,仅在网络中保留其他可用cmp节点130的条目。

在一些实施例中,网络中的节点将两种或更多种类型的信誉存储为值对(valuepair),如下面进一步详细描述的,其中这些值对用于选择针对给定会话的主节点并选择用于在会话期间实施对象检测和/或对象跟踪任务的计算节点。

首先,若干个物理节点中的每个物理节点的值对持有网络中的其他物理节点相对于mst(主节点)的角色的信誉。标识符值表示给定物理节点的唯一标识符,例如,MAC地址。mst_reputation_index值反映了节点在先前的对象检测会话中作为mst节点120的性能。

计算标识符的mst_reputation_index(或在数学上为mst_rep

-令mst_dsr

-令mst_cmpreselect

-令mst_battery_remaining为节点上的剩余电池的归一化的0到1值(例如,其中值“1.00”指示满的电池,而接近0的值指示即将关机)。

-然后,关于其作为mst节点120的性能,该节点的信誉指数可以是加权平均值,如下所示,其中值越高越好:

可以在c1节点110上计算并更新mst节点120的信誉指数,例如,其中每个c1节点110向mst节点120发送保持活跃(keep-alive)消息,以找出该节点是否仍然活跃。另外,当mst节点120进行cmp节点130的重新选择时,它可以将其通知c1节点110,使得指数可以被更新。

类似的值对可以用于存储网络中的其他物理节点中的每个物理节点关于它们在cmp(计算)节点的角色中的性能的信誉。同样,标识符值表示给定物理节点的唯一标识符,例如,MAC地址。cmp_reputation_index值反映了节点在先前的对象检测会话中作为cmp节点130的性能。

与上面讨论的mst_reputation_index值一样,可以计算cmp_reputation_index值,以给出对具有给定标识符的物理节点在cmp节点130的角色中的信誉(cmp_rep

cmp节点130的性能在一些实施例中可以由具有mst角色的物理节点(例如,在mst节点120用作计算的端点的情况下,如图1b所示)或由具有cl角色的物理节点(例如,在mst节点120用作计算协调器的情况下,如图1a所示的)来识别。

图3示出了根据本文公开的一些技术的示例对象检测过程的两个版本,其中,第一版本与mst节点120作为端点进行操作的配置相对应,并且第二版本与mst节点120充当计算协调器的配置相对应。被指定为310的信令可以存在于任一版本中,而信令330和350分别对应于“mst作为端点”和“mst作为计算协调器”的情况。

对象检测过程由客户端(c1)的请求触发,客户端(c1)可以通过从可用节点中选取mst节点120或随机地选择一个节点来开始该过程。备选地,在一些实施例中,mst节点120可以是先验已知的,而不是动态地选择的。

如果动态地选择mst节点120,则如图3所示,该过程可以开始于广播用于对象检测的请求,如312所示。例如,该广播可以使用用于在网状网络或ad hoc网络的节点之间分发所广播的请求的各种广播或泛洪(flooding)技术中的任一种。所广播的请求可以包括对服务的特定要求,例如,用于原始材料的何种格式类型。可以例如通过使用MIME类型(或者也已知的介质类型)对其进行封装。此处是示出了封装在示例性JSON对象中的MPEG-4视频流的可能看起来如何的示例:

{

“mtype”:”video/mp4”

}

如果是图像而不是视频,则可以使用以下内容:

{

“mtype”:”image/jpeg”

}

如在图3中的314处所示,可以在接收到所广播的请求的节点之间实施选择过程(通常被称为“选取”过程)。可以例如使用众所周知的通常用于分布式系统并且特别是用于无线网络的首领选取算法(leader election algorithm)中的任一种来完成该过程。例如,在S.Vasudevan,B.DeCleene,N.Immerman,J.Kurose和D.Towsley的“Leader electionalgorithms for wireless ad hoc networks”,Proceedings DARPA InformationSurvivability Conference and Exposition,2003年,第1卷第261-272页中描述了这些算法中的一些。

首领选取算法中的一个共同方面是权重,权重内部变量,其包含用于在节点之间选取首领的标准的当前值。在当前公开的系统的一些实施例中,“权重”可以基于上面讨论的“信誉指数”。首领选取的另一共同方面是节点的标识,因为网络中的每个节点都具有其可以根据请求提供的唯一标识。在当前公开的系统的实施例中,该标识可以是例如设备的无线网络接口的MAC地址。

使用首领选取算法的备选方案是由cl节点110进行的简单的随机选择。另一备选方案是,已经向mst角色分配了先验(priori),其中先前已经向c1节点110告知了该分配。该备选方案在图3中的316处示出,在这种情况下,c1节点110简单地与mst节点120直接联系,以初始化对象检测过程。

给定对mst节点的选取,分配cmp节点130以实施对象检测的任务。这在图3中的318处示出。在一些实施例中,用于选取cmp节点130的算法具有以下步骤:

步骤1:首先,在网络中识别候选节点。图4示出了示例,其中,示例网络以图形的形式示出,其中顶点指示候选节点,并且边表示这些节点之间的连接。在该示例网络中,mst节点120直接连接到节点A和B,并且间接连接到其他节点。这可能意味着例如A和B在mst模式的收发机的范围内,而其他节点则不在。在该示例中,为了使mst节点120到达节点C,节点B或节点A和D需要中继其消息。

为了识别符合条件的节点,一种方法是执行从mst节点120到网络中的所有其他可用节点的简单的图形遍历过程。由于网络可能很大,因此在一些实施例中,该过程可能受到两个因素的限制:

·当遇到cl节点110时,终止对图形中的当前路径的遍历;以及

·当跳数达到阈值(例如5)时,停止对图形的遍历。

可以使用简单的识别请求来执行该图形遍历过程,该识别请求可以借助于广播给覆盖区域中的所有节点来从一个节点发送到另一节点。每个节点至少使用其标识符来响应该请求,其中该响应被中继回到mst节点。该请求由网络更下方的接收节点传播。所产生的网络的“行迹(walk)”用于识别可从mst节点120(在“mst作为计算端点”配置的情况下)或从cl节点110(在“mst作为协调器”配置的情况下)或从两者到达的节点。

步骤2:在一些实施例中,实施第一选择过程,以从所识别出的候选中选择用于执行对象检测任务的cmp节点130。如上所述,该选择可以基于节点中的每个节点的信誉指数来进行。在这种情况下,mst节点120收集所有符合cmp条件的节点的信誉,并选择最有信誉的节点。可能存在一些物理节点尚未承担cmp角色的情况,因此不存在信誉记录。在这种情况下,在cmp信誉指数存在并且高于可接受的阈值的那些物理节点之间完成对符合条件的cmp节点130的选择。如果不存在足够的具有cmp信誉指数的物理节点或者信誉指数低于某个阈值,则可以基于cmp节点130与cl节点110的距离来选择cmp节点130(例如,参见图4,节点C、然后是B和D可能会首先被选择,因为它们更接近cl节点110)。最后,如果所有节点的距离相等,则可以从可用节点的列表中随机选择cmp节点130。

返回图3,一旦已经选择了cmp节点130和mst节点120,就可以开始对象检测过程。可以在每帧的基础上或每组帧的基础上执行对象检测,其中,向不同的cmp节点130发送不同的帧或帧组。可以分别取决于mst是充当计算协调器(如图1a)还是充当计算端点(图1b)来由c1节点110或mst节点120做出在节点之间分割帧的决定。

在图3中示出了算法的基本构造块,其中,信令330对应于“cmp作为端点”的情况,而信令350对应于“cmp作为协调器”的情况。cl节点110经由mst节点120或直接地向所选的cmp节点130发送包括一个或多个帧或视频的原始材料,如在336和356处所示。所选的cmp节点130执行对象检测,并返回检测到的对象种类、它们在帧上的位置、以及帧标识符,如在338和358处所示。

所示出的过程可以利用基于以下两个假设的分布式对象检测器-跟踪器算法:

-首先,可以假设来自对象检测器的更新比来自对象跟踪器的更新更可靠,因为后者使用更简单的算法。然而,对象跟踪器通常比对象检测器快得多。因此,当对象检测器帧变得可用时,它们被用于校正感兴趣的(一个或多个)对象的模型和位置。

-其次,跟踪器比实时快,例如,每秒能够处理多于60个帧。这与当前的最新跟踪器相符,其中许多跟踪器每秒处理超过200个帧。

可以如下描述用于一个对象种类的算法的版本。参数θ(theta)表示跟踪器可以在视频序列的任何两个连续帧之间(即,在其需要发送下一帧以用于可视化之前)处理的帧的数量。在随后的讨论中,帧序列中的帧“k”被表示为f

对于每个帧f

特征向量具有以下格式:

在跟踪过程中,函数T将对象B

B

T的实现使用向量相似性测量,例如,余弦相似性或互相关。

当前公开的技术的一些实施例可以利用在提供对象检测服务的cl节点110和cmp节点130之间的异步通信。根据该方法,可以在进行对象检测的同时跟踪多个帧。这导致对帧的以下处理:

-如果只有跟踪信息可用于最近的帧(检测不可用),则简单地使用最后可用帧中的特征向量来更新模型

-如果根据前一帧(n-k)的对象检测可用,其中,n是当前帧,并且k是检测到的帧和当前帧之间的跟踪的帧的数量:

o如果k小于或等于θ(意味着跟踪器可以在视频序列的下一个帧或图像帧传入之前处理所有k个帧),则从M

下面描述了可以与上述网络配置和过程一起使用的分布式对象检测和跟踪算法的示例。该算法通过独立地处理每个帧来工作。这里的“帧”是指图像,该图像可以是图像流的一部分,或者是从视频流中提取的。取决于mst节点120是充当端点还是简单地充当计算协调器,分别从mst节点120处或c1节点110处的视频流中提取帧。关于哪个节点控制算法的整体进度也是如此。为了讨论的目的,运行检测跟踪算法的分布式版本的实体被表示为控制实体或“ce”。这可以是具有mst角色的物理节点(例如,其中,mst节点120在图1的配置(b)中是端点),或者具有cl角色的物理节点(例如,其中,mst节点120在图1的配置(a)中是计算协调器)。

为了该讨论的目的,假设ce在对象检测和跟踪过程开始之前已经知道由mst节点120分配以用于该计算的多个cmp节点130。在一些实施例中,每个cmp节点130可以通过至少两个参数来参数化:

-其计算能力,表示其可以多快地处理传入帧以进行对象检测或对象跟踪。

-其剩余电池寿命,如果节点使用可再生电源的话。

该过程在图5中示出。该过程开始于ce选择符合条件的cmp节点130(例如,如上所述由mst节点120选择的cmp节点130)中的一个,以用于第一传入帧的对象检测。该选择受到上述参数的约束,例如使得具有最佳计算能力和/或电池寿命的节点被选择。在选择标准上可以存在偏差(bias)(例如,70%的计算能力和30%的电池寿命),以便减少多个候选具有相同得分的机会。

在ce接收到每个第一对象检测返回的结果之前,它无法选择用于跟踪的其他cmp节点130。当ce从执行对象检测的cmp节点130接收到第一对象检测的结果(这在图5中示出为“df1”)时,开始跟踪节点的选择以及用于检测下一帧的cmp节点130的选择。向被选择用于对象检测的cmp节点130(该cmp节点130可以与执行第一对象检测的节点相同或不同)发送下一个帧f

从ce节点的角度来看,该过程将更详细地描述如下。令f

对于每个传入帧f

-如果先前发出以用于对象检测的对象检测帧仍在处理中(即,如果ce尚未接收到先前提交的帧的对象检测信息):

ο找出有多少个cmp节点130完成了跟踪,并将它们从C

ο如果以乱序接收到跟踪结果,则根据需要对跟踪的帧进行重新排序;

ο从C\{cmp

ο向所选的节点发送帧f

-如果帧f

ο如上所述地更新模型,并向cmp节点130发送更新的模型,以用于后续的跟踪任务。这意味着使模型M同检测到的帧fk一样是最新的,使得可以在后续的跟踪任务中使用对象位置的最新的检测。该更新的模型可以被广播给C中的所有cmp节点130,使得如果需要,则每个符合条件的节点具有更新的模型,或者该更新的模型可以在每个cmp节点130被选择用于跟踪任务时与要由cmp节点130处理的原始数据一起提交给该每个cmp节点130。

ο从C中选择具有最高的计算信誉指数的cmp节点130(例如,cmpX∈C),前提它的电池能检测更多帧。如果没有,则可以选择下一个节点,前提是它的电池能检测更多帧。请注意,如果由于没有足够的电池来支持检测任务而丢弃cmp节点130但是其仍然有足够的电池用于跟踪,则可以将其留在C中;否则,可以将其完全从C中移除。

ο向cmpX发送帧fn以用于检测。也可以向另一节点发送帧fn以用于跟踪。

在上面的讨论中,假设了对用于控制对象检测和/或跟踪任务的mst节点120的选择。mst节点120的使用适合于设备具有计算资源和足够电力以承担协调器的角色的情况。该设备可以是例如物联网(IoT)网关。还可以存在所有节点都相同的情况(例如,传感器ad-hoc网络/网状网络)。在这种情况下,如上所述,可以使用mst节点120,但是也可以在没有主节点的情况下实施分布式对象检测和跟踪任务。利用这种方法,所有节点(来自上述用例)可以以特定时间间隔(例如,每分钟并且还响应于状态变化)向所有其他节点广播其电池状态和可用于检测的资源。以这种方式,所有节点都可以维护类似的“资源表”,并且如果这些节点之一变为客户端(需要检测视觉对象),则它使用该表向最合适的节点(例如,具有最多的电池或计算复杂度资源的节点)发送请求。为了获得最佳性能,应在同一时间点在所有其他节点中更新“资源表”,以反映对用于检测或跟踪任务的节点的选择。

上述技术的其他变型是可能的。在上文,详细描述了用于在多个cmp节点130中分发用于对象检测和跟踪方法的计算的算法。如上所述,假设将给定帧的对象检测任务分配给单个cmp节点130。这可能具有负面影响,即,在一些情况下,由于随后的两次对象检测之间的时间,检测的精度可能会下降,例如当在一个帧中存在要检测的若干个对象时。如果正被跟踪的一个或多个对象暂时在相机的视场之外,则这种下降可能会特别明显。在这种情况下,跟踪器将丢失对象,并且可能直到下一对象检测帧恰巧包括该对象时,才能再次找到它。

为了减少处理帧以进行对象检测所花费的时间,可以将帧分割成多个部分,并且向不同的cmp节点130发送这些部分以用于检测。如上所述,可以使用与用于选择一个cmp节点130或跟踪节点相同的过程来完成对cmp节点130的选择,以发送这些部分。

图6示出了可以如何分割帧的示例。每个图中的内部边界框(从图6a中未分割的帧开始)指示在接收到新的对象检测帧之前最后跟踪的帧的坐标,其中,新的对象检测帧应产生对对象在哪里的更精确的估计。外部边界框是估计裕量(margin),其是内部边界框的外推。基于实现,该裕量可以大于或小于此处所示的。

假设存在两个部分,图6b和图6c示出了基于黄色边界框的水平轴和垂直轴进行分割的两种可能的方法。取决于cmp节点的可用性,还可以将水平轴和垂直轴组合以将图像拆分为3个、4个、5个、6个或更个段。

如果使用该分割方法,则上述算法被改变,以反映被分割用于对象检测的帧的对象检测结果可能在不同时间到达。因此,依赖于接收帧的对象检测信息的动作必须被延迟,直到接收到所有部分为止。然后,可以根据针对各个部分接收到的对象检测信息来重建对象检测帧。同样,修改算法以解决以下事实:要被发出以进行对象检测的每个帧必须被分割,并被发送到多个cmp节点130,这些cmp节点130是根据与上述过程类似的过程来选择的。

鉴于以上讨论的详细示例和备选方案,将理解的是,图7的过程流程图示出了根据一些当前公开的技术的用于跟踪视频流的一系列帧中的对象的位置的概括方法。如上所述,该方法可以由充当mst节点120和/或控制实体的设备来实现,或者可以由独自起作用的c1节点110来实现,或者由一起工作的两个或更多个设备的组合来实现。请注意,在下面的讨论中对术语“第一”、“第二”等的使用并非旨在指示时间顺序或其他顺序,而是替代地用于将一个事物与另一个相似的事物区分开。

如框710处所示,所示的方法开始于从可用于对象检测的两个或更多个节点的集合中选择第一节点。如框720处所示,该方法继续到向第一节点发送来自一系列帧的第一当前帧,以检测帧中的至少第一对象。在一些实施例中,根据上述计分过程来选择该第一节点。第一当前帧的发送对应于上述“原始材料”的发送,其中,该原始材料可以包括一个或多个数字图像、视频的一部分等。将理解的是,例如,如果如上所述对图像进行分割,则如本文所使用的术语“帧”可以指代数字图像的一部分。

如框730所示,随后从第一节点接收回针对第一对象的对象检测信息。(将理解的是,在此期间可以处理若干个介于中间的帧–为简单起见,从所示过程的该部分中省略了它们的处理。)该对象检测信息包括在先前发送给第一节点以用于对象检测任务的帧中对第一对象进行分类和/或定位的信息。当然,在一些情况下,可以接收针对多于一个对象的对象检测信息。

一旦从第一节点接收回对象检测信息,就可以基于对象检测信息在一个或多个后续帧中执行对第一对象的对象跟踪。另外,可以发出新帧以用于对象检测。因此,如框740处所示,该方法继续到从可用于对象检测的两个或更多个节点的集合中选择第二节点,并向第二节点发送来自一系列帧的第二当前帧,以用于第一对象的更新的检测,如框750处所示。请注意,可以根据上述选择过程来选择该第二节点,并且该第二节点可以与第一节点相同或者可以不与第一节点相同。

另外,如框760处所示,向各相应的跟踪节点发送第二当前帧之后的两个或更多个帧中的每个帧。此处,向相应的跟踪节点发送每个帧包括:从可用于跟踪的两个或更多个节点的集合中选择相应的跟踪节点,如框762处所示。此外,如框770处所示,与向每个节点进行的相应的帧的发送一起或单独地向各相应的跟踪节点中的每个发送指示一个或多个对象的位置和/或分类的对象建模信息(例如,作为向所有符合条件的节点的广播),该对象建模信息从对象检测信息中导出。最后,如框780所示,从每个相应跟踪接收被发送给该节点的帧的第一对象的跟踪信息。可以对该信息进行重新排序(如果需要)以解决以乱序接收的任何信息,并对其进行处理以进行渲染/查看。

可以重复所示的过程。因此,例如,在向各相应的跟踪节点发送第二当前帧之后的两个或更多个帧之后,该方法可以继续到从第二节点接收针对第一对象的更新的对象检测信息(框730);从可用于对象检测的两个或更多个节点的集合中选择第三节点(框740);向第三节点发送来自一系列帧的第三当前帧,以用于第一对象的进一步更新的检测(框750)等。

因此,例如,在向第三节点发送第三当前帧之后,该方法可以继续到向各相应的跟踪节点发送第二当前帧之后的两个或更多个帧中的每个帧,其中,向相应的跟踪节点发送每个帧包括:从可用于跟踪的两个或更多个节点的集合中选择相应的跟踪节点(框760和框762),在这种情况下,向各相应的跟踪节点中的每个发送从更新的对象检测信息中导出的更新的对象建模信息(框770)。从这些相应的跟踪节点中的每个接收针对该帧的第一对象的跟踪信息(框780),根据需要继续该过程。

在一些实施例中,向各相应的跟踪节点发送第二当前帧之后的两个或更多个帧中的每个帧包括:向跟踪节点发送在第二当前帧和第三当前帧之间的每个帧。在例如在没有足够的节点可用于跟踪或者跟踪资源以其他方式受到限制的其他实施例中,可以发出比所有介于中间的帧少的帧(例如,每隔一个帧)以用于跟踪。

如上所述,在一些实施例中,向各相应的跟踪节点中的每个发送从对象检测信息中导出的对象建模信息包括:向各相应的跟踪节点中的每个发送对象建模信息以及相应的帧。在其他实施例中,向各相应的跟踪节点中的每个发送从对象检测信息中导出的该对象建模信息包括:例如经由广播或洪泛过程,向可用于跟踪的两个或多个节点的集合中的所有节点发送对象建模信息。

在一些实施例中,如图7所示的方法还可以包括:维护可用于检测或跟踪的节点的单个集合,其中,该维护包括:在被选择用于检测或跟踪的每个节点执行相应的检测或跟踪时,从集合中移除该节点;以及在被选择用于检测和跟踪的每个节点完成其相应的检测或跟踪时,将该节点返回到集合中。在其他实施例中,可以分别维护可用于检测和跟踪的节点的不同集合,其中,该维护包括:在被选择用于检测或跟踪的每个节点执行相应的检测或跟踪时,从相应的集合中移除该节点;以及在被选择用于检测和跟踪的每个节点完成其相应的检测或跟踪时,将该节点返回到相应的集合中。

在一些实施例中,对用于对象检测的节点的选择基于可用于检测的两个或更多个节点的集合中的每个节点的一个或多个度量,其中,该一个或多个度量包括或基于以下中的任一项:相应的节点的电池状态;对在相应的节点处可用的处理资源的测量;由相应的节点完成的先前的对象检测任务的计数;以及由相应的节点完成的对象检测任务与分配给该相应的节点的对象检测任务的数量的比率。

同样地,在一些实施例中,对用于对象跟踪的节点的选择基于可用于跟踪的两个或更多个节点的集合中的每个节点的一个或多个度量,其中,该一个或多个度量包括或基于以下中的任一项:相应的节点的电池状态;对在相应的节点处可用的处理资源的测量;由相应的节点完成的先前的对象跟踪任务的计数;以及由相应的节点完成的对象跟踪任务与分配给该相应的节点的对象跟踪任务的数量的比率。

图8是示出了基于处理器122、123和硬件电路124、125两者的组合并与合适的存储器单元121相结合的设备120的示例的示意性框图。因此,整体功能在用于在一个或多个处理器122、123上执行的编程软件与一个或多个预配置的或可能可重新配置的硬件电路124、125之间划分。实际的硬件-软件划分可以由系统设计人员根据众多因素来决定,这些因素包括处理速度、实施成本和其他要求。设备120可以配置有例如存储器121中的适当程序代码和/或硬件电路124、125的适当配置,以执行本文描述的任何技术。因此,例如,设备120可以被配置为充当c1节点110、cmp节点130、mst节点120或ce节点,并且在一些实施例中可以被配置为选择性地扮演这些角色中的若干角色中的任一个。

在一些实施例中,设备120同样配置有存储器121中的适当程序代码和/或硬件电路124、125的适当配置,以执行图7所示的处理流程的全部或部分或其变体。在一些实施例中,两个或更多个如图8所示的设备可以被配置为彼此协作以执行图7所示的方法或其变体。

图9示出了根据一些实施例的基于计算机程序的实现。在该具体示例中,用计算机程序240来实现本文描述的步骤、功能、过程、模块和/或框中的至少一些,计算机程序240被加载到存储器220中,以用于由包括一个或更多个处理器210的处理电路执行。处理器210和存储器220彼此互连,以实现正常的软件执行。可选的I/O单元230还可以互连到5处理器210和/或存储器220,以实现相关数据(例如,视频帧和检测信息)的输入和/或输出。

术语“处理器”应该在一般意义上解释为能够执行程序代码或计算机程序指令以执行特定的处理、确定或计算任务的任何电路、系统或设备。

因此,包括一个或多个处理器210的处理电路被配置为:在执行计算机程序240时执行例如本文描述的明确定义的处理任务。

处理电路不必须是专用于仅执行上述步骤、功能、过程和/或框,而是还可以执行其他任务。

在一实施例中,计算机程序240包括指令,该指令在由至少一个处理器210执行时,使至少一个处理器210执行图7的处理流程中所示的步骤中的全部或一些。

所提出的技术还提供了包括计算机程序240的载体250。载体250是电子信号、光信号、电磁信号、磁信号、电30信号、无线电信号、微波信号或计算机可读存储介质中的一种。

通过示例的方式,软件或计算机程序240可以实现为计算机程序产品,其通常在计算机可读介质250(具体地,非易失性介质)上承载或存储。

计算机可读介质可包括一个或多个可移除或不可移除的存储设备,包括(但不限于):只读存储器(ROM)、随机存取存储器(RAM)、高密度盘(CD)、数字多用途盘(DVD)、蓝光盘、通用串行总线(USB)存储器、硬盘驱动器(HDD)存储设备、闪存、磁带或任何其它常规存储设备。因此,计算机程序240可以被加载到操作存储器220中,以用于由处理电路210执行。

当由一个或多个处理器执行时,本文呈现的一个或多个流程图可以被认为是一个或多个计算机流程图。对应的设备可以被定义为一组功能模块,其中由处理器执行的每个步骤与功能模块相对应。在这种情况下,功能模块被实现为在处理器上运行的计算机程序。

因此,驻留在存储器中的计算机程序可以被组织为适当的功能模块,所述功能模块被配置为:当被处理器执行时,执行本文所述的步骤和/或任务的至少一部分。

示例程序代码

下面以Java示出了上述算法的示例实现。请注意,此代码不包括可能进一步提高性能的上述分割对象检测的实现。该实现将算法封装在测试环境中,其中,可以指定以下参数:

-帧的总数–假设传入帧之间没有抖动(即,帧每100毫秒传入)。

-CMP的总数。CMP的信誉指数在运行期间随机生成为在0和1之间的双精度数。

-用于计算CMP能够跟踪的帧总数的每个传入帧(即,每100毫秒)的系数,该帧总数是CMP的信誉指数和该系数的乘积。

-类似地,用于计算CMP能够检测的帧的总数的系数。

-单个跟踪操作的电池成本。类似地,单个检测操作的电池成本。

以下参数用于CMP:

CMP[0]ID:ID_0信誉指数:0.6256970200371744

CMP[1]ID:ID_1信誉指数:0.6584154866876781

CMP[2]ID:ID_2信誉指数:0.6305296502731899

CMP[3]ID:ID_3信誉指数:0.7541284349836521

CMP[4]ID:ID_4信誉指数:0.1208759739305121

CMP[5]ID:ID_5信誉指数:0.765604648894787

CMP[6]ID:ID_6信誉指数:0.9255785744225709

CMP[7]ID:ID_7信誉指数:0.06024311960588813

CMP[8]ID:ID_8信誉指数:0.08155379830196141

CMP[9]ID:ID_9信誉指数:0.8405986416587938

使用这些参数,在耗尽所有10个CMP中的电池之前,系统可以进行针对1300个帧的对象检测。另一方面,如果使用非分布式客户端-服务器模型(假设例如服务器的性能指标与最有能力的CMP一样大(以上列出的0.9255)),则由于服务器的电池耗尽,该过程将在第265帧处结束。

以上描述的实施例将被理解为本发明的几个说明性示例。本领域技术人员将理解,在不脱离本发明的范围的前提下,可以对实施例作出各种修改、组合和改变。具体地,在技术上可行的情况下,在其他配置中可以组合不同实施例中的不同部分解决方案。然而,本发明的范围由所附权利要求限定。

相关技术
  • 用于实时对象检测和跟踪的分布式计算
  • 一种实时星载卫星图像运动对象检测跟踪方法
技术分类

06120113106476