一种基于多尺度的Adaboost检测方法及系统的制作方法

文档序号:6370359阅读:95来源:国知局
专利名称:一种基于多尺度的Adaboost检测方法及系统的制作方法
技术领域
本发明涉及计算机视觉和图像处理,特别涉及一种基于多尺度的Adaboost检测方法及系统。
背景技术
物体检测是模式识别中的二元分类问题,可被广泛的应用于多个领域,如智能监控中的行人检测、人脸检测等,视频中检索相似图像等等。物体检测系统,即一个模式分类系统,一般包含传感器接收图像或视频数据、特征生成、特征选择、分类器设计及检测系统评估这几部分。目如,通常利用Adaboost算法进行检测系统评估。在利用Adaboost算法对待测图像进行检测时,通常对同一待测图像进行N个检测尺度的检测,对同一待测图像的同一检 测尺度而言,通常需要对该待测图像包含的X个检测点进行遍历扫描,如果进行N个检测尺度的检测,则需要对该待测图像包含的X个检测点进行N次遍历扫描,并在每次逐点遍历扫描时,计算机会将与检测点相关的图像局部区域载入CPU与外部内存之间的临时存储器,即Cache缓存中暂存,在对待测图像包含的X个检测点的某一个检测尺度的检测过程中,预先载入Cache缓存的与检测点相关的图像局部区域会不断地被替换,而后续的不同检测尺度的检测过程中需要将上述与检测点相关的图像局部区域再次载入Cache缓存,即发生检测区域的缓存遗漏(Cache Miss)。现有的利用Adaboost算法对待测图像进行N个检测尺度的检测方法中,若系统中平均每M个检测点就会发生一次Cache Miss,则现有的利用Adaboost算法对待测图像进行N个检测尺度的检测方法中发生Cache Miss的次数为N与X的乘积与M的商向上取整的数值。现仅以M为4,X大于4,N大于I为例,对现有的检测方法中发生的检测区域的缓存遗漏进行说明,具体如下检测点Pl对应的图像局部区域中会包含检测点P2、检测点P3及检测点P4对应的图像局部区域,由于每4个检测点会发生一次Cache Miss,假设检测点Pl及检测点Pa对应的局部区域未保存于Cache缓存中;其中,a为4j+l ;j为大于或等于I的整数。在第I个检测尺度下,检测点Pl对应的图像局部区域未保存于Cache缓存中,发生该检测尺度下的第I次Cache Miss,系统从内存中加载第I个检测尺度下检测点P I对应的图像局部区域至Cache缓存中,利用检测点Pl对应的图像局部区域,对检测点Pl、检测点P2、检测点P3及检测点P4进行检测,在对检测点Pa检测时,检测点Pa对应的局部区域未保存于Cache缓存中,系统从内存中加载第I个检测尺度下检测点Pa对应的图像局部区域至Cache缓存中,原本存放在Cache缓存中的检测点Pl对应的图像局部区域会被替换,发生该检测尺度下的第2次Cache Miss,以此类推,在第I个检测尺度下,对X个检测点进行检测过程中发生的Cache Miss的次数为X与M的商向上取整后的数值。在第2个检测尺度下,检测点Pl对应的图像局部区域由于被后续载入的检测点对应的图像局部区域的替换,并未保存于Cache缓存中,发生该检测尺度下的第I次CacheMiss,系统从内存中加载第2个检测尺度下检测点Pl对应的图像局部区域至Cache缓存中,利用检测点PI对应的图像局部区域,对检测API、检测点P2、检测点P3及检测点P4进行检测,在对检测点Pa检测时,检测点Pa对应的局部区域未保存于Cache缓存中,系统从内存中加载第2个检测尺度下检测点Pa对应的图像局部区域至Cache缓存中,原本存放在Cache缓存中的检测点Pl对应的图像局部区域被替换,发生该检测尺度下的第2次CacheMiss,以此类推,在第2个检测尺度下,对X个检测点进行检测过程中发生的Cache Miss的次数为X与M的商向上取整后的数值。以此类推,在第3 N个检测尺度下对X个检测点进行检测过程中,现有的检测方法会导致每个检测尺度下,对X个检测点进行检测过程中发生的Cache Miss的次数为X与M的商向上取整后的数值,这样,N个检测尺度下对X个检测点进行检测过程中发生的CacheMiss的次数为X与M的商向上取整后的数值与N的乘积。其中,检测尺度表示进行逐点遍历扫描时选择的检测窗口大小;检测点为待检测 图像上的像素点位置。综上所述,现有的基于多尺度的Adaboost检测方法中,在发生Cache Miss后,系统包含的CPU会转到外部内存中查找与检测点相关的图像局部区域,降低了检测系统的处理性能,影响了 Adaboost的检测效率,而被测图像的尺寸越大,多尺度检测过程中检测区域的缓存遗漏发生的频率越高,整个系统的处理性能越低,Adaboost检测效率还有待进一步提闻。

发明内容
有鉴于此,本发明的目的在于提供一种基于多尺度的Adaboost检测方法,该方法能够提闻Adaboost检测效率,提闻系统的处理性能。本发明的目的在于提供一种基于多尺度的Adaboost检测系统,该系统能够提高Adaboost检测效率,提高系统的处理性能。为达到上述目的,本发明的技术方案具体是这样实现的一种基于多尺度的Adaboost检测方法,该方法包括A、按照位置偏移,从包含X*N个待检测点的信息的待检测点队列中获取一个待检测点的信息;所述待检测点的信息至少包含位置偏移、检测尺度级别及标识信息;所述N和X均为大于I的整数;B、判断从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长是否为0,如果是,执行步骤D,否则执行步骤C ;所述步长为需经弱分类器检测的相邻两个待检测点之间间隔的待检测点的个数;C、根据标识信息判断待检测点是否位于首位置,如果是,执行步骤D,否则,更新步长数组中保存的当前检测尺度对应的步长,执行步骤A ;D、判断Cache缓存是否保存了与待检测点对应的图像局部区域,如果未保存,则从内存中加载待检测点对应的图像局部区域至Cache缓存,之后执行步骤E,否则直接执行步骤E ;E、利用当前检测尺度下的弱分类器对Cache缓存中保存的与待检测点对应的图像局部区域进行检测,将检测结果作为当前检测尺度对应的步长写入所述步长数组,执行步骤A。较佳地,所述步骤A之前进一步包括A’、生成N个检测尺度的步长数组及X个待检测点在N个检测尺度下的待检测点队列。较佳地,所述步骤A之前进一步包括根据样本图像及Adaboost算法,生成与N个检测尺度中每一个检测尺度对应的弱分类器。上述方法中,步骤A’所述生成N个检测尺度的步长数组包括生成包含N个数组元素的步长数组,一个数组元素用以保存一个检测尺度对应的步长;所述任一数组元素保存的步长的初始值为O。 上述方法中,步骤A’所述生成X个待检测点在N个检测尺度下的待检测点队列包括Al’、生成一个包含X*N个数组元素的数组;A2’、在每个检测尺度下对待测图像进行扫描,获得当前检测尺度下每一个检测点的位置偏移、检测尺度级别及标识信息;A3’、将扫描获得的每一个检测点在N个检测尺度下的位置偏移、检测尺度级别及标识信息写入步骤Al’生成的数组的一个数组元素中;A4’、将步骤A3’中写入了 X*N个待检测点的信息的数组按照位置偏移升序排列,将按照位置偏移升序排列后的数组作为待检测点队列;所述位置偏移用以表示检测点在待检测图像中的坐标或位置信息;所述检测尺度级别用以确定检测尺度的相对大小;所述标识信息用以表示检测点是否位于待测图像的首位置。上述方法中,步骤C所述首位置为逐行检测中一行的行首位置或逐列检测中一列的列首位置。上述方法中,步骤C所述更新步长数组中保存的当前检测尺度对应的步长包括将当前检测尺度对应的步长与I的差值作为更新后的步长,将更新后的步长写入步长数组中与当前检测尺度对应的数组元素中。—种基于多尺度的Adaboost检测系统,该系统连接内存及Cache缓存,该系统包含检测控制模块,连接内存、Cache缓存及N个弱分类器,按照位置偏移,从包含X*N个待检测点的信息的待检测点队列中获取一个待检测点的信息;所述N和所述X均为大于I的整数;所述待检测点的信息至少包含位置偏移、检测尺度级别及标识信息;所述检测控制模块在判定从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长为O、或判定从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长非0且待检测点处于首位置时,将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中的待检测点对应的图像局部区域输出至当前检测尺度下的弱分类器,在判定当前检测尺度对应的步长非0且待检测点未位于首位置时,更新暂存的步长数组中与当前检测尺度对应的数组元素对应的步长;所述步长为需经弱分类器检测的相邻两个待检测点之间间隔的待检测点的个数;
所述N个弱分类器中任一弱分类器根据输入的与待检测点对应的图像局部区域,生成表示图像相似程度的检测结果,将检测结果作为与当前检测尺度对应的步长输出至检测控制模块。较佳地,所述检测控制模块还生成N个检测尺度的步长数组及X个待检测点在N个检测尺度下的检测队列。上述系统中,所述检测控制模块包含扫描单元,根据检测点监控单元输出的N及X,生成一个包含X*N个数组元素的数组,在每个检测尺度下对待测图像进行扫描,获得当前检测尺度下每一个检测点的位置偏移、检测尺度级别及标识信息并写入生成的数组中,将按照位置偏移升序排列后的数组作为待检测点队列写入存储单元;步长控制单元,根据检测点监控单元输出的N生成用以保存N个检测尺度的步长数组,并将步长数组写入存储单元;根据检测点监控单元的第一触发,利用当前检测尺度级别从存储单元中获取与当前检测尺度对应的步长,并输出至检测点监控单元;根据检测点 监控单元的第二触发,更新当前检测尺度对应的步长并写入存储单元的步长数组中;根据检测点监控单元的第三触发,将检测点监控单元输出的检测结果作为当前检测尺度对应的步长写入存储单元的步长数组中;检测点监控单元,从存储单元中读取一个待检测点的位置偏移、检测尺度级别及标识信息,输出第一触发至步长控制单元;判断步长控制单元反馈的与当前检测尺度对应的步长是否为0,如果步长为0,则将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中的待检测点对应的图像局部区域输出至当前检测尺度下的弱分类器,如果步长非0且根据标识信息确定待检测点位于首位置,将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中的待检测点对应的图像局部区域输出至当前检测尺度下的弱分类器,如果步长非0且根据标识信息确定待检测点未位于首位置,输出第二触发至步长控制单;所述检测点监控单元将弱分类器输出的检测结果转发给步长控制单元,并输出第三触发至步长控制单元;存储单元,用以保存待检测点队列和步长数组。由上述的技术方案可见,本发明提供了一种基于多尺度的Adaboost检测方法,该方法中,按照位置偏移,从包含X*N个待检测点的信息的待检测点队列中获取一个待检测点的信息;判断从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长是否为0,如果步长为0,则将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中已保存的待检测点对应的图像局部区域作为弱分类器检测的图像,如果步长非0且待检测点位于首位置,则将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中已保存的待检测点对应的图像局部区域作为弱分类器检测的图像,若步长非0且待检测点未位于首位置,更新步长数组中保存的当前检测尺度对应的步长。本发明还提供了一种基于多尺度的Adaboost检测系统。采用本发明的方法及系统,能够提高Adaboost检测效率,提高系统的处理性能。


图I为本发明基于多尺度的Adaboost检测方法的流程图。图2为本发明基于多尺度的Adaboost检测系统的结构示意图。
具体实施例方式为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。本发明提供了一种基于多尺度的Adaboost检测方法及系统,本发明为了提高Adaboost检测效率,在对待测图像进行N个检测尺度的检测时,对待测图像的X个待检测点不再采用现有的N次遍历检测的方法,而是在一次遍历检测中对X个待检测点进行弱分类器的检测,而对于任一检测点判断是否进行弱分类器检测时,依据当前检测尺度下前一个进行了弱分类器检测的待检测点生成的步长确定是否对当前检测尺度下的当前待检测点进行弱分类器检测的判断,本发明中除位于首位置外的任一待检测点进行弱分类器检测的检测次数小于N次;由于待检测点在进行弱分类器检测时会引起图像局部区域的CacheMiss,本发明的上述检测方法能够有效减少图像局部区域Cache Miss数量,比如,在现有 的进行物体检测的系统中,若平均每4个相邻检测点就会发生一次Cache Miss,采用现有的基于多尺度的Adaboost检测方法对N个检测尺度的待测图像进行检测时发生CacheMiss的次数为X与4的商向上取整后的数值与N的乘积,而采用本发明的基于多尺度的Adaboost检测方法对N个检测尺度的待测图像进行检测时,发生Cache Miss的次数为X与4的商向上取整的数值,图像局部区域的Cache Miss远小于现有的方法,有效地提高了检测效率及系统的处理性能。图I为本发明基于多尺度的Adaboost检测方法的流程图。现结合图1,对本发明基于多尺度的Adaboost检测方法进行说明,具体如下步骤101 :生成N个检测尺度的步长数组;该步骤中步长数组包含N个数组元素,每一个数组元素用以保存该检测尺度下的步长,即当前检测尺度下当前待检测点的前一个实检测点至下一个实检测点间的步长。其中,步长为需经弱分类器检测的相邻两个检测点之间间隔的检测点的个数,即用以表示相邻两个实检测点之间间隔的未检测点的个数;实检测点为经判断完成了弱分类器检测的检测点;未检测点为经判断无需进行弱分类器检测的检测点;待检测点为未经过弱分类器检测且当前等待判断是否进行弱分类器检测的检测点。该步骤具体为根据待测图像包含的N个检测尺度的数值,生成用以保存任一检测尺度下步长的步长数组。本发明的检测尺度表示进行检测时选择的检测窗口的大小,可以用像素点乘积的形式表示检测窗口的大小,比如64像素*64像素,64像素*128像素等;本发明的检测点为待检测图像上的像素点位置,对该检测点的检测过程就是对该检测点所对应的图像局部区域与样本图像之间的相似性比对过程;N和X均为大于I的整数。在该步骤中,步长数组中任一检测尺度对应的步长的初始值为0,即默认任一检测尺度下的第一个待检测点都需要进行弱分类器检测,后续步骤再利用步长数字中的数值及本发明的对每一个待检测点逐一进行N个检测尺度的检测方法,对待检测点是否需要进行弱分类器检测进行筛选;任一检测尺度下的步长会根据弱分类器的检测结果进行动态变化,待检测点对应的图像局部区域与样本图像中相应的区域越相似,步长就越小。步骤102 :获取X个待检测点在N个检测尺度下的位置偏移、检测尺度级别及标识信息,并生成待检测点队列;该步骤中,位置偏移用以表示待检测点在待测图像中的坐标或位置信息,即待检测点相对于待测图像第一个像素点的位置偏移量;待测图像第一个像素点的位置可为待测图像的左侧边沿和上侧边沿交叉的像素点;检测尺度级别用以确定检测尺度的相对大小,t匕如,预设的检测尺度级别为I时,该检测尺度对应的检测窗口的大小为64像素*64像素,检测尺度级别为2时,该检测尺度对应的检测窗口的大小为128像素*128像素,根据检测尺度级别能够间接确定检测窗口的相对大小;标识信息用以表示该待检测点是否位于待测图像的检测区域首位置,若对待测图像进行逐行检测,则检测区域首位置为某一行的行首,比如用I值表示位于行首位置,用0值表示位于非行首位置,若对待测图像进行逐列检测,则检测区域首位置为某一列的列首,比如用I值表示位于列首位置,用0值表示位于非列首位置。该步骤包括步骤1021,生成一个包含X*N个数组元素的数组;步骤1022,在每个检测尺度下对待测图像进行扫描,获得当前检测尺度下每一个待检测点的位置偏移、检测尺度级别及标识信息;步骤1023,将扫描获得的每一个待检测点在N个检测尺度下的位置偏移、检测尺度级别及标识信息写入步骤1021生成的数组中;步骤1024,将步骤1023中写入了位置偏移、检测尺度级别及标识信息的数组按照位置偏移升序排列,将按照位置偏移升序排列后的数组作为待检测点队列。其中,步骤1022可采用现有的图像检测方法对待测图像进行扫描,以获得每一个待检测点的位置偏移、检测尺度级别及标识信息。 步骤103 :按照位置偏移从待检测点队列中获取一个待检测点Pi ;该步骤具体为从按照位置偏移升序排列后的待检测点队列中获取一个检测点Pi的位置偏移、检测尺度级别及标识信息。该步骤中的i为大于或等于I的整数。 步骤104 :从步长数组中获取与当前检测尺度对应的步长;该步骤中提及的与当前检测尺度对应的步长即为当前检测尺度下依据前一次完成弱分类器检测的检测结果生成的步长、或对当前检测尺度下依据前一次完成弱分类器检测的检测结果生成的步长进行了更新的步长。该步骤具体为根据当前检测尺度级别,从步长数组中获得与检测尺度对应的数组元素,将数组元素中保存的数值作为与当前检测尺度对应的步长。步骤105 :判断当前检测尺度下的步长是否为0,如果是,执行步骤108,否则执行步骤106 ;该步骤具体判断步长数组中与当前检测尺度对应的数组元素中保存的数值是否为0,如果是,则表示当前的待检测点Pi需要进行弱分类器检测,否则,表示当前的待检测点Pi需要进一步判断,以确定其变为实检测点还是未检测点。步骤106 :根据标识信息判断待检测点Pi是否位于首位置,如果是,执行步骤108,否则执行步骤107 ;该步骤与步骤105结合,以确定待检测Pi是否进行弱分类器检测,具体地,在与当前检测尺度对应的步长非零时,只要待检测点Pi位于一行的行首位置或一列的列首位置,就进行弱分类器检测,否则按照步长跳至下一个可能成为实检测点的待检测点,对下一个可能称为实检测点的待检测点进行判断。对于逐行检测来说,该步骤是为了避免位于前一行的行尾的待检测点在弱分类器检测后产生的步长影响位于当前行的行首的待检测点是否进行弱分类器检测的判断,换句话说,对于行首位置的待检测点,只存在后相邻的待检测点,没有前相邻的待检测点,在该行中也就不存在前一个实检测点形成的步长,而为了保证检测结果准确性,本发明对每一行的行首检测点都进行弱分类器检测。步骤107 :更新当前检测尺度对应的步长,之后执行步骤103 ;该步骤包括将当前检测尺度对应的步长与I的差值作为更新后的步长,将更新后的步长写入步长数组中与当前检测尺度对应的数组元素中,之后执行步骤103。步骤108 :使用当前检测尺度下的弱分类器对待检测点Pi进行检测;
该步骤包括步骤1081,根据当前检测尺度,获取与当前检测尺度下的弱分类器;步骤1082,获取与待检测点Pi对应的图像局部区域;步骤1083,利用弱分类器对待检测点Pi对应的图像局部区域包含的图像特征进行相似性检测。在步骤1082中,若待检测点Pi对应的图像局部区域保存于Cache缓存中,则未发生Cache Miss,在步骤1083中,将Cache缓存中保存的待检测点Pi对应的图像局部区域输出至弱分类器;在步骤1082中,若待检测点Pi对应的图像局部区域未保存于Cache缓存中,则发生I次Cache Miss,将内存中待检测点Pi对应的图像局部区域加载到Cache缓存中,以便在步骤1083中,将Cache缓存中保存的待检测点Pi对应的图像局部区域输出至弱分类器。步骤109 :将检测结果作为当前检测尺度对应的步长,之后执行步骤103 ;该步骤具体为将待检测点Pi进行弱分类器检测的检测结果作为步长写入步长数组中与当前检测尺度对应的数组元素中。经过该步骤后,待检测点Pi变为实检测点。其中,对待检测点Pi进行弱分类器检测的检测结果表示了待检测点Pi对应的图像局部区域包含的图像特征与样本图像中相应图像特征的相似程度,比如可以将二者的相似程度用不相关特征、部分弱相关特征及强相关特征表示,越接近强相关特征,则待检测点Pi经弱分类器检测的检测结果表示越相似,当前检测尺度对应的步长越小,比如,若当前检测尺度下待检测点Pi的弱分类器检测的检测结果表示强相关特征时,则当前检测尺度对应的步长为0,若当前检测尺度下待检测点Pi的弱分类器检测的检测结果表示部分弱相关特征,则当前检测尺度对应的步长为1,若当前检测尺度下待检测点Pi的弱分类器检测的检测结果表示不相关特征,则当前检测尺度对应的步长为3。本发明提及的步长与检测结果表示的相似程度成反比,实际上是为了避免在后续选择下一个进行弱分类器检测的待检测点时,由于步长选择不当而影响检测结果的正确性,换句话说,对于一般的待测图像来说,检测点之间是存在空间相关性的,如果一个检测点与样本很相似,则其周围邻近的检测点对应的图像局部区域也会与样本较相似,此时步长应设置地小一些,以免跳过那些与样本最相似的检测点,而影响检测结果的正确性,因此,本发明将步长设置为与检测结果表示的相似程度成反比。
优选地,本发明的步骤101之前进一步包括步骤100,根据样本图像生成与每一个检测尺度对应的弱分类器;该步骤中,某一检测尺度下的弱分类器是根据该检测尺度下的样本图像的训练集,利用Adaboost算法进行计算获得的,可采用现有的Adaboost算法进行迭代运算生成对于某一检测尺度的弱分类器,在此不再对弱分类器的具体计算过程进行赘述。若系统中平均每M个检测点就会发生一次Cache Miss,则采用本发明的基于多尺度的Adaboost检测方法对待测图像进行检测的过程中,发生Cache Miss的次数为X与M的商向上取整的数值。现仅以M为4,X大于4,N为3为例,对本发明的基于多尺度的Adaboost检测方法进行说明,具体如下在本实施例中,M为4,即平均每4个检测点会发生一次Cache Miss,也就是说待检测点Pl对应的图像局部区域中会包含待检测点P2、待检测点P3及待检测点P4对应的图像局部区域;本实施例中假设检测点Pl及检测点Pa对应的局部区域未保存于Cache缓存中;其中,a为4j+l ;j为大于或等于I的整数。 对于位置偏移为0的处于行首的待检测点Pl来说,需要进行N个检测尺度的弱分类器检测,获得表示该待检测点Pl对应的图像局部区域包含的图像特征与样本图像的图像特征相似度的N个检测结果,根据N个检测结果对步长数组中与检测尺度对应的N个数组元素进行赋值。由于待检测点Pl对应的图像局部区域未保存于Cache缓存中,发生I次CacheMiss,在经弱分类器检测之前,从内存中加载与待检测点Pl对应的图像局部区域至Cache缓存中,利用弱分类器对待检测点Pl对应的图像局部区域进行3个检测尺度的检测,根据检测结果,在检测尺度级别为I及检测尺度级别为2时对应的步长为0,在检测尺度级别为3时对应的步长为2,待检测Pl成为待检测点P2的前一次实检测点。位置偏移为I且未处于行首的待检测点P2由于实检测点P I在检测尺度级别为I和检测尺度级别为2时的步长为0,待检测点P2在检测尺度级别为I及检测尺度级别为2时都需要进行弱分类器检测,即利用Cache缓存中已保存的待检测点Pl对应的图像局部区域进行弱分类器检测,此时不会发生Cache Miss,待检测点P2在检测尺度级别为I时的检测结果为弱相关性,则步长数组中检测尺度级别为I时的步长更新为1,待检测点P2在尺度级别为2时的检测结果为不相关性,则步长数组中检测尺度级别为2时的步长更新为3,待检测点P2在检测尺度级别为I和检测尺度级别为2时变为实检测点;未处于行首的待检测点P2由于实检测点Pl在检测尺度级别为3时对应的步长为2,待检测点P2对应的图像局部区域包含的图像特征可能与样本图像对应的图像特征存在一定的不同,本发明不再对检测尺度级别为3时的待检测点P2进行弱分类器检测,更新步长数组中与检测尺度级别为3时对应的数组元素,即将该检测尺度对应的数组元素值减1,步长值由2更新为I。位置偏移为2且未处于行首的待检测点P3在检测尺度级别为I时,由于实检测点P2的检测结果非0,不进行弱分类器检测,并将步长数组中检测尺度级别为I的步长更新为
0;待检测点P3在检测尺度级别为2时,由于实检测点P2的检测结果非0,不进行弱分类器检测,并将步长数组中检测尺度级别为2的步长更新为2 ;待检测点P3在检测尺度级别为3时,由于步长数组中与检测尺度级别为3对应的数组元素为1,即步长为1,待检测点P3不进行弱分类器检测,更新步长数组中与检测尺度级别为3对应的步长为O。
位置偏移为4且未处于行首的检测点P4来说,由于检测尺度为I时对应的步长为0,进行弱分类器检测,即利用Cache缓存中已保存的待检测点Pl对应的图像局部区域进行弱分类器检测,此时仍不会发生Cache Miss,由于检测尺度为2时对应的步长非0,在该检测尺度下也无需进行弱分类器检测,将步长数组中检测尺度级别为2的步长更新为1,由于在检测尺度级别为3时步长为0,需要进行弱分类器检测,即利用Cache缓存中已保存的待检测点Pl对应的图像局部区域进行弱分类器检测,此时仍不会发生Cache Miss0而对于待检测点P4之后的待检测点Pa来说,比如待检测点P5,Cache缓存中的待检测点Pl对应的图像局部区域并未包含待检测点P5对应的图像局部区域,需要将待检测点P5对应的图像局部区域从内存加载到Cache缓存中,替换Cache缓存中保存的待检测点P I对应的图像局部区域,此时发生了 I次Cache Miss,缓存的待检测点P5对应的图像局部区域能够提供完成待检测点P5至待检测点P8的弱分类器检测所需的图像。根据上述内容可知,在利用本发明的方法对X个待检测点进行N个检测尺度的检测时,若每M个检测点发生一次,整个检测过程发生Cache Miss的次数为X与M的商向上取整后的数值。 图2为本发明基于多尺度的Adaboost检测系统的结构示意图。现结合图2,对本发明基于多尺度的Adaboost检测系统的结构进行说明,具体如下本发明基于多尺度的Adaboost检测系统包含检测控制模块21及N个弱分类器
22。其中,检测控制模块21连接N个弱分类器22、内存(图2中未示出)及Cache缓存23。检测控制模块21生成N个检测尺度的与X个待检测点对应的步长数组并暂存,获取待测图像包含的X个待检测点在N个检测尺度下的位置偏移、检测尺度级别及标识信息,生成待检测点队列并暂存。检测控制模块21按照位置偏移从待检测点队列中获取一个待检测点Pi的位置偏移、检测尺度级别及标识信息,获取当前检测尺度对应的步长,在判定当前检测尺度对应的步长为O、或在判定当前检测尺度对应的步长非0且待检测点Pi处于首位置时,将从内存加载至Cache缓存23中的待检测点Pi对应的图像局部区域、或Cache缓存23中的待检测点Pi对应的图像局部区域输出至当前检测尺度下的弱分类器22,在判定当前检测尺度对应的步长非0且待检测点Pi未位于首位置时,更新暂存的步长数组中与当前检测尺度对应的数组元素对应的步长。其中,首位置为逐行检测中的行首位置,或逐列检测中的列首位置。N个弱分类器22中任一弱分类器22用以根据输入的与待检测点Pi对应的图像局部区域包含的图像特征,生成表示当前检测尺度下待检测点Pi对应的图像局部区域包含的图像特征与样本图像相应的图像特征相似程度的检测结果,将检测结果作为与当前检测尺度对应的步长输出至检测控制模块21。其中,本发明的N个弱分类器22可根据现有的Adaboost算法及样本图像生成,在此不再对弱分类器的结构进行赘述。本发明提及的Cache缓存23用以保存包含与待检测点对应的图像局部区域;其中,与一个待检测点对应的图像局部区域中可包含多个待检测点,该与一个待检测对应的图像局部区域可由检测控制模块21由外部内存加载至Cache缓存23中保存,以对该图像局部区域包含的多个待检测点进行弱分类器检测。其中,检测控制模块21包含扫描单元210、步长控制单元211、检测点监控单元212及存储单元213。
扫描单元210根据检测点监控单元212输出的检测尺度的数值N及待测图像包含的待检测点个数X,生成一个包含X*N个数组元素的数组,在每个检测尺度下对待测图像进行扫描,获得当前检测尺度下每一个待检测点的位置偏移、检测尺度级别及标识信息,将扫描获得的每一个待检测点在N个检测尺度下的位置偏移、检测尺度级别及标识信息写入生成的数组中,将写入了位置偏移、检测尺度级别及标识信息的数组中的元素按照位置偏移升序排列,将按照位置偏移升序排列后的数组作为待检测点队列写入存储单元213中。步长控制单元211根据检测点监控单元212输出的检测尺度的数值N,生成用以保存N个检测尺度的步长数组,并设定每一个检测尺度的步长的初始值为0,将步长数组写入存储单元213中。步长控制单元211根据检测点监控单元212的第一触发,利用当前检测尺度级别从存储单元213中获取与当前检测尺度对应的步长,并输出至检测点监控单元212 ;根据检测点监控单元212的第二触发,将与当前检测尺度对应的步长与I的差值作为更新后步长写入存储单元213中与当前检测尺度对应的数组元素中;根据检测点监控单元212的第三 触发,将检测点监控单元212转发的来自弱分类器22的检测结果作为当前检测尺度对应的步长写入存储单元213中与当前检测尺度对应的数组元素中。检测点监控单元212在启动初始化时,输出检测尺度的数值N及待测图像包含的待检测点个数X至扫描单元210及步长控制单元211 ;检测点监控单元212根据存储单元213中的按照位置偏移升序排列而生成的待检测点队列,读取一个待检测点Pi的位置偏移、检测尺度级别及标识信息,输出第一触发至步长控制单元211。检测点监控单元212判断步长控制单元211反馈的与当前检测尺度对应的步长是否为0,如果步长为0,判断Cache缓存23中是否保存了与待检测点Pi对应的图像局部区域,如果已保存,则输出从Cache缓存23中读取的待检测点Pi对应的图像局部区域至当前检测尺度下的弱分类器22,如果未保存,则从内存中加载与待检测点Pi对应的图像局部区域至Cache缓存23,输出从Cache缓存23中读取的待检测点Pi对应的图像局部区域至当前检测尺度下的弱分类器22。检测点监控单元212在判定步长非0后,进一步根据待检测点Pi的标识信息判断待检测点Pi是否位于首位置,如果位于首位置,判断Cache缓存23中是否保存了与待检测点Pi对应的图像局部区域,如果已保存,则输出从Cache缓存23中读取的待检测点Pi对应的图像局部区域至当前检测尺度下的弱分类器22,如果未保存,则从内存中加载与待检测点Pi对应的图像局部区域至Cache缓存23,输出从Cache缓存23中读取的待检测点Pi对应的图像局部区域至当前检测尺度下的弱分类器22 ;如果未处于首位置,输出第二触发至步长控制单元211。检测点监控单元212将弱分类器22输出的检测结果转发给步长控制单元211,并输出第三触发至步长控制单元211。存储单元213用以保存待检测点队列和步长数组。优选地,本发明的系统还包含一分类器生成模块(图2中未示出),该分类器生成模块利用Adaboost算法及样本图像,生成与N个检测尺度对应的N个弱分类器22。本发明的上述较佳实施例中,不再如现有的多尺度检测方法对N个检测尺度进行检测时遍历N次,而是通过一次遍历扫描完成了对X个待检测点的N个检测尺度的检测,这样,采用本发明的方法进行检测过程中发生Cache Miss的次数为X与M的商向上取整后的数值,相较于采用现有的多尺度检测方法进行检测过程中发生的Cache Miss次数,即X与M的商向上取整后的数值与N的乘积,大大减少了从内存加载图像局部区域至Cache缓存的次数,提高了 Adaboost检测效率和系统性能。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种基于多尺度的Adaboost检测方法,其特征在于,该方法包括 A、按照位置偏移,从包含X*N个待检测点的信息的待检测点队列中获取一个待检测点的信息;所述待检测点的信息至少包含位置偏移、检测尺度级别及标识信息;所述N和X均为大于I的整数; B、判断从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长是否为0,如果是,执行步骤D,否则执行步骤C ;所述步长为需经弱分类器检测的相邻两个待检测点之间间隔的待检测点的个数; C、根据标识信息判断待检测点是否位于首位置,如果是,执行步骤D,否则,更新步长数组中保存的当前检测尺度对应的步长,执行步骤A ; D、判断Cache缓存是否保存了与待检测点对应的图像局部区域,如果未保存,则从内存中加载待检测点对应的图像局部区域至Cache缓存,之后执行步骤E,否则直接执行步骤E ; E、利用当前检测尺度下的弱分类器,对Cache缓存中保存的与待检测点对应的图像局部区域进行检测,将检测结果作为当前检测尺度对应的步长写入所述步长数组,执行步骤A0
2.根据权利要求I所述的方法,其特征在于,所述步骤A之前进一步包括 A’、生成N个检测尺度的步长数组及X个待检测点在N个检测尺度下的待检测点队列。
3.根据权利要求I所述的方法,其特征在于,所述步骤A之前进一步包括 根据样本图像及Adaboost算法,生成与N个检测尺度中每一个检测尺度对应的弱分类器。
4.根据权利要求2所述的方法,其特征在于,步骤A’所述生成N个检测尺度的步长数组包括 生成包含N个数组元素的步长数组,一个数组元素用以保存一个检测尺度对应的步长;所述任一数组元素保存的步长的初始值为O。
5.根据权利要求2所述的方法,其特征在于,步骤A’所述生成X个待检测点在N个检测尺度下的待检测点队列包括 Al’、生成一个包含X*N个数组元素的数组; A2’、在每个检测尺度下对待测图像进行扫描,获得当前检测尺度下每一个检测点的位置偏移、检测尺度级别及标识信息; A3’、将扫描获得的每一个检测点在N个检测尺度下的位置偏移、检测尺度级别及标识信息写入步骤Al’生成的数组的一个数组元素中; A4’、将步骤A3’中写入了 X*N个待检测点的信息的数组按照位置偏移升序排列,将按照位置偏移升序排列后的数组作为待检测点队列; 所述位置偏移用以表示检测点在待检测图像中的坐标或位置信息;所述检测尺度级别用以确定检测尺度的相对大小;所述标识信息用以表示检测点是否位于待测图像的首位置。
6.根据权利要求1、2或3所述的方法,其特征在于,步骤C所述首位置为逐行检测中一行的行首位置或逐列检测中一列的列首位置。
7.根据权利要求I、2或3所述的方法,其特征在于,步骤C所述更新步长数组中保存的当前检测尺度对应的步长包括 将当前检测尺度对应的步长与I的差值作为更新后的步长,将更新后的步长写入步长数组中与当前检测尺度对应的数组元素中。
8.—种基于多尺度的Adaboost检测系统,该系统连接内存及Cache缓存,其特征在于,该系统包含 检测控制模块,连接内存、Cache缓存及N个弱分类器,按照位置偏移,从包含X*N个待检测点的信息的待检测点队列中获取一个待检测点的信息;所述N和所述X均为大于I的整数;所述待检测点的信息至少包含位置偏移、检测尺度级别及标识信息; 所述检测控制模块在判定从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长为O、或判定从包含N个数组元素的步长数组中获取的当前检测尺度对应的步长非0且待检测点处于首位置时,将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中的待检测点对应的图像局部区域输出至当前检测尺度下的弱分类器,在判定当前检测尺度对应的步长非0且待检测点未位于首位置时,更新暂存的步长数组中与当前检测尺度对应的数组元素对应的步长;所述步长为需经弱分类器检测的相邻两个待检测点之间间隔的待检测点的个数; 所述N个弱分类器中任一弱分类器根据输入的与待检测点对应的图像局部区域,生成表示图像相似程度的检测结果,将检测结果作为与当前检测尺度对应的步长输出至检测控制丰吴块。
9.根据权利要求8所述的系统,其特征在于,所述检测控制模块还生成N个检测尺度的步长数组及X个待检测点在N个检测尺度下的检测队列。
10.根据权利要求9所述的系统,其特征在于,所述检测控制模块包含 扫描单元,根据检测点监控单元输出的N及X,生成一个包含X*N个数组元素的数组,在每个检测尺度下对待测图像进行扫描,获得当前检测尺度下每一个检测点的位置偏移、检测尺度级别及标识信息并写入生成的数组中,将按照位置偏移升序排列后的数组作为待检测点队列写入存储单元; 步长控制单元,根据检测点监控单元输出的N生成用以保存N个检测尺度的步长数组,并将步长数组写入存储单元;根据检测点监控单元的第一触发,利用当前检测尺度级别从存储单元中获取与当前检测尺度对应的步长,并输出至检测点监控单元;根据检测点监控单元的第二触发,更新当前检测尺度对应的步长并写入存储单元的步长数组中;根据检测点监控单元的第三触发,将检测点监控单元输出的检测结果作为当前检测尺度对应的步长写入存储单元的步长数组中; 检测点监控单元,从存储单元中读取一个待检测点的位置偏移、检测尺度级别及标识信息,输出第一触发至步长控制单元;判断步长控制单元反馈的与当前检测尺度对应的步长是否为0,如果步长为0,则将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中的待检测点对应的图像局部区域输出至当前检测尺度下的弱分类器,如果步长非0且根据标识信息确定待检测点位于首位置,将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中的待检测点对应的图像局部区域输出至当前检测尺度下的弱分类器,如果步长非0且根据标识信息确定待检测点未位于首位置,输出第二触发至步长控制单;所述检测点监控单元将弱分类器输出的检测结果转发给步长控制单元,并输出第三触发至步长控制单元; 存储单元,用以保存待检测点队列和步长数组。
全文摘要
本发明提供了一种基于多尺度的Adaboost检测方法,该方法中,从待检测点队列中获取一个待检测点的信息;判断从步长数组中获取的当前检测尺度对应的步长是否为0、及判断待检测点是否位于首位置,如果步长为0、或者步长非0且待检测点位于首位置,则将从内存加载至Cache缓存中的待检测点对应的图像局部区域、或Cache缓存中已保存的待检测点对应的图像局部区域作为弱分类器检测的图像,若步长非0且待检测点未位于首位置,更新步长数组中保存的当前检测尺度对应的步长。本发明还提供了一种基于多尺度的Adaboost检测系统。采用本发明的方法及系统,能够提高Adaboost检测效率,提高系统的处理性能。
文档编号G06K9/62GK102722723SQ20121016953
公开日2012年10月10日 申请日期2012年5月24日 优先权日2012年5月24日
发明者呼志刚, 张一凡, 戚红命, 浦世亮, 蔡魏伟, 贾永华 申请人:杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1