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

物体识别的方法、系统和存储介质与流程

2021-11-30 21:39:00 来源:中国专利 TAG:


1.本发明涉及视频图像处理领域,更具体地,涉及一种物体识别的方法、系统和存储介质。


背景技术:

2.我国拥有广阔的水域资源,随着经济不断发展,水上船体数量越来越多,船体检测有着迫切的实际需求。目前水上船体的检测主要依赖于从航空或卫星获取的影像,这些影像信息的获取通常需要较长的时间周期,不能进行实时的检测,因此,如何实现水上船体的实时检测是一项急需解决的问题。


技术实现要素:

3.本技术提供了一种物体识别的方法、系统和存储介质,能够实现较低成本的水上船体的实时检测。
4.第一方面,提供了一种物体识别的方法,物体识别系统包括gpu服务器和通用服务器,所述方法包括:
5.所述gpu服务器获取视频采集设备采集的视频流,将所述视频流解析为多个图像帧;利用物体识别模型对所述多个图像帧中的物体进行推理,得到所述多个图像帧中的物体的推理结果,其中,所述物体识别模块是利用标准模型迁移学习得到的,所述推理结果包括所述图像帧中的物体的物体类型;根据所述物体的推理结果在所述图像帧中添加所述物体类型的标识;根据传输控制协议tcp对添加标识的图像帧对应的数据进行封包处理,并将封包的数据发送给所述通用服务器;
6.所述通用服务器将接收到的所述封包的数据解码为所述数据对应的图像帧,并对所述图像帧进行压缩转换为目标视频流。
7.第二方面,提供了一种物体识别系统,包括:gpu服务器和通用服务器;
8.其中,所述gpu服务器包括:获取模块,视频推理模块,视频可视化模块和视频分发模块;
9.所述获取模块,用于获取视频采集设备采集的视频流,将所述视频流解析为多个图像帧;
10.所述视频推理模块,用于利用物体识别模型对所述多个图像帧中的物体进行推理,得到所述多个图像帧中的物体的推理结果,其中,所述物体识别模块是利用标准模型迁移学习得到的,所述推理结果包括所述图像帧中的物体的物体类型;
11.所述视频可视化模块,用于根据所述物体的推理结果在所述图像帧中添加所述物体类型的标识;
12.所述视频分发模块,用于根据传输控制协议tcp对添加标识的图像帧对应的数据进行封包处理,并将封包的数据发送给所述通用服务器;
13.所述通用服务器包括数据解码模块和图像压缩模块;
14.其中,所述数据解码模块用于将接收到的所述封包的数据解码为所述数据对应的图像帧;
15.所述图像压缩模块对所述图像帧进行压缩转换为目标视频流。
16.第三方面,提供了一种物体识别系统,包括:
17.处理器;以及
18.存储器,用于存储所述处理器的可执行指令;
19.其中,处理器配置为经由执行可执行指令来执行上述物体识别的方法。
20.第四方面,提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述物体识别的方法的步骤。
21.通用服务器可以为普通的云服务器,gpu服务器可以图形处理专用的云服务器,gpu服务器的成本较高,通用服务器的成本较低,将占用cpu资源较高的视频转码操作通过普通的云服务器执行,可以降低对用于执行视频推理的gpu服务器的算力要求,从而降低物体识别系统的成本。
22.对于传统的物体识别方法,对于同样算力的gpu服务器,同一时间只能处理一路4k视频,采用本技术实施例的分布式方案的物体识别方法,可以实现至少推理4路4k视频,提升了视频推理的并发数,有利于实现物体的实时检测。
附图说明
23.图1是相关技术中目标检测的检测结果的示意图。
24.图2是根据授权实施例的物体识别的方法的一种应用场景的示意图。
25.图3是本技术实施例提供的一种物体识别的方法的示意性流程图。
26.图4是根据本技术实施例的物体识别系统中的gpu服务器的功能模块示意图。
27.图5是根据本技术实施例的物体识别系统中的通用服务器的功能模块示意图。
28.图6是本技术实施例的视频推理过程的示意性流程图。
29.图7是本技术实施例的视频可视化过程的示意性流程图。
30.图8是以蓝色透明背景作为logo背景图像的示意性效果图。
31.图9是以墨绿色透明背景作为logo背景图像的示意性效果图。
32.图10是根据本技术实施例的视频分发过程的示意性流程图。
33.图11是根据本技术实施例的视频转码过程的示意性流程图。
34.图12是根据本技术实施例提供的一种物体识别系统的示意性框图。
35.图13是根据本技术实施例提供的另一种物体识别系统的示意性框图。
具体实施方式
36.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。针对本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
37.应理解,附图为本技术的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。此外,所描述的特征、结构或特性可以以任何合适的方
式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本技术的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而省略特定细节中的一个或更多,或者可以采用其他的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本技术的各方面变得模糊。
38.还应理解,附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络、处理器装置或者微控制装置中实现这些功能实体。
39.云技术(cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
40.云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
41.作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为iaas(infrastructure as a service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
42.云有多种类型,例如,私有云(private cloud),共有云(public cloud),混合云hybrid cloud)等。
43.私有云(private cloud)是将云基础设施与软硬件资源创建在防火墙内,以供机构或企业内各部门共享数据中心内的资源。创建私有云,除了硬件资源外,一般还有云设备(iaas,infrastructure as a service,基础设施即服务)软件。
44.私有云计算包含云硬件、云平台、云服务三个层次。不同的是,云硬件是用户自己的个人电脑或服务器,而非云计算厂商的数据中心。云计算厂商构建数据中心的目的是为千百万用户提供公共云服务,因此需要拥有几十上百万台服务器。私有云计算,对个人来说只服务于亲朋好友,对企业来说只服务于本企业员工以及本企业的客户和供应商,因此个人或企业自己的个人电脑或服务器已经足够用来提供云服务。
45.公有云(public cloud)通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过internet使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。这种云有许多实例,可在当今整个开放的公有网络中提供服务。
46.混合云(hybrid cloud)融合了公有云(public cloud)和私有云(private cloud),是近年来云计算的主要模式和发展方向。私有云主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。
47.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理
论、方法、技术及应用系统。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
48.机器学习(machine learning,ml)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
49.目标检测与识别是指从一幅场景(图片)中找出目标,包括检测(where)和识别(what)两个过程。在相关技术中,目标检测的可视化效果较差,如图1所示,主要在检测的目标物体上绘制一些框,并添加该目标物体的标识(logo)。
50.水上船体的检测是目标检测的一种,水上船体的识别和展示通常涉及多套云服务,直播服务,转码服务,模型训练服务,模型推理服务等,采用公有云实现会面临每个云服务的sdk不同,需要深度开发整合,研发成本高的问题,并且基于公有云,无法实现私有化场景,并且上述云服务均需要单独购买,成本较高,因此,要想实现水上船体的实时检测对于服务器资源的要求更高,因此,如何实现成本较低的水上船体的实时检测是一项急需解决的问题。
51.图2是根据本技术实施例的物体识别系统的应用场景的示意图。
52.应理解,本技术实施例的物体识别系统可以应用于水利船体的识别,实时船体的监控,船体视频结构化、道路车辆的识别或监控等,例如该物体识别系统可以为船体识别系统或船体监控系统,用于实现水利的实时监控,减少人力监控成本,也可以为实时监控告警提供核心输入,进行实时船体预警等。
53.如图2所示,物体识别系统13可以包括gpu服务器131和通用处理器132,该gpu服务器131和通用处理器132可以分担物体识别中的不同的视频处理工作。例如,可以将占用cpu资源较高的视频推理和视频转码分别由gpu服务器131和通用处理器132来执行。此情况下,gpu服务器131可称为推理服务器,通用处理器132可称为转码服务器,将视频推理和视频转码分流到不同的服务器执行,提升了推理服务器的并发数。也就是说,对于同样算力的推理服务器,可以并行对多个视频数据进行推理处理,能够实现物体的实时检测。
54.在本技术一些实施例中,通用服务器可以为普通的云服务器,gpu服务器可以图形处理专用的云服务器,gpu服务器的成本较高,通用服务器的成本较低,将占用cpu资源较高的视频转码操作通过普通的云服务器执行,可以降低对gpu服务器的算力要求,降低物体识别系统的成本。对于不采用分布式方案的物体识别方法,对于同样算力的gpu服务器,同一时间只能处理一个4k视频,采用本技术实施例的分布式方案的物体识别方法,可以实现至少推理4路视频,提升了视频推理的并发数,有利于实现物体的实时检测。
55.结合图2说明本技术一个实施例的物体的识别和展示的过程。
56.如图2所示,首先,视频采集设备11(例如摄像头)采集待检测场景(例如,特定海域,或特定水域)中的视频数据。该视频采集设备11采集的视频数据可以通过实时消息传输协议(real time messaging protocol,rtmp)推流至第一流媒体服务器12(或称,推流服务器)。
57.进一步地,该物体识别系统13可以从该第一流媒体服务器12获取待识别的视频数据,并对该视频数据进行处理。
58.物体识别系统13对视频数据的处理可以包括如下内容:视频推理,图像可视化,视频分发、视频转码等。其中,视频推理可以包括检测视频数据中的目标物体,确定目标物体的类型,图像可视化可以包括对检测到的目标物体添加类型对应的标识(logo),视频转码包括对添加logo的视频进行转码,例如转码为客户端15可播放的视频格式,例如flv格式。
59.具体地,物体识别系统13可以将对获取的视频数据进行视频推理、视频转码等处理得到的视频流推流至第二流媒体服务器14(或称,直播服务器)。进一步地,用户可以在第二流媒体服务器14对应的客户端15播放该视频流。例如,客户端可以根据预设的浏览器访问地址,获取该视频流,从而进行视频流的播放。
60.应理解,本技术实施例的物体识别方法可以应用于水利船体的识别,实时船体的监控,船体视频结构化、道路车辆的识别或监控等系统中,例如可作为船体监控系统,完成水利实时监控,减少人力监控成本,也可以为实时监控告警提供核心输入,进行实时船体预警等。
61.以下实施例中以对水上船体进行识别为例进行说明,但本技术并不限于此。
62.图3示出了根据本技术实施例的物体识别的方法20的示意性流程图,该方法20可以应用于图2中的物体识别系统。
63.其中,该物体识别系统包括gpu服务器和通用服务器。该gpu服务器和通用服务器分别用于执行物体识别中不同的操作。在以下实施例中,将从gpu服务器和通用处理器的角度进行描述各自所执行的操作。
64.为便于理解和描述,如图4所示,按照gpu服务器所执行的操作,可以将该gpu服务器划分为如下功能模块:获取模块,视频推理模块,视频可视化模块和视频分发模块。
65.为便于理解和描述,如图5所示,按照通用处理器所执行的视频处理操作,可以将该通用处理器划分为数据解码模块和图像压缩模块。
66.应理解,本技术实施例中的gpu服务器和通用处理器可以指单一的服务器,或者也可以指服务器集群,例如,通用服务器可以通过服务器集群实现。本技术对此不作限定。
67.参见图3,该方法20可以包括如下中的至少部分内容:
68.s21,gpu服务器获取视频采集设备采集的视频流,将视频流解析为多个图像帧。该s21可以由该gpu服务器的获取模块执行。
69.可选地,该视频采集设备例如可以为图2中的摄像头,或者也可以为其他具有摄像头的设备,例如无人机设备等,本技术并不限于此。
70.该视频采集设备采集视频流之后,进一步可以将该视频流推流给流媒体服务器(例如,图2中的第一流媒体服务器12),例如,视频采集设备可以通过rtmp协议将采集的视频流推流至流媒体服务器。
71.在一些实施例中,该gpu服务器可以通过opencv拉取该流媒体服务器中的视频流,该视频流可以是通过rtmp协议传输至该gpu服务器的。
72.进一步地,该gpu服务器可以对该视频流进行推理前的处理,例如将该视频流解析为多个图像帧。
73.s22,利用物体识别模型对多个图像帧中的物体进行推理,得到多个图像帧中的物
体的推理结果。该s22可以由该gpu处理器中的视频推理模块执行。
74.在一些实施例中,该物体识别模型可以是基于标准模型迁移学习得到的,该标准模型例如可以为yolo模型,或者ssd(single shot detection)模型等。
75.yolo模型是一种深度学习神经网络,yolo模型将物体检测作为回归问题求解。基于一个单独的端到端(end

to

end)网络,完成从原始图像的输入到物体位置和类别的输出。
76.ssd:一种深度学习神经网络,ssd是一个流行且强大的目标检测网络,网络结构包含了基础网络(base network),辅助卷积层(auxiliary convolutions)和预测卷积层(predicton convolutions)。
77.在一些实施例中,以船舰样本库作为训练集,对该船舰样本库中的船体进行标注,进一步将标注的训练集输入至预训练好的模型,采用迁移学习方式训练得到该船体识别模型。
78.图像帧的分辨率越高对于gpu服务器的算力要求越高,推理的复杂度也越高。在实际应用中,船体的运动速度通常较慢,即相邻的几个图像帧中的船体的位置差异不大,因此,可以根据待推理的图像帧的分辨率,配置推理频率,即每x个图像帧执行一次推理,进一步基于该推理频率进行推理,有利于满足视频推理的实时性要求。
79.其中,x和图像帧的分辨率正相关,即图像帧的分辨率越大,x越大,图像帧的分辨率越小,x越小。
80.作为示例,若图像帧的分辨率为1080p,可以配置x为2,即每两帧推理一次,若图像帧的分辨率为4k,可以配置x为5,即每5帧推理一次。
81.在一些实施例中,物体的推理结果包括物体的物体类型,以物体为船体为例,该物体类型例如是渔船,运砂船,军舰等。
82.在一些实施例中,物体的推理结果还可以包括物体的位置坐标,例如左上角坐标和右下角坐标,或者,左下角坐标和右上角坐标等。
83.在一些实施例中,物体的推理结果还可以包括该物体为推理的物体类型的置信度。例如置信度的取值可以在0至1之间,取值越接近于0,表示该物体为推理的物体类型的概率越低,取值越接近于1,表示该物体为推理的物体类型的概率越高。
84.在一些实施例中,在对图像帧进行可视化处理之前,可以过滤掉置信度低于第一阈值的推理结果,即对于置信度低于第一阈值的推理结果不作为物体识别的识别结果,能够提升物体识别的准确度。
85.作为示例而非限定,该第一阈值可以为0.25,0.3等。
86.结合图6,以水上船体识别为例,说明s21和s22的具体实现过程。
87.s221,拉取待推理的视频流,并将该视频流转换为图像帧。
88.例如,通过opencv拉取流媒体服务器中的视频流,进一步将该视频流解析为多个图像帧。
89.s222,加载训练好的船体识别模型。
90.其中,该船体识别模型可以是采用标准模型迁移学习得到的。
91.s223,配置推理所使用的图像帧数,即推理频率,或者说,多少个图像帧执行一次推理。
92.具体地,可以通过分析水利船体的视频特性,例如图像的分辨率,船体的运动特性等,确定推理所使用的图像帧数。
93.在一些实施例中,推理所使用的图像帧数x和图像帧的分辨率正相关,即图像帧的分辨率越大,x越大,图像帧的分辨率越小,x越小。根据图像帧的分辨率配置相应的推理频率,有利于满足推理的实时性要求。
94.例如,若图像帧的分辨率为1080p,每2个图像帧推理一次能够满足实时性要求,若图像帧的分辨率为4k,每5个图像帧推理一次能够满足实时性要求。
95.s224,利用船体识别模型,根据所配置的图像帧数对图像帧进行推理,得到船体的推理结果。
96.在一些实施例中,船体的推理结果包括船体类型、船体的位置坐标和置信度。
97.s225,过滤掉置信度低于第一阈值的推理结果。
98.置信度越低,表示船体为推理的船体类型的概率较低,过滤掉这些推理结果,能够提升船体识别的准确度。
99.继续参见图3,在得到推理结果之后,进一步地,在s23中,根据船体的推理结果在图像帧中添加船体类型的标识(logo)。
100.在本技术一些实施例中,如图7所示,s23可以包括:
101.s231,根据物体的位置坐标绘制物体框。
102.例如,物体的推理结果包括物体框的左上角和右下角坐标,因此,可以根据物体框的左下角和右下角坐标绘制物体框。
103.在一些实施例中,可以根据推理的所有物体的位置坐标计算所有需要绘制的直线,然后一次绘制,能够降低物体识别的时间消耗。
104.s232,根据物体框的位置和物体类型的标识的大小,确定物体类型的标识的目标位置。
105.在实际应用中,由于物体是运动的,所以物体在图像帧中的位置是不确定的,所以将物体和对应的logo设置为固定的相对位置,在一些场景中可能不符合用户的观看习惯,因此,在本技术实施例中,可以根据物体框的位置和物体类型的logo的大小,动态调整logo的位置。
106.在本技术一些实施例中,该s232可以包括:
107.根据物体框的位置,确定物体类型的标识的预选位置;
108.根据物体类型的标识的预选位置和物体类型的标识的大小,确定物体类型的标识的目标位置。
109.例如,若物体框位于图像帧的中间区域,logo的预选位置可以为对应物体的左侧位置或右侧位置,更具体地,物体的左上位置或右上位置。
110.又例如,若物体框位于图像帧中的左侧区域,logo的预选位置可以为对应物体的右侧位置,更具体地,物体的右上位置。
111.再例如,若物体框位于图像帧中的右侧区域,logo的预选位置可以为对应物体的左侧位置,更具体地,物体的左上位置。
112.在本技术一些实施例中,该根据物体类型的标识的预选位置和物体类型的标识的大小,确定物体类型的标识的目标位置,可以包括:
113.若logo的预选位置为对应物体的左侧位置,并且logo的大小超出图像帧的左侧,确定物体的右侧位置为logo的目标位置;或者
114.若logo的预选位置为对应物体的右侧位置,并且logo的大小超出图像帧的右侧,确定物体的左侧位置为logo的目标位置;或者
115.若logo的预选位置为对应物体的左侧位置,并且logo的大小未超出图像帧的左侧,确定物体的左侧位置为logo的目标位置;或者
116.若logo的预选位置为对应物体的右侧位置,并且logo的大小未超出图像帧的右侧,确定物体的右侧位置为logo的目标位置。
117.具体而言,以logo的预选位置为对应物体的左上位置为例,在一些场景中,若物体从左侧驶入该图像帧,若将logo绘制对应物体的左上位置,该logo的大小会超出该图像帧的左侧,影响显示效果,此情况下,可以将物体的右侧位置,例如右上位置作为logo的目标位置。在另一些场景中,若物体从右侧驶出该图像帧,若将logo绘制该物体的右上位置,该logo会超出该图像帧的右侧,影响显示效果,此情况下,可以将物体的左侧位置,例如左上位置作为logo的目标位置。
118.综上,在本技术实施例中,图像帧中的logo和对应物体的相对位置可以是根据物体在图像帧的位置以及logo的大小灵活调整的。例如,对于位于图像帧的左侧边缘区域的物体,该物体的logo可以绘制于物体的右侧位置,例如右上位置,对于位于图像帧的右侧边缘区域的物体,该物体的logo可以绘制于物体的左侧位置,例如左上位置,对于处于图像帧的中间区域的物体,该物体的logo可以绘制于物体的左侧位置,例如左上位置,或者也可以绘制于物体的右侧位置,例如右上位置。
119.在图像帧上直接绘制物体类型的logo会覆盖一部分的图像,可视化效果差,为了提升图像的可视化效果,在本技术实施例中,可以将logo的目标位置的图像和logo进行图像融合,进一步将融合的图像绘制在图像帧上,从而达到提升图像的可视化效果的目的。继续参见图7,具体可以包括如下步骤:
120.s233,剪裁标识的目标位置在图像帧中对应的图像作为背景图像。
121.例如,若logo的目标位置为对应物体的左上位置,可以裁剪物体的左上位置的图像作为背景图像。
122.又例如,若logo的目标位置为对应物体的右上位置,可以裁剪物体的右上位置的图像作为背景图像。
123.s234,将背景图像和标识融合,得到目标标识图像。
124.图像融合(image fusion)是用特定的算法将两幅或多幅图像综合成一幅新的图像。融合结果能利用两幅(或多幅)图像在时空上的相关性及信息上的互补性,并使得融合后得到的图像对场景有更全面、清晰的描述,从而能够提示图像的可视化效果。
125.s235,将目标标识图像绘制到logo的目标位置。
126.通过将logo的目标位置的图像作为背景图像,将背景图像和logo进行融合,进一步将融合后的图像绘制在该logo的目标位置,能够提升图像的可视化效果。
127.在本技术一些实施例中,该s235可以包括:
128.若logo的预选位置为对应物体的左侧位置,并且logo的大小超出图像帧的左侧,即logo的目标位置为对应物体的右侧位置,将目标标识图像绘制到物体的右侧;或者
129.若logo的预选位置为对应物体的右侧位置,并且logo的大小超出图像帧的右侧,即logo的目标位置为对应物体的左侧位置,将目标标识图像绘制到物体的左侧;或者
130.若logo的预选位置为对应物体的左侧位置,并且logo的大小未超出图像帧的左侧,即logo的目标位置为对应物体的左侧位置,将目标标识图像绘制到物体的左侧;或者
131.若logo的预选位置为对应物体的右侧位置,并且logo的大小未超出图像帧的右侧,即logo的目标位置为对应物体的右侧位置,将目标标识图像绘制到物体的右侧。
132.在一些实施例中,该s23可以通过如下代码实现:
133.[0134][0135]
如前述实施例所述,在本技术一些实施例中,可以融合logo的目标位置的背景图像得到目标logo图像,在其他实施例中,也可以将logo融合其他图像作为目标logo图像,例如,该其他图像可以是用户在多个预设图像中选择的,因此,本技术实施例可以根据用户需求定制logo的背景图像。比如,作为logo的背景图像的候选图像可以为特定颜色的透明图像,用户可以根据系统背景选择特定颜色的透明图像作为logo的背景图像,从而提升logo显示的视觉效果。图8和图9分别示出了采用蓝色透明背景和墨绿色透明背景作为logo的背景图像的效果图。s24,根据传输控制协议tcp对添加标识的图像帧对应的数据进行封包处理。
[0136]
s25,将封包的数据发送给通用服务器。
[0137]
s26,通用服务器将接收到的所述封包的数据解码为所述数据对应的图像帧,并对所述图像帧进行压缩转换为目标视频流。
[0138]
该s24和s25可以由gpu服务器的视频分发模块执行。该s26可以由通用处理器的数据解码模块和图像压缩模块执行。基于上述步骤s21至s23得到添加logo的图像帧之后,进
一步地,可以将该图像帧分发给通用处理器,由该通用处理器执行后续的视频处理,例如视频转码处理。
[0139]
在本技术一些实施例中,gpu服务器和通用服务器之间可以通过tcp协议进行数据传输。
[0140]
具体地,该gpu服务器和通用服务器之间的数据传输可以基于套接字(socket)实现。其中,gpu服务器作为socket的服务端,通用处理器作为socket的客户端。
[0141]
结合图10说明上述s24和s25的具体实现过程。如图10所示,可以包括如下步骤:
[0142]
s241,gpu服务器启动socket作为服务端进行监听,等待与客户端建立连接。
[0143]
s242,将添加融合图像的logo的图像帧的数据封包。
[0144]
具体地,gpu服务器在接收到客户端发送的连接请求后,将添加融合图像的logo的图像帧对应的数据进行封包,例如,根据tcp的协议格式将添加融合图像的logo的图像帧对应的数据进行封包。
[0145]
在一些实施例中,gpu服务器可以根据图像帧的分辨率,调整socket缓冲区的大小,以提升gpu服务器的处理性能。
[0146]
对于分辨率为4k或1080p的图像帧,每个图像帧的占用空间比较大,例如,对于分辨率为1920*1080的一个图像帧,占用1920*1080*3=6220800字节,对于每秒传输帧数(frame per second,fps)为25的视频流来说,一秒钟约占用140mb带宽,在进行数据传输的时候,因此,需要调高socket缓冲区的大小以提升gpu服务器的处理性能。
[0147]
s243,将封包的数据发送给客户端。
[0148]
具体地,根据tcp协议将封包的数据发送给客户端。
[0149]
如图11所示,s26可以包括如下步骤:
[0150]
s261,通用服务器作为socket的客户端向socket的服务端(即gpu服务器)发起连接请求,与服务端建立连接。
[0151]
s262,接收gpu服务器作为socket的服务端所发送的封包的数据包,并将封包的数据包解码为图像帧。
[0152]
s263,对解码的图像帧进行压缩处理。
[0153]
具体地,可以将图像帧压缩为h264格式,例如通过ffmpeg将图像帧压缩为h264格式,进一步转换为目标格式的视频流,例如flv格式。
[0154]
其中,ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
[0155]
进一步地,将该目标格式的视频流推流到流媒体服务器,例如,图2中的第二流媒体服务器14,用于播放该视频流的客户端(例如图2中的客户端15)从流媒体服务器获取该视频流,然后播放该视频流。
[0156]
由于图像压缩操作对cpu的占用较高,在一些实施例中,可以根据图像帧的分辨率配置对应分辨率的线程数,进一步采用多线程实现视频的压缩,能够提升图像压缩的效率,降低物体识别的时间消耗。
[0157]
在本技术一些实施例中,通用服务器可以为普通的云服务器,gpu服务器可以图形处理专用的云服务器,gpu服务器的成本较高,通用服务器的成本较低,将占用cpu资源较高的视频转码操作通过普通的云服务器执行,可以降低对gpu服务器的算力要求,降低物体识
别系统的成本。对于不采用分布式方案的物体识别方法,对于同样算力的gpu服务器,同一时间只能处理一个4k视频,采用本技术实施例的分布式方案的物体识别方法,可以实现至少推理4路视频,提升了视频推理的并发数,有利于实现物体的实时检测。
[0158]
在一些实施例中,该s26可以通过如下代码实现:
[0159]
[0160]
[0161][0162]
综上,本技术实施例通过将视频推理和视频压缩操作分流,降低视频转码服务器成本,由通用服务器即可完成视频转码服务,提升了推理服务器的并发数,可以支持多路视频。经过测试一台普通的tesla t4 16g显存上,如果不用分布式方案只能推理一个4k视频,采用本技术的分布式方案后可以推理至少4路视频。并且,通过分析物体的视频特性,设置用于推理的图像帧数,可以实现高清视频的物体的实时识别。并且,通过采用图像融合的方式进行logo的绘制,提升了可视化效果,该logo可以根据用户需求定制化设置,可以为与客户系统适配提供支持,提升用户体验。
[0163]
上文结合图3至图11,详细描述了本技术的方法实施例,下文结合图12至图13,详细描述本技术的装置实施例,应理解,装置实施例与方法实施例相互对应,类似的描述可以参照方法实施例。
[0164]
图12是根据本技术实施例的一种物体识别系统1100的示意性结构图,如图12所示,该物体识别系统1100可以包括:gpu服务器1110和通用服务器1120;其中,该gpu服务器1110包括:获取模块1111,视频推理模块1112,视频可视化模块1113和视频分发模块1114;
[0165]
该获取模块1111,用于获取视频采集设备采集的视频流,将该视频流解析为多个图像帧;
[0166]
该视频推理模块1112,用于利用物体识别模型对该多个图像帧中的物体进行推理,得到该多个图像帧中的物体的推理结果,其中,该物体识别模块是利用标准模型迁移学习得到的,该推理结果包括该图像帧中的物体的物体类型;
[0167]
该视频可视化模块1113,用于根据该物体的推理结果在该图像帧中添加该物体类型的标识;
[0168]
该视频分发模块1114,用于根据传输控制协议tcp对添加标识的图像帧对应的数据进行封包处理,并将封包的数据发送给该通用服务器;
[0169]
该通用服务器1120包括数据解码模块1121和图像压缩模块1122;
[0170]
其中,该数据解码模块1121用于将接收到的该封包的数据解码为该数据对应的图像帧;
[0171]
该图像压缩模块1122对该图像帧进行压缩转换为目标视频流。
[0172]
在本技术一些实施例中,该推理结果还包括该物体的位置坐标,该视频可视化模块1113具体用于:
[0173]
根据该物体的位置坐标绘制物体框;
[0174]
根据该物体框的位置和该物体类型的标识的大小,确定该物体类型的标识的目标位置;
[0175]
剪裁该标识的目标位置在该图像帧中对应的图像作为背景图像;
[0176]
将该背景图像和该标识进行融合,得到目标标识图像;
[0177]
将该目标标识图像绘制到该标识的目标位置。
[0178]
在本技术一些实施例中,该视频可视化模块1113还用于:
[0179]
根据该物体框的位置,确定该物体类型的标识的预选位置;
[0180]
根据该物体类型的标识的预选位置和该物体类型的标识的大小,确定该物体类型的标识的目标位置。
[0181]
在本技术一些实施例中,该视频可视化模块1113还用于:
[0182]
若该标识的预选位置为对应物体的左侧位置,并且该标识的大小超出该图像帧的左侧,确定该物体的右侧位置为该标识的目标位置;或者
[0183]
若该标识的预选位置为对应物体的右侧位置,并且该标识的大小超出该图像帧的右侧,确定该物体的左侧位置为该标识的目标位置;或者
[0184]
若该标识的预选位置为对应物体的左侧位置,并且该标识的大小未超出该图像帧的左侧,确定该物体的左侧位置为该标识的目标位置;或者
[0185]
若该标识的预选位置为对应物体的右侧位置,并且该标识的大小未超出该图像帧的右侧,确定该物体的右侧位置为该标识的目标位置。
[0186]
在本技术一些实施例中,该视频可视化模块1113还用于:
[0187]
若该标识的预选位置为对应物体的左侧位置,并且该标识的大小超出该图像帧的左侧,将该目标标识图像绘制到该物体的右侧;或者
[0188]
若该标识的预选位置为对应物体的右侧位置,并且该标识的大小超出该图像帧的右侧,将该目标标识图像绘制到该物体的左侧;或者
[0189]
若该标识的预选位置为对应物体的左侧位置,并且该标识的大小未超出该图像帧的左侧,将该目标标识图像绘制到该物体的左侧;或者
[0190]
若该标识的预选位置为对应物体的右侧位置,并且该标识的大小未超出该图像帧的右侧,将该目标标识图像绘制到该物体的右侧。
[0191]
在本技术一些实施例中,所述推理结果还包括所述物体为所述物体类型的置信度,所述视频推理模块1112还用于:
[0192]
丢弃所述物体为所述物体类型的置信度小于第一阈值的推理结果。
[0193]
在本技术一些实施例中,所述视频推理模块1112还用于:
[0194]
根据所述多个图像帧的分辨率,确定推理频率,其中,所述推理频率表示每x个图像帧执行一次推理,所述图像帧的分辨率和所述x正相关;
[0195]
按照所述推理频率对所述多个图像帧中的物体进行推理。
[0196]
在本技术一些实施例中,所述视频分发模块1114还用于
[0197]
启动套接字监听所述通用服务器发送的连接请求;
[0198]
在接收到所述通用服务器发送的连接请求的情况下,根据tcp对添加标识的图像帧对应的数据进行封包处理。
[0199]
在本技术一些实施例中,所述视频分发模块1114还用于:
[0200]
根据该多个图像帧的分辨率,配置用于数据传输的套接字缓存区的大小。
[0201]
在本技术一些实施例中,所述图像压缩模块1122还用于:
[0202]
根据所述图像帧的分辨率,配置进行图像压缩所采用的线程数;
[0203]
采用所述线程数的线程对所述图像帧进行压缩。
[0204]
需要说明的是,本技术实施例中的物体识别系统1100中各模块的功能可对应参考上述各方法实施例中图3至图10任意实施例的具体实现方式,这里不再赘述。
[0205]
因此,基于本技术实施例的物体识别系统,通过将视频推理和视频压缩操作分流
到gpu处理器和通用处理器执行,提升了推理服务器的并发数。并且,将视频压缩分流从gpu服务器分流出去后,可以充分利用空闲的通用服务器来完成视频压缩操作,不需要通过昂贵的gpu资源进行视频转码,能够降低物体识别系统的成本。并且,通过分析物体的视频特性,设置用于推理的图像帧数,可以实现高清视频的物体的实时识别。并且,通过采用图像融合的方式进行logo的绘制,提升了可视化效果,该logo可以根据用户需求定制化设置,可以为与客户系统适配提供支持,提升用户体验。
[0206]
上述物体识别系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各个模块可以以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行上述各个模块对应的操作。
[0207]
图13为本技术实施例提供的物体识别系统的又一示意性结构图,如图13所示,物体识别系统1200可以包括:通信接口1201,存储器1202,处理器1203,处理器1205和通信总线1204。通信接口1201,存储器1202,处理器1203,处理器1205通过通信总线1204实现相互间的通信。通信接口1201用于物体识别系统1200与外部设备进行数据通信。存储器1202可用于存储软件程序以及模块,处理器1203、处理器1205通过运行存储在存储器1202的软件程序以及模块,例如前述方法实施例中的相应操作的软件程序。
[0208]
在一些实施例中,处理器1203可以为gpu处理器,处理器1205可以为通用处理器,该处理器1203和处理器1205分别对应独立的存储器,处理器1203、处理器1205通过运行对应的存储器中的软件程序以及模块执行前述实施例中gpu服务器和通用服务器对应的操作。
[0209]
例如,该处理器1203可以调用存储在存储器的软件程序以及模块执行如下操作:获取视频采集设备采集的视频流,将所述视频流解析为多个图像帧;利用物体识别模型对所述多个图像帧中的物体进行推理,得到所述多个图像帧中的物体的推理结果,其中,所述物体识别模块是利用标准模型迁移学习得到的,所述推理结果包括所述图像帧中的物体的物体类型;根据所述物体的推理结果在所述图像帧中添加所述物体类型的标识;根据传输控制协议tcp对添加标识的图像帧对应的数据进行封包处理,并将封包的数据发送给处理器1205。
[0210]
例如,该处理器1205可以将接收到的所述封包的数据解码为所述数据对应的图像帧,并对所述图像帧进行压缩转换为目标视频流。
[0211]
在一些实施例中,本技术还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0212]
本技术实施例还提供了一种计算机可读存储介质,用于存储计算机程序。该计算机可读存储介质可应用于计算机设备,并且该计算机程序使得计算机设备执行本技术实施例中的物体识别的方法中的相应流程,为了简洁,在此不再赘述。
[0213]
本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得计算机设备执行本技术实施例中的物体识别的方法中的相应流程,为了简洁,在此不再赘述。
[0214]
本技术实施例还提供了一种计算机程序,该计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该
计算机指令,处理器执行该计算机指令,使得计算机设备执行本技术实施例中的物体识别的方法中的相应流程,为了简洁,在此不再赘述。
[0215]
应理解,本技术实施例的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用服务器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用服务器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0216]
可以理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read

only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0217]
应理解,上述存储器为示例性但不是限制性说明,例如,本技术实施例中的存储器还可以是静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)以及直接内存总线随机存取存储器(direct rambus ram,dr ram)等等。也就是说,本技术实施例中的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0218]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0219]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、
装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0220]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0221]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0222]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0223]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0224]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
再多了解一些

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

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

相关文献