一种头肩检测方法、电子设备及具有存储功能的装置
技术领域
本发明涉及目标检测领域,特别是涉及一种头肩检测方法、电子设备及具有存储功能的装置。
背景技术
人体目标的检测与识别一直以来都是模式识别技术领域的研究热点之一,在智能监控、人机交互、机器人等领域得到了广泛的应用,具有十分重要的研究价值。在真实场景中,经常会出现人体的某些部位被遮挡的情况,很多时候无法获得完整的人体外观信息。由于头肩区域相对于人体全身更不容易受遮挡的影响,因此近年来很多研究开始利用头肩检测来定位人体目标。
目前的头肩检测方法主要可以分为两大类,一是传统的手工设计头肩特征的机器学习方法,二是以通用目标检测框架为主的深度学习方法。其中,现有的深度学习方法模型参数大,计算量高,检测速度较慢,而传统的机器学习方法,普遍无法适应人体姿态的变化,在实际应用中漏检情况比较严重,检测精度有待进一步提高。
发明内容
本发明主要解决的技术问题是提供一种头肩检测方法、电子设备及具有存储功能的装置,能够适应人体姿态变化,提高检测速度和精度。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种头肩检测方法,包括:获取待检测图像的多尺度特征;利用第一预设窗口和第二预设窗口以预设步长分别遍历每个尺度层的特征,以获取多个第一检测窗口的特征向量和多个第二检测窗口的特征向量;将第一检测窗口的特征向量输入第一分类器,将第二检测窗口的特征向量输入第二分类器,以获取第一检测结果和第二检测结果;判断第一检测结果和第二检测结果是否符合预设条件;若判断结果为是,则选择第一检测结果和第二检测结果中置信度较高的检测结果作为目标头肩;其中,第一预设窗口和第二预设窗口的尺寸不同。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种电子设备,包括:依次连接的处理器和通信电路;该处理器用于通过通信电路获取待检测图像并执行指令,以实现如上所述的头肩检测方法。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种具有存储功能的装置,存储有程序,该程序被执行时实现如上所述的头肩检测方法。
本发明的有益效果是:区别于现有技术的情况,本发明的部分实施例中,获取待检测图像的多尺度特征,利用第一预设窗口和第二预设窗口以预设步长分别遍历每个尺度层的特征,获取多个第一检测窗口的特征向量和多个第二检测窗口的特征向量后,将第一检测窗口的特征向量输入第一分类器,将第二检测窗口的特征向量输入第二分类器,获取第一检测结果和第二检测结果,判断第一检测结果和第二检测结果是否符合预设条件,并在判断结果为是时,选择第一检测结果和第二检测结果中置信度较高的检测结果作为目标头肩;其中,第一预设窗口和第二预设窗口的尺寸不同。通过上述方式,本发明利用两个分类器,实现不同尺寸的头肩姿态的识别,提高检测精度,并且本发明是基于传统的机器学习方法,检测速度快。
附图说明
图1是本发明头肩检测方法第一实施例的流程图;
图2是本发明头肩检测方法第二实施例的流程图;
图3是本发明头肩检测方法第三实施例中步骤S131的具体流程图;
图4是本发明头肩检测方法第三实施例中步骤S132的具体流程图;
图5是本发明头肩检测方法第四实施例的流程图;
图6是本发明头肩检测方法第五实施例的流程图;
图7是本发明级联分类器的结构示意图;
图8是本发明头肩检测方法第六实施例的流程图;
图9是图7中第一检测结果和第二检测结果符合预设条件时的位置关系示意图;
图10是本发明头肩检测方法第七实施例的流程图;
图11是本发明电子设备一实施例的结构示意图;
图12是本发明具有存储功能的装置一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明头肩检测方法第一实施例包括:
S10:获取待检测图像的多尺度特征。
其中,该多尺度特征是待检测图像不同尺度下的特征,该特征可以是单一特征,也可以是多个特征的聚合。
具体地,在一个应用例中,获取待检测图像后,可以对该待检测图像进行缩放,得到不同尺度的特征图,例如得到2倍原图大小的特征图,或者1/4原图大小的特征图等。该特征图可以是单一通道特征图,例如灰度图,该特征图也可以是多个类型的通道特征聚合图,例如灰度、色度聚合的特征图。其中,聚合方式可以根据实际需求设定,此处不做具体限定。在其他应用例中,也可以利用缩放尺度窗口在待检测图像滑动的方式,获取待检测图像不同尺度的特征。
S12:利用第一预设窗口和第二预设窗口以预设步长分别遍历每个尺度层的特征,以获取多个第一检测窗口的特征向量和多个第二检测窗口的特征向量。
其中,第一预设窗口和第二预设窗口的尺寸不同。该第一预设窗口和第二预设窗口的尺寸对应不同的头肩姿态,例如第一预设窗口对应人体正背面的头肩,第二预设窗口对应人体侧面的头肩,由此可以适应不同头肩姿态的识别,提高精度。该第一预设窗口和第二预设窗口的尺寸可以根据检测精度需求和检测应用场景而定,此处不做具体限定。
该预设步长是预先设定的窗口移动间隔,其可以根据检测精度需求而定,例如6个像素。
具体地,在一个应用例中,第一预设窗口尺寸采用32*40,第二预设窗口尺寸采用40*32,该第一预设窗口对应人体正背面的头肩尺寸,该第二预设窗口对应人体侧面的头肩尺寸。该第一预设窗口和第二预设窗口以预设步长(如4个像素)遍历每个尺度层的特征图,例如遍历多个尺度的灰度图,可以得到多个第一检测窗口和多个第二检测窗口,每个第一检测窗口对应一个第一预设窗口,每个第二检测窗口对应一个第二预设窗口,每个检测窗口可以得到一个特征向量,该特征向量可以是通过将检测窗口分割为多个区域,每个区域的像素和作为特征向量的一个元素,最终得到每个检测窗口的特征向量。当然,在其他应用例中,该特征向量也可可以是选取检测窗口中的某些代表区域的像素和为元素,或者选取每个区域的像素比值等,具体特征选取方法可以根据实际需求而定,此处不做具体限定。
在其他实施例中,该第一预设窗口和第二预设窗口也可以不是矩形框,可以根据检测的目标轮廓进行设定。
S14:将第一检测窗口的特征向量输入第一分类器,将第二检测窗口的特征向量输入第二分类器,以获取第一检测结果和第二检测结果。
其中,该第一分类器和第二分类器是预先训练好的用于检测人体头肩的模型,通过该第一分类器或该第二分类器判定为正样本的检测窗口则作为分类器的检测结果。该第一分类器和第二分类器分别用于检测人体不同姿态的头肩,例如第一分类器用于检测人体正背面的头肩,第二分类器用于检测人体侧面的头肩。
该第一检测结果是经过第一分类器判定为正样本的第一检测窗口,第二检测结果是经过第二分类器判定为正样本的第二检测窗口,即判定为人体头肩的图像区域。
其中,该第一分类器和第二分类器可以是单个分类器,也可以是级联的多个分类器,分类器的类型可以根据实际需求而定,例如线性SVM(Support Vector Machine,支持向量机)、AdaBoost(Adaptive Boosting,自适应提升)等。
S16:判断第一检测结果和第二检测结果是否符合预设条件。
S18:若判断结果为是,则选择第一检测结果和第二检测结果中置信度较高的检测结果作为目标头肩。
其中,该预设条件是判定该第一检测结果和第二检测结果是否为同一头肩的条件。由于同一头肩可能会同时被第一分类器和第二分类器识别,例如处于侧身过程的头肩,为了避免检测结果重叠,本实施例在判定该第一检测结果和第二检测结果符合预设条件,即为同一头肩时,会选择置信度高的检测结果作为目标头肩。若第一检测结果和第二检测结果不符合预设条件,则表明该第一检测结果和第二检测结果不是同一个头肩,输出该第一检测结果和第二检测结果作为目标头肩,即识别出不同的头肩。
该预设条件可以是第一检测结果和第二检测结果的位置关系,例如重叠区域是否大于某个阈值,或者中心位置坐标之间距离是否小于预设阈值等,具体可以根据实际需求设置,此处不做具体限定。
具体地,在一个应用例中,当第一检测结果和第二检测结果是同一头肩时,第一检测结果和第二检测结果所框选的区域必定存在重叠,此时可以通过判断第一检测结果和第二检测结果的位置关系,例如第一检测结果和第二检测结果的重叠区域是否大于70%,若大于,则判定第一检测结果和第二检测结果是同一个头肩。由于第一分类器和第二分类器输出该第一检测结果和第二检测结果时,会同时计算出第一检测结果和第二检测结果的位置坐标和置信度等信息,此时,可以通过该置信度信息,选择置信度高的检测结果作为目标头肩,例如当第一检测结果的置信度为89.2%,第二检测结果的置信度为91.1%时,选择第二检测结果作为目标头肩。当然,在其他实施例中,也可以随机选择其中一个检测结果作为目标头肩。
本实施例中,利用两个分类器,可以实现不同尺寸的头肩姿态的识别,提高检测精度,并且本发明是基于传统的机器学习方法,检测速度快。
如图2所示,本发明头肩检测方法第二实施例是在本发明头肩检测方法第一实施例的基础上,步骤S14之前,进一步包括:
S131:利用第一样本集训练第一头肩模型,以得到第一分类器;
S132:利用第二样本集训练第二头肩模型,以得到第二分类器;
其中,第一样本集中的样本尺寸与第一预设窗口尺寸相同,第二样本集中的样本尺寸与第二预设窗口尺寸相同,第一头肩模型用于检测人体正背面的头肩,第二头肩模型用于检测人体侧面的头肩。该样本尺寸/预设窗口尺寸可以根据实际检测精度需求而定,例如30*42等,此处不做具体限定。
具体地,在一个应用例中,预先设定第一初始头肩模型和第二初始头肩模型,该初始头肩模型中存在模型参数,将该第一样本集中的样本数据输入该第一初始头肩模型,将该第二样本集中的样本数据输入该第二初始头肩模型,该第一初始头肩模型和该第二初始头肩模型会将输入的样本数据进行分类,分为正样本和负样本。由于该第一样本集和第二样本集中的样本数据已经提前分类为正样本和负样本,因此,比较第一初始头肩模型和该第二初始头肩模型的分类结果和样本数据的标准结果(即提前分类结果),则可以得知该第一初始头肩模型和该第二初始头肩模型是否分类准确,若分类不准确,则调整该第一初始头肩模型和该第二初始头肩模型的模型参数,继续重复上述训练过程,直至该第一初始头肩模型和该第二初始头肩模型的判断准确率达到预设准确率(如85%)时,则可以将该第一初始头肩模型和该第二初始头肩模型作为训练好的第一头肩模型和第二头肩模型,应用到该第一分类器和第二分类器,用于检测人体头肩。
在其他实施例中,头肩模型的训练过程中,还可以利用新的样本检测该头肩模型的准确性,以进一步调整模型参数,提高模型分类准确性。
具体如图3和图4所示,本发明头肩检测方法第三实施例是在本发明头肩检测方法第二实施例的基础上,进一步限定步骤S131和步骤S132:
其中,第一分类器包括多个级联的第一子分类器,第二分类器包括多个级联的第二子分类器;第一样本集包括多个第一样本子集,每个第一样本子集包括第一正样本集和第一负样本集,第二样本集包括多个第二样本子集,每个第二样本子集包括第二正样本集和第二负样本集。该正样本集和负样本集中样本的个数可以根据实际需求而定,例如1000个正样本和3000个负样本等。
级联的该第一子分类器和该第二子分类器的类型和个数可以根据实际需求而定,例如级联10个AdaBoost分类器等,此处不做具体限定。
如图3所示,步骤S131进一步包括:
S1311:利用第一样本子集训练得到对应级的第一子分类器的第一初始检测模型;
S1312:将前一级的第一子分类器中被误报为正样本的至少部分第一负样本集中的负样本加入后一级的第一子分类器的第一负样本集中;
S1313:利用更新后的第一样本子集训练后一级的第一子分类器的第一初始检测模型,以得到第一头肩模型。
其中,该至少部分第一负样本中的负样本是指容易被前一级第一子分类器误报为正样本的负样本,该被容易误报的负样本可以通过误报的次数、频率等参数确定,例如误报次数达到某个阈值(如5)的负样本。当然,也可以将所有被误报的负样本加入下一级第一子分类器的第一负样本集中。
具体地,在一个应用例中,每个样本子集用于训练一个子分类器,利用第一样本子集训练得到对应级的第一子分类器的第一初始检测模型的过程可以参考本发明头肩检测方法第二实施例的内容,此处不再重复。当利用第一样本子集训练得到对应级第一子分类器的该第一初始检测模型的准确率达到预设准确率(如90%)时,可以继续训练下一级的第一子分类器,此时,可以将前一级容易被误报为正样本的负样本加入到需要训练的下一级第一子分类器的第一负样本集中,例如将误报概率大于50%的负样本加入到下一级第一子分类器的第一负样本集中;然后继续利用更新后的第一样本子集训练该下一级第一子分类器的第一初始检测模型;重复上述步骤直至最后一级第一子分类器的第一初始检测模型训练好,则最终得到由多个训练好的第一子分类器的检测模型级联而成的第一头肩模型。本实施例中,将前一级子分类器容易误报的负样本加入下一级的子分类器的负样本中训练下一级的子分类器,可以提高级联分类器的鲁棒性,进一步提高分类器的准确性。
如图4所示,步骤S132进一步包括:
S1321:利用第二样本子集训练得到对应级的第二子分类器的第二初始检测模型;
S1322:将前一级的第二子分类器中被误报为正样本的至少部分第二负样本集中的负样本加入后一级的第二子分类器的第二负样本集中;
S1323:利用更新后的第二样本子集训练后一级的第二子分类器的第二初始检测模型,以得到第二头肩模型。
其中,该至少部分第二负样本中的负样本是指容易被前一级第二子分类器误报为正样本的负样本,该被容易误报的负样本可以通过误报的次数、频率等参数确定,例如误报频率达到某个阈值(10次中误报6次)的负样本。当然,也可以将所有被误报的负样本加入下一级第二子分类器的第二负样本集中。
上述步骤的具体执行过程可以参考上述步骤S1311~S1313的过程,此处不再重复。
在其他实施例中,也可以采用新的样本集对训练好的多个子分类器进行检测,以检测该子分类器准确率是否达到要求。
如图5所示,本发明头肩检测方法第四实施例是在本发明头肩检测方法第一实施例的基础上,限定第一分类器和第二分类器是级联分类器;步骤S14进一步包括:
S141:将第一检测窗口的特征向量输入第一分类器,将第二检测窗口的特征向量输入第二分类器;
S142:将第一分类器中级联的最后一个分类器输出的正样本作为第一检测结果,将第二分类器中级联的最后一个分类器输出的正样本作为第二检测结果。
其中,级联分类器包括线性SVM和AdaBoost分类器。级联的每个分类器可以都是线性SVM或AdaBoost分类器,也可以是同时采用线性SVM和AdaBoost分类器级联,例如多个级联的线性SVM之后级联多个AdaBoost分类器。当然,在其他实施例中,该级联分类器还可以包括其他类型的分类器,例如近邻分类器、贝叶斯分类器、决策树等。
第一分类器和第二分类器中级联的分类器结构逐级复杂,级联的每个分类器的训练过程可以参考本发明头肩检测方法第二或第三实施例的内容,此处不再重复。
具体地,在一个应用例中,结合图6所示,级联的分类器1、分类器2……分类器N均采用AdaBoost分类器,后一级分类器比前一级分类器复杂,即分类器采用的头肩模型逐级复杂。第一检测窗口的特征向量被输入第一分类器后,需要经过级联的分类器1、分类器2……和分类器N,只有经过前一级分类器判定为Y,即判定为正样本时,该第一检测窗口的特征向量才会进入下一级分类器进行分类,直到最后一级分类器输出为正样本时,该第一检测窗口才会作为第一检测结果(即人体头肩)输出,只要有一级分类器将该第一检测窗口判定为N,即判定为负样本时,则该第一检测窗口被判定为负样本,即非人体头肩。第二检测窗口输入第二分类器的检测过程与第一分类器类似,此处不再重复。
本实施中,第一分类器和第二分类器所采用的分类器类型可以相同,也可以不同,此处不做具体限定。本实施例中,采用级联的线性SVM或AdaBoost分类器,可以排除大量无人区域带来的无效运算,从而可以提高检测速度。
如图7所示,本发明头肩检测方法第五实施例是在本发明头肩检测方法第一实施例的基础上,步骤S16进一步包括:
S161:获取第一检测结果和第二检测结果的中心位置坐标在行方向和列方向上的距离;
S162:判断第一检测结果和第二检测结果的中心位置坐标在行方向上的距离是否小于第一阈值,且第一检测结果和第二检测结果的中心位置坐标在列方向上的距离是否小于第二阈值;
S163:若第一检测结果和第二检测结果的中心位置坐标在行方向上的距离小于第一阈值,且第一检测结果和第二检测结果的中心位置坐标在列方向上的距离小于第二阈值,则判定第一检测结果和第二检测结果符合预设条件。
其中,该第一阈值和第二阈值是预先设定的当第一检测结果和第二检测结果是同一个头肩时,该第一检测结果和第二检测结果的中心位置坐标在行和列方向上的距离最大值,其具体数值可以根据实际需求而定,此处不做具体限定。
具体地,在一个应用例中,当第一检测结果和第二检测结果是同一个头肩时,该第一检测结果和第二检测结果存在重叠区域,其中心位置不会偏离过大,则可以根据第一检测结果和第二检测结果在行方向上的宽度和在列方向上的长度,设置该第一阈值和第二阈值。例如,将第一阈值设置为第一检测结果和第二检测结果中行方向上的宽度较大者宽度的一半(如20个像素),将第二阈值设置为第一检测结果和第二检测结果中列方向上的长度较大者长度的一半(如16个像素)。
结合图8所示,第一分类器输出该第一检测结果,第二分类器输出该第二检测结果时,会输出该第一检测结果和第二检测结果的位置信息,例如顶点坐标等,则可以通过该位置信息获取该第一检测结果和第二检测结果的中心位置坐标,如图8中点C1和C2的坐标,然后计算点C1和C2在行方向(如图8中x轴方向)上的距离L,以及点C1和C2在列方向(如图8中y轴方向)上的距离H,判断该距离L是否小于第一阈值(如20个像素),且距离H是否小于第二阈值(如16个像素),当L小于第一阈值,且H小于第二阈值时,则判定该第一检测结果和第二检测结果符合预设条件;否则,不符合预设条件,可以直接输出第一检测结果和第二检测结果。
本实施例中,由于两个分类器对头肩识别都具有一定识别精度,通过上述简单的位置关系即可以判断两个检测结果是否为同一头肩,以避免输出重叠的检测结果。
本实施例还可以与本发明头肩检测方法第二至第四中任一个实施例或其不冲突的组合相结合。
如图9所示,本发明头肩检测方法第六实施例是在本发明头肩检测方法第一实施例的基础上,步骤S10进一步包括:
S101:利用快速特征金字塔计算待检测图像的多尺度特征;
其中,该特征是多个特征通道的聚合通道特征。该多个特征通道的类型和个数可以根据实际需求选择,例如可以采用10个特征通道分别为LUV颜色通道、归一化梯度幅值通道和6个方向的梯度直方图通道。多个特征通道的聚合方式也可以根据实际需求选择,例如平均池化方式等。
聚合通道特征是聚合多种类型的通道特征得到的一种特征。快速特征金字塔是用一种近似的方法,在可忽略的误差范围内根据当前尺度的聚合通道特征估计相近尺度上对应的聚合通道特征。
具体地,在一个应用例中,获取该待检测图像后,可以提取该待检测图像当前尺度的10个通道特征图,然后利用4*4的池化窗口在每个通道特征图上进行无重叠的滑窗,平均池化可以得到聚合通道特征向量。缩放该待检测图像,例如放大3倍,缩小到1/3等,可以得到尺度为3和1/3的通道特征图,继续利用上述方式获得尺度为3和1/3的聚合通道特征,然后利用快速特征金字塔的方法,可以近似估计出相邻尺度上对应的聚合通道特征,由此可以得到多尺度聚合通道特征。
本实施例中,采用聚合通道特征的方式可以降低特征的维度,采用快速特征金字塔可以快速估算特征,提高检测速度。
当然,在其他实施例中,也可以利用其他方式获取多尺度聚合通道特征,例如直接缩放得到多个尺度的聚合通道特征等。
本实施例还可以与本发明头肩检测方法第二至第五中任一个实施例或其不冲突的组合相结合。
如图10所示,本发明头肩检测方法第七实施例是在本发明头肩检测方法第六实施例的基础上,步骤S12进一步包括:
S121:利用第一预设窗口和第二预设窗口以预设步长分别遍历每个尺度层的聚合通道特征,以获取每个尺度层对应的检测窗口,该检测窗口包括第一检测窗口和第二检测窗口;
S122:将每个检测窗口分割为多个第一尺寸的第一单元,每相邻第一预设数量的第一单元组成一个子块;
S123:将每个子块内像素和作为特征向量的一个特征元素。
其中,该第一尺寸和该第一预设数量可以根据检测窗口的尺寸选择,例如4*4的第一单元,2*2个第一单元组成一个子块。
具体地,在一个应用例中,利用第一预设窗口(32*40)和第二预设窗口(40*32)以预设步长(4个像素)分别遍历每个尺度层的聚合通道特征,则每个尺度层可以得到多个检测窗口,该检测窗口包括第一检测窗口和第二检测窗口。对于每个尺度层的检测窗口,首先将其分割成大小为4*4的单元,每2*2个单元组成一个子块,分别求取单元和子块内像素和作为特征向量的一个特征元素,从而获得每个检测窗口的特征向量,以便后续将该特征向量输入训练好的分类器中进行分类。
如图11所示,本发明电子设备11一实施例包括:依次连接的处理器110和通信电路111;
通信电路111用于发送和接收数据,是电子设备11与其他设备进行通信的接口。
处理器110控制电子设备的操作,处理器110还可以称为CPU(Central ProcessingUnit,中央处理单元)。处理器110可能是一种集成电路芯片,具有信号的处理能力。处理器110还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该处理器110用于通过该通信电路111获取待检测图像并执行指令,以实现如本发明头肩检测方法第一至第七任一实施例或其不冲突的组合所提供的方法。
当然,在其他实施例中,电子设备11还可以包括存储器(图未示)等其他部件,此处不做具体限定。
本实施例中的电子设备可以是移动设备,例如移动终端、机器人等,也可以是可集成于移动设备中的独立部件,例如图像处理芯片,还可以是非移动的固定设备,例如台式电脑、服务器等。
如图12所示,本发明具有存储功能的装置20一实施例中,该具有存储功能的装置20存储有程序201,该程序201被执行时实现如本发明头肩检测方法第一至第七任一实施例或其不冲突的组合所提供的方法。
其中,具有存储功能的设备20可以是便携式存储介质如U盘、光盘,也可以是移动终端、服务器、机器人或可集成于移动设备中的独立部件,例如图像处理芯片等。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。