一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于人脸检测的视频中央位置显示系统、方法及设备与流程

2022-06-16 07:21:52 来源:中国专利 TAG:


1.本发明涉及视频检测领域,具体涉及一种基于人脸检测的视频中央位置显示系统、方法及设备。


背景技术:

2.随着用户需求的不断增长,检测面部的中心位置(即通称的c位)变得越来越重要。
3.关于c位检测,目前有以下三种方式:
4.方式一:使用人脸检测算法,先检测到人的位置,再通过硬件转动镜头来实现对人的跟踪。这种方式需要增加硬件上的成本,即利用马达来实现镜头的转动,且应用场景比较单一。
5.方式二:使用人脸检测算法和声音定位相结合的方式,来实现人在画面中的c位显示。这种方式相对于普通产品来说,需要增加很多功能,在硬件和软件商都需要很大的时间和精力去设计。
6.方式三:使用人脸检测算法和多种ai算法结合的方式,确定人在画面中的位置、区域,再进行ai抠图来实现人在画面中的c位显示。这种方式对算法要求比较高,依赖很多ai算法的实现,需要研发人员具备很强的算法能力,并且也需要硬件有很强的算力。


技术实现要素:

7.针对上述技术缺陷,本发明实施例的目的在于提供一种基于人脸检测的视频中央位置显示系统、方法及设备。
8.为实现上述目的,第一方面,本发明实施例提供了一种基于人脸检测的视频中央位置显示系统,包括:
9.中央位置分析模块,用于获取人脸位置信息,对所述人脸位置信息进行动态分析,得到当前帧期望显示区域;
10.ptz过渡模块,用于获取当前画面显示区域,根据所述当前帧期望区域和当前画面显示区域得到下一帧显示区域;
11.图像操作模块,用于输入原始数据帧,根据所述下一帧显示区域的位置,对所述原始数据帧进行抠图及缩放操作,得到目标数据帧,并将所述目标数据帧显示于所述下一帧显示区域。
12.作为本技术的一种优选实施方式,所述中央位置分析模具体用于:
13.接入实时视频数据,通过ai检测获取人脸位置信息;
14.根据所述人脸位置信息形成最小矩形区域;
15.根据所述人脸位置信息得到人脸区域;
16.获取当前画面显示区域,根据所述人脸区域和当前画面显示区域判断所述人脸区域是否需要进行平移或缩放;
17.若需要,则根据所述最小矩形区域计算人体移动趋势值;
18.根据所述最小矩形区域和人体移动趋势值对所述当前画面显示区域进行水平移动、垂直移动、倾斜移动以及缩放,并计算出当前帧期望显示区域。
19.进一步地,在本技术的某些优选实施方式中,计算人体移动趋势值具体为:
20.计算所述最小矩形区域的中心点,计算所述中心点的方差,再根据所述方法预测人体是否有移动的趋势,从而得到所述人体移动趋势值。
21.进一步地,在本技术的某些优选实施方式中,计算出当前帧期望显示区域具体为:
22.当需要进行垂直移动时,若当前并未对人脸区域进行缩放操作,则计算最小矩形区域的中心点show_y和人脸区域的中心点central_y,根据中心点show_y和中心点central_y计算垂直移动方向和垂直移动距离,根据所述垂直移动方向和垂直移动距离得到当前帧期望显示区域;
23.当需要进行水平移动时,若当前并未对人脸区域进行缩放操作,则计算最小矩形区域的中心点show_x和人脸区域的中心点central_x,根据中心点show_x和中心点central_x计算水平移动方向和水平移动距离,根据所述水平移动方向和水平移动距离得到当前帧期望显示区域;
24.当需要进行倾斜移动时,若当前并未对人脸区域进行缩放操作,则计算最小矩形区域的中心点show_x、show_y和人脸区域的中心点central_x、central_y,根据中心点show_x和中心点central_x计算水平移动方向和水平移动距离,根据所述水平移动方向和水平移动距离得到当前帧期望显示区域。
25.第二方面,本技术实施例提供了一种基于人脸检测的视频中央位置显示方法,包括:
26.获取人脸位置信息,对所述人脸位置信息进行动态分析,得到当前帧期望显示区域;
27.获取当前画面显示区域,根据所述当前帧期望区域和当前画面显示区域得到下一帧显示区域;
28.输入原始数据帧,根据所述下一帧显示区域的位置,对所述原始数据帧进行抠图及缩放操作,得到目标数据帧,并将所述目标数据帧显示于所述下一帧显示区域。
29.第三方面,本技术实施例提供了一种基于人脸检测的视频中央位置显示设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
30.实施本发明实施例,具有如下有益效果:
31.(1)对ai算法要求不太高,基本上对于没有太强的ai算法的团队,采用普通的、支持人脸检测的ai芯片就可以快速实现不错的c位显示效果;
32.(2)扩展性强,对于其他ai算法,比如行人等,很容易实现c位效果;
33.(3)实现简单,思路清晰,对一般的硬件就可以很好的支持。
附图说明
34.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
35.图1是本技术实施例的算法实现的整体结构图;
36.图2和图3是中央位置分析模块的工作流程图;
37.图4是最小矩形区域的示意图;
38.图5a至图5f是人脸区域与画面显示区域的位置关系图;
39.图6a至图6d是人脸区域靠近显示边缘的位置关系图;
40.图7是ptz过渡模块的流程图;
41.图8是图像操作模块的流程图;
42.图9是本技术实施例提供的基于人脸检测的视频中央位置显示设备的结构图。
具体实施方式
43.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.本发明实施例提供一种基于人脸检测的视频中央位置(即c位)显示系统,如图1所示,该系统的算法实现主要由三部分组成:
45.第一部分:c位算法分析,主要是接收人脸的检测信息,对人脸的检测信息进行动态地分析,从而预判出人的显示位置。
46.第二部分:ptz过渡,主要是通过人脸显示预判位置,进行从当前位置到最终显示位置的过渡,确定当前画面应该显示的区域。
47.第三部分:图像操作,主要是通过接收当前画面显示区域,对原画面进行抠图缩放等操作,输出显示结果。
48.进一步地,对上述算法实现进行展开说明如下:
49.(1)用户输入原始数据信息,比如说rgb原始数据,以及人脸检测的坐标信息。
50.(2)c位算法部分获取到人脸检测信息后,不会立刻就进行对应的分析,需要保证人脸信息的稳定,防止某个人的检测信息在这帧视频存在,在下一帧视频不存在,从而对分析结果产生影响,以及人脸微小的位置变化导致画面抖动,影响视觉感。
51.(3)当积累一定数量的帧后,可以得到相对稳定的人脸检测信息,从而计算其最小显示区域。在多人脸和单人脸,其最小显示区域是不一样的。我们把获取到的最小显示区域存放在队列中,方便后面进行人员移动趋势估计。
52.(4)我们通过当前的最小显示区域和当前的显示区域进行比较,分析当前画面中,人物是否在画面合理的位置上,比如是否在中间,是否超出了显示区域,是否在画面中太小了等待因素,获取到移动参数:放大,缩小,水平,垂直,放大倾向,缩小倾向,水平倾向,垂直倾向(倾向的意思是在画面中靠近边缘,比如画面的最右边,最上边等)。如果分析后发现需要进行水平和缩放操作,根据之前队列中积累的最小显示区域信息,估计出人员移动的趋势,也就是这个人是在移动中还是在静止中。根据这些信息,我们统筹分析出是否需要进行水平移动,垂直移动,放大,缩小这些操作。如果需要,就进行相关操作,更新期望显示区域值。
53.(5)根据期望显示区域值,我们在ptz过渡部分,根据前后区域的对比,可以计算出
是否要进行zoom操作还是pan操作。需要注意的是,如果我们对画面移动的速度过大,会导致人体感觉很差,出现眩晕;如果移动的数据过小,会导致画面跟不上人;如果缩放比例不匹配,会导致画面抖动。所以我们对于移动速度,先快后慢,对于期望位置和实际位置差距很大时候,我们可以在一定范围内快速移动,如果很小,我们慢速移动。对于zoom,我们需要注意比例关系(显示宽/显示高=原始图像宽/原始图像的高),从而可以很好的计算出缩放比例。
54.(6)对于在确定了下一帧显示区域后,我们可以通过硬件或者软件的方式,对原始图像进行缩放、抠图操作。在实际操作中,本技术的发明人使用的是硬件加速,因为其公司的硬件设备支持这个功能。软件在速度上会消耗时间,如果cpu可以,可以考虑多线程并行计算来节省时间。最终把显示的数据帧传输至显示模块(例如hdmi显示器)进行显示。
55.基于上述算法实现架构,本发明实施例提供的基于人脸检测的视频中央位置显示系统,包括:
56.中央位置分析模块,用于获取人脸位置信息,对所述人脸位置信息进行动态分析,得到当前帧期望显示区域;
57.过渡模块,用于获取当前画面显示区域,根据所述当前帧期望区域和当前画面显示区域得到下一帧显示区域;
58.图像操作模块,用于输入原始数据帧,根据所述下一帧显示区域的位置,对所述原始数据帧进行抠图及缩放操作,得到目标数据帧,并将所述目标数据帧显示于所述下一帧显示区域。
59.下面分别对上述三个模块进行详细描述。
60.请参考图2及图3,中央位置分析模块的具体工作流程主要包括:
61.s101,接入实时视频数据,通过ai检测获取人脸位置信息。
62.在接入实时视频数据进行人脸检测中,很容易存在人脸漏检、人脸区域随着人的晃动而小范围波动等问题。如果针对这样的人脸检测结果进行分析,那么得到的分析结果就会很不稳定。因此,我们需要进行抗扰动处理。在本实施例中,选择某一合适的时间片段内的图片帧进行整体分析,作为人脸检测,具体流程是:
63.(1)首选缓存一定数量的人脸信息,比如说一秒可以检测15帧,那么缓存10帧的人脸信息。这个数值可以调节,比如根据人脸检测速率的快慢来确定具体的值。
64.(2)在缓存了一定数量的人脸信息后,算出这些帧中人脸的最大个数,根据最大个数提出不合格的数据(比如某一帧人脸漏检了),然后选取第一个合格的人脸数据作为这个时间段的人脸位置信息。
65.(3)清除其他缓存数据。
66.s102,根据人脸位置信息形成最小矩形区域。
67.前述得到的人脸位置信息实际上是坐标信息,根据坐标信息便可计算出最小矩形区域。如图4所示,图中的灰色部分即为最小矩形区域。
68.s103,根据所述人脸位置信息得到人脸区域。
69.s104,获取当前画面显示区域,根据所述人脸区域和当前画面显示区域判断所述人脸区域是否需要进行平移或缩放。
70.如图5a至图5e所示,图中圆形部分为人脸区域(也可理解为人所在的区域),内部
矩形部分为画面显示区域,外部矩形区域为屏幕显示区域,根据人脸区域和画面显示区域两者的位置关系来判断是否需要平移或缩放。
71.需要说明的是,平移和缩放一次只能做一个。
72.s105,若需要,则根据所述最小矩形区域计算人体移动趋势值。
73.除了图5a至图5e所说的几种情况,如果人脸区域靠近显示边缘,如图6a至6d所示的情况。同样地,图中圆形部分为人脸区域(也可理解为人所在的区域),内部矩形部分为画面显示区域,外部矩形区域为屏幕显示区域。在图6a至6d所示的偏离中心区域的,如果人有移动倾向,那么显示画面也是需要移动的。这样看到的就是人和画面一起移动的效果,就会有比较高的体验感。否则,屏幕显示区域是不会变的,就好比人在画面显示区域来回晃动,如果画面也跟着来回晃动,就会导致观看者眩晕。因此,我们要计算人体移动趋势值。
74.关于人体移动趋势值的计算,本实施例中缓存了几帧的人脸坐标数据,这几帧人脸坐标数据表示的就是在几个时间点,人的位置。我们计算人所在矩形框(即前述的最小矩形区域)的中心点,计算中心点的方差,便可以同构方差预测人是否有移动的趋势。
75.若人向右移动,通过人体移动趋势值,可以判断出人在向右移动,从而显示画面也跟着人移动;
76.若人在左右晃动,而不是移动,通过人体移动趋势值,可以判断出人没有移动,画面就不用移动了,避免了人不动、画动导致的用户眩晕。
77.需要说明的是,趋势值和具体的像素有关系。如果是1080p这样的像素,趋势值设置为50就可以了,如果是400万的像素,则趋势值可设置为200。具体的数值可通过测试得到。
78.s106,根据所述最小矩形区域和人体移动趋势值对所述当前画面显示区域进行水平移动、垂直移动、倾斜移动以及缩放,并计算出当前帧期望显示区域。
79.如果判断出画面需要进行水平、垂直或倾斜移动,其具体的移动方式如下:
80.一、垂直移动
81.(1)计算是否正在对人脸区域进行缩放操作,如果是,则不进行移动,反之,进行后续操作;
82.(2)计算最小矩形区域的中心点show_y;
83.(3)计算人脸最小区域的中心点central_y;
84.(4)计算垂直移动方向diff=show_y-central_y
85.移动方向direction=(diff>0向上移动-1,diff<0向下移动1)
86.(5)计算垂直距离distance=diff的绝对值
87.显示区域需要移动direction*distance
88.(6)计算出新的显示区域(期望显示区域)
89.二、水平移动
90.(1)计算是否正在对人脸区域进行缩放操作,如果是,则不进行移动,反之,进行后续操作;
91.(2)计算最小矩形区域的中心点show_x;
92.(3)计算人脸最小区域的中心点central_x;
93.(4)计算水平移动方向diff=show_x-central_x
94.移动方向direction=(diff>0向左移动-1,diff<0向右移动1)
95.(5)计算垂直距离distance=diff的绝对值
96.显示区域需要移动direction*distance
97.(6)计算出新的显示区域(期望显示区域)
98.三、倾斜移动
99.(1)计算是否正在对人脸区域进行缩放操作,如果是,则不进行移动,反之,进行后续操作;
100.(2)计算最小矩形区域的中心点show_x,show_y;
101.(3)计算人脸最小区域的中心点central_x,central_y;
102.(4)计算移动方向
103.diff_x=show_x-central_x
104.diff_y=show_y-central_y
105.direction_x=(diff_x>0向左移动-1,diff<0向右移动1)
106.direction_y=(diff_y>0向上移动-1,diff<0向下移动1)
107.(5)计算平移距离
108.(6)计算出新的显示区域(期望显示区域)
109.四、缩放
110.(1)计算是否正在对人脸区域进行缩放操作,如果是,则不进行移动,反之,进行后续操作;
111.(2)计算人脸最小区域矩形的中心点
112.假设缩放比例为min_scale-max_scale,显示窗口w,h;人脸的最小显示区域为face_min_widht,face_min_height。
113.由于人脸需要在中心位置,并且人脸最小显示区域的左右两边需要有一定的空间,否则很容易被触发人的移动倾斜,所以可以得到期望显示的face_min_widht1,face_min_height,根据face_min_widht,face_min_height计算出期望显示面积area1。
114.期望显示面积是人脸面积的x倍,这样就可以保证人脸在画面中显示得正好不大不小。根据人脸面积可以得到期望显示面积area2。选择area1和area2中最大的来作为最终的显示面积,并根据最终的显示面积可以推算出最终的宽度和高度。
115.需要说明的是,为了防止跳动,上述x应该取最小缩放阈值和最大缩放阈值的平均数,防止在放大和缩小之间来回切换。
116.请参考图7,ptz过渡模块的主要流程如下:
117.(1)首先传入的是期望显示的区域,我们根据期望显示的区域坐标(x,y,width,height)和当前的显示区域的坐标(x1,y1,width1,height1),可以判断出是pan操作还是zoom操作
118.diff_x=x

x1
119.diff_y=y

y1
120.diff_width=width

width1
121.dif_height=height

height1
122.如果diff_width或者diff_height中有一个不为0,那么这应该是个zoom操作,否
则是个pan操作。
123.(2)如果是pan操作(水平移动或者垂直移动)
124.a.首先会有个默认的速度值:default_speed_x,default_speed_y
125.b.速度计算
126.tmp1=abs(diff_x)/speed_x 1;
127.tmp2=abs(diff_y)/speed_y 1;
128.tmp=tmp1》tmp2?tmp1:tmp2(选tmp1和tmp2中大的值)
129.上面的步骤是计算我们按照默认的速度去平移,最多需要多少次才能平移完成;
130.在平移中,如果我们按照匀速去平移,会有两个问题,第一个是可能出现平移很慢的情况或者平移很快的情况,第二个就是匀速平移肉眼效果感觉一般。所以我们需要一个变动的速度来进行平移,在距离很远的时候,我们可以快速移动,在距离很近的时候,我们可以慢速移动。我们的移动速度控制在一定的范围内,不会让人肉眼感觉到太快太慢
131.speed_x=speed_x*log(abs(tmp)) 1;
132.speed_y=speed_y*log(abs(tmp)) 1;
133.通过log函数,在距离很大的时候,我们的速度会增加,但不会增加的非常大,距离很少的时候,我们的速度会减缓。并且,大部分时候,我们是匀速过程。
134.c.速度的方向
135.根据diff正负值,我们可以判断对应的方向。
136.d.根据速度向量,我们可以确定本次显示的位置
137.current_rect.x =speed_x;
138.current_rect.y =speed_y;
139.在确定x,y坐标后,为了保证显示区域不超过原始图像区域,需要做一个保护,比如说如果显示区域超过了原始图像区域,x需要适当增加或减少超出的部分。
140.(3)如果是zoom操作
141.zoom操作比较麻烦,需要x,y发生改变,width和height也要发生改变。
142.a.默认的缩放速度speed_z
143.b.计算缩放比例scale
144.scale=abs(diff_width)/speed_z
145.c.根据缩放比例,重新计算速度
146.speed_z=speed_z*log(scale)) 1
147.scale=abs(diff_width)/speed_z 1;
148.speed_x=diff_x/scale;
149.speed_y=diff_y/scale;
150.需要说明,这里的speed_x,speed_y重新进行计算,是为了保证所有的变化都按照一个比例去改变,这样的改变会很顺畅,否则会有明显的抖动。
151.d.根据速度,计算显示区域
152.current_rect.x =speed_x;
153.current_rect.y =speed_y;
154.current_rect.widht =speed_z*(diff_widht/abs(diff_widht));//diff_
widht/abs(diff_width)是方向
155.current_rect.height根据显示区域的宽高比来进行计算。
156.再请参考图8,图像操作模块的大致流程是:输入原始数据帧和下一帧显示区域,根据显示区域,对原始数据帧进行抠图、缩放操作,得到用于显示的数据帧。
157.从以上描述可以得知,实施本发明实施例的显示系统,具有如下有益效果:
158.(1)对ai算法要求不太高,基本上对于没有太强的ai算法的团队,采用普通的、支持人脸检测的ai芯片就可以快速实现不错的c位显示效果;
159.(2)扩展性强,对于其他ai算法,比如行人等,很容易实现c位效果;
160.(3)实现简单,思路清晰,对一般的硬件就可以很好的支持。
161.基于相同的发明构思,本发明实施例提供了一种基于人脸检测的视频中央位置显示方法,包括:
162.获取人脸位置信息,对所述人脸位置信息进行动态分析,得到当前帧期望显示区域;
163.获取当前画面显示区域,根据所述当前帧期望区域和当前画面显示区域得到下一帧显示区域;
164.输入原始数据帧,根据所述下一帧显示区域的位置,对所述原始数据帧进行抠图及缩放操作,得到目标数据帧,并将所述目标数据帧显示于所述下一帧显示区域。
165.进一步地,计算出当前帧期望显示区域具体为:
166.接入实时视频数据,通过ai检测获取人脸位置信息;
167.根据所述人脸位置信息形成最小矩形区域;
168.根据所述人脸位置信息得到人脸区域;
169.获取当前画面显示区域,根据所述人脸区域和当前画面显示区域判断所述人脸区域是否需要进行平移或缩放;
170.若需要,则根据所述最小矩形区域计算人体移动趋势值;
171.根据所述最小矩形区域和人体移动趋势值对所述当前画面显示区域进行水平移动、垂直移动、倾斜移动以及缩放,并计算出当前帧期望显示区域。
172.进一步地,计算人体移动趋势值具体为:
173.计算所述最小矩形区域的中心点,计算所述中心点的方差,再根据所述方法预测人体是否有移动的趋势,从而得到所述人体移动趋势值。
174.进一步地,对所述当前画面显示区域进行水平移动、垂直移动、倾斜移动以及缩放操作具体为:
175.当需要进行垂直移动时,若当前并未对人脸区域进行缩放操作,则计算最小矩形区域的中心点show_y和人脸区域的中心点central_y,根据中心点show_y和中心点central_y计算垂直移动方向和垂直移动距离,根据所述垂直移动方向和垂直移动距离得到当前帧期望显示区域;
176.当需要进行水平移动时,若当前并未对人脸区域进行缩放操作,则计算最小矩形区域的中心点show_x和人脸区域的中心点central_x,根据中心点show_x和中心点central_x计算水平移动方向和水平移动距离,根据所述水平移动方向和水平移动距离得到当前帧期望显示区域;
177.当需要进行倾斜移动时,若当前并未对人脸区域进行缩放操作,则计算最小矩形区域的中心点show_x、show_y和人脸区域的中心点central_x、central_y,根据中心点show_x和中心点central_x计算水平移动方向和水平移动距离,根据所述水平移动方向和水平移动距离得到当前帧期望显示区域。
178.可选地,对应于上述视频中央位置显示方法,本发明实施例提供了一种基于人脸检测的视频中央位置显示设备。如图9所示,该显示设备可以包括:一个或多个处理器101、一个或多个输入设备102、一个或多个输出设备103和存储器104,上述处理器101、输入设备102、输出设备103和存储器104通过总线105相互连接。存储器104用于存储计算机程序,所述计算机程序包括程序指令,所述处理器101被配置用于调用所述程序指令执行上述方法实施例部分的方法。
179.应当理解,在本发明实施例中,所称处理器101可以是中央处理单元(central processing unit,cpu),深度学习显卡(如:华为npu,英伟达gpu,谷歌tpu)该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
180.输入设备102可以包括键盘等,输出设备103可以包括显示器(lcd等)、扬声器等。
181.该存储器104可以包括只读存储器和随机存取存储器,并向处理器101提供指令和数据。存储器104的一部分还可以包括非易失性随机存取存储器。例如,存储器104还可以存储设备类型的信息。
182.具体实现中,本发明实施例中所描述的处理器101、输入设备102、输出设备103可执行本发明实施例提供的视频中央位置检测方法实施例中所描述的实现方式,在此不再赘述。
183.需要说明的是,本发明实施例中视频中央位置显示方法及其设备更为详细的工作流程及相关细节,请参考前述系统实施例部分,在此不再赘述。
184.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献