一种实时视频流的分布式文字识别系统的制作方法

文档序号:11251398阅读:590来源:国知局
一种实时视频流的分布式文字识别系统的制造方法与工艺

本发明属于视频流内容识别技术领域,更具体地,涉及一种实时视频流的分布式文字识别系统。



背景技术:

近几年随着图像识别技术的快速发展,对视频中图像内容的识别需求也在不断增加。在传统的安防监控视频中,视频中的人物图像是识别的主要目标,而在桌面办公系统和在线教育等关注文字信息的视频中,识别的目标就是视频中的文字信息。为了达到实时获取识别视频中的文字信息的要求,需要对网络中传输的实时视频流进行及时的识别处理。同时实际的使用环境中一般需要对多个视频流同时进行文字识别处理,所以又要解决多并发视频流的实时文字识别处理的问题。

ocr(opticalcharacterrecognition,光学字符识别)是对图像信息进行分析处理获取文字信息的技术。ocr技术的应用相对成熟,在国内外的应用领域非常广泛,包括交通、金融、保险、教育等。ocr技术在英文字符和数字上的识别的出错率很低,主要是因为英文字母数和数字总共只有36个,而中文汉字的数量是数万个,常用汉字也有数千个,所以在识别的难度上要比英文和数字大很多。ocr的中文识别也经历了较长时间的成长变化,在各种新技术和方法下ocr的中文识别准确率也在不断提高。当前主流的ocr技术都是基于机器学习或深度学习来实现,其中google的ocr开源框架tesseract是一个典型代表。在英文和数字识别上,使用善于对英文和数字识别的tesseract;在中文识别上,则可以利用深度学习来实现。

在面对多并发的视频处理时,一般都是采用分布式系统方案来处理。分布式系统的一个很大特点是它具有很好的可扩展性和容错性。在面对高并发和大数据处理时,通常单台服务器是无法对任务进行及时处理。而在分布式系统下可以根据需要随时新增适量服务器来实现任务的及时处理。分布式系统有多个种类,有分布式调度、分布式计算和分布式存储。分布式计算是当前使用最多的分布式系统,mapreduce和spark框架是分布式计算下典型代表。在视频文件的处理上,很多现有系统采用的是mapreduce框架。

基于mapreduce框架的视频处理系统比较适合于对视频文件的处理,和对视频文件的处理不同的是,实时视频流的处理具有很高的实时性要求,在视频解码上,一般的单线程解码难以满足实时视频流解码要求。对于实时视频流的处理,不适合采用mapreduce框架。一方面是因为视频流中视频数据帧在解码上具有依赖性。视频压缩后的帧分为三种:i帧、p帧和b帧。i帧是可以直接进行解码得到原始图像数,而p帧和b帧是需要依赖前后的i帧或p帧才能进行解码。要实现正确地解码,一个有依赖关系的i帧、p帧和b帧最好是在同一个解码处进行解码。另一方面,在帧率一定的实时视频流下,视频流处理端单位时间内接收到的待处理视频数据量并未超过其处理能力。对于视频文件,单位时间内可以读取大量视频数据,对于超出机器自身处理能力的视频数据可以分发到其他机器进行处理;而实时视频流不同,因为视频帧率一定,单位时间内能够从网络上读取的视频数据量一般不会超过机器自身的处理能力。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种实时视频流的分布式文字识别系统,其目的在于对视频流进行多线程解码的同时采用分布式任务调度框架调度对解码图像的文字识别处理,由此解决多并发实时视频流的文字识别问题。

为实现上述目的,按照本发明的一个方面,提供了一种实时视频流的分布式文字识别系统,所述系统包括:

视频流管理模块,用于管理视频流处理任务的开启或关闭,视频流处理任务开启时向任务调度模块提交视频流处理任务的开启请求和视频流地址;视频流处理任务关闭时向任务调度模块提交视频流处理任务的关闭请求;

任务调度模块,用于储存视频流地址和图像数据,收到视频流处理任务的开启请求后调度一个空闲的视频流解码模块执行视频解码任务;收到图像数据的文字识别请求后调度一个空闲的文字识别模块执行文字识别任务;收视频流处理任务的关闭请求后删除储存的视频流地址;

视频流解码模块,用于收到任

务调度模块的视频解码任务后从任务调度模块中读取视频流地址,获取视频数据并进行解码处理,解码得到的图像数据存入任务调度模块并向任务调度模块提交该图像的文字识别请求;同时视频解码模块每隔一段时间向任务调度模块查询其处理的视频流地址是否已被删除,若被删除则停止视频流的解码处理,否则继续执行解码操作;

文字识别模块,用于收到任务调度模块的文字识别任务后从任务调度模块中读取图像数据进行文字识别,识别完成后从任务调度模块中删除已识别的图像数据。

进一步地,所述任务调度模块包括:

缓存单元,用于储存视频流地址和图像数据;

分布式任务调度服务器单元,收到视频流处理任务的开启请求后调度一个空闲的视频流解码模块执行视频解码任务;收到图像数据的文字识别请求后调度一个空闲的文字识别模块执行文字识别任务;收视频流处理任务的关闭请求后删除缓存单元中储存的视频流地址。

进一步地,所述视频流管理模块包括:

视频流处理任务的开启单元,用于分布式任务调度服务器单元提交视频流处理任务的开启请求,并将视频流地址发送至缓存单元储存;

视频流处理任务的关闭单元,用于视频流处理任务关闭时向分布式任务调度服务器单元提交视频流处理任务的关闭请求。

进一步地,所述视频流解码模块包括:

停止解码单元,用于按设定的时间间隔查询缓存单元正在使用的视频流地址是否被删除,若删除则停止视频流读取和解码单元的视频解码任务;否则不做处理;

视频流读取和解码单元,用于接收分布式任务调度服务器单元的调度读取缓存单元中的视频流地址执行视频解码任务,得到解码图像,并将解码图像传给图像识别请求单元;

图像识别请求单元,用于提取解码图像的灰度图像数据存入缓存单元中并向分布式任务调度服务器单元发送图像数据的文字识别请求。

进一步地,所述文字识别模块包括:

待识别图像读取单元,用于接受分布式任务调度服务器单元发送的文字识别请求,从缓存单元读取图像数据并发送至图像字符识别单元;

字符识别单元,用于判断图像数据是否需要进行文字识别处理,若需要则对图像数据进行文字识别并将获得的文字识别结果发送至后处理单元;

后处理单元,用于接受文字识别结果,并删除缓存单元中字符识别单元处理过的图像数据。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:

(1)本发明中使用者可以通过视频流地址把实时视频流接入到系统中进行解码和文字识别处理,同时采用分布式任务调度框架可以实现多并发实时视频流的处理。

(2)解码和识别模块的分离不但使得系统具有很好的适应性,在不同需求下只需对识别模块进行相应修改就可以实现视频流的处理,而且还可以通过一个解码模块对应多个文字识别模块来解决视频流的解码和文字识别在速度上的不匹配问题。

(3)整个系统是基于分布式任务调度框架实现的分布式系统;具有扩展性,可以随时向系统添加解码或文字识别模块;具有容错性,当解码或识别模块处理发生异常时会系统会把任务重新发送到可用的解码或识别模块继续处理。

附图说明

图1是本发明系统的结构示意图;

图2是本发明系统的整体工作流程图;

图3是本发明系统实施例的布局示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示,本发明系统包括视频流管理模块100、视频流解码模块200、文字识别模块300和任务调度模块400,下面对各部分作进一步详细的说明:

任务调度模块400用于调度视频流解码模块200执行视频解码任务和文字识别模块300执行文字识别任务,同时用于传递停止视频流处理信号、视频流地址数据和待进行文字识别的图像数据。

任务调度模块400包括缓存单元401和分布式任务调度服务器单元402:

缓存单元401用于存储视视频流地址和视频流解码模块200解码得到的图像数据。

分布式任务调度服务器单元402用于调度视频流解码模块200执行视频流的解码任务和文字识别模块300对视频流解码模块200解码后的图像数据执行文字识别任务。分布式任务调度服务器单元402若接收视频流管理模块100发送的开启视频流文字识别处理请求,则调度视频流解码模块200执行视频流解码任务;分布式任务调度服务器单元402若接收视频流解码模块200发送的对视频流解码模块200解码得到的图像进行文字识别的请求,则调度文字识别模块300执行文字识别任务。

视频流管理模块100用于开启或关闭一个视频流文字识别任务的执行,具体地说是通过控制视频流解码模块200来实现对整个视频流文字识别任务启动和关闭。本发明的视频流管理模块100包括视频流处理任务的开启单元101和视频流处理任务的关闭单元102。

视频流处理任务的开启单元101用于开启一个视频流文字识别任务的执行。开启时向分布式任务调度服务器单元402发送一个视频流解码任务请求,请求中携带了一个视频流地址,分布式任务调度服务器单元402接收到视频流解码任务的请求和携带的视频流地址后使用接收到的视频流地址调度一个空闲可用的视频流解码模块200去执行视频流地址对应的视频流的解码任务;同时向缓存单元401中存储该视频流地址作为视频流文字识别处理任务的开启信号。

视频流处理任务的关闭单元102用于关闭一个正在进行视频流文字识别处理任务的执行。视频流处理任务的关闭单元102从缓存单元401中删除要关闭的视频流地址,视频流解码模块200在检测到缓存单元401中无当前视频流解码模块200所进行解码的视频流对应的视频流地址后停止当前视频流解码任务的执行,实现该视频流的文字识别任务的停止。

视频流解码模块200是在接收到分布式任务调度服务器单元402发送的视频流地址和视频流解码任务后执行从分布式任务调度服务器单元402接收的视频流地址对应的视频流解码任务,每次解码得到一个图像后都会向分布式任务调度服务器单元402发送一个对解码得到图像的文字识别处理请求,同时每隔一段时间检查缓存单元401中当前视频流解码模块进行解码的视频流对应的视频流地址是否存在来确定是否继续执行视频流的解码任务。本发明的视频流解码模块200包括停止解码单元201、视频流读取和解码单元202和图像识别请求单元203。

停止解码单元201每隔一段时间从缓存单元401中查询当前正在视频流解码模块200上进行解码的视频流地址是否存在,如果存在则当前视频流解码模块200继续执行解码任务,否则结束当前视频流解码模块200所进行的视频流解码任务的执行。

视频流读取和解码单元202在接收到分布式任务调度服务器单元402调度执行的视频流解码任务和对应的视频流地址后进行视频流的解码。与一般视频文件的解码不同的是对视频流进行解码具有很高的实时性要求;如果视频流的解码速度比网络上视频数据的传输速度慢就会造成视频帧丢失,由于视频帧之间在解码时具有前后依赖关系,会影响后续视频帧的解码得到的图像质量从而影响图像的文字识别效果。在视频流读取和解码单元202中采用了多线程流水线技术避免视频帧丢失并实现视频流的实时处理:

多线程流水线技术解码的具体实现是:

1)从视频流中读取视频帧线程reader;

2)对读取的视频帧进行解码线程decoder;

3)对解码后得到的解码数据进行后处理线程postprocesser。reader线程从网络中读取传输过来的视频数据,把读取的视频数据包放入一个packet_queue的队列中;decoder线程从packet_queue队列中依次读取视频数据包,对读取的视频数据包进行解码得到解码数据,把得到的解码数据放入到一个frame_queue的队列中;postprocesser线程从frame_queue中获取解码数据,分离解码数据中的灰度图像数据,并把灰度图像数据信息发送给图像识别请求单元203。

图像识别请求单元203把接收到灰度图像数据信息存入缓存单元401并向分布式任务调度服务器单元402发送接收到的灰度图像的文字识别请求。其中向分布式任务调度服务器单元402发送的请求中携带的参数是可以从缓存单元401中获取存入的灰度图像数据对应的键。文字识别模块300通过该键从缓存单元401中获取对应的灰度图像数据来进行文字识别处理。

文字识别模块300在接收到分布式任务调度服务器单元402调度执行的文字识别任务后从缓存单元401中读取对应的灰度图像进行文字识别处理,最后对识别结果进行保存等后处理。本发明的文字识别模块300包括待识别图像读取单元301、图像字符识别单元302和后处理单元303。

待识别图像读取单元301是在接收到分布式任务调度服务器单元402调度的文字识别任务和用于从缓存单元401中获取灰度图像数据的键后,从缓存单元401中读取键所对应的灰度图像数据发送到图像字符识别单元302。

图像字符识别单元302是对待识别图像读取单元301发送过来的灰度图像进行文字识别。在识别前先对灰度图像进行是否要进行识别的判断,如果图像不属于待识别图像的范围则直接丢弃图像,否则对灰度图像进行相关的文字识别处理。把文字识别处理结果发送给后处理单元303。

后处理单元303在接收到图像字符识别单元302发送的文字识别结果后对识别结果进行保存等处理,同时删除缓存单元401中已识别完成的灰度图像数据信息。

如图2所示,本发明流程为:视频流处理任务的开启单元101向分布式任务调度服务器单元402发送视频流的处理请求并把视频流地址写入缓存单元401,分布式任务调度服务器单元402收到视频流处理请求后调度一个视频流解码模块200去执行视频流的解码任务,视频流的读取和解码单元202对视频流进行解码处理,得到一张图像后通过图像识别请求单元203保存图像至缓存单元401并向分布式任务调度服务器单元402发送图像的文字识别请求。分布式任务调度服务器单元402收到文字识别请求后调度一个文字识别模块300进行图像的文字识别处理,待识别图像读取单元301从缓存单元401中读取图片数据后,字符识别单元302对图像进行文字识别,后处理单元303对识别后的文字信息进行保存等处理。停止解码单元201检测是否有停止解码处理的信号。如果有则结束当前解码任务的执行,在视频流的解码停止后,文字识别模块也不会收到对应视频流的图像文字识别处理请求,从而实现整个视频流处理任务的结束;否则重复执行视频流的解码和图像的文字识别处理。

图3是本发明的系统实施示意图。视频流解码和文字识别都是使用了多服务器集群,这些服务器都可用通过分布式任务调度服务器单元402进行调度去执行相应视频流解码或文字识别任务。缓存单元401服务器是作为解码后的图像数据传递给文字识别服务器的缓存使用和关闭视频流解码信号的传递池。客户端用于管理视频流,向分布式任务调度服务器单元402发送视频流解码请求或向缓存单元401传送关闭视频流解码处理信号。

为了本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1