发明内容
本发明的目的在于克服现有技术的不足,提供一种快速高效、检测准确度高的基于静态图片的快速目标检测识别系统及方法,该检测识别系统结构组成简单,该检测识别方法操作流程简洁,识别速度较传统全图多尺度扫描方法而言得到了巨大提升,而且识别准确度和可靠性较高。
本发明的目的是通过以下技术方案来实现的:一种基于静态图片的快速目标检测识别系统,它包括场景建模子系统、窗口扫描子系统和窗口融合子系统,其中,场景建模子系统包括场景初建模单元和尺度计算与合并单元;
待检测静态图片输入至场景初建模单元,场景初建模单元连接尺度计算与合并单元,尺度计算与合并单元输出的检测尺度信息与窗口扫描子系统的输入连接,窗口扫描子系统与窗口融合子系统相连,窗口融合子系统输出检测结果。
当特征识别的算法采用分类器识别时,它还包括样本学习子系统,样本学习子系统包括特征提取单元和分类器训练单元,训练样本输入至特征提取单元,特征提取单元与分类器训练单元连接,分类器训练单元输出分类器模型。
静态图片包括图像文件和视频帧。
一种基于静态图片的快速目标检测识别方法,它包括以下步骤:
S1:场景建模:建立场景模型,得到图像中各个位置上某种类型的目标成像的尺度;
S2:窗口扫描:在检测时,用各个位置对应尺度的窗口对该位置进行扫描;
S3:特征识别:提取每个扫描窗内的图像特征,并识别该特征是否为指定类型的目标,去掉被识别为背景的窗口;
S4:窗口融合:将属于同一个目标的所有检测窗融合为一个,得到最终的检测目标。
当特征识别的算法采用分类器识别时,它还包括一个样本学习的步骤:先在线下对被识别目标进行训练库样本特征提取,学习并建立用于目标分类的识别模型。
进一步地,样本学习步骤包括以下子步骤:使用正负样本提取特征,提取特征后进行训练得到分类模型,根据分类模型的结构设计分类器。
进一步地,场景建模步骤包括以下子步骤:
S101:场景初建模:获取场景中出现的若干个同类型目标各自的上下端点坐标,计算目标成像高度,将上端点或下端点的成像坐标看作自变量,目标成像高度看作因变量,构造两者之间的映射关系模型;
S102:尺度计算与合并:通过映射关系模型计算出同类型目标在图像中各处的高度成像范围,从而限定窗口扫描检测时的尺度及范围。
进一步地,窗口扫描步骤包括以下子步骤:
S201:窗口滑动:场景建模后,得到目标在图像各个位置上的成像尺度,根据得到的成像尺度信息在对应的图像位置上使用窗口滑动扫描,在进行窗口扫描前,根据该尺度下目标所需检测窗口尺寸与标准窗口尺寸的比例,对该尺度对应的区域图像进行缩放,再使用标准尺寸窗口在缩放后的图像上滑动;
S202:窗口识别,它包括以下步骤:
①、计算窗口区域的梯度方向直方图特征;
②、使用级联分类器中的每一级强分类器进行识别,识别结果为正样本的窗口继续进入下一级强分类器,识别结果为负样本的则直接输出识别结果;其中,正样本为含有待检测目标的区域的样本,负样本为不含待检测目标的区域的样本;
③、重复步骤②,直到被最后一级强分类器判为正样本,则最终被判为正样本,将被判为正样本的窗口坐标和尺寸换算为原始图像上的坐标和尺寸,记录该窗口信息。
进一步地,窗口融合步骤对被判断为含有目标的检测窗中心点进行聚类,在聚类得到的各个类内各自融合,得到最终的目标区域,它包括以下子步骤:
S401:计算目标检测窗中心点的x轴方向上的密度分布直方图;
S402:对直方图进行平滑滤波,减少噪声干扰;
S403:寻找波谷并分类;
S404:计算目标检测窗中心点的y轴方向上的密度分布直方图;
S405:重复步骤S402、S403,完成y方向分类,将所有的检测窗分到不同类别中去;
S406:确定各类的中心点和该类的融合检测框。
本发明的有益效果是:
(1)本发明适用于普通静态图片快速目标检测识别,也适用于可分割为多个视频帧的动态视频的快速目标检测识别;
(2)对不同的场景分别建模,很大程度上提高了系统的运行速度;
(3)场景建模后,可得到目标在图像各个位置上的成像尺度,根据得到的这些成像尺度信息在对应的图像位置上,使用窗口滑动扫描,扫描前,根据该尺度下目标所需检测窗口尺寸与标准窗口尺寸的比例,对该尺度对应的区域图像进行缩放,再使用标准尺寸窗口在缩放后的图像上滑动,从而大大缩短了扫描一幅图像的耗时,加快了目标检测和识别的速度;
(4)本发明采用国际上通用的INRIA数据库的测试素材和自己搜集的各类高清视频素材进行了测试,将普通的全图多尺度扫描方法记为参照系统,该参照系统最小尺度的目标对应的扫描图像为原始图像,若记原始图像尺寸为高H×宽W,则最大尺度的目标对应的扫描图像为:将原始图像缩放到高度等于max(H×64/W,128),宽度等于max(W×128/H,64),也就是说最大尺度的目标对应的扫描图像的高或宽都不小于标准尺寸窗口(高128×宽64),相邻检测尺度对应的图像之间的高和宽的比例均为1.05:1,使用本发明所述系统及方法检测行人目标,其速度提升比例与待检测图片尺寸、场景中行人的分布范围、远近行人高度比例有关,图像尺寸越大、行人分布范围越小、远近行人高度比例值越大时速度提升比例越大,原始尺寸为640×480的图片,使用本发明所述系统及方法检测目标,耗时为使用参照系统耗时的11.4%;原始尺寸为1600×1200的图片,使用本发明所述系统及方法检测目标耗时为使用参照系统耗时的5.6%;而且,目标检测结果显示与参照系统结果相同,表明本发明的目标检测与识别不仅快速而且准确度高、可靠性好。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1、图3所示,一种基于静态图片的快速目标检测识别系统,静态图片包括图像文件和视频帧,它包括场景建模子系统、窗口扫描子系统和窗口融合子系统,其中,场景建模子系统包括场景初建模单元和尺度计算与合并单元;待检测静态图片输入至场景初建模单元,场景初建模单元连接尺度计算与合并单元,尺度计算与合并单元输出的检测尺度信息与窗口扫描子系统的输入连接,窗口扫描子系统与窗口融合子系统相连,窗口融合子系统输出检测结果。
当特征识别的算法采用分类器识别时,它还包括样本学习子系统,如图2所示,样本学习子系统包括特征提取单元和分类器训练单元,训练样本输入至特征提取单元,特征提取单元与分类器训练单元连接,分类器训练单元输出分类器模型。
如图1所示,一种基于静态图片的快速目标检测识别方法,它包括以下步骤:
S1:场景建模:建立场景模型,得到图像中各个位置上某种类型的目标成像的尺度;
S2:窗口扫描:在检测时,用各个位置对应尺度的窗口对该位置进行扫描;
S3:特征识别:提取每个扫描窗内的图像特征,并识别该特征是否为指定类型的目标,去掉被识别为背景的窗口;
S4:窗口融合:将属于同一个目标的所有检测窗融合为一个,得到最终的检测目标。
当特征识别的算法采用分类器识别时,它还包括一个样本学习的步骤:先在线下对被识别目标进行训练库样本特征提取,学习并建立用于目标分类的识别模型。如图2所示,样本学习步骤包括以下子步骤:使用正负样本提取特征,提取特征后进行训练得到分类模型,根据分类模型的结构设计分类器。
本实施例中采用梯度方向直方图HOG特征,使用级联Adaboost方法进行训练,得到级联分类器模型,它包括以下步骤:
1.1训练样本获取:
训练正样本采用国际通用的INRIA数据库中的2416个正样本,从INRIA数据库里的1671张不包含行人的各类场景大图中,使用类似于目标检测中的多尺度检测窗的方式滑动截取,获取到两千万余个负样本。正负样本的尺寸均统一为标准尺寸:宽64×高128像素。
1.2特征提取:
本实施例采用HOG特征描述行人目标区域图像,HOG特征提取算法的步骤如下:
Step101:预处理,对图像每个像素点进行Gamma校正,Gamma校正函数为:g(x)=x1/γ,其中,x表示校正前的像素值,g(x)表示校正后的像素值,γ表示校正系数,本实施例中设置为2。
Step102:对彩色图像的R、G、B三个通道,分别计算水平梯度和垂直梯度,其中,水平模板为[-1,0,1],垂直模板为[-1,0,1]’。
Step103:对每个通道,计算各个像素点的梯度幅值和方向,计算公式如下:
magnitude(x,y)=sqrt(px(x,y)2+py(x,y)2),
orient(x,y)=arctan(py(x,y)/px(x,y)),
orient(x,y)计算出来的值为弧度值,需要将其转化为角度值θ,弧度转角度公式如下:θ=orient×(180°/π),得到的角度分布在第四和第一象限,第四象限的角需要进行转换,即当θ<0时,θ′=180°+θ。
Step104:选取每个位置上,R、G、B三个通道中,梯度幅值最大的那个通道的梯度值和方向值作为当前像素点的梯度值和方向值,这样,输入的彩色样本图像中每个像素都得到了自己的梯度幅度值和方向值。
Step105:将Step104中得到的图片按照从左到右,从上到下的顺序分成8×16个8×8像素的cell,2×2个cell作为一个block,由于同一个cell可以属于不同的block,所以两个邻近的block相互重叠50%的区域,即两个cell,这样就横向每排有7个block,共15个横排,共105个block。
Step106:对单个block内的所有点的梯度值进行Gaussian平滑,平滑公式为: 其中 由于blockW和blockH都为16,所以σ=4。x、y代表block里像素点的坐标值,x,y∈[0,15]。将block内全部像素点的梯度值乘以对应位置的Gaussian(x,y),得到平滑后的梯度值。
Step107:对各个block进行幅度值的直方图统计,将梯度方向值量化为9阶,则每个cell得到9维特征,每个block得到36维特征。
Step108:对每个block得到的36维特征进行归一化,本实施例中采用L2-Hys归一化算法。
Step109:将105个block的特征向量串联,得到3780维特征。
1.3训练分类器:
本实施例采用级联Adaboost来训练分类模型,得到的级联模型包含若干级强分类器,每级强分类器由Adaboost训练得到的若干个弱分类器组成。
级联Adaboost训练步骤如下:
Step201:设置训练参数:
Ftarget:整体的误报率;
fmax:每级强分类器的最大误报率;
dmin:每级强分类器的最小检测率;
Step202:初始化级联分类器级数i=0,整体误报率Fi=1.0,整体检测率Di=1.0,逐级训练级联分类器。当Fi>Ftarget且负样本充分时,循环执行Step203~Step206,否则执行Step207。
Step203:准备当前级参与训练的正负样本,由于每级参与训练的正样本是一样的,所以主要是准备负样本,如果是训练第一级,则从负样本库中取与正样本数量相同的负样本;如果不是第一级训练,则从负样本库里取负样本,直到正负样本数量相等,新补充的负样本要求不能被已训练的级联分类器正确识别。
Step204:令i自加1,设fi=1.0,ni=0。fi代表第i级强分类器的误报率,ni代表第i级强分类器的个数。使用Adaboost算法训练弱分类器,每个弱分类器的训练都计为一次迭代,当fi≤fmax时迭代结束。将选出的弱分类器组成本级强分类器。
Step205:将当前级强分类器作为级联分类器新增加的一级,更新级联分类器的总体检测率Fi。
Step206:保留当前级强分类器不能正确识别的训练负样本用于下一级训练,下一级训练前按Step203所述方式补充负样本。若Fi≤Ftarget或负样本补充不足,则终止级联Adaboost训练,执行Step207,否则执行Step203。
Step207:保存模型。
如图3所示,场景建模步骤包括以下子步骤:
S101:场景初建模:获取场景中出现的若干个同类型目标各自的上下端点坐标,计算目标成像高度,将上端点或下端点的成像坐标看作自变量,目标成像高度看作因变量,构造两者之间的映射关系模型;
本实施例中,场景初建模通过用户手动获取场景信息后,构造行人位置与所在位置的检测尺度的函数映射关系,具体步骤如下:
Step301:在图像中标注最近处行人和最远处行人的上下端点,得到最近处行人的底边水平基准线Y1(即下端点所在行)和成像高度H1,最远处行人的底边水平基准线Y2(即下端点所在行)和成像高度H2。
Step302:本实施例认为在正常的成像场景下,目标的成像大小与距离摄像头的远近近似成线性关系;因此待定直线方程H=k·Y+b,Y表示选择的水平基准线,H表示在该基准线上检测行人的窗口高度。
计算出和b=H1-k·Y1,该直线方程即为构造的场景模型。
实际应用时也可以使用其他映射关系模型代替线性模型,以适应摄像机的不同拍摄情况;当行人取正常身高的成年人时效果最佳。
S102:尺度计算与合并:通过场景模型计算出同类型目标在图像中各处的高度成像范围,从而限定窗口扫描检测时的尺度及范围。
通过场景模型,可以估算出图像中各个位置上行人的成像高度范围,将成像高度接近的区域合并到一起进行窗口扫描计算。由于不同的行人具有不同的身高,这会带来不同的成像高度,因此可以将每个区域中根据模型计算得到的行人成像高度再进行一定的放大和缩小,每个宽度取高度的一半,便构成一系列的成像尺度,以适应该区域内不同高度的行人的成像情况。
场景建模子系统最后输出限定的尺度信息。本实施例中,每个检测尺度的信息由以下三个信息组成:该尺度对应的区域图像需要缩放的倍数、尺度区域的上边界坐标、尺度区域的下边界坐标。
如图4所示,窗口扫描步骤包括以下子步骤:
S201:窗口滑动:场景建模后,得到目标在图像各个位置上的成像尺度,根据得到的成像尺度信息在对应的图像位置上使用窗口滑动扫描,在进行窗口扫描前,根据该尺度下目标所需检测窗口尺寸与标准窗口尺寸的比例,对该尺度对应的区域图像进行缩放,再使用标准尺寸窗口在缩放后的图像上滑动,窗口每次滑动时水平方向上的平移量为sX,垂直方向上的平移量为sY;本实施例中,HOG特征要求的窗口尺寸为宽64×高128像素。
S202:窗口识别,它包括以下步骤:
①、计算窗口区域的梯度方向直方图特征;
②、使用级联分类器中每一级强分类器对窗口样本进行识别;强分类器包含T个弱分类器,本实施例中这些弱分类器都是单一阈值分类器,每个弱分类器由阈值θt、权重αt、偏置pt构成。x表示待识别窗口样本,每个弱分类器的分类结果为ht(x),
当pt=1时,if ft(x)<θt,则ht(x)=1,判为正样本;
if ft (x)≥θt,则ht(x)=0,判为负样本;
当pt=-1时,if ft(x)≥θt,则ht(x)=1,判为正样本;
if ft (x)<θt,则ht(x)=0,判为负样本;
其中,ft (x)为识别窗口样本中第kt个特征值。
③、将上步中各个弱分类器的分类结果按照弱分类器各自的权重叠加,形成强分类器:
如果Hfinal(x)=1,代表强分类器的分类结果为正样本;
如果Hfinal(x)=0,代表强分类器的分类结果为负样本。
分类结果为正样本的窗口样本继续进入下一级强分类器进行分类,分类结果为负样本的则结束识别并输出识别结果。
④、重复步骤②~③,依次对所有窗口样本进行识别,每级强分类器都会对待识别的窗口样本进行一次筛选,被任意一级强分类器判断为负样本的样本结束识别并输出识别结果;,判断为正样本的窗口样本会进入下一级强分类器继续分类,直到被最后一级强分类器判为正样本才会最终被判为正样本,将被判为正样本的窗口坐标和尺寸换算为原始图像上的坐标和尺寸,并记录。
如图5所示,窗口融合步骤对被判断含有目标的检测窗中心点进行聚类,在聚类得到的各个类内各自融合,得到最终的目标区域,它包括以下子步骤:
S401:计算目标检测窗中心点的x轴方向上的密度分布直方图;将各个检测点在x轴方向上进行投票,得到该方向上的密度分布直方图,在进行直方图统计的时候,设定每4个像素宽度的矩形条为一个统计区域,这样就得到x轴上点分布的直方图。
S402:对直方图进行平滑滤波,减少噪声干扰;
S403:寻找波谷并分类,当直方图中有连续N个投影单位(N≥4)等于零时为波谷,波谷即为分类边界,这样就完成x方向分类;
S404:计算目标检测窗中心点的y轴方向上的密度分布直方图;
S405:重复步骤S402、S403,完成y方向分类,将所有的检测窗分到不同类别中去,y方向分类与x方向分类实质上没有先后顺序要求;
S406:确定各类的中心点和该类的融合检测框,中心点由类内各个点的坐标值求加权均值获得,检测框由类内检测框求加权均值获得。
最终各个行人目标的检测框表现形式可以采用更符合行人轮廓的椭圆,对于其他目标则还可以视情况使用矩形、圆形或其他更合理的形状。
本发明采用国际上通用的INRIA数据库的测试素材和自己搜集的各类高清视频素材进行测试,INRIA测试素材中随意一幅图片及检测结果如图6所示,高清视频中的随意一帧图像及检测结果如图7所示。
将普通的全图多尺度扫描方法记为参照系统,该参照系统最小尺度的目标对应的扫描图像为原始图像,若记原始图像尺寸为高H×宽W,则最大尺度的目标对应的扫描图像为将原始图像缩放到高度等于max(H×64/W,128),宽度等于max(W×128/H,64),也就是说最小尺度的目标对应的扫描图像的高或宽都不小于标准尺寸窗口,相邻尺度对应的图像之间的高和宽的比例均为1.05:1。
使用本发明所述系统检测行人,其速度提升比例与待检测图片尺寸、场景中行人的分布范围、远近行人高度比例有关,图像尺寸越大、行人分布范围越小、远近行人高度比例值越大时速度提升比例越大。
图6的原始尺寸为640×480,使用本发明所述系统检测行人耗时为使用参照系统耗时的11.4%;图7的原始尺寸为1600×1200,使用本发明所述系统检测行人耗时为使用参照系统耗时的5.6%。目标检测结果显示与参照系统结果相同,表明本发明快速且有效。