本发明涉及养殖场视频监控技术领域,更具体地,涉及一种养殖场多目标视频分析方法及其系统。
背景技术:
我国是世界上最大的猪肉生产国和消费国,猪肉产量近十年来稳居全球首位。2015年,我国猪肉总产量达到5487万吨,预计到2020年,猪肉总产量达到5760万吨,占肉类总产量64%。随着我国社会和经济的不断发展,人们生活质量不断的提高,对猪肉类食品的需求量不断增加的同时,对猪肉产品的质量安全提出了更高的要求,生猪的健康养殖是向社会提供质量安全猪肉的前提保证。
生猪的采食、饮水、排泄等行为特征反应了生猪的生长状态,通过分析生猪的日常行为表现,可以判定生猪生长状态健康与否。当前我国养殖业主要通过人工观察方法,监测猪的生长情况,消耗大量的人力和物力,得到的数据可信度低。基于计算机视觉技术对生猪行为进行跟踪、识别、记录和分析,实现准确、实时、便捷监测生猪的生长动态,对于保障猪肉的质量品质安全是非常必要的。随着生猪养殖由传统分散的养殖方式向规模化、集约化、精细化养殖模式的发展,基于单计算节点,目标检测模型固定单一的视频流目标检测分析系统,无法满足对多视频流、视频背景复杂多变、多目标生猪的实时检测分析的需求。
技术实现要素:
本发明的目的是提供一种养殖场多目标视频分析方法及其系统。该系统能够实时获取多个摄像头的视频流,将获取到的多个视频流进行解码、统一结构封装、自定义分组,分组视频发送给各计算节点, 在不同层上的计算节点可以插入相应的功能处理模块,对发送过来的分组视频进行处理,继而发送到下一个处理节点进行处理,实现目标生猪的实时分析和/或检测。
本发明的一个方面,提供了一种养殖场多目标视频分析方法,包括:
S1.基于养殖场的多个视频流,利用storm流式技术将所述视频流在时间上分割成多个微小数据片段,并将所述数据片段分配给多个工作节点;
S2.利用多节点并行的方式对所述多个工作节点的数据片段进行分析,以获得所需的视频流。
本发明的另一个方面,还提供了一种养殖场多目标视频分析系统,包括:
视频流获取模块,用于获取养殖场的多个视频流;
storm流式计算模块,用于利用storm流式技术将所述视频流在时间上分割成多个微小数据片段,并将所述数据片段分配给多个工作节点;
分析模块,用于多节点并行的方式对所述多个工作节点的数据片段进行分析,以获得所需的视频流。
本申请提出养殖场多目标视频分析方法及系统具有以下优点:
1)能够实时分析大规模监控视频流,根据分析产生的决策数据能为经营者进一步提高效率提供决策依据和参考,从而促使经营者为养殖企业制定合理的产业规划和政策;
2)对养殖场尤其是生猪养殖场进行多摄像头多目标的监控检测。对监控视频做到实时快速检测和分析,进一步完善生猪养殖向规模化、精细化、智能化方向发展;
3)实现动态可扩展性,可动态添加新的计算结点处理增加的视频流;
4)采用可插拔方式对功能模块进行管理,用户根据需求随时配置 合适的功能模块进行视频分析处理,有较好的适用性;
5)采用统一视频流获取接口,可适配不同编码的摄像头,提高工作效率;
6)减少开发人员的开发时间和工作量,同时方便管理人员进行维护和管理。
附图说明
图1为根据本发明实施例中养殖场多目标视频分析方法的总体流程示意图;
图2为根据本发明实施例中养殖场多目标视频分析系统的总体流程示意图;
图3为根据本发明一个优选实施例中养殖场多目标视频分析系统的流程示意图;
图4为根据本发明一个优选实施例中养殖场多目标视频分析系统中插拔式功能组合的流程示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明所提供的养殖场多目标视频分析方法,如图1所示,包括:
S1.基于养殖场的多个视频流,利用storm流式技术将所述视频流在时间上分割成多个微小数据片段,并将所述数据片段分配给多个工作节点;
S2.利用多节点并行的方式对所述多个工作节点的数据片段进行分析,以获得所需的视频流。
在本发明的实施例中以生猪的养殖场为例,详述本发明。
在本发明中,“多个”指2个或2个以上。
在本发明的分析方法中,使用了storm流式技术对生猪养殖场中多个视频流进行分析,是实现生猪目标行为跟踪、识别、记录和分析的 前提。
在S1中,为了提高工作效率,在本发明的实施例中,使用统一视频流获取接口,可适配不同编码的摄像头。
其中,S1的具体步骤包括:
S11.对所述多个视频流以视频帧的形式进行解码,将解码后的数据封装至数据集中;
S12.基于所述数据集,使用拓扑分组将其在时间上分割成多个微小数据片段,并将所述数据片段分配给多个工作节点。
其中,S12中的拓扑分组可以为本领域storm流式计算常见的分组模型,用户可以根据实际需求来选择合适的拓扑分组形式进行分组,如字段分组、全局分组、随机分组、本地分组、无分组、广播分组、直接分组或自定义分组。
在本发明优选的实施例中,为了更加方便,可以采用随机分组模型。
为了能更好地实现超负荷状态下的分析,本发明的随机分组模型更优选地是综合各计算节点已积累的请求数和各计算节点所需最小的请求处理时间来判断各计算节点的计算能力是否达到满负荷,从而实现对视频数据灵活调度的目的以及自动增加计算节点。
在本发明中优选的随机分组模型为:定义t时刻某个节点s已积累的请求数为Ls(t),程序会为该节点的每个请求评估处理时间为Tsm(t),该节点在t时刻的请求积累量等于前一时刻的请求积累量LS(t-1)与t时刻内到达节点的新的请求数目NS(t)之和,再减掉t时刻内处理掉的请求数As(t),节点s在t时刻所需要的请求处理时间为Ts(t),节点s到t时刻为止所需要的请求处理时间为τs(t),则具体关系如下:
Ls(t)=Ls(t-1)+Ns(t)-As(t) (1)
τs(t)=τs(t-1)+Ts(t) (3)
为了方便对整个集群的资源调度,t时刻整个集群所有任务的总积累量用L(t)表示为:
在本发明的一个实施例中,为了提高节点的响应时间,增大节点吞吐量,这里规定:
σ(t)=min{L1(t),L2(t),...,Ls(t),...,Lk(t)} (5)
τ(t)=min{τ1(t),τ2(t),...,τs(t),...,τk(t)} (6)
Ls(t)≤σ(t) (7)
τs(t)≤τ(t) (8)
其中σ(t)为t时刻各计算节点含有请求量最小值,t时刻某个节点s已积累的请求数Ls(t)不超过σ(t);τ(t)为到t时刻为止各计算节点所需最少的请求处理时间,节点s到t时刻为止所需要的请求处理时间τs(t)不超过τ(t)。
设在t+1时刻提交给节点s的请求数目为NS(t+1),Δσ(t)为到t+1时刻为止已积累的请求数与t时刻各计算节点含有请求量最小值σ(t)之差:
Δσ(t)=Ns(t+1)+Ls(t)-σ(t) (9)
Δτ(t)为在t+1时刻节点s所需要的总处理时间与到t时刻为止各计算节点所需最少的请求处理时间τ(t)之差:
Δτ(t)=τs(t)+Ts(t+1)-τ(t) (10)
如果Δσ(t)>0则表示t+1时刻s节点已经处于超负荷状态,且多出了Δσ(t)请求量;如果Δτ(t)>0是多了请求量,则首先将t+1时刻提交给节点s的请求数目为NS(t+1)的任务请求 平均分配其他空闲节点,如果不存在空闲节点,则分配给其他工作量未满的节点,检验规则如上。
为了解决能力不足的问题,还包括计算节点动态增加模块,用于当所有工作节点均已处于超负荷状态时增加计算节点。即,若所有工作节点已处于超负荷状态,则可采用动态增加计算节点的方式。动态增加计算节点规则如下:
1)令表示t+1时刻超出s节点处理能力的请求数,则Lmax=ΣLs为t+1时刻所有节点超出自己处理能力的请求数总和。
2)经过历史统计,每个请求的平均计算时间为Tavg,则需要额外计算节点处理的请求数所需总时间为Ttotal=Tavg*Lmax,设需要额外的计算节点数量为K,则每个计算节点所需的计算时间为Te=Ttotal/K;
3)根据Te≤ε,ε为期待计算节点运算的最大阈值,则可获得额外的计算节点数量为K。动态增加这K个计算节点。
本发明所提供的养殖场多目标视频分析系统,如图2所示,包括:
视频流获取模块A1,用于获取养殖场的多个视频流;
storm流式计算模块A2,用于利用storm流式技术将所述视频流在时间上分割成多个微小数据片段,并将所述数据片段分配给多个工作节点;
分析模块A3,用于多节点并行的方式对所述多个工作节点的数据片段进行分析,以获得所需的视频流。
在养殖场中的视频通常使用的是现有视频编码格式,如H264、H265等,在视频流获取模块中根据获取到的不同视频流编码格式,选择合适的解码函数进行解码,确保在解码过程中不将数据丢失,再将解码后的数据统一封装到数据集中。
在本发明优选的实施例中,为了提高工作效率,在视频流获取模 块使用统一视频流获取接口,可适配不同编码的摄像头。
在storm流式计算模块中,包括自定义视频分组模块,当得到封装的数据集后,用户可以根据需求选择合适的拓扑分组形式进行分组。为了更加方便,在本发明优选的实施例中,使用随机分组模型分组。即在该storm流式计算模块中还包括随机分组模型。
通过拓扑分组后得到多个计算节点,为了实现多功能的智能分析处理,在分析模块中还包括插拔式功能组合模块,用于在一个或多个工作节点上设置单功能模块或多功能模块组合。根据配置好的功能模块或多功能模块组合,在每个节点上提供相应的分析服务,如生猪的检测、图像特征提取、运动目标检测与跟踪、Mean Shift目标跟踪等。
本发明实施例中的插拔式功能组合模块的设置步骤包括:
根据需求配置功能模块与其标识映射;
读取映射关系;
根据映射关系选择相应的功能模块。
在本发明的一个优选的实施例中,系统还包括分析结果展示模块,用于将所述分析模块处理完成的视频流汇总并输出,通常将其输入到前台,进行多窗口个性化展示。
其中功能模块是指本领域中常用的封装体,像Grayscale Operation,Color Histogram,SIFT Detect等对视频图像进行处理的封装体。
图3示出了本发明一个优选实施例中一种养殖场多目标视频分析系统,包括视频流获取模块、自定义视频分组模块、插拔式功能组合模块、视频分析模块、分析结果展示模块。
视频流获取模块:从不同编码格式的摄像头中获取视频流,假设在t时刻有kh264个编码为H264的摄像头产生视频流,有kh265个编码为H265的摄像头产生视频流,通过视频流获取模块后共有k个视频流,其中k=kh264+kh265。将k个视频流传递到下一个模块进行处理。
自定义视频分组模块:将上一模块的k个视频流,分为k组视频数 据每一组视频数据的帧数分别为m,n,...,l,然后设置分组为随机分组,将k组视频数据发送到视频分析模块中的运算节点中,假设在t时刻视频分析模块中有lbusy个节点处于满负荷状态,有lfree个空闲节点,以及lmidle个节点处于中间状态。则调度的具体步骤是:
1)若lfree>0,则从空闲节点开始分配,根据式(1)可知在t时刻空闲节点s的Ls(t)为0。如果k≤lfree,则将k组视频数据分配到k个空闲节点进行处理。
若k>lfree,将k组中的lfree组视频数据分配到lfree个空闲节点进行处理。将剩下的(k-lfree)组视频按照上述随机分组模型的分配规则进行分配。
2)若lfree=0,且k≤lmidle,则从lmidle个处于中间状态的节点选择k个节点,然后将k组视频发送到已选择的k个节点进行处理。
3)若lfree=0,且k>lmidle,则将k组视频中的lmidle组发送到lmidle个处于中间状态的节点进行处理,将剩下的(k-lmidle)组视频按照上述随机分组模型的分配归则进行分配。
4)若lfree=0,且lmidle=0,则按照上述随机分配模型规则进行分配。在进行步骤1)、2)、3)、4)时同时检测每个节点在下一刻的的请求量,保证每个节点满足式(9)Ns(t+1)+Ls(t)=σ+Δσ中的和式(10)τs(t)+Ts(t)=τ+Δτ的原则。也可以采用上述动态增加计算节点规则,增加相应的计算节点。
插拔式功能组合步骤包括如图4所示,根据需求配置功能模块与 其标识映射;读取映射关系;根据映射关系选择相应的功能类。
视频分析模块:根据选择好功能模块进行相应的处理,如图像特征提取、运动目标检测与跟踪、Mean Shift目标跟踪等。
分析结果展示模块:将处理好的视频流汇总并输入到前台展示。
养殖场管理者根据大规模展示结果可以实时监测生猪生长情况,节约成本,提高生产效率。同时根据展示结果能够制定更好的养殖决策。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。