资源说明:本文创新点在于采用了一种像素积分单元阵列结构,能够对 Adaboost 算法中的Haar 特征进行并行处理。结合Virtex5 平台丰富和特殊结构的逻辑资源,得到了理想的性能,甚 至已经能够和高性能的PC平台相提并论。从结果中可以看到,本系统只使用了部分资源。 通过在FPGA芯片内部例化更多的处理单元,还有进一步增大并行性以取得性能提升的空间。
Adaboost算法是一种集成学习方法,它通过迭代和自适应调整权重来组合多个弱分类器,形成一个强分类器。1995年由Freund和Schapire提出,Adaboost算法的核心思想是针对每次迭代中错误率较高的样本赋予更高的权重,使下一次迭代的分类器更关注这些难以分类的样本。2001年,P.Viola在Adaboost的基础上,引入了基于Haar特征的人脸检测算法,通过积分图技术加速了特征计算,尤其是用于人脸检测的级联分类器结构,可以在早期阶段排除大部分非人脸区域,显著提升了检测效率。
本设计针对嵌入式平台,利用FPGA(Field-Programmable Gate Array)的并行计算能力,实现了Adaboost算法的硬件加速。具体来说,采用了Virtex5 FPGA平台,利用其丰富的逻辑资源,如DSP48E Slice(25x18位二进制补码乘法器)和Block RAM(可配置为双端口RAM或FIFO,提供ECC校验),构建了一个像素积分单元阵列的硬件系统结构。
该硬件结构的核心是像素积分阵列,它可以并行处理图像的Haar特征。Haar特征通常由不同尺寸的矩形组成,用于表征图像的不同特性。积分图用于快速计算矩形区域的灰度和,通过积分图的特性,可以高效地求得特定矩形区域内像素的加权和。在本文的设计中,20x20的移动窗口遍历整幅图像,每次处理一行像素,积分阵列输出积分和及平方和,用于计算特征值。
系统工作流程如下:图像输入模块接收来自模拟摄像头的信号,经过A/D转换,以352x288的CIF格式存储在图像RAM中。接着,像素积分阵列开始处理,计算每个检测窗口的Haar特征。特征值与权重相乘并累加,与阈值比较,确定特征相似度。这一过程在多个分类器级联的框架下进行,每一级的结果都将影响最终的人脸检测决策。
通过FPGA的并行处理能力,该系统能够在嵌入式平台上大幅提升人脸检测的速度,相比纯软件实现有显著优势。而且,由于只使用了部分FPGA资源,意味着仍有潜力通过增加处理单元进一步提高并行性,以实现更高的性能提升。
这个设计巧妙地将Adaboost算法与FPGA的硬件并行性相结合,解决了嵌入式平台上人脸检测速度慢的问题,为实时和高效的人脸检测提供了可能。此外,设计的扩展性和优化空间也为未来的研究和应用提供了广阔的基础。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。