目标检测方法、装置、设备及存储介质
技术领域
本申请涉及计算机视觉技术领域,特别涉及一种目标检测方法、装置、设备及存储介质。
背景技术
众所周知,视觉是获取信息最直接和有效的手段,然而大多数监控***处于“只记录不判断”的工作模式,摄像机获取的视频信号传送到控制中心,由控制中心的操作员分析并且做出相应的判断。然而这样在人力资源上存在极大的浪费。随着计算机视觉智能视频处理***的出现,利用图像处理技术和机器学习方法实现目标检测和跟踪等视频分析。
目标检测的任务是找出图像中所有感兴趣的目标,确定它们的位置和大小。由于各类物体有不同的外观、形状、姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是机器视觉领域最具有挑战性的问题。
现有的目标检测在静态图片中对于背景复杂的场景容易产生误检,因此目标检测准确率有待提高。除此之外,现有的目标检测对于实现监控复杂场景的泛化性能也有一定的限制,而为了提高目标检测算法的场景迁移性能,需要训练大量的数据集,对数据的依赖性较强。
发明内容
本申请的目的在于提供一种目标检测方法、装置、设备及存储介质,以提高目标检测的准确率和场景迁移性能。
第一方面,本申请实施例提供了一种目标检测方法,包括:
获取视频数据;
对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列;
将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。
在一种可能的实现方式中,在本申请实施例提供的上述方法中,包括:
利用背景减除法对所述视频数据的第一图像序列进行运动目标检测;
保留运动目标所在区域像素,利用形态学方法对所述运动目标所在区域像素进行分割处理,分割成独立的运动目标单元,以获得去除背景图像的第二图像序列。
在一种可能的实现方式中,在本申请实施例提供的上述方法中,所述检测模型采用SSD框架,该SSD框架包括:特征提取网络和目标检测网络。
在一种可能的实现方式中,在本申请实施例提供的上述方法中,所述方法还包括训练SSD框架,其包括:
对样本视频数据的图像序列进行预处理,获得去除背景图像的样本图像序列;
对所述样本图像序列进行人工目标标注,获得训练数据集;
基于所述训练数据集对SSD框架进行训练:首先初始化网络中待训练的参数及超参数,向初始化后的网络中输入训练数据进行网络前向传播,得到实际的输出结果,通过损失函数结合反向传播BP算法调整网络参数,进行迭代训练,至损失函数的损失值小于设定阈值或达到最大迭代次数时训练结束,得到训练好的SSD框架。
在一种可能的实现方式中,在本申请实施例提供的上述方法中,所述损失函数为位置误差与置信度误差的加权和。
在一种可能的实现方式中,在本申请实施例提供的上述方法中,所述置信度误差的计算公式如下:
其中,表示预测框i与真实框j关于类别匹配。
第二方面,本申请实施例提供了一种目标检测装置,包括:
获取模块,用于获取视频数据;
预处理模块,用于对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列;
目标检测模块,用于将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述预处理模块,具体用于:
利用背景减除法对所述视频数据的第一图像序列进行运动目标检测;
保留运动目标所在区域像素,利用形态学方法对所述运动目标所在区域像素进行分割处理,分割成独立的运动目标单元,以获得去除背景图像的第二图像序列;
获取去除背景图像的第二图像序列。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述检测模型采用SSD框架,该SSD框架包括:特征提取网络和目标检测网络。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,还包训练模块,用于:
对样本视频数据的图像序列进行预处理,获得去除背景图像的样本图像序列;
对所述样本图像序列进行人工目标标注,获得训练数据集;
基于所述训练数据集对SSD框架进行训练:首先初始化网络中待训练的参数及超参数,向初始化后的网络中输入训练数据进行网络前向传播,得到实际的输出结果,通过损失函数结合反向传播BP算法调整网络参数,进行迭代训练,至损失函数的损失值小于设定阈值或达到最大迭代次数时训练结束,得到训练好的SSD框架。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述损失函数为位置误差与置信度误差的加权和。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述置信度误差的计算公式如下:
其中,表示预测框i与真实框j关于类别匹配。
第三方面,本申请实施例提供了一种电子设备,包括:存储器和处理器;
所述存储器,用于存储计算机程序;
其中,所述处理器执行所述存储器中的计算机程序,以实现上述第一方面以及第一方面的各个实施方式中所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现上述第一方面以及第一方面的各个实施方式中所述的方法。
与现有技术相比,本申请提供的目标检测方法、装置、设备及存储介质,获取视频数据,对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列,将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。一方面,对于去除背景的图像只保留前景目标,没有其它背景图像的干扰,检测模型在学习和推理时更关注前景目标,从而可以提高目标检测准确率;另一方面,由于去除了输入图像的背景像素,检测模型所看到的只有前景像素,完全不会受到视频或者图片序列场景的影响,从而提高了目标检测的场景迁移性能。
附图说明
图1为本申请实施例一提供的目标检测方法的流程示意图;
图2为本申请实施例提供的背景去除方法的流程图;
图3为本申请实施例提供的基于SSD框架的目标检测***整体结构;
图4为本申请实施例二提供的目标检测装置的结构示意图;
图5为本申请实施例三提供的电子设备的结构示意图。
具体实施方式
下面结合附图,对本申请的具体实施方式进行详细描述,但应当理解本申请的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
目标检测要解决的问题是:通过目标框找出图像或视频中某些类别的物体,并且给出该物体属于某一类别的概率,即一种位置坐标回归与类别预测结合的任务。
SSD:中文全称:单次多框检测器,英文全称:Single Shot MultiBoxDetector,SSD框架包括特征提取网络和目标检测网络,其中,特征提取网络用于对图像进行特征提取,目标检测网络用于根据提取的特征进行位置回归和目标类别的预测,从而识别该图像中的物体类别。
图1为本申请实施例一提供的目标检测方法的流程示意图,实际应用中,本实施例的执行主体可以为目标检测装置,该目标检测装置可以通过虚拟装置实现,例如软件代码,也可以通过写入有相关执行代码的实体装置实现,例如U盘,再或者,也可以通过集成有相关执行代码的实体装置实现,例如,芯片、电脑、机器人等。
如图1所示,该方法包括以下步骤S101~S103:
S101、获取视频数据。
S102、对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列。
S103、将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。
本实施例中,该视频数据可以是通过摄像头实时采集的,也可以是事先存储的,可以理解视频数据由多帧图像构成,视频数据中包括需要识别的目标,例如人物、车辆等。获得待目标检测的视频图像之后,对视频图像中的图像序列去除背景,只保留前景目标,也就是只保留目标所在区域的像素,背景像素区域置零,获得去除背景图像的图像序列。
具体的,步骤S102具体可实现为:利用背景减除法对所述视频数据的第一图像序列进行运动目标检测;保留运动目标所在区域像素,利用形态学方法对所述运动目标所在区域像素进行分割处理,分割成独立的运动目标单元,以获得去除背景图像的第二图像序列。图2所示为背景去除方法的流程图。该算法主要是通过计算像素稳定性,算法在运行过程会记录从开始运行到当前时刻为止,稳定时间最长的像素点的灰度值,利用相邻几帧和历史像素的稳定性作为判断依据,在新的一帧来到时,通过一系列的阈值比较操作来判断像素点的稳定性,从而判断其是否为背景点,从而去除背景像素,保留前景像素。
然后将去除背景图像的图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。该检测模型在训练时也采用去除背景的样本进行训练。
下面以一个具体的实施方式对本申请进行介绍。
本实施方式中,所述检测模型采用SSD框架,该SSD框架包括:特征提取网络和目标检测网络。对该SSD框架进行训练的方式如下:
S201、对样本视频数据的图像序列进行预处理,获得去除背景图像的样本图像序列。
S202、对所述样本图像序列进行人工目标标注,获得训练数据集。
S203、基于所述训练数据集对SSD框架进行训练:首先初始化网络中待训练的参数及超参数,向初始化后的网络中输入训练数据进行网络前向传播,得到实际的输出结果,通过损失函数结合反向传播BP算法调整网络参数,进行迭代训练,至损失函数的损失值小于设定阈值或达到最大迭代次数时训练结束,得到训练好的SSD框架。
具体的,首先制作训练数据集:采用传统的图像处理算法,通过背景减除法对运动目标进行检测,保留运动目标所在区域的像素掩码,利用形态学方法尽可能保留运动目标所在区域像素,从而获取去除背景的图像序列,利用标注工具人工标注数据集,获得训练数据集。
检测模型设计:检测模型的设计基于现有的SSD目标检测网络结构,主要针对损失函数进行修改,去除类别损失中的背景损失函数项。本实施方式中,损失函数为位置误差与置信度误差的加权和。针对置信度误差,采用Softmax Loss,针对位置误差,采用SmoothL1loss。
损失函数如下:
其中,第一项Lconf为置信度误差,第二项Lloc为位置误差,N为匹配的默认边框的数目,α为平衡因子(权重系数),交叉验证的时候取值为1。c为类别置信度预测值。l为先验框的所对应边界框的位置预测值,而g是真实目标的位置参数。
其中,
其中,由于背景样本的单一性,可以不考虑背景的特征学习,使网络更关注前景样本学习,表示预测框i与真实框j关于类别匹配,则p的概率预测越高损失越小,通过Softmax获得,如果预测框没有目标,为背景的概率越高,损失越小。
其中,
其中,使用位置回归函数,表示第i个预测框与第j个真实框关于类别k是否匹配,和分别表示预测框与真实框,表示第i个真实框的中点,表示第i个默认框的中点,表示第i个默认框的宽度。
检测模型训练:利用标注的去背景图像数据集作为训练数据集,采用SSD网络框架训练检测模型。图3所示为基于SSD框架的目标检测***整体结构,具体的,首先调整输入图像尺寸为网络所要求的输入(例如采用300x300),将预处理获取的去背景图片作为训练模型的输入数据如图3中B所示,通过主体网络前向传播提取多层图像特征,将不同层图像特征进行融合,与真值数据对比IoU(Intersection over Union,交并比)获取误差值,修改模型目标函数,计算损失值,使网络学习更多的前景信息而忽略背景;利用误差反向传播调整网络参数,反向传播误差过程中采用随机梯度下降法,并且设置网络学习率lr=0.001,梯度动量momentum=0.9,完成一次迭代。至损失函数的损失值小于设定阈值或达到最大迭代次数时训练结束,得到训练好的SSD框架。
如图3所示,基于SSD网络结构添加数据预处理层,数据层获取视频数据,利用背景建模算法去除背景,保留前景图像送入SSD框架进行检测。如图3中C所示实现特征提取,之后通过一些卷积和池化操作提取不同尺度的特征图,针对不同尺度的特征图提出候选目标框,例如特征图为8*8大小,则候选目标框的数量为8*8*9,每个特征点位置生成九种类型候选目标,即3种比例尺度和3种面积。SSD框架对图像进行推断时,产生一系列固定大小的候选框,以及每一个候选框中包含物体实例的可能性。一次前向处理生成大量的目标框,需要采用非极大抑制(Non-maximum suppression,NMS)滤除大部分的目标框,采用的方法是当目标框置信度阈值小于阈值ct(如0.01)与IoU小于lt(如0.45)时,则丢弃,只保留前N个预测结果。对融合获取的特征与真值特征匹配,来约束损失函数,使损失函数更关注于前景目标特征,从而实现目标的检测。
本实施例提供的目标检测方法,对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列,将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。一方面,对于去除背景的图像只保留前景目标,没有其它背景图像的干扰,检测模型在学习和推理时更关注前景目标,从而可以提高目标检测准确率;另一方面,由于去除了背景像素,检测模型所看到的只有前景像素,完全不会受到视频或者图片序列场景的影响,从而提高了目标检测的场景迁移性能。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图4为本申请实施例二提供的目标检测装置的结构示意图,如图4所示,该装置可以包括:
获取模块410,用于获取视频数据;
预处理模块420,用于对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列;
目标检测模块430,用于将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。
本实施例提供的目标检测装置,对所述视频数据的第一图像序列进行预处理,获得去除背景图像的第二图像序列,将所述第二图像序列输入训练好的检测模型中进行目标检测,获得目标检测结果。一方面,对于去除背景的图像只保留前景目标,没有其它背景图像的干扰,检测模型在学习和推理时更关注前景目标,从而可以提高目标检测准确率;另一方面,由于去除了背景像素,检测模型所看到的只有前景像素,完全不会受到视频或者图片序列场景的影响,从而提高了目标检测的场景迁移性能。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述预处理模块420,具体用于:
利用背景减除法对所述视频数据的第一图像序列进行运动目标检测;
保留运动目标所在区域像素,利用形态学方法对所述运动目标所在区域像素进行分割处理,分割成独立的运动目标单元,以获得去除背景图像的第二图像序列。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述检测模型采用SSD框架,该SSD框架包括:特征提取网络和目标检测网络。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,还包训练模块,用于:
对样本视频数据的图像序列进行预处理,获得去除背景图像的样本图像序列;
对所述样本图像序列进行人工目标标注,获得训练数据集;
基于所述训练数据集对SSD框架进行训练:首先初始化网络中待训练的参数及超参数,向初始化后的网络中输入训练数据进行网络前向传播,得到实际的输出结果,通过损失函数结合反向传播BP算法调整网络参数,进行迭代训练,至损失函数的损失值小于设定阈值或达到最大迭代次数时训练结束,得到训练好的SSD框架。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述损失函数为位置误差与置信度误差的加权和。
在一种可能的实现方式中,在本申请实施例提供的上述装置中,所述置信度误差的计算公式如下:
其中,表示预测框i与真实框j关于类别匹配。
图5为本申请实施例三提供的电子设备的结构示意图,如图5所示,该设备包括:存储器501和处理器502;
存储器501,用于存储计算机程序;
其中,处理器502执行存储器501中的计算机程序,以实现如上所述各方法实施例所提供的方法。
在实施例中,以一电子设备对本申请提供的目标检测装置进行示例。处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行程序指令,以实现上文的本申请的各个实施例中的方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
本申请实施例四提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时用于实现如上所述各方法实施例所提供的方法。
实际应用中,本实施例中的计算机程序可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
实际应用中,计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
前述对本申请的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本申请限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本申请的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本申请的各种不同的示例性实施方案以及各种不同的选择和改变。本申请的范围意在由权利要求书及其等同形式所限定。