本发明涉及计算机图像处理领域,具体地说是一种无绿幕、低延时、实时的视频流多人分割方法、系统、芯片及介质。
背景技术:
人像分割技术,作用是将人像区域从图像中进行提取,达到人像与背景的分离。人像分割技术在视觉特效领域应用广泛,例如背景替换、背景虚化、人物隐藏等,这些特效的实现均依赖于高精度人像分割技术。
传统的人像分割技术依赖于利用人像的边缘检测,然后利用膨胀和漫水填充方法进行填充完成人像的分割。此种方法近适合人像和背景差异大,且背景简单的情况,在实际中很难应用。
随着深度学习技术的发展,特别是在计算机视觉领域,以卷积神经网络为代表的深度学习方法在人像的分割领域得到了广泛的研究。逐帧分割网络的训练以图片作为输入,输出为预测的掩模,一般用1表示人像区域,0表示背景,利用人工标注的真值来监督网络的训练。而当前逐帧人像分割网络的分割效果不稳定,经常出现误分割以及漏分割的现象;而视频流分割网络训练的输入除了当前帧外还有上一帧的输入作为先验,此外还需要提供第一帧的真值,仅能作为像素级的目标追踪,很难应用于实时的人数发生变化的分割应用。
此外一般神经网络消耗大量算力导致延时高,很难达到实时,导致单纯的分割网络很难直接应用于实际。
因此为了实际应用,需要一种能适用于任意背景,高精度且同时满足低延时以及实时的视频流多人分割系统。
技术实现要素:
本发明为解决现有的问题,旨在提供视频流多人分割方法、系统、芯片及介质。
为了达到上述目的,本发明采用的技术方案提供一种视频流多人分割方法,包括:
a,获取视频帧图像中的各人像的包围框,及粗分割而得的第一掩膜;
b,利用包围框分别获取各人像区域的图片,与掩膜拼接成深度图像;
c,将深度图像输入修正网络,输出精细的第二掩膜;
d,将第二掩膜映射到原视频帧图像位置,完成人像分割。
在一些实施例中,a中,获取视频帧rgb图像中的人像的数量、和/或包围框的左上角坐标、和/或人像区域的宽和高。
在一些实施例中,a中采用实例分割网络centermask。
在一些实施例中,b中,利用包围框从rgb图像中分别分割出含每个单人的rgb图像,并将其与对应粗分割而得的第一掩膜组合成rgbd图像。
在一些实施例中,所述组合为通道拼接。
在一些实施例中,c中,将rgbd图像输入修正网络,输出针对每个人像区域中人像精细分割而得的第二掩膜。
在一些实施例中,所述修正网络为语义分割网络u2net。
在一些实施例中,c中,在训练过程中通过数据增强方法来模拟各种不同的粗分割结果:
对真值的二值图像进行腐蚀,膨胀操作,来模拟人像定位和粗分割模块的粗分割结果;和/或将真值的二值图像像素随机替换为0或255,并进行腐蚀膨胀,来产生空洞区域,来模拟分割错误结果;和/或将真值的二值图像置为255,来模拟漏检检测模块输出的粗分割结果。
在一些实施例中,c中,将所有rgbd输入分割修正网络,完成针对粗分割的第一掩膜的修正,得到第二掩膜。
在一些实施例中,还包括e,监控a和/或b中前一帧和当前帧中的人数,若当前帧中的人数小于前帧,则重新获取视频帧图像中的人像;若当前帧中的人数大于a和/或b中的数量,则以检测到的人像区域代替a检测的人像区域。
在一些实施例中,将当前帧的图像输入漏检检测网络,然后输出检测到的人像包围框,通过漏检检测网络输出的包围框个数与人像定位和粗分割模块检测到的人像个数进行对比。
在一些实施例中,若漏检检测模块检测到的人数大于前一帧的人数,则判断为人像定位和粗分割模块漏检,则将该结果代替原有结果。
在一些实施例中,直接使用漏检检测网络输出的人像包围框代替人像定位和粗分割网络输出的人像包围框。
在一些实施例中,将漏检检测网络输出的人像包围框中的所有像素都标注为人像像素的方式,进行粗分割结果的替换。
本发明还提供一种视频流多人分割系统,包括:
人像定位模块,用于对视频帧图像中的人像进行定位;
粗分割模块,用于获取单个人像包围框,以及粗分割的第一掩膜
拼接模块,用于利用包围框分别获取各人像区域的图片,与掩膜拼接成深度图像;
修正模块,用于将深度图像输入修正网络,输出精细的第二掩膜;
分割模块,用于将第二掩膜映射到原视频帧图像位置,完成人像分割。
其中,还包括预处理模块,用于对输入的单张视频帧图像进行缩放处理,将图片缩放到固定尺寸。
其中,还包括漏检检测模块,用于检测人像定位模块和/或粗分割模块中检测到的人像个数以及前一帧的人像个数。
其中,所述各个模块单独为一个进程,通过开辟共享内存使得各个模块之间进行通讯,以完成数据交换
本发明还提供一种芯片,包括处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行所述的视频流多人分割方法。
本发明还提供一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令被处理执行时,实现任一所述的视频流多人分割方法。
和现有技术相比,本发明的技术优势在于:融合人像定位及粗分割网络和修正分割网络,实现高精度的分割效果;增加漏检检测网络,提升多人分割方法的稳定性;利用数据扩增模拟各种粗分割结果,训练修正分割网络,提升修正分割网络鲁棒性;通过对模型进行模型压缩和float16量化操作,以及利用多进程和共享内存进行分布式部署实现低延时、实时的分割方法。
附图说明
图1为本发明实施例的流程示意图;
图2为人像定位与粗分割的示意图;
图3为漏检情况下粗分割结果替换的示意图;
图4为通过数据扩增生成各种粗分割结果的示意图;
图5为修正模块运行的效果示意图;
图6为修正前后细节对比示意图。
具体实施方式
现结合附图对本发明作进一步地说明。
参见图1至图6,图1至图6展示的是本发明的一个实施例,提供的是一种无绿幕、低延时、实时的视频流多人分割系统与方法。其中,本实施例的方法主要包括:
a,摄像机拍摄的rgb图像输入人像定位和粗分割模块,人像定位和粗分割模块输出图像中人像个数,每个单人人像区域包围框的左上角坐标及人像区域的宽和高,以及针对每个人像区域中人像的粗略分割结果,1表示人像区域像素,0表示背景像素。
b,利用步骤a输出的每个单人人像区域包围框从摄像机拍摄的rgb图像中分割出包含每个单人的rgb图像,然后将对应的粗分割结果与单人的rgb图像组合成rgbd图像。
c,将所有拼合的rgbd图像以一个批次的形式输入修正网络,输出针对每个人像区域中人像的精细分割结果,1表示人像区域像素,0表示背景像素。
d,利用步骤a中输出的每个单人人像区域包围框的位置以及步骤2输出的每个人像区域中人像的精细分割结果,将每个人像中的精细分割结果恢复到和摄像机输入rgb图片同样的大小的通道为1的图片中,1表示人像区域像素,0表示背景像素。利用整体掩膜从摄像机拍摄的rgb图片中提取出人像区域像素,完成人像的分割。
以及,e漏检检测模块监控步骤a中前一帧和当前帧中检测到的人数变化,若当前帧中的人数小于前帧,则漏检检测模块启动人体区域检测网络,进一步对图片中的人像数量进行确认,若检测到的人数大于步骤1检测的数量,则用漏检检测模块检测到的人像区域代替步骤1检测的人像区域,对应粗分割结果使用全为1的单通道图片表示。
参见图1,本实施例提供一种实现无绿幕条件下,高精度、低延时以及实时的视频流分割系统。如图1所示,该系统的输入为摄像机采集的视频帧,通过人像定位和粗分割模块进行人像计数、定位与粗略分割,由修正模块利用定位的人像区域和粗分割结果作为输入得到修正后的结果。由漏检检测模块监控人数变化,实时修正人数错误。各模块采用了分布式部署,利用共享内存进行通信,通过信号量机制进行调度。
人像定位和粗分割模块的构建与运行:
人像定位和粗分割模块输入预处理单元:对输入的单帧图片进行缩放处理,将图片缩放到固定尺寸。
人像定位和粗分割模块处理单元:处理模块采用实例分割网络,本系统采用centermask,该网络能够对图片中的人像进行定位和粗略分割,得到单个人像包围框以及掩膜。
任何可以完成人像定位和粗分割的网络均可作为人像定位和粗分割模块的处理单元,不仅限于centermask。
参见图2,人像定位和粗分割模块后处理单元:利用处理单元得到人像包围框,从输入图片中分割出包含人体区域的rgb图片,并与粗分割的掩膜进行通道拼接,得到rgba的图片。针对每个个体的人像包围框均进行相同的处理。
漏检检测模块保存前一帧中人像定位和粗分割模块检测到的人像个数。通过比较当前帧中人像定位和粗分割模块检测到的人像个数以及前一帧的人像个数,来决定是否进行启动漏检检测网络,当监控到当前帧人数小于前一帧人数时,启动人像检测网络。
漏检检测模块的检测网络:漏检检测网络采用人像检测网络,本实施例采用yolov5,该网络能够对图像中的人像进行定位,得到每个人像的包围框(任何可以完成人像检测的网络均可作为漏检检测模块的检测网络,不仅限于yolov5)。将当前帧的图像输入漏检检测网络,漏检检测网络输出检测到的人像包围框,通过漏检检测网络输出的包围框个数与人像定位和粗分割模块检测到的人像个数进行对比,若漏检检测模块检测到的人数大于人像定位和粗分割模块人数,则判断为人像定位和粗分割模块漏检,采用漏检检测模块的结果代替人像定位和粗分割模块的结果。
进一步地,替换方法如下:
(a)包围框替换:直接使用漏检检测网络输出的人像包围框代替人像定位和粗分割网络输出的人像包围框;
(b)粗分割结果替换:参见图3,由于漏检网络只进行人像检测,不进行分割,因此采用将漏检检测网络输出的人像包围框中的所有像素都标注为人像像素的方式进行粗分割结果的替换。
修正模块为分割修正网络,而本实施例中的分割修正网络采用语义分割网络u2net。所述语义分割网络u2net输入为rgbd图片,rgb为包含人像的三通道图片,d表示对rgb图片中人像区域的粗略分割结果。用来监督网络训练的真值为rgb图片中人像区域的精细分割结果。
作为优选,参见图4,为了更好的模拟粗略分割结果,在训练过程中通过数据增强方法来模拟各种不同的粗分割结果,具体如下:
(a)对真值的二值图像进行腐蚀,膨胀操作,来模拟人像定位和粗分割模块的粗分割结果;
(b)将真值的二值图像像素随机替换为0或255,并进行腐蚀膨胀,来产生空洞区域,来模拟分割错误结果;
(c)将真值的二值图像置为255,来模拟漏检检测模块输出的粗分割结果;分割修正网络可采用任何语义分割网络,包括但不限于u2net网络。
参见图5,修正模块将人像定位和粗分割模块或漏检检测模块输出的所有rgbd以一个批次的形式输入分割修正模块,完成针对粗分割结果的修正。完成修正后,参见图6,图6为修正前后对比,利用每个人像包围框的在原图中的位置,将修正后的粗分割结果,映射到原图位置,完成图片中人像分割。此外,本实施例中的人像为两个分离的情况。若遇到人像重叠的情况时,在将重叠的第二掩膜映射回到原图位置后采用的“或”运算,则人像区域均会被保留,不会产生覆盖的情况。
作为优选,上述各个模块单独为一个进程,通过开辟共享内存,让各个模块之间进行通讯,完成数据交换。利用信号量机制完成模块之间的调度。实现流水线的工作方式。
作为优选,网络推断及图片的处理基于nvidiagpu进行计算。
上述的实施例中,粗略分割/粗分割的定义是:生成的人像掩膜允许欠分割(少分割,例如胳膊,腿分割不完整),以及多分割(将非人像区域背景纳入前景)情况的出现,无需精确的仅包含人像区域像素位置。
精细分割的定义是:分割结果无欠分割或多分割情况的出现,分割掩膜仅包含输入人像区域的像素位置。
本发明实施例还提供还提供一种芯片,包括处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行所述的视频流多人分割方法。例如,存储器可以包括随机存储器、闪存、只读存储器、可编程只读存储器、非易失性存储器或寄存器等。处理器可以是中央处理器(centralprocessingunit,cpu)等。或者是图像处理器(graphicprocessingunit,gpu)存储器可以存储可执行指令。处理器可以执行在存储器中存储的可执行指令,从而实现本文描述的各个过程。
可以理解,本实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是rom(read-onlymemory,只读存储器)、prom(programmablerom,可编程只读存储器)、eprom(erasableprom,可擦除可编程只读存储器)、eeprom(electricallyeprom,电可擦除可编程只读存储器)或闪存。易失性存储器可以是ram(randomaccessmemory,随机存取存储器),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如sram(staticram,静态随机存取存储器)、dram(dynamicram,动态随机存取存储器)、sdram(synchronousdram,同步动态随机存取存储器)、ddrsdram(doubledataratesdram,双倍数据速率同步动态随机存取存储器)、esdram(enhancedsdram,增强型同步动态随机存取存储器)、sldram(synchlinkdram,同步连接动态随机存取存储器)和drram(directrambusram,直接内存总线随机存取存储器)。本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器存储了如下的元素,升级包、可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。
其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序,包含各种应用程序,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序中。
在本发明实施例中,处理器通过调用存储器存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器用于执行上述方法步骤。
本发明实施例还提供一种芯片,用于执行上述的方法。具体地,该芯片包括:
处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的设备用于执行上述方法。
本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现本发明上述的方法的步骤。
例如,机器可读存储介质可以包括但不限于各种已知和未知类型的非易失性存储器。
本发明实施例还提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行上述方法。
应理解,在本申请的各种实施例中,各过程的a-e的序号的并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在机器可读存储介质中。因此,本申请的技术方案可以以软件产品的形式来体现,该软件产品可以存储在机器可读存储介质中,其可以包括若干指令用以使得电子设备执行本申请实施例所描述的技术方案的全部或部分过程。上述存储介质可以包括rom、ram、可移动盘、硬盘、磁盘或者光盘等各种可以存储程序代码的介质。
上面结合附图及实施例描述了本发明的实施方式,实施例给出的并不构成对本发明的限制,本领域内熟练的技术人员可依据需要做出调整,在所附权利要求的范围内做出各种变形或修改均在保护范围内。
1.一种视频流多人分割方法,其特征在于包括:
a,获取视频帧图像中的各人像的包围框,及粗分割而得的第一掩膜;
b,利用包围框分别获取各人像区域的图片,与掩膜拼接成深度图像;
c,将深度图像输入修正网络,输出精细的第二掩膜;
d,将第二掩膜映射到原视频帧图像位置,完成人像分割。
2.根据权利要求1所述的视频流多人分割方法,其特征在于:a中,获取视频帧rgb图像中的人像的数量、和/或包围框的左上角坐标、和/或人像区域的宽和高。
3.根据权利要求2所述的视频流多人分割方法,其特征在于:a中采用实例分割网络centermask。
4.根据权利要求2或3所述的视频流多人分割方法,其特征在于:b中,利用包围框从rgb图像中分别分割出含每个单人的rgb图像,并将其与对应粗分割而得的第一掩膜组合成rgbd图像。
5.根据权利要求4所述的视频流多人分割方法,其特征在于:所述组合为通道拼接。
6.根据权利要求4或5所述的视频流多人分割方法,其特征在于:c中,将rgbd图像输入修正网络,输出针对每个人像区域中人像精细分割而得的第二掩膜。
7.根据权利要求6所述的视频流多人分割方法,其特征在于:所述修正网络为语义分割网络u2net。
8.一种视频流多人分割系统,其特征在于:包括:
人像定位模块,用于对视频帧图像中的人像进行定位;
粗分割模块,用于获取单个人像包围框,以及粗分割的第一掩膜拼接模块,用于利用包围框分别获取各人像区域的图片,与掩膜拼接成深度图像;
修正模块,用于将深度图像输入修正网络,输出精细的第二掩膜;
分割模块,用于将第二掩膜映射到原视频帧图像位置,完成人像分割。
9.一种芯片,其特征在于,包括处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行权利要求1-7中任一所述的视频流多人分割方法。
10.一种计算机可读介质,其特征在于:其上存储有计算机程序指令,所述计算机程序指令被处理执行时,实现权利要求1-7中任一所述的视频流多人分割方法。
技术总结