CN113221706A - 基于多进程的多路视频流的ai分析方法及系统 - Google Patents
基于多进程的多路视频流的ai分析方法及系统 Download PDFInfo
- Publication number
- CN113221706A CN113221706A CN202110483790.3A CN202110483790A CN113221706A CN 113221706 A CN113221706 A CN 113221706A CN 202110483790 A CN202110483790 A CN 202110483790A CN 113221706 A CN113221706 A CN 113221706A
- Authority
- CN
- China
- Prior art keywords
- writing
- detection result
- picture
- camera
- shared memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 192
- 238000004458 analytical method Methods 0.000 title claims abstract description 37
- 238000001514 detection method Methods 0.000 claims abstract description 197
- 230000008569 process Effects 0.000 claims abstract description 158
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000004891 communication Methods 0.000 claims description 27
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 238000007405 data analysis Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 4
- 238000005520 cutting process Methods 0.000 claims description 3
- 238000009432 framing Methods 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 abstract description 9
- 238000003860 storage Methods 0.000 abstract description 6
- 238000013461 design Methods 0.000 abstract description 4
- 238000013473 artificial intelligence Methods 0.000 description 26
- 238000012544 monitoring process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Multimedia (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于多进程的多路视频流的AI分析方法及系统,所述方法包括以下步骤:创建共享内存以及多个管道;通过多线程取视频流,保存待检测图片在共享内存中;加载目标检测模型,读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道;基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中。本发明针对于检测耗时长的问题,设计了三个进程分别进行取流、目标检测、写数据库,保证目标检测模型可以全速运行,提高GPU的使用效率;在取流进程中为每路摄像头开启一个线程进行抽帧解码,在写数据库进程创建线程池加快AI分析分析结果的存储和推送。
Description
技术领域
本发明属于人工智能(Artificial Intelligence,AI)领域,涉及计算机数字图像处理与模式识别技术领域,特别涉及一种基于多进程的多路视频流的AI分析方法及系统。
背景技术
随着视频监控的推广普以及信息存储技术的提升,人们对监控视频价值的发掘十分迫切,如何实现对诸多监控视频的实时分析至关重要。以油气田视频监控平台为例,存在严重的告警冗余、误告警频繁以及告警数据沉默等问题,即视频监控中的告警信息不明确,有效告警内容占比少,重复告警数量庞大,并且无法对告警数据进行分类、统计和分析。
随着深度学习技术的发展,现有技术可以对视频监控平台中告警事件进行智能识别。目前的视频AI分析方法主要是单进程实现的,首先对视频流进行抽帧解码,然后对图片进出预处理并送入目标检测模型得到检测结果,最后将绘制结果图并写入数据库。抽帧解码、图片预处理、写数据库等操作耗时久且主要消耗CPU资源,这导致目标检测模型需要等待数据送入,不能全速运行,不仅极大拉长了检测耗时,也导致GPU的利用率大大下降。
此外,目前的视频AI分析方法没有对多路高清视频流的并行处理问题进行优化,不能够实现多路高清视频流的实时AI分析。
发明内容
本发明的目的在于提供一种基于多进程的多路视频流的AI分析方法及系统,以解决上述存在的一个或多个技术问题。本发明针对于检测耗时长的问题,设计了三个进程分别进行取流、目标检测、写数据库,保证目标检测模型可以全速运行,提高GPU的使用效率,即目标检测进程不需等待实时视频流的读取以及CPU分析输出数据;针对多路高清视频流的并行处理问题,在取流进程中为每路摄像头开启一个线程进行抽帧解码,在写数据库进程创建线程池加快AI分析分析结果的存储和推送。
为达到上述目的,本发明采用以下技术方案:
本发明的一种基于多进程的多路视频流的AI分析方法,包括以下步骤:
创建共享内存以及多个管道,用于取流进程、目标检测进程和写数据库进程的跨进程通信;
取流进程:通过多线程取视频流,保存待检测图片在共享内存中;
目标检测进程:加载目标检测模型,读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道;
写数据库进程:基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中。
本发明的进一步改进在于,所述创建共享内存以及多个管道用于取流进程、目标检测进程和写数据库进程的跨进程通信的步骤具体包括:
创建第一共享内存用于取流进程与目标检测进程之间的通信;其中,由取流进程向共享内存写入数据以供目标检测进程访问;
创建第二共享内存用于取流进程与写数据库进程之间的通信;其中,由取流进程向共享内存写入数据以供写数据库进程访问;
创建第一单向管道用于取流进程与目标检测进程之间的通信;其中,目标检测进程为写管道,用于将下一轮需要进行识别摄像头的rtmp/rtsp流写入管道以供取流进程读取管道;
创建第二单向管道用于目标检测进程与取流进程之间的通信;其中,取流进程为写管道,用于将本轮需要检测图片对应的摄像头ip、创建时间信息写入管道以供目标检测进程读取管道;
创建第三单向管道用于目标检测进程与写数据库进程之间的通信;其中,目标检测进程为写管道,用于将本轮待检测摄像头的检测结果写入管道,以供写数据库读取管道。
本发明的进一步改进在于,所述取流进程:通过多线程取视频流,保存待检测图片在共享内存中的步骤具体包括:
为每路摄像头开启一个线程,使用opencv捕获摄像头的rtmp/rtsp流,并对预设必要帧进行解码;
使用第一单向管道与目标检测进程通信,接收下一轮需要进行识别摄像头的rtmp/rtsp流,对接收的视频流发送信号量开启解码操作,获得解码图片;
对所述解码图片进行预处理,获得预处理图片;
将预处理图片写入第一共享内存,将所述解码图片写入第二共享内存;
将本轮需要检测图片对应的摄像头ip、创建时间信息写入第二单向管道。
本发明的进一步改进在于,所述为每路摄像头开启一个线程,使用opencv捕获摄像头的rtmp/rtsp流的过程中设置有摄像头重连机制,包括:
为每路摄像头创建一个VideoCapture对象,用于捕获rtmp/rtsp流;
若初始化捕获失败,则尝试重连摄像头;若由于摄像头掉线、网络卡顿原因导致对rtmp/rtsp流解码失败,未能正确获取当前帧的图片,则尝试重连摄像头;
若尝试重连摄像头达到预设次数仍无法获得当前帧的图片,则使用一张纯灰图片代替,用于保证目标检测模型正常运行;
在摄像头断连、重连成功后向后端更新摄像头的状态。
本发明的进一步改进在于,所述目标检测进程,加载目标检测模型;读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道的步骤具体包括:
预先将下一轮需要进行识别摄像头的rtmp/rtsp流通过第一单向管道发送给取流进程;
通过第二单向管道接收本轮需要检测图片对应的摄像头ip、创建时间信息,实现进程间同步;
从第一共享内存中读取待检测图片,并输入预先训练好的深度神经网络目标检测模型,输出检测结果;
将所述检测结果写入第三单向管道,用于传送给写数据库进程。
本发明的进一步改进在于,所述写数据库进程,基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中的步骤具体包括:
初始化每路摄像头的历史检测结果;
创建线程池进行写数据库操作;
从第二共享内存中读取解码图片;
从第三单向管道读取检测结果;
将检测结果与对应摄像头的历史检测结果进行判别,获得判别结果;其中,若在窗口时间内与对应摄像头的历史检测结果相同时,不进行二次推送,去除重复报警;
根据判别结果对摄像头的历史检测结果进行更新;根据判别结果对需要推送检测结果的图片进行处理,使用线程池为每路需要推送检测结果的抽帧图片创建一个异步非阻塞的单路视频流写数据库线程。
本发明的进一步改进在于,所述单路视频流写数据库线程的创建步骤包括:
根据检测结果对解码图片上的目标进行裁剪得到目标图,并保存到数据库;
根据检测结果在原图上将目标框出,并在对应位置写上目标的中文名称,作为检测图保存到数据库;
将检测结果以及解码图片原图、目标图、检测图的url地址通过requests模块发送给后端,以供后续进行大数据分析以及模型的迭代优化。
本发明的一种基于多进程的多路视频流的AI分析系统,包括:
共享内存以及管道获取模块,用于创建共享内存以及多个管道,用于取流进程、目标检测进程和写数据库进程的跨进程通信;
第一进程模块,用于实现取流进程,通过多线程取视频流,保存待检测图片在共享内存中;
第二进程模块,用于实现目标检测进程,加载目标检测模型,读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道;
第三进程模块,用于实现写数据库进程,基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中。
与现有技术相比,本发明具有以下有益效果:
本发明公开了一种基于多进程的多路高清视频流的实时AI分析方法,可同时对多路摄像头进行实时智能识别以及数据统计分析。本发明的方法主要由三部分组成:取流进程、目标检测进程以及写数据库进程。对于取流进程,为了解决rtsp/rtmp流解码占用CPU资源过大、耗时久的问题,采用多线程对每路视频流进行抽帧,并只对必要帧进行解码,在完成解码后多线程对图片进行预处理,并将预处理后的图片写入与目标检测进程进行通信的共享内存,将原图写入与写数据库进程进行通信的共享内存。对于目标检测进程,读取共享内存中的预处理图片并送入目标检测模型进行检测,将检测结果写入域写数据库进程进行通信的管道中。对于写数据库进程,读取共享内存中的原图以及管道中的检测结果,首先对识别结果进行分析判别,对于重复报警不进行再次推送和存储,以减少服务器压力,然后使用线程池技术完成单路视频流的写数据库操作。本发明能够有效提高多路高清视频流的AI分析速度,提高CPU处理器以及GPU的利用率,提供更好的视频监控场景中实时AI分析系统的服务和管理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面对实施例或现有技术描述中所需要使用的附图做简单的介绍;显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一种基于多进程的多路高清视频流的实时AI分析方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术效果及技术方案更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例是本发明一部分实施例。基于本发明公开的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的其它实施例,都应属于本发明保护的范围。
本发明实施例的一种基于多进程的多路视频流的AI分析方法,包括以下步骤:
步骤1:创建共享内存以及多个管道用于跨进程通信;
步骤2:创建取流进程,多线程取实时视频流,保存实时图片在共享内存中;
步骤3:创建目标检测进程,加载目标检测模型,读取共享内存中的待检测图片,送入检测模型处理,将检测结果写入管道;
步骤4:创建写数据库进程,获取报警信息、检测结果图等,多线程写入数据库中。
本发明是一种基于多进程的多路高清视频流的实时AI分析系统,可同时对多路摄像头进行实时智能识别以及数据统计分析。系统主要由三部分组成:取流进程、目标检测进程以及写数据库进程。对于取流进程,为了解决rtsp/rtmp流解码占用CPU资源过大、耗时久的问题,采用多线程对每路视频流进行抽帧,并只对必要帧进行解码,在完成解码后多线程对图片进行预处理,并将预处理后的图片写入与目标检测进程进行通信的共享内存,将原图写入与写数据库进程进行通信的共享内存。对于目标检测进程,读取共享内存中的预处理图片并送入目标检测模型进行检测,将检测结果写入域写数据库进程进行通信的管道中。对于写数据库进程,读取共享内存中的原图以及管道中的检测结果,首先对识别结果进行分析判别,对于重复报警不进行再次推送和存储,以减少服务器压力,然后使用线程池技术完成单路视频流的写数据库操作。本发明能够有效提高多路高清视频流的AI分析速度,提高CPU处理器以及GPU的利用率,提供更好的视频监控场景中实时AI分析系统的服务和管理。
请参阅图1所示,本发明实施例提供一种基于多进程的多路高清视频流的实时AI分析方法,具体包括以下步骤:
步骤1:创建共享内存以及多个管道用于跨进程通信,用于实现取流进程、目标检测进程和写数据库进程之间的数据交互,具体步骤是:
1.1、创建共享内存用于取流进程与目标检测进程之间的通信,即由取流进程向共享内存写入数据,以供目标检测进程立即访问;
1.2、创建共享内存用于取流进程与写数据库进程之间的通信,即由取流进程向共享内存写入数据,以供写数据库进程立即访问;
1.3、创建单向管道用于取流进程与目标检测进程之间的通信,目标检测进程为写管道,将下一轮需要进行识别高清摄像头的rtmp/rtsp流写入管道,以供取流进程读取管道;
1.4、创建单向管道用于目标检测进程与取流进程之间的通信,取流进程为写管道,将本轮需要检测图片对应的摄像头ip、创建时间等信息写入管道,以供目标检测进程读取管道;
1.5、创建单向管道用于目标检测进程与写数据库进程之间的通信,目标检测进程为写管道,将本轮待检测摄像头的AI分析结果写入管道,以供写数据库读取管道;
步骤2:创建取流进程,多线程取实时视频流,保存实时图片在共享内存中;
针对多路高清视频流的并行处理问题,采用多线程技术,为每路摄像头开启一个线程进行抽帧解码,针对解码消耗CPU资源的问题,使用opencv进行抽帧,并只对必要帧进行解码,具体的步骤包括:
2.1、为每路摄像头开启一个线程用于抽帧解码,使用opencv捕获高清摄像头的rtmp/rtsp流,并对必要帧进行解码;本发明实施例可选的,视频帧读取的read、grab、retrieve三种方式:retrieve速度比grab慢很多,有时可以通过grab跳过不需要的帧,而不需要用read解码每一帧。cap.read(frame)结合grab和retrieve的功能,抓取下一帧并解码,cap.grap()从设备或视频获取下一帧,获取成功返回true否则false,cap.retrieve(frame)在grab后使用,对获取到的帧进行解码,也返回true或false;对每路摄像头使用grab操作获取视频流的下一帧,并且只在目标检测进程需要对该路摄像头进行AI分析时才对获取到的帧进行解码。
2.2、使用步骤1.3创建的管道与目标检测进程通信,接收下一轮需要进行识别高清摄像头的rtmp/rtsp流,并提前对必要帧进行解码,即对下一轮摄像头的抽帧图片解码,保证目标检测进程不需等待取流解码所耗费的时间;
2.3、将步骤2.2得到的解码图片进行归一化、letterbox等预处理操作,保证待检测图片送入目标检测进程可以省去预处理步骤,加快检测速度;
2.4、将步骤2.3得到的预处理图片写入步骤1.1创建的共享内存,共享内存没有同步机制,因此在数据写入完成后发送一个信号量,避免发生读写冲突;
2.5、将步骤2.2得到的原图写入步骤1.2创建的共享内存,并在数据写入完成后发送一个信号量;
2.6、将本轮需要检测图片对应的摄像头ip、创建时间等信息写入步骤1.4创建的管道,方便后续对检测结果进行分析。
步骤2.1中设计了摄像头重连机制,设计如下:
a、为每路高清摄像头创建一个VideoCapture对象,用于捕获rtmp/rtsp流;
b、若初始化捕获失败,则尝试重连摄像头;
c、若由于摄像头掉线、网络卡顿等原因导致对rtmp/rtsp流解码失败,未能正确获取当前帧的图片,即返回的是一张空图片,则重连摄像头;
d、若进行以上尝试后仍无法正确获得当前帧的图片,则使用一张纯灰图片代替解码图片,以保证目标检测模型可以正常运行,维持系统的稳定性;
e、重连间隔时长初始化为2分钟,若多次重连该摄像头仍然失败,每次使间隔时长增加2分钟(重连时间间隔上限为20分钟),若摄像头重连成功则将重连间隔时长重新设置为2分钟,这是为了减少CPU的消耗,提高速率;
f、在摄像头断连、重连成功后向后端更新摄像头的状态,方便维修人员对相关摄像头进行维护管理。
创建VideoCapture对象对CPU资源消耗巨大且耗时久,而后续读取视频流操作的资源消耗相对较小,因此依次为每路摄像头创建VideoCapture对象用于捕获视频流,并将VideoCapture对象作为参数送入对应的抽帧解码线程。
步骤3:创建目标检测进程,加载目标检测模型,读取共享内存中的待检测图片,送入检测模型处理,将检测结果写入管道;
采用提前训练好的深度神经网络目标检测器进行AI分析,而待检测图片有取流进程获得并通过共享内存传递。采用共享内存可以快速实现进程间通信,尤其是对于存储量较大的图片数据,相比使用队列传输数据可以节省数据拷贝的时间。具体步骤为:
3.1、提前将下一轮需要进行识别高清摄像头的rtmp/rtsp流通过骤1.3创建的管道发送给取流进程,以便提前做好抽帧解码的操作;
3.2、通过步骤1.4创建的管道接收本轮需要检测图片对应的摄像头ip、创建时间等信息,并起到进程间同步的作用;
3.3、从步骤1.1创建的共享内存中读取待检测图片,并输入训预先练好的深度神经网络目标检测模型,输出检测结果,包括目标的类别和位置信息;
3.4、将步骤3.3得到的检测结果通过步骤1.5创建的管道传送给写数据库进程。
步骤4:创建写数据库进程,获取报警信息、检测结果图等,多线程写入数据库中。
对检测结果进行分析与存储,首先对检测结果进行分析判别是否属于重复报警,对于重复报警不进行再次推送和存储,以减轻服务器压力。然后将筛选后的检测结果写入数据库,包括原图、检测图、目标小图等,以供后续大数据分析需求,在数写数据库时使用线程池来处理多路并发写入的情况。
具体步骤如下:
4.1、初始化每路摄像头的历史检测结果,包括目标的类别、数量以及创建时间等信息,用于判断检测结果是否发生变化;
4.2、为了保证对各路摄像头检测结果的及时分析,处理并发多路高清视频流写入数据库,创建线程池进行写数据库操作;
4.3、等待步骤2.5发送数据写入完成的信号量,接收到信号量后从步骤1.2创建的共享内存中读取抽帧原图;
4.4、从步骤1.5创建的管道中读取检测结果,包括目标的类别以及坐标信息、摄像头信息、创建时间等等;
4.5、将步骤4.4得到的检测结果与对应摄像头的历史检测结果进行判别,若在窗口时间内与对应摄像头的历史检测结果相同时,不进行二次推送,去除重复报警;
4.6、根据步骤4.5的判别结果对摄像头的历史检测结果进行更新,用于下一轮的判别;
4.7、根据步骤4.5的判别结果对需要推送检测结果的图片进行处理,使用线程池为每路需要推送检测结果的抽帧图片创建一个异步非阻塞的单路视频流写数据库线程。
骤4.7中设计了单路视频流写数据库线程,设计如下:
a、根据检测结果对原图上的目标进行裁剪得到目标小图,并保存到数据库;
b、根据检测结果在原图上将目标框出,并在对应位置写上目标的中文名称,作为检测图保存到数据库;
c、将检测结果信息以及原图、目标小图、检测图等url地址通过requests模块发送给后端,以供后续进行大数据分析以及模型的迭代优化。
实验结果表明,通过本技术方案,可以更快速的实现对多路高清视频流的实时AI分析。在深度学习服务器上,通过摄像机直连或视频转发服务器中转等方式,同时对200路1080p的rtmp/rtsp视频流进行解码并识别,达到了不到2秒轮循一次的速度,并且对摄像头的掉线、卡顿有良好的处理机制,对多路并发写数据库的良好处理能力。和现有方法相比,本发明在针对多路高清视频流的实时AI分析有着更好的优势。
综上所述,本发明实施例具体公开一种基于多进程的多路高清视频流的实时AI分析方法及系统,所述方法包括:步骤1:创建共享内存以及多个管道用于跨进程通信;步骤2:创建取流进程,多线程取实时视频流,保存实时图片在共享内存中;步骤3:创建目标检测进程,加载目标检测模型,读取共享内存中的待检测图片,送入检测模型处理,将检测结果写入管道;步骤4:创建写数据库进程,获取报警信息、检测结果图等,多线程写入数据库中。本发明采用了多进程的方式,并采用多线程、线程池等技术并发处理多个子任务,并且使用共享内存用于进程间的大数据传输,并且在深度学习服务器上能够实现实时处理,能够很好解决多路监控视频实时AI分析的痛点。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。
Claims (8)
1.一种基于多进程的多路视频流的AI分析方法,其特征在于,包括以下步骤:
创建共享内存以及多个管道,用于取流进程、目标检测进程和写数据库进程的跨进程通信;
取流进程:通过多线程取视频流,保存待检测图片在共享内存中;
目标检测进程:加载目标检测模型,读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道;
写数据库进程:基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中。
2.根据权利要求1所述的一种基于多进程的多路视频流的AI分析方法,其特征在于,所述创建共享内存以及多个管道用于取流进程、目标检测进程和写数据库进程的跨进程通信的步骤具体包括:
创建第一共享内存用于取流进程与目标检测进程之间的通信;其中,由取流进程向共享内存写入数据以供目标检测进程访问;
创建第二共享内存用于取流进程与写数据库进程之间的通信;其中,由取流进程向共享内存写入数据以供写数据库进程访问;
创建第一单向管道用于取流进程与目标检测进程之间的通信;其中,目标检测进程为写管道,用于将下一轮需要进行识别摄像头的rtmp/rtsp流写入管道以供取流进程读取管道;
创建第二单向管道用于目标检测进程与取流进程之间的通信;其中,取流进程为写管道,用于将本轮需要检测图片对应的摄像头ip、创建时间信息写入管道以供目标检测进程读取管道;
创建第三单向管道用于目标检测进程与写数据库进程之间的通信;其中,目标检测进程为写管道,用于将本轮待检测摄像头的检测结果写入管道,以供写数据库读取管道。
3.根据权利要求2所述的一种基于多进程的多路视频流的AI分析方法,其特征在于,所述取流进程:通过多线程取视频流,保存待检测图片在共享内存中的步骤具体包括:
为每路摄像头开启一个线程,使用opencv捕获摄像头的rtmp/rtsp流,并对预设必要帧进行解码;
使用第一单向管道与目标检测进程通信,接收下一轮需要进行识别摄像头的rtmp/rtsp流,对接收的视频流发送信号量开启解码操作,获得解码图片;
对所述解码图片进行预处理,获得预处理图片;
将预处理图片写入第一共享内存,将所述解码图片写入第二共享内存;
将本轮需要检测图片对应的摄像头ip、创建时间信息写入第二单向管道。
4.根据权利要求3所述的一种基于多进程的多路视频流的AI分析方法,其特征在于,所述为每路摄像头开启一个线程,使用opencv捕获摄像头的rtmp/rtsp流的过程中设置有摄像头重连机制,包括:
为每路摄像头创建一个VideoCapture对象,用于捕获rtmp/rtsp流;
若初始化捕获失败,则尝试重连摄像头;若由于摄像头掉线、网络卡顿原因导致对rtmp/rtsp流解码失败,未能正确获取当前帧的图片,则尝试重连摄像头;
若尝试重连摄像头达到预设次数仍无法获得当前帧的图片,则使用一张纯灰图片代替,用于保证目标检测模型正常运行;
在摄像头断连、重连成功后向后端更新摄像头的状态。
5.根据权利要求3所述的一种基于多进程的多路视频流的AI分析方法,其特征在于,所述目标检测进程,加载目标检测模型;读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道的步骤具体包括:
预先将下一轮需要进行识别摄像头的rtmp/rtsp流通过第一单向管道发送给取流进程;
通过第二单向管道接收本轮需要检测图片对应的摄像头ip、创建时间信息,实现进程间同步;
从第一共享内存中读取待检测图片,并输入预先训练好的深度神经网络目标检测模型,输出检测结果;
将所述检测结果写入第三单向管道,用于传送给写数据库进程。
6.根据权利要求5所述的一种基于多进程的多路视频流的AI分析方法,其特征在于,所述写数据库进程,基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中的步骤具体包括:
初始化每路摄像头的历史检测结果;
创建线程池进行写数据库操作;
从第二共享内存中读取解码图片;
从第三单向管道读取检测结果;
将检测结果与对应摄像头的历史检测结果进行判别,获得判别结果;其中,若在窗口时间内与对应摄像头的历史检测结果相同时,不进行二次推送,去除重复报警;
根据判别结果对摄像头的历史检测结果进行更新;根据判别结果对需要推送检测结果的图片进行处理,使用线程池为每路需要推送检测结果的抽帧图片创建一个异步非阻塞的单路视频流写数据库线程。
7.根据权利要求6所述的一种基于多进程的多路视频流的AI分析方法,其特征在于,所述单路视频流写数据库线程的创建步骤包括:
根据检测结果对解码图片上的目标进行裁剪得到目标图,并保存到数据库;
根据检测结果在原图上将目标框出,并在对应位置写上目标的中文名称,作为检测图保存到数据库;
将检测结果以及解码图片原图、目标图、检测图的url地址通过requests模块发送给后端,以供后续进行大数据分析以及模型的迭代优化。
8.一种基于多进程的多路视频流的AI分析系统,其特征在于,包括:
共享内存以及管道获取模块,用于创建共享内存以及多个管道,用于取流进程、目标检测进程和写数据库进程的跨进程通信;
第一进程模块,用于实现取流进程,通过多线程取视频流,保存待检测图片在共享内存中;
第二进程模块,用于实现目标检测进程,加载目标检测模型,读取共享内存中的待检测图片送入所述目标检测模型处理,获得检测结果并将检测结果写入管道;
第三进程模块,用于实现写数据库进程,基于所述检测结果,获取报警信息、检测结果图并多线程写入数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110483790.3A CN113221706B (zh) | 2021-04-30 | 2021-04-30 | 基于多进程的多路视频流的ai分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110483790.3A CN113221706B (zh) | 2021-04-30 | 2021-04-30 | 基于多进程的多路视频流的ai分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113221706A true CN113221706A (zh) | 2021-08-06 |
CN113221706B CN113221706B (zh) | 2024-03-22 |
Family
ID=77090586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110483790.3A Active CN113221706B (zh) | 2021-04-30 | 2021-04-30 | 基于多进程的多路视频流的ai分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113221706B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113747195A (zh) * | 2021-09-07 | 2021-12-03 | 重庆赛迪奇智人工智能科技有限公司 | 视频数据处理方法、装置、设备及存储介质 |
CN113905273A (zh) * | 2021-09-29 | 2022-01-07 | 上海阵量智能科技有限公司 | 任务执行方法和设备 |
CN114495011A (zh) * | 2022-02-15 | 2022-05-13 | 辽宁奥普泰通信股份有限公司 | 基于目标检测的非机动车和行人非法闯入识别方法、存储介质和计算机设备 |
CN114915787A (zh) * | 2022-05-20 | 2022-08-16 | 苏州浪潮智能科技有限公司 | 视频流和ai模型的调度管理系统、方法、装置及存储介质 |
CN115174941A (zh) * | 2022-07-06 | 2022-10-11 | 灵羲科技(北京)有限公司 | 基于多路视频流的实时运动表现分析及实时数据共享方法 |
CN115984675A (zh) * | 2022-12-01 | 2023-04-18 | 扬州万方科技股份有限公司 | 一种用于实现多路视频解码及ai智能分析的系统及方法 |
CN116055664A (zh) * | 2023-03-28 | 2023-05-02 | 北京睿芯通量科技发展有限公司 | 一种用于视频处理进程的共享内存方法、装置及存储介质 |
CN116260990A (zh) * | 2023-05-16 | 2023-06-13 | 合肥高斯智能科技有限公司 | 一种多路视频流的ai异步检测并实时渲染方法及系统 |
CN116627682A (zh) * | 2023-07-25 | 2023-08-22 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102036043A (zh) * | 2010-12-15 | 2011-04-27 | 成都市华为赛门铁克科技有限公司 | 视频数据处理方法、装置及视频监控系统 |
CN105224922A (zh) * | 2015-09-18 | 2016-01-06 | 桂林远望智能通信科技有限公司 | 一种人车分类视频流式处理系统及方法 |
US20180103261A1 (en) * | 2016-10-07 | 2018-04-12 | Microsoft Technology Licensing, Llc | Browser-based video decoder using multiple cpu threads |
CN108040221A (zh) * | 2017-11-30 | 2018-05-15 | 江西洪都航空工业集团有限责任公司 | 一种智能视频分析与监控系统 |
CN112040090A (zh) * | 2020-08-10 | 2020-12-04 | 浙江大华技术股份有限公司 | 视频流处理方法、装置、电子设备和存储介质 |
CN112052804A (zh) * | 2020-09-10 | 2020-12-08 | 公安部第三研究所 | 实现安全管理的视频智能分析及报警系统及其方法 |
-
2021
- 2021-04-30 CN CN202110483790.3A patent/CN113221706B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102036043A (zh) * | 2010-12-15 | 2011-04-27 | 成都市华为赛门铁克科技有限公司 | 视频数据处理方法、装置及视频监控系统 |
CN105224922A (zh) * | 2015-09-18 | 2016-01-06 | 桂林远望智能通信科技有限公司 | 一种人车分类视频流式处理系统及方法 |
US20180103261A1 (en) * | 2016-10-07 | 2018-04-12 | Microsoft Technology Licensing, Llc | Browser-based video decoder using multiple cpu threads |
CN108040221A (zh) * | 2017-11-30 | 2018-05-15 | 江西洪都航空工业集团有限责任公司 | 一种智能视频分析与监控系统 |
CN112040090A (zh) * | 2020-08-10 | 2020-12-04 | 浙江大华技术股份有限公司 | 视频流处理方法、装置、电子设备和存储介质 |
CN112052804A (zh) * | 2020-09-10 | 2020-12-08 | 公安部第三研究所 | 实现安全管理的视频智能分析及报警系统及其方法 |
Non-Patent Citations (2)
Title |
---|
SAHAR EBADINEZHAD: "Streaming stored video over multi-channel wireless systems: Scheduler performance evaluation", 《2014 22ND SIGNAL PROCESSING AND COMMUNICATIONS APPLICATIONS CONFERENCE (SIU)》, 12 June 2014 (2014-06-12), pages 563 - 566 * |
唐昆鹏: "基于CUDA的多路高清视频流解码器设计与实现", 《电子科技》, vol. 29, no. 4, 15 April 2016 (2016-04-15), pages 71 - 75 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113747195A (zh) * | 2021-09-07 | 2021-12-03 | 重庆赛迪奇智人工智能科技有限公司 | 视频数据处理方法、装置、设备及存储介质 |
CN113905273A (zh) * | 2021-09-29 | 2022-01-07 | 上海阵量智能科技有限公司 | 任务执行方法和设备 |
CN113905273B (zh) * | 2021-09-29 | 2024-05-17 | 上海阵量智能科技有限公司 | 任务执行方法和设备 |
CN114495011A (zh) * | 2022-02-15 | 2022-05-13 | 辽宁奥普泰通信股份有限公司 | 基于目标检测的非机动车和行人非法闯入识别方法、存储介质和计算机设备 |
CN114915787A (zh) * | 2022-05-20 | 2022-08-16 | 苏州浪潮智能科技有限公司 | 视频流和ai模型的调度管理系统、方法、装置及存储介质 |
CN115174941A (zh) * | 2022-07-06 | 2022-10-11 | 灵羲科技(北京)有限公司 | 基于多路视频流的实时运动表现分析及实时数据共享方法 |
CN115984675B (zh) * | 2022-12-01 | 2023-10-13 | 扬州万方科技股份有限公司 | 一种用于实现多路视频解码及ai智能分析的系统及方法 |
CN115984675A (zh) * | 2022-12-01 | 2023-04-18 | 扬州万方科技股份有限公司 | 一种用于实现多路视频解码及ai智能分析的系统及方法 |
CN116055664A (zh) * | 2023-03-28 | 2023-05-02 | 北京睿芯通量科技发展有限公司 | 一种用于视频处理进程的共享内存方法、装置及存储介质 |
CN116055664B (zh) * | 2023-03-28 | 2023-06-02 | 北京睿芯通量科技发展有限公司 | 一种用于视频处理进程的共享内存方法、装置及存储介质 |
CN116260990A (zh) * | 2023-05-16 | 2023-06-13 | 合肥高斯智能科技有限公司 | 一种多路视频流的ai异步检测并实时渲染方法及系统 |
CN116627682A (zh) * | 2023-07-25 | 2023-08-22 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
CN116627682B (zh) * | 2023-07-25 | 2023-09-29 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113221706B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113221706B (zh) | 基于多进程的多路视频流的ai分析方法及系统 | |
CN108040221B (zh) | 一种智能视频分析与监控系统 | |
CN109769115B (zh) | 一种优化智能视频分析性能的方法、装置和设备 | |
CN109711323B (zh) | 一种实时视频流分析加速方法、装置和设备 | |
CN202998337U (zh) | 视频节目识别系统 | |
WO2020199472A1 (zh) | 识别模型的优化方法和装置 | |
CN113542875A (zh) | 视频处理方法、装置、电子设备以及存储介质 | |
CN113286175A (zh) | 视频流处理方法、装置及存储介质 | |
EP4311202A1 (en) | End-edge-cloud coordination system and method based on digital retina, and device | |
CN117176990A (zh) | 一种视频流处理方法、装置、电子设备及存储介质 | |
CN114640854A (zh) | 一种多路视频流实时高速解码方法 | |
CN116723295A (zh) | 基于gpgpu芯片的多摄像头监控管理系统 | |
CN112087672A (zh) | 一种使用智能终端及服务器的视频流描述生成方法 | |
CN111541864B (zh) | 一种数字视网膜软件定义摄像机方法及系统 | |
CN114339364A (zh) | 多媒体数据处理方法、装置、电子设备及存储介质 | |
CN114339266A (zh) | 一种基于国产cpu和操作系统的视频流队列处理方法 | |
CN106973307A (zh) | 一种视频设备访问方法及装置 | |
CN113709518A (zh) | 一种基于rtsp协议的视频实时传输模式设计方法 | |
CN112637538A (zh) | 用于优化视频分析的智能标签方法、系统、介质及终端 | |
CN114694007A (zh) | 一种视频结构化处理方法及视频结构化引擎 | |
CN111147512A (zh) | 一种以太网摄像机远程控制系统 | |
CN113688868B (zh) | 一种多线程的图像处理方法及装置 | |
US11037015B2 (en) | Identification of key points in multimedia data elements | |
CN113703977B (zh) | 一种智能人脸和人体检测过滤装置及图片输出装置 | |
CN113453010B (zh) | 一种基于高性能并发视频实时处理框架的处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |