使用图像理解配置数据管道的制作方法

文档序号:28159230发布日期:2021-12-24 18:27阅读:109来源:国知局
使用图像理解配置数据管道的制作方法

1.本公开一般涉及对包括图像的传感器数据的处理和理解。
2.相关技术的描述
3.当今部署了数以百万计的相机和其他传感器设备。通常没有机制使得计算能够以有意义方式轻松地与相机所捕获的内容进行交互。这导致来自相机的大多数数据没有得到实时处理,并且最多在已知事件发生后将所捕获的图像用于取证目的。结果,大量的数据存储被浪费在存储最终对其的分析是不令人感兴趣的视频上。另外,通常需要人工监测才能理解所捕获的视频。可用于解释或检测图像中相关数据的机器辅助有限。
4.当今的另一问题是对信息的处理高度特定于应用。诸如高级驾驶员辅助系统和基于面部识别的安全之类的应用需要定制软件,该定制软件使用每个相机的本机低级接口从相机中读取原始图像,然后针对目标应用以特定方式处理原始图像。应用开发人员通常必须针对每种不同类型的相机创建特定低级接口才能获取原始图像,然后他们通常还必须创建应用特定软件来处理原始视频帧以提取期望信息。
5.除了低级相机接口之外,如果应用开发人员想要使用现有处理或分析能力,诸如人工智能或机器学习来进行较高层级的图像理解,他们还必须理解并为这些系统中的每个系统创建接口。这些系统可能使用专有api。应用开发人员可能会被锁定在特定供应商的解决方案中,从而难以后续切换到其他解决方案。
6.结果,开发利用传感器网络的应用既缓慢又有限。例如,安装在环境中的监督相机通常仅用于安全目的并且以非常有限的方式使用。这部分是因为这样的系统所捕获的图像帧很难从中提取有意义的数据。同样,在汽车上安装有相机网络的汽车环境中,从这些相机中捕获的图像数据会以非常特定于汽车特征的方式进行处理。例如,前向相机可能仅用于车道辅助。通常没有能力使得应用能够将数据或视频用于其他目的。此外,通常没有灵活性允许不同的应用根据特定应用的需要将不同的传感器和不同的处理功能拼凑成数据管道。
7.因此,需要在访问并处理由传感器设备捕获的数据方面具有更大的灵活性和易用性,该访问和处理包括对相机所捕获的图像和视频的更高层级的理解。此外,需要在允许多个应用从现有(和共享)传感器和处理能力来组装定制数据管道方面,有更大的灵活性和易用性。


技术实现要素:

8.本公开通过提供一种用于将节点网络组织成数据管道的方案来克服对现有技术的限制,所述数据管道用于需要图像理解的一个或多个应用。取决于应用需求,节点可配置为形成不同的数据管道。在一些实施例中,根据节点配置数据管道的过程根据标准和/或经由标准化api来执行。
9.节点具有各种能力,这些能力可以包括对传感器功能(例如,图像捕获)和图像理解功能(例如,对象检测和识别)的访问。基于对节点的能力的描述,选择某些节点以包括在数据管道中。还确定选择的节点之间形成数据管道的互连。控制数据被传输到选择的节点,
从而形成数据管道。控制数据根据每个节点在数据管道中的角色为选择的节点指定传感器功能和/或图像理解功能,并且选择的节点之间的互连。
10.在管道中,一些节点能够访问传感器能力。它们本身可能是传感器或能够访问传感器。传感器功能作为数据管道的源来操作。这包括能够捕获图像的节点(即,相机)。数据管道从源所捕获的传感器数据生成图像数据和图像理解元数据。图像数据的示例包括所捕获的图像和/或从所捕获的图像导出的增强图像。图像理解元数据是描述图像数据的图像理解(例如,对面部或对象的检测或识别)的元数据。图像理解元数据还关联对应于图像理解的图像数据。例如,它可能包含缩略图以及指向所识别的面部或对象的视频帧的指针。在一些情况下,控制数据还指定了数据管道所产生的图像数据和图像理解元数据。
11.其他方面包括部件、设备、系统、改进、方法、过程、应用、计算机可读介质、以及与上述各项中的任一项有关的其他技术。
附图说明
12.专利或申请文件包含至少一个彩色绘图。本专利或专利申请出版物的带有一个或多个彩色附图的副本将在请求和支付必要费用后由专利局提供。
13.本公开的各实施例具有其他优点和特征,当结合附图中的示例进行考虑时,这些优点和特征根据以下具体实施方式和所附权利要求变得更加显而易见,其中
14.图1a是针对应用可配置到数据管道中的节点网络的框图。
15.图1b是节点的框图。
16.图2至图4图示了具有图像理解的数据管道的示例。
17.图5是图示了图1的节点配置到数据管道的框图。
18.图6a至图6b图示了由数据管道产生的输出数据。
19.图7是图示了中间服务的使用的框图。
20.图8是数据管道的基于标准的配置的事件迹线。
21.图9是所配置的数据管道的框图。
22.图10是具有节点内部反馈的数据管道的框图。
23.图11是具有节点之间的反馈的数据管道的框图。
具体实施方式
24.附图和以下描述仅通过说明的方式涉及优选实施例。应当指出,根据以下讨论,本文中所公开的结构和方法的备选实施例将被容易地识别为可以在没有背离所要求保护的原理的情况下采用的可行备选方案。
25.图1a是可配置到应用170的数据管道中的节点110的网络的框图。应用170的示例包括智能电话应用、云应用和网页应用。节点110可以互连到物理设备内或单独物理设备中的其他节点以实现应用170所期望的功能。
26.图1b是示例节点110的框图。节点110具有一个或多个端口,该一个或多个端口可以是输入端口112或输出端口118。它还具有换能器能力120和/或处理能力130。图1b是节点的通用框图。实际节点可能没有显示所有功能。
27.换能器120可以广泛地细分为传感器122和致动器128。传感器122将外部刺激转化
为数据。示例包括图像传感器和其他光谱传感器、麦克风、温度传感器或热量传感器、压力传感器、以及烟雾传感器和其他化学传感器。致动器128将数据转化为外部刺激。示例包括扬声器和触觉反馈。
28.在下文示例中,为了方便起见,在节点110内部示出了换能器能力。在节点110包含物理换能器的情况下,节点将能够直接访问换能器功能。然而,节点110还可以访问用于位于节点外部的换能器的换能器功能。例如,遗留相机可能与实现下文所描述的构思的标准不兼容。在那种情况下,网桥可以用作具有对相机的能力的访问的节点110。这也适用于处理功能130。
29.处理130可以广泛地细分为图像处理132和非图像处理138。图像处理132还可以细分为图像开发134和图像理解136。图像开发134是用于提高图像质量的较低层级的功能。示例包括传感器偏差校正、像素缺陷校正、渐晕补偿、暗帧减法、白平衡、去马赛克、降噪、空间滤波、色彩空间转换、色调映射、伽玛校正、对比度增强、边缘增强、像差校正、焦点调整、曝光调整、重采样、分辨率增强、高动态范围调整、以及滤色器阵列插值。
30.图像理解136是用于理解图像内容的较高层级的功能。一个示例是检测对特定对象的存在与否:检测面部、人类、动物或某些类型的动物、车辆、武器、人造结构或某些类型的结构、或文本或徽标或条形码。较高层级的示例是特定对象的标识(即,识别):标识人群中的恐怖分子、通过姓名标识个人、通过公司标识徽标、根据护照或驾驶执照或其他凭据标识个体。图像理解136的甚至更高层级的示例是基于特定对象的检测或标识的其他表征。例如,可以检测并随后分析面部以了解所表达的情绪。图像理解的其他示例包括对特定动作或活动以及特定位置或环境的检测和标识。
31.返回到图1a,节点110可以在许多不同的平台上实现,例如,嵌入在相机内、在云上执行或实现为移动应用。设备可能包含一个节点或多个节点。设备负责配置其节点。设备可以是物理设备,或者可以在服务器上或云中进行虚拟化。每个节点都是唯一可标识的。
32.在图1a中,不同的节点组110a

c由对应管理层160a

c管理,尽管这并非必需的。在该示例中,管理层160a管理a组中的节点110a1

3,管理层160b管理b组中的节点110b1

2,并且管理层160c管理c组中的节点110c1

2。
33.可以通过设备或其他方式进行分组。例如,组a可能包含相机内的所有节点110:例如,单独传感器、设备上图像处理、以及应用处理器。b组可能包含本地可访问的节点池110,诸如分布在联网在一起的设备系统中的不同功能。更复杂的图像理解形式可能基于需要显著计算资源的机器学习、深度学习和/或人工智能技术。例如,c组可能包含可用作云服务的较高层级的功能。
34.应用170将节点110组织成数据管道。数据管道包括图像捕获作为数据源。它还对所捕获的图像数据执行图像理解,并且产生描述图像理解的元数据。为了清楚起见,这将被称为图像理解元数据以区别于其他类型的元数据。例如,图像理解元数据可能会说明是否有人在场,或提供所标识的人员的姓名,或列出根据面部标识的情绪。通常,数据管道还将产生图像数据(所捕获的图像或根据所捕获的图像导出的版本),并且图像理解元数据还将关联与图像理解相对应的图像数据。例如,标识情绪的图像理解元数据也可以关联对应面部的一个或多个图像帧。
35.应用170可以在其他实体的协助下直接组装数据管道,或通过其他实体(诸如管理
层)间接组装。因为节点110可以被组织,并且然后被多次重新组织成不同数据管道,所以本文中所描述的途径提供了更好地利用节点的能力的灵活性。在一些实施例中,用于将节点组织成数据管道的过程基于诸如标准化api(应用编程接口)之类的标准。然后,多个应用170可以访问节点以构建不同数据管道并且如果节点具有足够容量,则可以同时运行它们的管道。
36.图2至图4是具有图像理解的数据管道的示例。在图2中,应用正在对人群中的人执行虹膜扫描。数据管道开始于捕获具有大视野的低分辨率彩色图像210。管道的下一阶段使用快速数码变焦来放大212感兴趣区域。这之后是面部检测和识别214(图像理解)以标识感兴趣对象。然后,确定216眼睛的位置。高倍率相机使用光学变焦和数码裁剪引导218到眼睛位置。然后,这些图像可以用于生物特征虹膜标识。图2的底部示出了数据管道所产生的图像数据。例如,该管道的元数据可能包括主题的标识。
37.在图3的示例中,应用提供对学校的监督。在该示例中,数据管道从提供教室的一般视频监督的阶段开始。该阶段针对大面积的一般监督定制。在这个阶段期间,12:00存在声音识别事件,该声音识别事件标识人员在哭。这会自动标记时间12:00的图像帧。
38.该事件触发管道级以捕获更多数据和/或提供更多处理,如图3的下部四帧所示。本文中,正常视频太暗,因此还捕获了高曝光帧。数据管道还捕获红外帧并且放大特写帧。根据这些不同的图像,数据管道中的附加级将学生标识为john,并且标识他处于悲伤的情感状态。这种图像理解由数据管道输出作为元数据面部=john和情感=悲伤,如图3所示。该元数据用于四个图像帧的集合,而非任何特定一个帧。元数据还关联了对应图像帧。
39.图4图示了其中快速帧速率允许将多个帧组合以供数据管道分析的示例。在该示例中,传感器设备的原始帧速率为每秒120个帧。在正常操作下,每四帧被捕获,并且存储为图像数据。然而,在数据管道中,一定触发之后,附加帧在不同条件下得以捕获。在该示例中,相机是3色相机,但可以对其进行过滤以有效捕获ir图像。运动检测之后,捕获附加图像:曝光增加的图像、红外图像、以及具有深度测量的帧(在该示例中,基于红外结构光)。数据管道在后期处理这些图像以检测面部或对象或执行其他类型的图像理解。
40.图5是图示了将图1的节点配置成数据管道的框图。该示例包括账户服务580,该账户服务580维护节点及其能力的列表,并且还向应用授予访问节点的权限。账户服务580可以为最终用户提供一种管理相机和其他传感器设备以及较高层级的处理的方式。
41.在一种途径中,用户指派他们能够访问他们的用户账户的设备/节点,然后将他们所选择的应用170链接到他们的账户。一旦应用170被授予访问用户账户的权限,应用170就可以请求510与用户账户及其能力相关联的设备列表。账户服务580返回512该信息并且还可以返回获得对节点的访问所需的密码、密钥或其他凭证。通常,这将是访问令牌。如果不用账户服务580,则应用170可以例如通过如在标准中指定的自动发现过程直接确定可用节点及其能力。可替代地,该信息可以在单独文件中提供。
42.基于对节点的能力的描述,应用170确定520数据管道。它选择将哪些节点包含在数据管道中,并且确定选定节点之间的互连以形成数据管道。数据管道将包括用作数据源的传感器节点,用于管道的其余部分,还将包括具有图像理解能力的节点。确定数据管道可以基于附加信息,而不仅仅是对节点的能力的描述。例如,传感器彼此之间的地理覆盖范围或接近度可以用于确定将哪些传感器包括在管道中以及如何将它们互连。
43.应用170将控制数据传输530到被选择为形成数据管道的节点110。在图5中,控制数据被传输530到管理层160(即,间接传输到节点),该管理层然后执行所请求的配置。控制数据指定每个节点的功能并且指定节点之间的互连。它还可以指定要由数据管道生成的图像数据和元数据。在一种途径中,数据管道由每个节点(汇聚节点)形成,该节点与向其供应数据的直接上游节点(源节点)建立控制会话,尽管还可以使用其他控制途径。在图5中,控制平面由虚线表示,而数据管道由粗实线示出。
44.图5中的示例数据管道并非线性的。它具有分支。节点110a1是整个数据管道的源。前向数据路径首先是从节点110a1到节点110a2。然后,它分支到节点110a3和110b2。110a3分支继续到110b1、110c1、110c2,然后540到应用170。在另一分支中,节点110b2的输出被提供540给应用170。它还馈送110c2,其中该馈送110c2与分支110a3组合。因此,存在到应用170的两个数据馈送540:一个数据馈送来自节点110b2,并且一个数据馈送来自节点110c2。
45.数据管道中的分支可以是静态的,如上文所描述的,其中来自节点110a2的数据总是流向两个分支。它也可能由关于图像理解的条件触发。例如,如果节点110a2执行一些图像理解,则数据管道可以依据图像理解的结果继续到110a3或110b2。例如,如果没有检测到武器,则某些处理发生,但如果检测到致命武器,则其他处理发生。可以在控制数据中指定触发。
46.图5中的示例数据管道还包括从节点110a2到节点110a1的反馈回路,该反馈回路是同一组中(例如,在同一设备上)的两个节点之间的反馈。该特定回路向源节点110a1提供反馈。例如,可以依据图像理解改变图像捕获设置。还可以在其他节点之间(例如,在不同设备上的节点之间)建立反馈回路。
47.图5只是一个示例。其他示例和拓扑将是显而易见的。例如,数据管道可能包括捕获不同类型的传感器数据的多个源,其中数据管道还包含基于传感器融合的图像理解功能。另外,来自相同或不同用户的多个应用170可以访问相同的节点以构建它们自己的数据管道。
48.图6a至图6b提供了由数据管道产生的数据的示例。在这些示例中,图像数据和其他原始传感器数据或增强传感器数据被称为“场景数据”。数据按时间组织成“场景镜头”。如果快照是一系列视频图像中的一个帧,则场景镜头是类似概念,但不限于单帧或仅图像。场景镜头通常还包括元数据,该元数据在图6a中分为图像理解元数据和其他类型的元数据。
49.图6a是场景镜头的框图。该场景镜头包括标题。它包括以下通用元数据:传感器设备id、scenemode(其是下文所描述的一种控制数据)、请求应用的id、时间戳、gps位置戳。
50.场景镜头的数据部分还包括场景数据,该场景数据可以包括来自两个相机的彩色视频、具有不同分辨率和帧速率的ir视频、深度测量、以及音频。在视频上下文内,场景数据的示例包括单色、彩色、红外、以及以不同分辨率和帧速率捕获的图像。非图像类型的场景数据包括音频、温度、环境照明或亮度、以及关于周围环境的其他类型的数据。场景数据可以被编码和/或加密。它们还可以通过图像开发功能得到增强,诸如传感器偏差校正、暗帧减法、白平衡、去马赛克、降噪、空间滤波、对比度增强、边缘增强等。
51.场景镜头还包括图像理解元数据:例如,运动检测和对象/人类/面部检测。这些可以采用scenemark的形式,如下文所更详细描述的。
52.该数据还具有时间方面。在传统视频中,根据视频的帧速率定期捕获新图像。视频序列中的每个图像都称为帧。同样,场景通常具有一定持续时间(尽管一些场景可以无限期地持续下去),并且随着时间的推移,捕获/生成场景的不同“样本”。为了避免混淆,场景的这些样本被称为场景镜头而非帧,因为场景镜头可能包括一个或多个视频帧。术语场景镜头是场景和快照的组合。
53.与传统视频相比较,场景镜头还可以具有更多的可变性。场景镜头可能会或可能不会以固定时间间隔产生。即使以固定时间间隔产生,时间间隔也可能随着场景的进展而改变。例如,如果在场景中检测到一些有趣东西,则可以增加场景镜头的频率。同一应用的场景镜头序列还可能包含或不包含相同类型的数据或在每个场景镜头中源自相同传感器通道的数据。例如,场景的某些部分的高分辨率变焦图像可能是期望的,或随着场景的进展,可以添加或移除附加传感器通道。作为最后一个示例,场景镜头或场景镜头内的部件可以在不同应用之间以及更广泛地共享。
54.在实践中,实际场景数据可能非常庞大。因此,该数据可能由中间软件存储或存储在云上,并且场景镜头的实际数据分组可能包含指向场景数据而非实际数据本身的指针。作为另一示例,元数据可以是动态的(即,随同每个场景镜头而被包含在内并且是可变的)。然而,如果元数据不频繁改变,则可以将其与个体场景镜头分开传输或作为单独通道传输。
55.图6b是图示了将场景镜头组织成“场景”的时间线。在该图中,时间从左进展到右。原始场景1针对学校进行课后监督的应用。针对该场景1捕获/产生场景镜头652a。场景镜头652a可以包括学校主要入口点的粗分辨率、相对较低的帧速率的视频。场景镜头652a还可以包括运动检测或可以指示潜在可疑活动的其他经处理数据。在图6b中,场景镜头由括号(n)中的数字表示,因此652a(01)是一个场景镜头,652a(02)是下一场景镜头,依此类推。
56.在场景镜头652a(01)中检测到可能可疑活动,该可能可疑活动由场景标志2标记并且孵化第二场景2。场景标志2包括指示检测到运动的图像理解元数据。这个场景2是场景1的子场景。应当指出,“子”是指孵化关系,并且在数据或时间长度方面,不意味着场景2是场景1的子集。事实上,这个场景2请求附加数据652b。也许该附加数据是面部识别。在现场检测到的个体不被识别为授权,并且这会孵化场景标记3所标记的场景3(即,子子场景3)。场景3不使用数据652b,但它使用附加数据652c,该附加数据652c例如来自位于整个现场而不仅仅是入口点的相机的更高分辨率图像。图像捕获速率也得以提高。场景标志3触发通知当局调查情形。
57.同时,另一非相关应用创建场景4。也许该应用用于远程监测学校基础设施,以用于早期检测故障或用于预防性维护。它还利用相同数据652a中的一些数据,但由不同应用用于不同目的。
58.图7是图示了使用中间服务来配置数据管道的框图。图7与图5相似,不同之处在于引入了中间服务790。应用170不直接与账户服务580或管理层160交互。相反,应用170与中介790交互,该中介790与账户服务580和管理层160交互。例如,数据服务790可以向应用170提供api以向应用提供服务。
59.在图7中,系统操作如下。数据服务790维护节点及其能力的列表。它可以周期性地请求710设备、节点及其能力的列表。账户服务580返回712该信息,而且还可以返回获得对节点的访问所需的密码、密钥或其他凭证。然后,应用170从数据服务790请求714并接收716
该信息。
60.基于对节点的能力的描述,应用170确定720数据管道。它选择将哪些节点包含在数据管道中,并且确定选定节点之间的互连以形成数据管道。然后,应用170向数据服务790传输730控制数据,该数据服务790向管理层160(即,间接地向节点)传输732对应控制数据,该管理层160然后执行所请求的配置。控制数据指定每个节点的功能并且指定节点之间的互连。它还可以指定要由数据管道生成的图像数据和元数据。
61.所得数据管道将数据740返回到数据服务790,该数据服务790将该数据提供742给请求应用170。可以配置不同的数据管道,如关于图5所描述的。
62.在上述示例中,中间服务790被描述为位于应用170与系统的其余部分之间的穿透实体。然而,数据服务790还可以提供附加功能。例如,数据服务790本身可以具有换能器或处理功能。它还可以执行来自多个节点110或多个应用170的数据的交叉分析。数据服务790还可以对来自多个应用170的数据的请求进行聚合、优先化或多路复用。设备可以被限制为一次与单个应用170交互。然而,在这种情况下,多个应用170可以与数据服务790交互,该数据服务790然后与该设备交互。
63.数据服务790还可以提供附加服务,例如,提供关于设备和节点的附加信息,诸如接近度地图或关于设备如何彼此交互的附加信息。数据服务790还将节点110从个体设备中抽象出来。与节点110交互的应用170不必与每个设备建立控制会话来配置每个节点。相反,应用170请求数据服务790配置节点110,并且数据服务790负责创建与每个节点110的控制会话。中介不必是数据服务。例如,它可以为中间软件层。
64.在一些实现方式中,用于配置数据管道的过程在标准中或通过使用标准化api来定义。图8至图11提供了标准的一个示例。在该示例中,标准中定义了大写术语,诸如汇聚、源、能力、scenedata、scenemark和scenemode。图8是数据管道的基于标准的配置的事件迹线。在该示例中并且与图1至图7进行比较,汇聚870是对应于请求应用170的节点,而源810是对应于节点110的节点。能力使用标准的语法描述节点的能力。scenemode是图5中用于配置节点的控制数据。scenedata和scenemark是数据管道所返回的数据。scenedata包含图像数据和其他传感器数据。scenemark包含图像理解元数据、以及对相关scenedata的关联。这些数据被组织成场景,场景的样本被称为场景镜头。
65.更详细地,该示例使用由标准定义的以下数据对象:
66.·
节点是数据管道的构建块。每个节点都具有唯一id。
67.·
能力是源节点能够提供的能力,诸如ai算法、所支持的scenemode、硬件传感器能力等。
68.·
scenemode是节点的配置。如果适用,则scenemode定义传感器的捕获过程、用于处理数据的计算机视觉或人工智能算法、数据输出格式等。
69.·
scenemark是由节点产生的用于描述事件的结构化输出。该节点包括节点的标识符、scenemark何时被触发的时间戳、以及触发事件的节点处理的结果。它还包含对与事件相关联的scenedata的关联。
70.·
scenedata是与触发了scenemark的事件相关联的实际数据。它可能是静止图像、视频剪辑、温度、或其他传感器数据。依据所请求的scenemode,数据可以在事件之前几秒钟开始并且在事件之后运行几秒钟。
71.能力对象用于建立节点的能力,而scenemode对象用于定义每个节点的配置以及节点之间的互连。scenemark对象和scenedata对象是由数据管道处理的数据的表示。
72.数据管道产生最终由应用消耗的scenemark对象和scenedata对象。scenemark对象可以由数据管道中的不同节点操作。这通常需要向scenemark对象添加附加字段,这些附加字段是处理来自先前节点的scenemark或scenedata的节点的结果。节点还可以生成scenedata,该scenedata是处理先前scenemark和scenedata的结果。例如,能够检测面部的节点可以从前一节点生成的scenedata中处理视频帧,并且从帧中提取与已经检测到的面部相对应的矩形。
73.数据管道的配置利用能力对象来确定节点的能力。能力对象描述节点是否包含一个或多个换能器、包括支持哪些scenemode在内的节点的处理能力、节点中的进程可以执行的分析层级、以及用于输入节点或从该节点输出数据的端口选项。使用该信息,定义节点的scenemode,包括流入和流出节点的数据以及节点是否捕获新传感器数据和/或处理从其他节点传入的数据。
74.一旦每个节点的scenemode已经被提供给每个节点,数据管道就被构建并且将根据提供给每个节点的scenemode开始产生scenemode和scenedata的序列。下文在章节a中提供了本示例标准的这些数据对象的更详细定义。
75.参考图8,如下设置数据管道。汇聚870与源810建立805控制会话。在一种方案中,控制会话的配置通过账户服务发生,该账户服务向汇聚870提供访问令牌或凭证。汇聚870使用访问令牌来与源810通信。汇聚通过向每个源发出getcapabilities请求814来确定每个源的能力。源返回816它们的能力。汇聚通过确定管道中每个节点的换能器和处理功能/配置并且确定节点之间的互连来定义820进程的数据管道。
76.汇聚发出832对应setscenemode命令。scenemode数据对象指定节点的传感器和/或图像理解功能。该配置还触发每个节点创建与数据管道中其他节点的互连。汇聚使用startscene命令单独触发834每个节点以启动scenemode。然后,数据管道使用标准中定义的scenemark和scenedata格式生成数据。汇聚消耗840节点所生成的scenemark和scenedata。数据管道操作,直至汇聚发出848stopscene命令。
77.更详细地,在一种方案中,节点可通过节点id唯一标识。节点id基于托管节点的设备的设备id,并且在托管多于一个节点的设备的情况下,为节点提供另一节点编号,该另一节点编号与设备id结合定义节点的唯一节点id。同样,对于与节点相关联的输入端口和输出端口,每个端口在节点范围内都具有唯一端口编号。设备id、节点编号和端口编号的组合定义了唯一端口id。
78.节点通常具有两个接口:控制接口和数据接口。控制接口用于配置利用节点的数据管道,其包括诸如确定节点的能力和将scenemode分发到数据管道内的节点等之类的功能。在一种实现方式中,源节点被限制为一次仅接受一个控制会话,这意味着任何节点只能由一个其他节点控制。然而,汇聚节点可以并行建立多个控制会话,从而控制多个源节点。相对于不同节点,一些节点可能同时充当源和汇聚。
79.节点使用数据接口处理并分发scenemark和scenedata。这些根据节点顺序及其在scenemode中定义的配置进行处理。节点的数据接口使得节点能够在它们之间交换数据。
80.返回到图8,汇聚节点使用节点id向源节点发送setscenemode命令832。
setscenemode确定:
81.·
要优先化的哪些数据,例如,对于scenemode=面部,对面部进行优先化。
82.·
导致生成scenemark的触发。
83.·
触发发生时生成的scenedata的类型和数量,例如,jpeg或触发前和20秒后的3秒视频或jpeg等。
84.·
节点对scenedata执行的为提取scenemark的信息的任何处理。
85.在下文的章节b中提供本示例标准所支持的命令的附加细节。
86.数据管道通过链接节点的输入和输出来构造。scenemode对象的规范包括以下项目:
87.·
一个或多个输入:每个输入都具有预期通过输入接收的数据类型的配置、其加密状态、对权限对象的关联、以及输入的源数据的源uri。每个输入还具有唯一端口id。
88.·
一个或多个输出:每个输出的配置与输入端口的配置相似。每个输出还具有唯一端口id。
89.·
一个或多个换能器:换能器是传感器或致动器。传感器的输出可以路由到一个或多个输出、(用于致动器的)输入、以及节点中的处理功能。
90.·
一个或多个过程。该过程对节点所生成的数据或从其他节点路由的数据执行分析。数据可以采用来自其他节点的scenemark或scenedata的形式。过程执行分析,并且如果达到所定义的阈值,则过程将生成触发条件,该触发条件导致根据scenemode配置生成scenemark和scenedata。
91.图9是所配置的数据管道的框图。在该示例中,节点910a包含图像传感器(换能器能力)和运动检测(过程能力)。输出scenedata是所捕获的视频。它根据节点的输出端口的配置进行编码,并且链接到节点910b上的输入端口。scenedata可以以特定目标比特率和编码机制被编码为视频流。如果检测到运动,则节点910a还产生scenemark,其中元数据指示检测到运动。节点910b内的过程被设置为“面部”scenemode,该“面部”scenemode还指定:节点将当检测到运动时执行“检测”和“识别”面部的分析层级。该过程将所得元数据附加到从节点910a接收的scenemark并且将经更新的scenemark转发到请求应用170。例如,经更新的scenemark现在可以包括基于面部来指示所检测的面部的(x、y)坐标和个体的身份的元数据。在输入端口上接收的scenedata被进一步处理以提取面部信息。例如,可以应用数码变焦和裁剪。这个scenedata还可以被转发到应用170。
92.数据管道通过将节点链接在一起来构建。节点的scenemode定义了该配置。构建管道的应用为每个节点设置scenemode,注意节点执行过程,并且从该过程的所需输出被转发到数据管道中的后续节点的输入。链接通过为所生成的端口或scenemark定义目的地并且为端口或scenemark定义源来执行。同时定义源和目的地与使用诸如mqtt之类的协议兼容,其中中间人是两个过程之间的中介。源节点向中间人上的主题贴送消息,而汇聚节点订阅来自中间人的消息。对于这种类型的连接,源节点具有其消息的目的地,而汇聚节点具有其传入消息的源。这可能会因所使用的协议而变化。
93.单个设备可以具有单个节点或具有多个节点。在设备具有多个节点的情况下,用于在设备内的节点之间传送scenedata和scenemark的方法可能为设备所专有。在一种方案中,设备内节点的scenemode的配置定义了设备内的数据的源和目的地。端口配置用于配置
数据当其在设备之间传送时的编码。
94.数据管道内的一些过程可以将结果反馈回到数据管道中较早的过程。例如,执行面部检测的过程可以将已经检测到面部的区域反馈给传感器。传感器可能会使用该信息来调适其捕获设置,以确保以最佳清晰度(焦点、曝光、变焦等)捕获所检测的面部。
95.图10是节点内部具有反馈的数据管道的框图。在该示例中,节点1010a具有检测运动的能力。该节点的scenemode被设置为使得如果检测到运动时,捕获序列被反馈回传感器。捕获序列定义传感器要捕获的帧序列的设置。这些设置可能包括其中已经检测到运动的区域以及对焦点、曝光和变焦设置的引导。捕获序列可以包括一个或多个帧。捕获序列在节点内部传送,但被定义为节点的scenemode配置的一部分。
96.图11是在节点之间具有反馈的数据管道的框图。在该示例中,节点1110b将其scenemode设置为面部,并且被配置为将传感器的捕获序列反馈给节点1110a。在该示例中,过程被设置为检测面部,并且在检测到面部时,与面部相对应的感兴趣区域被发送到传感器,以使得传感器能够优化对其中已经检测到面部的区域的捕获。
97.尽管具体实施方式包含许多细节,但这些不应被解释为限制本发明的范围,而仅应解释为说明不同示例。应当领会,本公开的范围包括上文未详细讨论的其他实施例。在没有背离所附权利要求所限定的精神和范围的情况下,可以对本文中所公开的方法和设备的布置、操作和细节进行对于本领域技术人员而言显而易见的各种其他修改、改变和变型。因此,本发明的范围应由所附权利要求及其法律等同物来确定。
98.在计算机硬件、固件、软件和/或其组合中实现备选实施例。可以在有形地体现在机器可读存储设备中以供可编程处理器执行的计算机程序产品中实现各实现方式;并且方法步骤可以由可编程处理器执行,该可编程处理器执行指令程序以通过对输入数据进行操作并且生成输出来执行功能。各实施例可以有利地在一个或多个计算机程序中实现,该一个或多个计算机程序可以在可编程系统上执行,该可编程系统包括被耦合为从数据存储系统接收数据和指令并且向该数据存储系统传输数据和指令的至少一个可编程处理器、至少一个输入设备、以及至少一个输出设备。每个计算机程序都可以高级过程或面向对象的编程语言来实现,如果需要,则可以汇编语言或机器语言来实现;并且在任何情况下,该语言都可以是编译型语言或解释型语言。例如,合适处理器包括通用微处理器和专用微处理器。通常,处理器将从只读存储器和/或随机存取存储器接收指令和数据。通常,计算机将包括用于存储数据文件的一个或多个大容量存储设备;这样的设备包括磁盘,诸如内置硬盘和可移除盘;磁光盘;以及光盘。适用于以有形方式体现计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,例如包括半导体存储器设备,诸如eprom、eeprom和闪存设备;磁盘,诸如内置硬盘和可移除磁盘;磁光盘;以及cd

rom盘。上述内容中的任一项都可以由asic(专用集成电路)和其他形式的硬件来补充或合并。
99.章节a:对数据对象的描述
100.本章节a描述了以下数据对象:
101.·
能力
102.·
scenemode
103.·
scenemark
104.·
scenedata
105.能力对象
106.能力对象定义节点能够提供的处理、换能器和端口。能力数据结构描述了节点所支持的图像、音频、数据源和数据输出的可用处理、捕获(输入)和输出。这些包括以下内容。
107.1.换能器:换能器是可以将数据转换成物理干扰的传感器或致动器(例如,扬声器)。以下是换能器的示例:
108.·
图像传感器(图像、深度或温度相机)通常输出表示一帧的二维阵列。
109.·
数据传感器(湿度传感器、温度传感器等)通常输出文本或数据结构。
110.·
音频麦克风通常会产生音频样本的连续序列。
111.·
扬声器将音频样本序列当作输入并且输出音频。
112.2.所支持的scenemode:这些是用于分析图像的所定义的模式。另请参见下文的scenemode对象。
113.3.音频处理:这可以由节点定义。它包括语音转文本的功能。
114.4.customanalysis:这允许用户定义自定义分析。作为一个示例,它可以是可以处理音频、图像或视频输入并且生成其含义由算法定义的分数向量的算法。
115.5.输入:这可以是scenedata或scenemark并且可以采用经过处理或未经处理的形式。以下可能是该过程的源:
116.·
设备内部或外部的传感器的输出。
117.·
节点在不同设备上的输出。
118.·
同一设备内不同节点的输出。
119.6.输出:输出可以是scenedata或scenemark,还可以是经过处理或未经处理的形式。
120.scenemode对象
121.scenemode确定要生成的数据。它定义了通过捕获帧并且处理所捕获的帧来优先处理哪种类型的数据。它还定义了所生成的scenemark和用于生成scenemark的触发条件。
122.例如,面部scenemode将对帧序列内的面部的捕获进行优先化。当检测到面部时,相机系统将捕获具有存在如下情况下的面部的帧,该情况即面部被正确聚焦、照亮、并且在必要时充分变焦,以使得能够在成功机会增加的情况下执行面部识别。当检测到多于一个面部时,相机可能正确地捕获尽可能多的面部。相机可能会使用具有针对视图中的面部进行优化的不同设置的多个帧。例如,对于靠近相机的面部,相机会聚焦得很近。对于更远的面部,使用数码变焦和更长的焦距。
123.可以定义以下scenemode:
124.·
面部
125.·
人类
126.·
动物
127.·
文本/徽标/条形码
128.·
车辆
129.·
对象标签。这是对所相机捕获的图像的广义标签。
130.·
定制。这是用户定义的。
131.scenemode可以生成在与其他scenemode相关联的scenemark中的数据字段。
scenemode的目的是指导图像的捕获以适应该模式并且定义用于生成如由scenemode定义的数据的工作流程。在应用层级处,应用无需深入了解设备的特定配置以及设备如何捕获图像。应用使用scenemode来指示应用对哪些类型的数据感兴趣并且哪些类型的数据对应用具有最高优先级。
132.触发条件
133.scenemode通常将具有一个或多个“触发”。触发是生成scenemark并且捕获和处理针对scenemode而定义的scenedata的条件。应用可以确定何时应该生成scenemark。
134.在一种方案中,触发基于多级图像理解模型。分析层级如下:
135.1.检测到运动:该过程能够检测视野内的运动。
136.2.检测到事项或事项消失:该过程能够检测与scenemode相关联的事项(检测到事项)或检测事项何时不再存在(事项消失)。例如,在scenemode=面部的情况下,检测到事项意指已经检测到面部。在scenemode=动物的情况下,事项消失意味着先前所检测的动物不再存在。
137.3.识别到事项:该过程能够标识所检测到的事项。例如,在scenemode=标签的情况下,“识别”意味着可以为所检测的事项加标签。在scenemode=面部的情况下,“识别”意指可以确定面部的身份。在一个版本中,scenemode配置支持基于对象的参考图像来对对象的识别。
138.4.使事项特征化:该过程能够确定事项的较高层级的特点。例如,在scenemode=面部中,“特征化”意味着所检测的面部的一些特征具有与之相关联的属性。例如,情绪或情感已经归因于所检测的面部。
139.scenemode定义触发生成scenemark所需的分析层级。例如,对于scenemode=面部,触发条件可以是检测到面部、或识别面部、或针对情感而特征化的面部。类似选项可以用于上文所列出的其他scenemode。
140.scenemark对象
141.scenemark是基于对时间相关聚合事件和/或位置相关聚合事件的图像理解的所识别的感兴趣场景的紧凑表示。scenemark可以用于提取和呈现与传感器数据的消费者相关的信息。scenemark还可以用于促进详细信息(包括原始传感器数据)的智能和高效归档/检索。在该角色中,scenemark用作非常大量传感器数据的索引。
142.scenemark对象包括以下各项:
143.·
scenemark标识符
144.·
时间戳
145.·
图像理解元数据
146.·
对对应scenedata的关联
147.当分析引擎遇到触发条件时,产生scenemark。它为触发条件提供了对scenedata和元数据的关联。scenemark的完整性由节点的分析能力确定。如果节点在最终期望较高层级的分析时只能执行运动检测,则可能会生成部分scenemark。然后,部分scenemark可以由后续处理节点完成。
148.scenedata对象
149.scenedata由一个或多个传感器设备和/或传感器模块的组捕获或提供,它包括与
场景有关的不同类型的传感器数据。scenedata不限于原始捕获的数据,而且还可能包括一些其他处理。示例包括:
150.·
rgb图像数据
151.·
ir图像数据
152.·
rgb ir图像数据
153.·
深度图
154.·
立体图像数据
155.·
音频
156.·
温度
157.·
湿度
158.·
一氧化碳
159.·
被动红外
160.scenemode定义了当触发与scenemode相关联的触发时生成的scenedata的类型和数量。例如,scenemode配置可以指示触发前的10秒视频和触发后的30秒视频被作为scenedata生成。这是在scenemode数据对象的scenedata配置字段中设置的。如果触发发生得比针对scenedata定义的时段更快,则多个scenemark可能会关联scenedata的单个视频文件。例如,在30秒内发生多次触发,并且针对每次触发而定义的scenedata为30秒。如果在这30秒内发生多次触发,则针对每次触发而生成的scenemark关联构成触发的scenedata的相同视频文件。
161.章节b:对命令的描述
162.控制接口支持以下命令:
163.·
getcapabilities。被汇聚用于获得特定源节点的能力列表。
164.·
setscenemode。汇聚将scenemode加载到源节点中。当scenemodeschedule触发scenemode或显式startscene命令被发送到节点时,scenemode变为活动。根据调度或当stopscene命令被发送到节点时,scenemode变为非活动。startscene和stopscene命令覆写调度。
165.·
setcapturesequence。该控制类别实现旨在供汇聚用于控制用于图像捕获的换能器源节点的捕获设置。捕获模式表示帧的捕获序列和每个帧的设置。例如,如果捕获模式需要4个视频帧之后的高分辨率帧,则两个控制类别被发送到传感器。第一控制类别将在捕获静止图像之前被发送,并且将指示全分辨率帧应当使用特定曝光设置、特定焦点设置等捕获。第二类别将会被发送,该第二类别指示应当捕获视频序列、序列中的帧数、数码变焦设置等。
166.·
startscene。汇聚启动scenemode。为了停止该scenemode,发出明确stopscene命令。如果scenemarkschedule中出现同一sceneid,则该命令将覆写scenemarkschedule。
167.·
stopscene。汇聚停止运行的scenemode。这可以用于停止经安排的或定期触发的scenemode。如果使用该命令停止经安排的scenemode,则只有在startscenemode命令被发送或下一经安排的时间发生时,scenemode才会重新启动。
168.·
setscenemodeschedule。汇聚设置scenemode调度以与经预先加载的scenemodes结合使用。多个scenemode可以被加载到节点中。如果该对象被加载到节点中,
则对象中列出的scenemodeid根据对象中定义的调度执行。
169.数据接口支持以下命令:
170.·
getscenedata。汇聚从源节点请求scenedata文件或清单。
171.·
setscenedata。源节点发布包含至少一个scenedata对象或对至少一个scenedata文件的关联的scenedata清单。该结构还可以用于包含或关联部分或完整的历史scenedata集合。scenedata还可以在这个数据对象中被编码。
172.·
getscenemark。汇聚从与特定scenemarkid相对应的节点请求特定scenemark。
173.·
setscenemark。源写入可以存储在节点中的scenemark。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1