新闻中心

EEPW首页 > EDA/PCB > 设计应用 > Adaboost算法的FPGA实现与性能分析

Adaboost算法的FPGA实现与性能分析

作者:时间:2012-12-27来源:网络收藏

  像素积分阵列:像素积分单元阵列是本系统中进行快速人脸检测的核心处理模块。在将 图像进入片内RAM 后,系统将采用20x20 的移动窗口对整幅图像进行扫描处理。每个周期 的开始阶段,检测窗口包含的一行(20 像素)的灰度值由底部进入积分阵列,积分阵列上部输 出按从左至右方向的行像素值的积分和,右部则输出每行按从左至右方向的像素值的平方 和。阵列中的灰色方格则保存了检测窗口对应原始图像部分的像素积分值。阵列中的带竖线 和右斜线的方格表示了存储特征所包含的矩形权重和特征相似度等参数的流水线。在整个扫 描窗口的像素积分值都进入此阵列后经过左侧编码模块的编码控制后,从阵列的右侧可以得 到当前一级分类器所包含的矩形的像素灰度值。此灰度值被送到右侧的检测模块(如图 4): 首先会和当前一级分类器中对应特征的权重weight 相乘,然后将乘积进行累加后即得到当 前区域对应此特征的特征值。接着这个值会与分类器中的特征阈值a 比较,从而选择对应 的特征相似度γo(大于等于a )或者γ1 (小于a ),此相似度值也将被累加,当该级分类器中 所包含的全部特征的特征相似度都累加完毕后会与最终的该级的检测阈值β比较。比较后 的结果显示了该窗口区域是否包含了人脸,1 即为包含,0 即为不包含。如果包含人脸,此 模块还将把当前检测到的人脸的区域信息(包括矩形的左上角起始坐标和矩形长、宽)保存在 一个专用的存储区域,以用于后面的结果输出。

5.jpg5.jpg


  人脸信息处理单元:像素积分单元阵列检测到人脸后,此单元将首先保存检测到的人脸 位置信息。如同检测阶段中分类器中的特征包含的矩形表达式一样,人脸位置信息也是由起 始点坐标和矩形的长、宽组成:(x, y, width, height)。接着根据此信息控制后一级的视频输出 模块用以显示人脸。读取(x, y),在图像RAM中检索到对应人脸的起始点的地址,往该地址 中写入像素值0。接着纵坐标不变,延x轴方向只至x+width-1的点的像素值均更新为0。然后 是绘制人脸的纵向边界。保持横坐标为x+width-1,y坐标依次增1只至y+height-1,将此列对 应点的像素值更新为0。后面再按照类似的方法折回完成余下的人脸边界的标识。此时存放 在RAM中的检测后的图像数据被送入到视频输出模块,该模块以800x600的分辨率将最后的 检测结果显示在VGA屏幕上,在屏幕显示中,被黑色方框包围的区域即是人脸。

  图像缩放单元:此模块用以检测图像中大于20x20像素的人脸。本文采用的是固定大小 为20x20的移动窗口,以从上至下,从左至右的方向遍历扫描整幅图像来检测人脸。对原始 图像数据扫描完一遍后,能够直接检测出图像中大小在20x20以内的人脸。然后有检测控制 状态机负责启动该单元模块,以一定系数对原始图像进行缩小处理。处理方法采用的是按照 缩小比例生成提取像素点的地址,并将这些像素点重新组成缩小后的图像。其计算公式如下 所示,其中( x0 ,y0 ) 和(x1 , y1) 分别为原图像和缩小后的点坐标,scale参数为查表所得:

6.jpg


  测试结果

  该 系 统 在 Xilinx ML509开发板上进行测试, 该开发板上采用了一块 XC5VLX110T-FF1136 的 芯片,测试方案为:将摄像头实时采集到的图像送进系统视 频输入模块,然后经过拨码开关来控制板上的AD9880 芯片转化为384x288 的8 位灰度图送 入核心检测模块检测并输出在VGA 显示器上。整个系统逻辑资源占用情况如表 1 所示。表 2 为最后系统能够运行的最高频率。

7.jpg


  结论

  本文创新点在于采用了一种像素积分单元阵列结构,能够对 中的Haar 特征进行并行处理。结合Virtex5 平台丰富和特殊结构的逻辑资源,得到了理想的性能,甚 至已经能够和高性能的PC 平台相提并论。从结果中可以看到,本系统只使用了部分资源。 通过在 芯片内部例化更多的处理单元,还有进一步增大并行性以取得性能提升的空 间。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭