一种基于celery的视频结构化方法及系统

文档序号:1875561 发布日期:2021-11-23 浏览:23次 >En<

阅读说明:本技术 一种基于celery的视频结构化方法及系统 (Video structuring method and system based on celery ) 是由 刘鹏博 刘安冉 王延斌 任年祥 于 2021-08-20 设计创作,主要内容包括:本发明提出了一种基于celery的视频结构化方法及系统,包括:任务控制服务、celery任务服务和视频结构化模块;所述任务控制服务接收视频结构化任务请求创建相关的celery的任务,并将任务送入celery任务服务,等待执行;所述celery任务服务中celery任务执行时调用视频结构化模块对视频进行处理,之后将处理结果写入数据库。本发明采用异步处理,该方法有完备的架构,扩展性好,处理效率高。(The invention provides a video structuring method and system based on celery, comprising the following steps: the system comprises a task control service, a celery task service and a video structuring module; the task control service receives the video structured task request to establish a related task of the cell, and sends the task to the cell task service to wait for execution; and calling a video structuring module to process the video when the celery task in the celery task service is executed, and then writing a processing result into a database. The invention adopts asynchronous processing, and the method has complete architecture, good expansibility and high processing efficiency.)

一种基于celery的视频结构化方法及系统

技术领域

本发明属于计算机异步任务调度领域和视频处理技术领域,尤其涉及一种基于celery的视频结构化方法及系统。

背景技术

本部分的陈述仅仅是提供了与本发明相关的

背景技术

信息,不必然构成在先技术。

视频结构化是对视频数据的结构化分析处理提取出关键的信息,并进行文本的语义描述。视频结构化对视频信息情报化系统平台的建设有非常大的推动作用,是一些常见视频应用的基础,如视频检索,视频快速剪辑等。

目前视频处理大多采用同步手段,如果待处理视频为高清及其以上品质时,数据量大,与异步处理相比,同步处理耗费时间长,用户体验差。

发明内容

为克服上述现有技术的不足,本发明提供了一种基于celery的视频结构化方法,采用异步处理,利用celery技术处理效率高。

为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:

第一方面,公开了一种基于celery的视频结构化系统,包括:

任务控制服务、celery任务服务和视频结构化模块;

所述任务控制服务接收视频结构化任务请求创建相关的celery的任务,并将任务送入celery任务服务,等待执行;

所述celery任务服务中celery任务执行时调用视频结构化模块对视频进行处理,之后将处理结果写入数据库。

进一步的技术方案,所述celery任务服务主要组件包括:

broker,消息代理,接收外部发来的任务消息,存入消息队列;

worker异步任务的执行者,从broker中读取消息再以进程、线程或协程的方式执行,之后把执行结果写入backend;

具体的,异步任务的执行者worker调用ProcessVideo方法对视频进行分析处理,将任务执行状态通过http请求传给所述任务控制服务,将视频结构化的结果通过http请求传给所述web服务;

backend用于存储任务执行后的状态信息和结果。

进一步的技术方案,还包括客户端及web服务;

所述通过浏览器或者手机应用向所述web服务发送http请求调用相关服务,包括上传视频文件,获取视频结构化结果,查询与管理视频结构化任务状态。

进一步的技术方案,还包括视频存储服务,所述web服务处理来自客户端的请求;

当收到客户端上传视频文件请求时,为视频文件创建uuid,将视频文件保存到视频存储服务,在celery任务异步执行时读取访问;

创建相关的数据记录并写入数据库,同时向任务控制服务发送任务请求;

当收到客户端其他请求时,从数据库中查询结果并返回给客户端。

进一步的技术方案,所述任务控制服务,用于处理web服务发来的任务请求,把相关请求参数封装成celery任务,发送给celery任务服务,等待调度,同时将任务信息以及所有参数写入数据库,上述信息用于跟踪任务状态。

进一步的技术方案,所述视频存储服务,用于存储客户端上传的视频文件,通过文件uuid访问,视频存储服务同时提供转码服务,统一视频数据的分辨率,压缩格式和封装格式;

优选的,视频存储服务为分布式存储服务,支持动态扩容动态备份,以确保存储容量和数据的安全。

在一实施例子中,所述视频结构化模块包括车牌结构化模块、敏感建筑物结构化模块、人脸结构化模块及台标结构化模块;

所述人脸结构化模块用于对输入的数据处理后获得人脸出现视频的uuid、视频帧编号、坐标、大小、是否带口罩、base64数据和置信度;

所述车牌结构化模块用于对输入的数据处理后获得车牌出现视频的uuid、视频帧编号、坐标、base64数据和置信度;

所述敏感建筑物结构化模块用于对输入的数据处理后获得敏感建筑物出现视频的uuid、视频帧编号、坐标、大小、base64数据和置信度;

所述台标结构化模块用于对输入的数据处理后获得台标logo出现视频的uuid、视频帧编号、坐标、base64数据和置信度。

在一实施例子中,所述base64数据为上述模块识别出目标后对在原始视频上扣出对应区域,再用base64对该区域重新编码后的结果。

第二方面,公开了一种基于celery的视频结构化方法,包括:

接收视频结构化任务请求创建相关的celery的任务,并将任务送入celery任务服务,等待执行;

celery任务服务中celery任务执行时调用视频结构化模块对视频进行处理,之后将处理结果写入数据库;

其中,celery任务服务中的异步任务的执行者worker对视频进行分析处理,将任务执行状态通过http请求传给所述任务控制服务,将视频结构化的结果通过http请求传给web服务。

在一实施例子中,celery任务服务中任务执行失败会通过注册的回调函数通知任务控制服务,当任务失败时,任务控制服务可重新发起任务再次执行。

在一实施例子中,任务控制服务根据已返回任务的执行开始时间判断是否有任务在celery任务服务的broker中丢失,如果有任务丢失则重新发起任务。

在一实施例子中,celery任务服务采用多种celery任务来调用底层视频结构化模块,根据视频分辨率和帧数预估视频的处理时间,将任务按照预估执行时间划分长短任务,为长任务创建celery worker。

以上一个或多个技术方案存在以下有益效果:

本发明数据库用于存放web服务的数据、任务记录以及视频结构化的结果;视频存储服务用于存放视频文件;客户向web服务发送请求获取服务;web服务向任务控制服务提交视频结构化任务请求;任务控制服务创建相关的celery的任务,并将任务送入celery的调度系统,等待执行;celery任务执行时会调用视频结构化模块对视频进行分析处理,之后将结果写入数据库。

本发明提出一种基于celery实现的视频结构化的方法并给出详细的架构;本发明对celery异步任务执行提出补充策略,引入任务重试机制,celery中任务执行失败会通过注册的回调函数通知任务控制服务,本发明中当任务失败时,任务控制服务可重新发起任务再次执行,提高任务的可靠高效执行;本发明提出的方法扩展性好。

本发明中视频结构化模块采用异步的方式执行,该方法有完备的架构,扩展性好,处理效率高。

本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1为本发明系统结构图。

图2为celery模块相关部分的框架图。

图3为本发明执行流程图。

具体实施方式

应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。

在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

celery是python实现的,专注实时处理和任务调度的分布式任务队列,具有简单,可用,快速,灵活等特性,易于集成到一些开发的框架,有着广泛的应用场景。当用户在网站中进行某个操作需要很长时间时,可以将这种操作交给celery执行,先返回给用户一个友好的提醒,等任务执行完成后再返回结果。还有一些在运维场景中需要批量在几百台机器上执行一些命令或者任务时celery也可以比较快速的实现。

实施例一

如图1所示,本实施例公开了一种基于celery的视频结构化系统,包括:

包括至少一个客户端、一个web服务、任务控制服务、视频文件存储服务、数据库、celery任务服务和若干视频结构化模块;

数据库用于存放web服务的数据、任务记录以及视频结构化的结果;

视频存储服务用于存放视频文件;

客户向web服务发送请求获取服务;

web服务向任务控制服务提交视频结构化任务请求;

任务控制服务创建相关的celery的任务,并将任务送入celery的调度系统,等待执行;

celery任务执行时会调用视频结构化模块对视频进行分析处理,之后将结果写入数据库。

本实施例子中,上述一个web服务、任务控制服务、视频文件存储服务内部通过http协议互联,所述数据用于数据持久存储,视频结构化模块通过celery调度异步执行,celery worker调用视频结构化模块,执行具体的处理算法。

本发明详细阐述了方法、架构、模块、实现方案等,并提出一些策略来保证视频结构化异步任务的执行。

具体例子中,web服务、任务控制服务和celery任务服务与所述数据库相连;通过web服务上传的视频文件存储在视频存储服务中,在celery任务异步执行时读取访问。

客户端,通过浏览器或者手机应用向web服务发送http请求调用相关服务,主要有上传视频文件,获取视频结构化结果,查询与管理视频结构化状态等。

web服务,处理来自客户端的请求,当收到客户端上传文件请求时,为视频文件创建uuid,把文件内存保存到视频存储服务,创建相关的数据记录并写入数据库,同时向任务控制服务发送任务请求;当收到客户端其他请求时,从数据库中查询结果并返回给客户端。

任务控制服务,用于处理web服务发来的任务请求,把相关请求参数封装成celery任务,发送给celery任务服务,等待调度,同时将任务信息以及所有参数写入数据库,这些信息可用于跟踪任务状态。

视频存储服务,用于存储客户端上传的视频文件,可以通过文件uuid访问,视频存储服务同时提供转码服务,统一视频数据的分辨率,压缩格式和封装格式,本实施例子中采用720P/h.264/mp4,mp4可用于视频预览。视频存储服务是分布式存储服务,支持动态扩容动态备份,以确保存储容量和数据的安全,防止数据丢失。

数据库,用于持久化存储一些视频信息、任务信息、视频结构化的结果以及其他需要存储的信息。

celery任务服务,如图2,主要组件包括:broker,消息代理,接收外部发来的任务消息,存入消息队列;worker异步任务的执行者,从broker中读取消息再以进程、线程或协程的方式执行,之后把执行结果写入backend;backend用于存储任务执行后的状态信息和结果。

celery支持多种不同的broker和backend。本发明中broker为rabbitmq,backend为redis。本发明中异步任务的执行者worker会调用ProcessVideo方法对视频进行分析处理,将任务执行状态通过http请求传给所述任务控制服务,将视频结构化的结果通过http请求传给所述web服务,写入所述数据库。

视频结构化模块,是用c或c++语言实现人工智能算法模块,每一个模块对应一种结构化处理。

视频结构化模块接口python语言定义如下:

def ProcessVideo(uuid):返回为tutle.ProcessVideo内部调用具体算法。

本发明中视频结构化包括人脸、敏感建筑物、台标logo以及车牌等。本发明所述视频结构化模块处理结果描述如下:

人脸有:人脸出现视频的uuid、视频帧编号、坐标、大小、是否带口罩、base64数据和置信度。

敏感建筑物有:敏感建筑物出现视频的uuid、视频帧编号、坐标、大小、base64数据和置信度。

台标logo有:台标logo出现视频的uuid、视频帧编号、坐标、base64数据和置信度。

车牌有:车牌出现视频的uuid、视频帧编号、坐标、base64数据和置信度。

上述所述base64数据为算法识别出目标后对在原始视频上扣出对应区域,再用base64对该区域重新编码后的结果。

基于本发明的提出的方法很易容扩展,只需要实现相关的接口,就能实现更多的视频结构化处理。

本发明任务异步执行通过python语言编码实现的,对于所示视频结构化模块中C或C++语言的实现需要用swig封装成python module,可以直接在celery worker中调用。

实施例二

本实施例的目的是提供基于celery的视频结构化方法,其工作流程如图3,具体如下:

S1:客户端通过http api向web服务上传视频文件。

S2:web服务收到文件上传请求后,为文件创建uuid,并保存文件到视频存储服务,向任务控制服务发送http请求,请求参数为视频相关参数和uuid。

S3:任务控制服务将请求参数封装为celery task,发送到celery broker,等待调度。

S4:celery worker从broker获取任务,做参数检查,开始执行任务。

S5:任务执行完成后将结构化的结果写入数据库。

本发明中视频结构化包含:人脸结构化、敏感建筑物结构化、台标logo结构化及车牌结构化;任务控制服务会为每个视频创建四个celery的任务,每个任务都执行结束时,都需要上报结果到web服务,当四个任务都成功结束时才认为该视频的结构化完成,否则结构化未完成。

上述基于celery的视频结构化方法,客户端获取视频结构化结果如下:

客户端上传视频后,web服务会返回该视频的uuid,客户端用uuid,通过web服务的api去查询和获取结果。本发明中采用轮训的方式,如果客户端获取视频结构化失败,则等待数秒后发起下次获取请求。

上述基于celery的视频结构化方法,本发明对celery异步任务进行了补充,引入任务重试机制,增强任务可靠性,新增执行长短任务策略,具体如下:

1)引入任务重试机制,celery中任务执行失败会通过注册的回调函数通知任务控制服务,本发明中当任务失败时,任务控制服务可重新发起任务再次执行。

2)增强任务可靠性,本发明中所有任务的状态都持久存储在数据库中,任务控制服务根据已返回任务的执行开始时间判断是否有任务在celery broker中丢失,如果有任务丢失则重新发起该任务。

3)增加执行策略,本发明根据任务预估执行时间将任务划分为长任务和短任务,预估执行时间一般由视频分辨率和帧数决定,再设定一个经验阈值,当预估执行时间超过这个阈值时,划分到长任务,否则短任务。本发明对于长短任务,分别创建不同数目的celery worker进行处理,长任务执行时间长,适当的多创建celery worker,增加任务并发执行个数,提高任务执行效率。

本发明针对现有视频耗时问题,提出了基于celery异步调度处理,客户端上传视频后由任务控制服务发起异步任务,结构化任务即视频结构化模块同时执行。处理由客户端上传的视频,在时间容忍范围内,减轻了后续处理模块的计算复杂度。

本发明的系统为一种微任务、异步的架构,将视频结构化各种处理模块抽象成微任务,具体为不同的视频结构化算法可以抽象成不同的微任务,由celery调度执行,模块之间设计低耦合,模块容错性强;扩展性强,易于添加新的视频结构化处理算法。

本领域技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于深度学习行为序列的视频推荐方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!