标题:
Adaboost算法的FPGA实现与性能分析 (1)
[打印本页]
作者:
porereading
时间:
2013-4-19 22:07
标题:
Adaboost算法的FPGA实现与性能分析 (1)
Adaboost 算法是Freund 和Schapire 于1995 年提出的,全称为Adaptive Boosting。它是 Boosting 算法的改进,意为该算法通过机器训练与学习不断自适应地调整假设的错误率,这 种灵活性使得Adaboost 算法很容易与实际应用联系起来。2001 年,微软研究院的P.Viola 提出了基于Haar 特征的Adaboost 算法[1],创造性地将积分图的概念引入到人脸检测的特征 计算当中,由于此算法使用了大量尺寸不一的矩形作用来表征人脸。并且该算法中用以检测 人脸的分类器是采用的级联结构,按照由弱到强的顺序组织的,其优点在于按照统计概率, 在图像检测的一开始就能够将大部分不包含人脸的区域排除在外,省去了后面计算负载更重 的检测步骤,以此达到检测速度提升的目的。经过实际测试,P3 700MHz 的处理器对352*288 的图像进行检测的速度为15 帧/秒[2]。但是如果在嵌入式平台上运行的话,纯软件的检测速 度则为2 帧/秒[3]。本设计将这种快速检测算法转化成了一种并行处理图片像素点的硬件结 构,能够大幅度提升图像中的人脸检测速度。
目标平台
Virtex5 系列FPGA 是Xilinx 最新一代基于65nm 的FPGA 产品。相比上代产品,速度 平均提高30%。其改进后的六输入的查找表 (LUT) 和新型对角互连结构,减少了逻辑层次, 增强了构造块之间的信号互连。
本文系统的实现主要用到了两类逻辑资源来优化系统性能: DSP48E Slice:25x18 位二进制补码乘法器能产生48 位全精度结果。此功能单元还能够 实现诸多DSP 模块如乘累加器、桶形移位器、宽总线多路复用器等。
Block RAM:可配置成2 个18 Kb 或1 个36 Kb 的Block RAM,也能够配置为双端口 RAM 或FIFO,并提供了ECC 校验检查功能,提高了系统可靠性。
硬件系统结构
本文采用了一种像素积分单元阵列的结构来实现对图像进行人脸检测的并行性处理 [4,5]。该阵列的计算对象为Haar 特征。该特征被抽象为各种尺寸大小的矩形。一系列的矩形 组合起来即被用来表征人脸。黑白矩形内像素的灰度值经过加权求和后即为该特征的特征 值。积分图ii 的定义是:
其中ii(x, y)是积分图在点(x, y)处的积分值,i(x', y')是图像在点(x', y')处的灰度值。利用积分图可以快速计算矩形S的灰度和,即Sum=A+D-B-C,其中A、B、C、D 是积分图中矩形顶点对应的积分值。
系统结构框图如图 3 所示,整个系统的工作流程和各模块功能阐述如下:
图像输入模块:系统输入端外接一个模拟摄像头,采集到的图像信号经过板上的A/D 芯片转换成ITU-R BT.656 (YCrCb 4:2:2,8 位数据宽度)分辨率为352x288(CIF)的图像格式。 该模块的作用为当检测控制状态机发送初始化信号后,通过I2C 总线配置A/D 芯片完成信号转换。另外,由于BT.656 格式混合包含了视频的场信息和图像数据,因此该模块还要从 BT.656 信号中提取出图像数据存放到图像RAM 中。针对该实现,RAM 大小为8 位宽度, 深度为101376。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0