新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式实时面部检测应用设计指南

嵌入式实时面部检测应用设计指南

作者:时间:2013-01-15来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/148138.htm

  单指令多数据(SIMD)架构能够在多数据元上运行单指令,从而缩短代码长度并提高性能。使用向量处理器架构,可通过加法器/减法器并行数量因子,加速这些积分和的计算。如果向量寄存器可以加载16像素,而且这些像素可同时加到下一向量,加速因子是16.显然,为处理器增加类似的向量处理单元可以使这一因子翻倍。

  在下一阶段,在多个位置及按多种尺度扫描图像。采用Adaboost强大的区分器(以矩形特征为基础的区分器),以决定搜索窗口是否包含。再一次,向量处理器具有明显的优势 - 具有同时将多个位置数据与阈值进行对比的能力。

  假设在一个图像中,大多数子图像都不是例,可以提供的并行比较器越多,加速越快。

  例如,如果架构具有在1个循环中比较8个要素中的2个向量的能力,则排除16个位置的子图像仅需1个循环。为了简化数据加载,并且高效率地利用向量处理器加载/储存,各个位置可以在空间上彼此接近。

  为了获得高度并行的代码,架构应支持指令预测。这样可以使如果-则-否则(if-then-else)构造导致的分支用顺序码来代替,从而减少循环数和缩短代码长度。允许条件执行,有能力综合各种条件,在控制代码中实现更高的效率。此外,非顺序码,如分支和回路,经具有零循环损失,而不需要烦琐的技术,如动态分支预测和增加RISC处理器功率损耗的推理执行。

  一个关键的挑战是存储器带宽,该需要对每帧视频流进行扫描,以执行面部。由于其数据量较大,视频流无法储存在紧耦合存储器(TCM)中。例如,一个YUV 4:2:0格式的高清帧占用了3MB数据存储器。这种高存储器带宽导致功率损耗更高,并需要更昂贵的DDR存储器,从而使材料清单成本更高。一个完美的解决方案是采用数据分块(data tiling)来储存像素,其中2维数据块在单次突发中由DDR存取,极大地改善了DDR的效率。直接存储器存取(DMA)可以在外部存储器和核心存储器子系统之间传输数据。在最终面部阶段,包含检测面部的子图像尺寸重新调整到固定尺寸输出窗口。

  当图像在多个比例扫描时,还在检测阶段使用图像尺寸调整过程。尺寸调整算法广泛应用于图像处理,用于视频放大和缩小。面部检测应用中执行的算法是双三次算法。三次卷积插值根据离规定输入坐标最近的16个像素的加权平均值来确定灰度值,并将该值分配给输出坐标。首先,在一个方向(水平方向)上执行四个一维三次卷积,然后,在垂直方向执行更多个一维三次卷积。这意味着要执行一个二维三次卷积,而所需的是一个一维三次卷积。

  向量处理器内核具有强大的加载-储存能力,能够快速、有效地存取数据是此类应用的关键特征,其中算法在数据块上运行。可通过在单循环中从存储器访问2维存储器块来满足尺寸调整算法优化。

  这一特点使处理器能够有效地实现较高的存储器带宽,不需要载入不必要的数据或执行数据操作的负荷计算单元。此外,能够在数据存取期间转置数据且不存在任何循环损失,这使得转置的数据块能够在单一循环中存取,对于执行水平过滤和垂直过滤非常切实可行。处理器的功率是其执行强大卷积能力的结果,可以在单一循环中执行并行的过滤器。

  这里是一个有效解决方案的实例。在一个循环中加载4x8字节块,然后每个迭代利用4个像素,在垂直方向执行三次卷积。这4个像素预先安排在4个独立的向量寄存器中,因此,我们能够同时获得8个结果。然后,同时对这些中间结果进行准确处理,但是,以转置格式加载这些数据,从而完成水平过滤。为了保持结果准确度,需要用结果四舍五入值(rounding value)和后移(post-shift)初始化。过滤器配置应当在不要求专门指令的条件下实现这些特征。

  总之,这种并行向量处理解决方案核心可在加载/储存单元操作和处理单元之间实现平衡。一般说来,数据带宽限制及就功耗和晶片面积而言的处理单元的成本限制了执行效率;不过,显然,可以实现标量处理器架构的重要加速。

  多媒体器件的多用途可编程HD视频和图像平台

  CEVA-MM3000是可以集成到SoC中的可扩展的完全可编程多媒体平台,以全软件形式提供1080p 60fps视频解码和编码、ISP功能和视觉应用。该平台由两个专用处理器,即流处理器和向量处理器组成,集成到一个完整的多核系统中,包括本地存储器和共享存储器、外设、DMA和与外部总线的标准桥接。这款全面的多内核平台专为满足移动产品和其它消费者电子产品的低功耗要求而

  向量处理器包括两个独立的向量处理单元(VPU)。VPU负责所有的向量计算,包括向量间运算(利用单指令多数据流)和向量内部运算。向量间指令可在16个8位(字节)或8个16位(字)元上运行,可以使用向量寄存器对,形成32位(双字)元。VPU具有在单循环中完成6个线路(taps)中8个并行滤波器(taps)的能力。

  虽然VPU是作为向量处理器的计算主力,但是,向量加载和储存单元(VLSU)作为从数据存储器子系统向向量处理器及从向量处理器向数据存储器子系统传输数据的工具。VLSU具有适用于加载和储存操作的256位带宽,并支持不对齐(non-aligned)存取。VLSU备有在单循环中存取二维数据块的能力,并支持不同的数据块尺寸。

加载4x4像素块

  图4:加载4x4像素块

  为了简化VPU任务,在读/写向量寄存器时,VLSU可以灵活地操作数据结构。在数据存取期间,数据块可以转置,而不存在任何循环损失,能够在单循环中实现转置数据块的存取。转置功能可以动态设定或清除。采用这种方式,水平过滤器和垂直过滤器可以重复使用相同的功能,从而节省每个过滤器的开发和调试时间,同时缩小程序存储器的占位面积。

  结论

  对于采用CEVA-MM3000平台的消费产品来说,视觉应用是有效地执行算法多样性的一个实例,例如具备裁剪和尺寸调整功能的面部检测。根据预测,将来类似的和更复杂的应用需求将会增长,所有这些应用都可以利用CEVA-MM3000架构的可编程性和可扩展性。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)
光电开关相关文章:光电开关原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭