基于部件的目标检测方法转让专利

申请号 : CN201210202366.8

文献号 : CN102750532B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵恒张春晖梁继民刘俊廷曹凯刘而云

申请人 : 西安电子科技大学

摘要 :

本发明公开一种基于部件的目标检测方法,主要解决现有技术中目标部件检测算法计算复杂度高、应用范围窄、以及目标空间结构不够准确的问题。其方法步骤为:(1)标记训练图像;(2)构建目标空间结构;(3)统计空间结构模型参数;(4)统计表观模型参数;(5)传送模型参数;(6)采集被检测图像;(7)初始化目标检测的参数;(8)获得中心部件位置坐标;(9)判断是否第一次记录中心部件位置坐标;(10)获得近似部件位置坐标集合;(11)获得最终部件位置坐标集合;(12)显示检测结果。本发明准确地表示了目标空间结构,提高了检测速度,扩展了目标部件检测算法的应用范围。

权利要求 :

1.一种基于部件的目标检测方法,通过训练图像标记模块、模型构建模块、图像采集模块、目标检测模块和检测结果显示模块五个模块完成以下具体步骤:(1)标记训练图像

在因特网上收集包含待检测目标的训练图像和不包含待检测目标的背景图像,训练图像标记模块对每张训练图像中的n个部件进行标记,获得训练图像中n个部件的位置坐标;

(2)构建目标空间结构

2a)模型构建模块从训练图像标记模块读取所有训练图像中n个部件的位置坐标以及所有的训练图像和背景图像;

2b)模型构建模块使用互信息熵计算公式计算两两部件之间位置的互信息熵;

2c)将互信息熵作为边的权值,以n个部件为节点,模型构建模块采用prim算法构造最大生成树;

2d)模型构建模块在最大生成树中寻找包含叶子节点的所有三节点子图构成集合;

2e)在三节点子图集合中,模型构建模块寻找节点之间互信息熵之和最大的三节点子图,得到最紧密三节点子图;

2f)模型构建模块计算最紧密三节点子图的补图,并将补图加入到最大生成树中;

2g)模型构建模块搜索加入补图之后的最大生成树中是否还存在叶子节点,如果存在,执行步骤2d),如果不存在,则最大生成树更新已经完成,执行步骤2h);

2h)模型构建模块给完成更新的最大生成树的边任意指定方向,得到由节点集和有向边集组成的目标空间结构;

(3)统计空间结构模型参数

3a)对于每两个在目标空间结构中相邻的部件,模型构建模块计算在所有训练图像中与它们对应位置坐标的差向量并组成差向量矩阵;

3b)对于每两个在目标空间结构中相邻的部件,模型构建模块将它们对应的差向量矩阵的列作向量的平均运算得到均值向量;

3c)对于每两个在目标空间结构中相邻的部件,模型构建模块使用协方差矩阵的计算方法计算它们对应位置坐标的差向量的协方差矩阵;

(4)统计表观模型参数

模型构建模块使用训练图像和背景图像对各个部件区域的局部特性进行统计,得到表观模型参数;

(5)传送模型参数

模型构建模块向目标检测模块传送空间结构模型参数和表观模型参数;

(6)采集被检测图像

图像采集模块获取图像模拟信号,并将图像模拟信号转换成数字信号图像作为后续待处理的被检测图像;

(7)初始化目标检测的参数

7a)目标检测模块从模型构建模块中读取空间结构模型参数和表观模型参数;

7b)目标检测模块在n个部件中任意选定一个部件作为中心部件,其它部件作为外围部件;

7c)目标检测模块将中心部件放置在被检测图像中任意位置,设定初始的温度参数,将中心部件位置坐标代入能量公式中,得到当前能量值;

(8)获得中心部件位置坐标

8a)目标检测模块将迭代次数初始化为0;

8b)目标检测模块将迭代次数增加1,判断迭代次数是否大于迭代上限,如果是,则执行步骤8j),否则执行步骤8c);

8c)目标检测模块使用蒙那卡罗方法产生一个符合二维高斯分布的二维向量;

8d)目标检测模块将产生的二维向量跟中心部件的位置坐标相加得到新的中心部件位置坐标,将新的中心部件的位置坐标代入能量公式,得到一个新的能量值;

8e)目标检测模块使用新能量值减去当前能量值,得到能量变化值;

8f)目标检测模块判断能量变化值是否小于等于零,如果是,执行步骤8i),否 则,执行步骤8g);

8g)目标检测模块使用蒙那卡罗方法在[0,1]区间内产生一个均匀分布的随机数;

8h)目标检测模块判断是否满足保持条件,如果是,中心部件位置坐标保持原值,执行步骤8b),否则,执行步骤8i);

8i)目标检测模块使用步骤8d)得到的新的中心部件位置坐标值对中心部件位置坐标进行赋值,使用步骤8d)得到的新的能量值对当前能量值进行赋值,执行步骤8b);

8j)记录更新的中心部件位置坐标和当前能量值;

(9)判断是否第一次记录中心部件位置坐标

目标检测模块判断是否是第一次执行此(9)步骤,如果是,执行步骤8a),否则,执行步骤10a);

(10)获得近似部件位置坐标集合

10a)目标检测模块判断第一次记录的当前能量值是否小于第二次记录的当前能量值,如果是,选择第一次记录的中心部件位置坐标作为近似中心部件位置坐标,否则,选择第二次记录的中心部件位置坐标作为近似中心部件位置坐标;

10b)目标检测模块计算所有外围部件与中心部件对应位置坐标差向量的均值向量;

10c)目标检测模块将均值向量分别与近似中心部件位置坐标相加,得到近似外围部件位置坐标;

10d)目标检测模块将近似外围部件位置坐标和近似中心部件位置坐标组合构成近似部件位置坐标集合;

(11)获得最终部件位置坐标集合

11a)目标检测模块使用步骤10d)得到的近似部件位置坐标集合对部件位置坐标集合进行赋值,初始化迭代次数为0,设定初始步长为7;

11b)目标检测模块将初始步长与迭代次数相除,得到当前步长,并将迭代次数增加1;

11c)目标检测模块对目标函数进行求导,得到目标函数关于当前部件位置坐标集合的梯度向量,判断梯度向量的2范数是否小于门限,如果是,则执行步骤11f), 否则,执行步骤11d);

11d)目标检测模块将当前步长与梯度向量相乘,得到更新向量;

11e)目标检测模块将部件位置坐标集合与更新向量相减,得到更新的部件位置坐标集合,执行步骤11b);

11f)重新初始化迭代次数为0;

11g)目标检测模块将迭代次数增加1,判断迭代次数是否大于20,如果是,则执行步骤

11l),否则,求得目标函数关于当前部件位置坐标集合的梯度向量,并将当前部件位置坐标集合代入目标函数计算当前目标函数值;

11h)目标检测模块在梯度向量中查找绝对值最大的位,判断此位是否在之前的循环中被选中过,如果是,找到次大的位,否则,执行步骤11i);

11i)目标检测模块判断被选中的位的梯度绝对值是否大于等于阈值,如果是,执行步骤11j),否则执行步骤11l);

11j)目标检测模块判断梯度向量中被选中位的值是否大于0,如果是,则部件位置坐标集合中被选中位的值减去1,未选中位的值保持原值,得到更新的部件位置坐标集合,否则,部件位置坐标集合中被选中的位的值加上1,未选中位的值保持原值,得到更新的部件位置坐标集合;

11k)目标检测模块将更新的部件位置坐标集合代入目标函数计算新目标函数值,判断新目标函数值是否大于步骤11g)中得到的当前目标函数值,如果是,则将更新的部件位置坐标集合赋值给当前部件位置坐标集合,将新目标函数值赋值给当前目标函数值,执行步骤11g),否则,部件位置坐标集合和当前目标函数值保持原值,执行步骤11g);

11l)目标检测模块选择当前部件位置坐标集合作为最终部件位置坐标集合;

(12)显示检测结果

检测结果显示模块从目标检测模块读取最终部件位置坐标集合,完成检测结果的显示。

2.根据权利要求1所述的基于部件的目标检测方法,其特征在于:步骤(1)中所述的n个部件的个数n限定在[4,8]范围内,部件边长限定在[40,60]范围内。

3.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤7c) 中初始的温度参数限定在[30,45]范围内。

4.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤8b)中迭代上限限定在[150,300]范围内。

5.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤11c)中门限限定为[1.0,2.0]范围内。

6.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤11i)中阈值限定在[0.3,0.5]范围内。

7.根据权利要求1所述的基于部件的目标检测方法,其特征在于:步骤3c)中所述的协方差矩阵的计算方法的具体步骤为:第1步:将相邻部件对应的差向量矩阵每列数据减去它们的均值向量,再把处理之后的每列数据重新组成数据矩阵;

第2步:将数据矩阵进行转置运算得到数据矩阵的转置;

第3步:将数据矩阵乘以数据矩阵的转置得到相乘矩阵;

第4步:将相乘矩阵的每个元素与数据矩阵的列数相除得到协方差矩阵。

8.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤7c)、步骤

8d)中能量公式如下:

其中,F(l)代表中心部件位置坐标为l的能量值,a代表一个部件,V为n个部件的集合,g(l+μ)表示位于被检测图像中l+μ的区域与部件a的匹配度,μ表示部件a与中心部件对应位置坐标差向量的均值向量。

9.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤8h)中的保持条件为:-ΔE/T

(i+1) ≤ζ

其中,i为迭代次数,ΔE为能量变化值,T为初始的温度参数,ζ为步骤8g)中产生的随机数。

10.根据权利要求1所述的基于部件的目标检测方法,其特征在于:所述步骤11c)、 步骤11g)、步骤11k)中目标函数限定为其中,Q(L)代表部件位置坐标集合为L的目标函数值,a代表一个部件,V为n个部件的集合,g(l)表示位于被检测图像中l的区域与部件a的匹配度, 表示目标空间结构的边集E中的一条有向边,它的两个顶点为部件f和部件v,log()表示作对数运算,p(i-j)表示差向量i-j的高斯分布,i表示部件v的位置坐标,j表示部件f的位置坐标。

说明书 :

基于部件的目标检测方法

技术领域

[0001] 本发明属于图像处理技术领域,更进一步涉及基于部件的目标检测方法。本发明可用于智能交通,门禁检测等领域中确定采集图像中目标的位置和所占区域。

背景技术

[0002] 目标检测是指在被检测图像中确定目标的位置、大小、位姿的过程。目标检测是信息处理中的一项关键技术,现在的很多应用领域要求目标检测方法可以快速准确地检测目标。由此所面临的一系列问题使得目标检测开始作为一个独立的课题受到研究者的重视。
[0003] 基于部件的目标检测技术是一种起源很早,最近才兴起的目标检测方法。该方法融合了目标的表观特征和空间结构特征,因而具有更加鲁棒的检测性能。同时,基于部件的目标检测技术是一种稀疏的特征描述方式,因而在一定程度上可以处理部分遮挡的问题。
[0004] 中国科学院自动化研究所提出的专利申请“基于部件结构模型的目标检测与识别方法”(专利申请号CN201010106757.0,公开号CN102142078A)公开了一种基于部件结构模型的目标检测与识别方法。该方法的实施步骤是:步骤一,采用积分直方图提取目标整体以及目标各个部件内不同模块大小的梯度方向直方图特征;步骤二,根据提取的特征,分别对目标整体以及目标各个部件训练,生成boost级联分类器;步骤三,采用半监督的训练方式,由手工标注方式确定目标的位置,而目标各个部件的位置由训练目标整体boost级联分类器过程中所挑选出的区分能力较强的若干弱分类器所在的模块的位置确定;步骤四,根据获得的目标整体和目标各个部件的位置,采用星形结构训练目标整体以及目标各个部件之间的空间关系模型;步骤五,用boost级联分类器分别检测目标整体和目标的各个部件,得到目标整体以及目标各个部件检测代价图,然后利用距离变换以及目标各个部件之间的相对位置关系实现目标的检测与识别定位。该方法虽然使用星形结构表达目标的空间结构,并使用距离变换技术进行快速目标检测,但是该专利申请仍然存在的不足是:使用星形结构表示目标的空间结构不够准确,将会导致检测结果不够准确;另外使用距离变换在进行目标检测前,必须求得目标整体以及目标各个部件的检测代价图,这将会严重影响检测效率。
[0005] D.Crandall 在 文 献“D.Crandall,P. Felzenszwalb,and D.Huttenlocher.Spatial priors for part-based recognition using statistical models.In CVPR,10-17,2005.”中提出了一种k-fans模型,该方法的实施步骤是:步骤一,构建局部表观模型;步骤二,使用k-fans结构表示目标的空间结构,并构建目标的空间结构模型;步骤三,使用距离变换技术对被检测图像进行目标检测。虽然该方法所使用的k-fans结构可以比较准确地表达目标的空间结构,但是,仍然存在的不足是:当k-fans结构中存在环路的时候,不能使用距离变换技术进行快速目标检测,这样严重影响此方法的应用范围。

发明内容

[0006] 本发明针对上述现有技术的不足,提出一种基于部件的目标检测方法,以减小目标部件检测的时间复杂度和成本,提高目标部件检测的精度和稳定性。
[0007] 为了实现上述目的,本发明采用图结构表示目标的空间结构,此图结构在最大生成树的基础上添加边来构造,折中考虑了树状图和全连接图的优点,这样既保证了目标空间结构的真实性,又增加了目标部件定位的信息量。在统计完空间结构模型参数和表观模型参数之后,目标部件检测过程采用了模拟退火算法和梯度下降算法相级联的收敛方法,来提高目标检测效率。同时,为了提高收敛的正确率,在模拟退火算法过程中采用二次退火的策略以避免将目标部件的位置坐标收敛到非目标区域。另外,在梯度下降算法完成之后,采用了步进策略使目标部件的位置坐标更加精确。
[0008] 本发明通过训练图像标记模块、模型构建模块、图像采集模块、目标检测模块和检测结果显示模块五个模块完成以下具体步骤:
[0009] (1)标记训练图像
[0010] 在因特网上收集包含待检测目标的训练图像和不包含待检测目标的背景图像,训练图像标记模块对每张训练图像中的n个部件进行标记,获得训练图像中n个部件的位置坐标;
[0011] (2)构建目标空间结构
[0012] 2a)模型构建模块从训练图像标记模块读取所有训练图像中n个部件的位置坐标以及所有的训练图像和背景图像;
[0013] 2b)模型构建模块使用互信息熵计算公式计算两两部件之间位置的互信息熵;
[0014] 2c)将互信息熵作为边的权值,以n个部件为节点,模型构建模块采用prim算法构造最大生成树;
[0015] 2d)模型构建模块在最大生成树中寻找包含叶子节点的所有三节点子图构成集合;
[0016] 2e)在三节点子图集合中,模型构建模块寻找节点之间互信息熵之和最大的三节点子图,得到最紧密三节点子图;
[0017] 2f)模型构建模块计算最紧密三节点子图的补图,并将补图加入到最大生成树中;
[0018] 2g)模型构建模块搜索加入补图之后的最大生成树中是否还存在叶子节点,如果存在,执行步骤2d),如果不存在,则最大生成树更新已经完成,执行步骤2h);
[0019] 2h)模型构建模块给完成更新的最大生成树的边任意指定方向,得到由节点集和有向边集组成的目标空间结构;
[0020] (3)统计空间结构模型参数
[0021] 3a)对于每两个在目标空间结构中相邻的部件,模型构建模块计算在所有训练图像中与它们对应位置坐标的差向量并组成差向量矩阵;
[0022] 3b)对于每两个在目标空间结构中相邻的部件,模型构建模块将它们对应的差向量矩阵的列作向量的平均运算得到均值向量;
[0023] 3c)对于每两个在目标空间结构中相邻的部件,模型构建模块使用协方差矩阵的计算方法计算它们对应位置坐标的差向量的协方差矩阵;
[0024] (4)统计表观模型参数
[0025] 模型构建模块使用训练图像和背景图像对各个部件区域的局部特性进行统计,得到表观模型参数;
[0026] (5)传送模型参数
[0027] 模型构建模块向目标检测模块传送空间结构模型参数和表观模型参数;
[0028] (6)采集被检测图像
[0029] 图像采集模块获取图像模拟信号,并将图像模拟信号转换成数字信号图像作为后续待处理的被检测图像;
[0030] (7)初始化目标检测的参数
[0031] 7a)目标检测模块从模型构建模块中读取空间结构模型参数和表观模型参数;
[0032] 7b)目标检测模块在n个部件中任意选定一个部件作为中心部件,其它部件作为外围部件;
[0033] 7c)目标检测模块将中心部件放置在被检测图像中任意位置,设定初始的温度参数,将中心部件位置坐标代入能量公式中,得到当前能量值;
[0034] (8)获得中心部件位置坐标
[0035] 8a)目标检测模块将迭代次数初始化为0;
[0036] 8b)目标检测模块将迭代次数增加1,判断迭代次数是否大于迭代上限,如果是,则执行步骤8j),否则执行步骤8c);
[0037] 8c)目标检测模块使用蒙那卡罗方法产生一个符合二维高斯分布的二维向量;
[0038] 8d)目标检测模块将产生的二维向量跟中心部件的位置坐标相加得到新的中心部件位置坐标,将新的中心部件的位置坐标代入能量公式,得到一个新的能量值;
[0039] 8e)目标检测模块使用新能量值减去当前能量值,得到能量变化值;
[0040] 8f)目标检测模块判断能量变化值是否小于等于零,如果是,执行步骤8i),否则,执行步骤8g);
[0041] 8g)目标检测模块使用蒙那卡罗方法在[0,1]区间内产生一个均匀分布的随机数;
[0042] 8h)目标检测模块判断是否满足保持条件,如果是,中心部件位置坐标保持原值,执行步骤8b),否则,执行步骤8i);
[0043] 8i)目标检测模块使用步骤8d)得到的新的中心部件位置坐标值对中心部件位置坐标进行赋值,使用步骤8d)得到的新的能量值对当前能量值进行赋值,执行步骤8b);
[0044] 8j)记录更新的中心部件位置坐标和当前能量值;
[0045] (9)判断是否第一次记录中心部件位置坐标
[0046] 目标检测模块判断是否是第一次执行此(9)步骤,如果是,执行步骤8a),否则,执行步骤10a);
[0047] (10)获得近似中心部件位置坐标集合
[0048] 10a)目标检测模块判断第一次记录的当前能量值是否小于第二次记录的当前能量值,如果是,选择第一次记录的中心部件位置坐标作为近似中心部件位置坐标,否则,选择第二次记录的中心部件位置坐标作为近似中心部件位置坐标;
[0049] 10b)目标检测模块计算所有外围部件与中心部件对应位置坐标差向量的均值向量;
[0050] 10c)目标检测模块将均值向量分别与近似中心部件位置坐标相加,得到近似外围部件位置坐标;
[0051] 10d)目标检测模块将近似外围部件位置坐标和近似中心部件位置坐标组合构成近似部件位置坐标集合;
[0052] (11)获得最终部件位置坐标集合
[0053] 11a)目标检测模块使用步骤10d)得到的近似部件位置坐标集合对部件位置坐标集合进行赋值,初始化迭代次数为0,设定初始步长为7;
[0054] 11b)目标检测模块将初始步长与迭代次数相除,得到当前步长,并将迭代次数增加1;
[0055] 11c)目标检测模块对目标函数进行求导,得到目标函数关于当前部件位置坐标集合的梯度向量,判断梯度向量的2范数是否小于门限,如果是,则执行步骤11f),否则,执行步骤11d);
[0056] 11d)目标检测模块将当前步长与梯度向量相乘,得到更新向量;
[0057] 11e)目标检测模块将部件位置坐标集合与更新向量相减,得到更新的部件位置坐标集合,执行步骤11b);
[0058] 11f)重新初始化迭代次数为0;
[0059] 11g)目标检测模块将迭代次数增加1,判断迭代次数是否大于20,如果是,则执行步骤111),否则,求得目标函数关于当前部件位置坐标集合的梯度向量,并将当前部件位置坐标集合代入目标函数计算当前目标函数值;
[0060] 11h)目标检测模块在梯度向量中查找绝对值最大的位,判断此位是否在之前的循环中被选中过,如果是,找到次大的位,否则,执行步骤11i);
[0061] 11i)目标检测模块判断被选中的位的梯度绝对值是否大于等于阈值,如果是,执行步骤11i),否则执行步骤111);
[0062] 11j)目标检测模块判断梯度向量中被选中位的值是否大于0,如果是,则部件位置坐标集合中被选中位的值减去1,未选中位的值保持原值,得到更新的部件位置坐标集合,否则,部件位置坐标集合中被选中的位的值加上1,未选中位的值保持原值,得到更新的部件位置坐标集合;
[0063] 11k)目标检测模块将更新的部件位置坐标集合代入目标函数计算新目标函数值,判断新目标函数值是否大于步骤11g)中得到的当前目标函数值,如果是,则将更新的部件位置坐标集合赋值给当前部件位置坐标集合,将新目标函数值赋值给当前目标函数值,执行步骤11g),否则,部件位置坐标集合和当前目标函数值保持原值,执行步骤11g);
[0064] 111)目标检测模块选择当前部件位置坐标集合作为最终部件位置坐标集合;
[0065] (12)显示检测结果
[0066] 检测结果显示模块从目标检测模块读取最终部件位置坐标集合,完成检测结果的显示。
[0067] 其中,步骤(7)、步骤(8)、步骤(9)、步骤(10)为采用了二次退火策略的模拟退火算法的执行步骤,步骤(11)为添加了步进策略的梯度下降算法的执行步骤。
[0068] 本发明与现有技术相比有以下优点:
[0069] 第一,本发明在构造目标空间结构过程中,首先生成最大生成树,然后在此基础上不断地添加边来消除叶子节点。克服了现有技术不能准确表示目标空间结构的缺点,使得本发明具有了目标空间结构更真实,检测结果更加稳定、准确的优点;
[0070] 第二,本发明在目标部件检测过程中采用了模拟退火算法和梯度下降算法相结合的收敛方法,克服了现有技术在利用距离变换技术进行目标检测之前,必须要获得目标以及部件的检测代价图的缺点,使得本发明具有了降低算法的时间复杂度,缩短目标检测时间的优点;
[0071] 第三,本发明在目标部件检测过程中采用了模拟退火算法和梯度下降算法相结合的收敛方法,克服了现有技术在目标空间结构中不能存在环路的缺点,使得本发明的目标部件检测算法具有了适用于任何目标空间结构的优点;

附图说明

[0072] 图1为本发明的流程图;
[0073] 图2为实现本发明的系统示意图;
[0074] 图3为本发明的仿真效果图;
[0075] 图4为本发明与现有技术k-fans模型的效果对比图。

具体实施方式

[0076] 下面结合附图对本发明做进一步描述。
[0077] 图2为实现本发明的系统示意图,该系统包括图像训练计算机、通用串行总线接口芯片、数字信号处理芯片、闪存、同步动态随机存储器、现场可编程门阵列、静态随机存储器、图像采集芯片、检测结果显示计算机、模数转换芯片、总线。数字信号处理芯片跟图像训练计算机通过通用串行总线接口芯片进行通信。现场可编程门阵列、闪存、同步动态随机存储器、静态随机存储器都通过总线跟数字信号处理芯片相连。数字信号处理芯片有中断线连接到现场可编程门阵列和通用串行总线接口芯片,数字信号处理芯片通过数据总线和通用串行总线接口芯片相连。图像采集芯片通过控制线跟现场可编程门阵列相连,通过数据线跟模数转换芯片相连。模数转换芯片通过数据总线跟现场可编程门阵列相连。检测结果显示计算机通过串行总线跟数字信号处理芯片相连。图像训练计算机装有图像标记程序,完成训练图像标记模块的功能。另外图像训练计算机还装有表观模型训练程序和空间结构模型训练程序,完成模型构建模块的功能。图像采集芯片、现场可编程门阵列、静态随机存储器、模数转换芯片完成图像采集模块的功能。数字信号处理芯片、闪存、同步动态随机存储器、总线完成目标检测模块的功能。检测结果显示计算机完成检测结果显示模块的功能。
[0078] 结合附图1对本发明的具体步骤描述如下:
[0079] 步骤1,标记训练图像
[0080] 在因特网上收集没有待检测目标的背景图像。在人脸数据上的实施例以Caltech101人脸数据库的200张图片作为训练图像,图像标记模块对每张训练图像的6个部件进行标记(即在训练图片每个部件位置上标记一个正方形框,部件位置被定义为正方形框的中心位置)得到部件的位置坐标:左眼,右眼,鼻子,左嘴角,右嘴角,下巴。在摩托车数据上的实施例以Caltech101摩托车数据库的400张图片作为训练图像,图像标记模块对每张训练图像的6个部件进行标记得到部件的位置坐标:前车灯,前座,后座,后车灯,前车轮,后车轮。在飞机数据上的实施例以Caltech101飞机数据库的400张图片作为训练图像,图像标记模块对每张训练图像的6个部件进行标记得到部件的位置坐标:飞机前轮,飞机后轮,螺旋桨,尾翼,机尾,机身。
[0081] 步骤2,构建目标空间结构
[0082] 2a)模型构建模块从训练图像标记模块读取待检测目标的所有训练图像中6个部件的位置坐标;
[0083] 2b)模型构建模块将部件的位置坐标代入互信息熵计算公式计算两两部件之间位置的互信息熵;
[0084] 2c)模型构建模块将互信息熵作为边的权值,以6个部件为节点,模型构建模块采用prim算法构造最大生成树;
[0085] 2d)模型构建模块在最大生成树中寻找包含叶子节点的所有三节点子图构成集合;
[0086] 2e)在三节点子图集合中,模型构建模块寻找节点之间互信息熵之和最大的三节点子图,得到最紧密三节点子图;
[0087] 2f)模型构建模块计算最紧密三节点子图的补图,并将补图加入到最大生成树中;
[0088] 2g)模型构建模块搜索加入补图之后的最大生成树中是否还存在叶子节点,如果存在,执行步骤2d),如果不存在,则最大生成树更新已经完成,执行步骤2h);
[0089] 2h)模型构建模块给完成更新的最大生成树的边任意指定方向,得到由节点集和有向边集组成的目标空间结构,此空间结构折中考虑了树状图和全连接图的优点。
[0090] 步骤3,统计空间结构模型参数
[0091] 3a)对于每两个在目标空间结构中相邻(在目标空间结构中有边进行连接)的部件,模型构建模块计算所有训练图像中与它们对应位置坐标的差向量并组成差向量矩阵;
[0092] 3b)对于每两个在目标空间结构中相邻的部件,模型构建模块将它们对应的差向量矩阵的列作向量的平均运算得到均值向量;
[0093] 3c)对于每两个在目标空间结构中相邻的部件,模型构建模块使用协方差矩阵的计算方法计算它们对应位置坐标的差向量的协方差矩阵,其中协方差矩阵的计算方法的具体步骤为:
[0094] 第1步:将相邻部件对应的差向量矩阵每列数据减去它们的均值向量,再把处理之后的每列数据重新组成数据矩阵;
[0095] 第2步:将数据矩阵进行转置运算得到数据矩阵的转置;
[0096] 第3步:将数据矩阵乘以数据矩阵的转置得到相乘矩阵;
[0097] 第4步:将相乘矩阵的每个元素与数据矩阵的列数相除得到协方差矩阵。
[0098] 3d)d个协方差矩阵和d个均值向量组成空间结构模型参数,其中,d表示目标空间结构的边集中元素的个数;
[0099] 步骤4,统计表观模型参数,与部件a对应的表观模型具体为:
[0100]
[0101] 其中,g(l)表示位于被检测图像中l的区域与部件a的匹配度,log()表示做对数运算,p为与部件a相对的像素坐标,v表示被部件a覆盖的区域中的相对像素坐标集合,f(p)[I(p+l)]表示部件a的位置坐标为l时,相对像素坐标p的像素值为I(p+l)的概率,b[I(p+l)]表示被检测图像I位于l的区域为背景时,相对像素坐标p的像素值为I(p+l)的概率,
[0102] 4a)模型构建模块从训练图像标记模块读取所有训练图像和背景图像,并使用边缘检测算子处理所有训练图像和背景图像分别得到灰度级为16的预处理训练图像集和预处理背景图像集,预处理图像的像素值表示此处边缘的角度;
[0103] 4b)对于每个部件,模型构建模块按照此部件在所有训练图像中的位置坐标将图像片从所有预处理训练图像中取出,组成部件训练集合,在部件训练集合中,依次统计相对像素坐标p的像素值为u的图像片个数,然后将统计出的图像片个数跟部件训练集合中图像片的总数相除,得到f(p)[u](p∈v,u∈{1,...,16});
[0104] 4c)在预处理背景图像集中统计像素值为u的像素数目,然后将统计出的像素数目跟所有像素数目相除,得到b[u](u∈{1,...,16});
[0105] 步骤5,传送模型参数
[0106] 图像训练计算机将空间结构模型参数和表观模型参数传入通用串行总线接口芯片的缓冲池,然后通用串行总线接口芯片向数字信号处理芯片发送中断信号。
[0107] 步骤6,采集被检测图像
[0108] 目标检测模块中的数字信号处理芯片通过现场可编程门阵列向图像采集芯片发送采集图像指令,随后图像采集芯片获取图像模拟信号,将图像模拟信号转换成数字信号图像并存入现场可编程门阵列的缓存,随后现场可编程门阵列向数字信号处理芯片发送中断信号,数字信号处理芯片从现场可编程门阵列的缓存中读取被检测图像的数据转存到静态随机存储器;
[0109] 步骤7,初始化目标检测的参数
[0110] 7a)目标检测模块中的数字信号处理芯片从静态随机存储器中读取被检测图像,使用与步骤4a)相同的边缘检测算子完成被检测图像的预处理,并从通用串行总线接口芯片的缓冲池中读取空间结构模型参数和表观模型参数;
[0111] 7b)目标检测模块在n个部件中任意选定一个部件作为中心部件,其它部件作为外围部件;
[0112] 7c)目标检测模块将中心部件放置在被检测图像中任意位置,设定初始的温度参数(在关于人脸数据的实施例中,设定初始的温度参数为45;在关于摩托车数据的实施例中,设定初始的温度参数为38;在关于飞机数据的实施例中,设定初始的温度参数为38),将中心部件位置坐标代入下面的能量公式中,得到当前能量值
[0113]
[0114] 其中,F(l)代表中心部件位置坐标为l的能量值,a代表一个部件,V为n个部件的集合,g(l+μ)表示位于被检测图像中l+μ的区域与部件a的匹配度,μ表示部件a与中心部件对应位置坐标差向量的均值向量;
[0115] 步骤8,获得中心部件位置坐标
[0116] 8a)目标检测模块将迭代次数初始化为0;
[0117] 8b)目标检测模块将迭代次数增加1,判断迭代次数是否大于迭代上限(在关于人脸数据的实施例中,设定迭代上限为250;在关于摩托车数据的实施例中,设定迭代上限为150;在关于飞机数据的实施例中,设定迭代上限为250),如果是,则执行步骤8j),否则执行步骤8c);
[0118] 8c)目标检测模块使用蒙那卡罗方法产生一个符合二维高斯分布的二维向量;
[0119] 8d)目标检测模块将产生的二维向量跟中心部件的位置坐标相加得到新的中心部件位置坐标,将新的中心部件的位置坐标代入上面的能量公式,得到一个新的能量值;
[0120] 8e)目标检测模块使用新能量值减去当前能量值,得到能量变化值;
[0121] 8f)目标检测模块判断能量变化值是否小于等于零,如果是,执行步骤8i),否则,执行步骤8g);
[0122] 8g)目标检测模块使用蒙那卡罗方法在[0,1]区间内产生一个均匀分布的随机数;
[0123] 8h)目标检测模块判断是否满足下面的保持条件,如果是,中心部件位置坐标保持原值,执行步骤8b),否则,执行步骤8i);
[0124] (i+1)-ΔE/T≤ζ
[0125] 其中,i为迭代次数,ΔE为能量变化值,T为初始的温度参数,ζ为步骤8g)中产生的随机数
[0126] 8i)目标检测模块使用步骤8d)得到的新的中心部件位置坐标值对中心部件位置坐标进行赋值,使用步骤8d)得到的新的能量值对当前能量值进行赋值,执行步骤7d);
[0127] 8j)记录更新的中心部件位置坐标和当前能量值;
[0128] 步骤9,判断是否第一次记录中心部件位置坐标目标检测模块判断是否是第一次执行此(9)步骤,如果是,执行步骤8a),否则,执行步骤10a);
[0129] 步骤10,获得近似部件位置坐标集合
[0130] 10a)目标检测模块判断第一次记录的当前能量值是否小于第二次记录的当前能量值,如果是,选择第一次记录的中心部件位置坐标作为近似中心部件位置坐标,否则,选择第二次记录的中心部件位置坐标作为近似中心部件位置坐标;
[0131] 10b)目标检测模块计算所有外围部件与中心部件对应位置坐标差向量的均值向量;
[0132] 10c)目标检测模块将均值向量分别与近似中心部件位置坐标相加,得到近似外围部件位置坐标;
[0133] 10d)目标检测模块将近似外围部件位置坐标和近似中心部件位置坐标组合构成近似部件位置坐标集合;
[0134] 步骤11,获得最终部件位置坐标集合
[0135] 11a)目标检测模块使用步骤10d)得到的近似部件位置坐标集合对部件位置坐标集合进行赋值,初始化迭代次数为0,设定初始步长为7;
[0136] 11b)目标检测模块将初始步长与迭代次数相除,得到当前步长,并将迭代次数增加1;
[0137] 11c)目标检测模块对下面的目标函数进行求导,得到目标函数关于当前部件位置坐标集合的梯度向量,判断梯度向量的2范数是否小于门限(关于人脸数据的实施例中,设定门限为1.3;关于摩托车数据的实施例中,设定门限为1.6;关于飞机数据的实施例中,设定门限为1.8),如果是,则执行步骤11f),否则,执行步骤11d)
[0138]
[0139] 其中,Q(L)代表部件位置坐标集合为L的目标函数值,a代表一个部件,V为n个部件的集合,g(l)表示位于被检测图像中l的区域与部件a的匹配度, 表示目标空间结构的边集E中的一条有向边,它的两个顶点为部件f和部件v,log()表示作对数运算,p(i-j)表示差向量i-j的高斯分布,i表示部件v的位置坐标,j表示部件f的位置坐标;
[0140] 11d)目标检测模块将当前步长与梯度向量相乘,得到更新向量;
[0141] 11e)目标检测模块将部件位置坐标集合与更新向量相减,得到更新的部件位置坐标集合,执行步骤11b);
[0142] 11f)重新初始化迭代次数为0;
[0143] 11g)目标检测模块将迭代次数增加1,判断迭代次数是否大于20,否则,求得上面的目标函数关于当前部件位置坐标集合的梯度向量,并将当前部件位置坐标集合代入目标函数计算当前目标函数值;
[0144] 11h)目标检测模块在梯度向量中查找绝对值最大的位,判断此位是否在之前的循环中被选中过,如果是,找到次大的位,否则,执行步骤11i);
[0145] 11i)目标检测模块判断被选中的位的梯度绝对值是否大于等于阈值(关于人脸数据的实施例中,设定阈值为0.4;关于摩托车数据的实施例中,设定阈值为0.5;关于飞机数据的实施例中,设定阈值为0.5),如果是,执行步骤11j),否则执行步骤111);
[0146] 11j)目标检测模块判断梯度向量中被选中位的值是否大于0,如果是,则部件位置坐标集合中被选中位的值减去1,未选中位的值保持原值,得到更新的部件位置坐标集合,否则,部件位置坐标集合中被选中的位的值加上1,未选中位的值保持原值,得到更新的部件位置坐标集合;
[0147] 11k)目标检测模块将更新的部件位置坐标集合代入上面的目标函数计算新目标函数值,判断新目标函数值是否大于步骤11g)中得到的当前目标函数值,如果是,则将更新的部件位置坐标集合赋值给当前部件位置坐标集合,将新目标函数值赋值给当前目标函数值,执行步骤11g),否则,部件位置坐标集合和当前目标函数值保持原值,执行步骤11g);
[0148] 111)目标检测模块选择当前部件位置坐标集合作为最终部件位置坐标集合;步骤12,显示检测结果
[0149] 数字信号处理芯片通过串行总线向检测结果显示计算机输送最终部件位置坐标集合,随后检测结果显示计算机完成检测结果的显示。
[0150] 下面结合附图3对本发明的效果做进一步描述。
[0151] 一.实验条件和内容
[0152] 附图3实现的实验条件为:按照附图2的系统示意图搭建系统。数字信号处理芯片采用TI公司的TMS320C6711B,现场可编程门阵列则采用Altera公司Apex系列的EP20K600EBC652芯片,闪存的大小定为32M,同步动态随机存储器的大小定为16M,静态随机存储器的大小定为4M,图像训练计算机和检测结果显示计算机均采用普通个人电脑实现。
[0153] 本发明的具体仿真内容为:
[0154] 1.在室外环境下,采集人脸图像作为检测图像,采用搭建的系统运行本发明提出的基于部件的目标检测方法对检测图像中进行目标部件的检测。
[0155] 2.在室外环境下,采集摩托车图像作为检测图像,采用搭建的系统运行本发明提出的基于部件的目标检测方法对检测图像中进行目标部件的检测。
[0156] 3.采用航拍的飞机图像作为检测图像,采用搭建的系统运行本发明提出的基于部件的目标检测方法对检测图像中进行目标部件的检测,并同k-fans模型的仿真结果做了对比。
[0157] 二.实验结果
[0158] 附图3为本发明的仿真效果图,其中,图3(a)为人脸检测图片,图中方框标定了本发明检测出的人脸的6个部件;图3(b)为摩托车检测图片,图中方框标定了本发明检测出的摩托车的6个部件,由图3可见,使用本发明的方法可以同时准确地检测到目标的多个部件。图4为航拍飞机的检测图片,图4(a)为k-fans模型(k=1)的检测结果,图4(b)为k-fans模型(k=2)的检测结果,图4(c)为本发明的检测结果。由图4可见,本发明的检测结果要好于k-fans模型的检测结果。