嵌入式计算机视觉系统与人类的视觉系统非常相似,对来自范围广泛的各种产品的视频信息进行分析和提取,执行与人类视觉系统相同的视觉功能。
在智能手机、数码相机和便携式摄像机等嵌入式便携产品中,必须在有限的尺寸、成本和功耗条件下提供较高的性能。新兴的大容量嵌入式视觉产品市场包括汽车安全、监控和游戏。计算机视觉算法识别场景中的物体,然后产生一个比其它图像区域更重要的图像区。例如,物体和面部检测可用于增强视频会议体验、公共安全档案管理,以及基于内容的检索和其它许多方面。
可以进行剪裁和尺寸调整,以便适当地将图像放在面部中心。在本文中,我们提出了一种检测数码图像中的面部、剪裁选定的主面部,并将调整尺寸到固定尺寸输出图像的应用(参见图1)。这种应用可在单一图像或在视频流上使用,并且设计用于实时运行。只要人们关注移动产品上的实时面部检测,为了实现实时吞吐量,就必须采取合适的执行步骤。
本文提出了在可编程向量处理器上执行实时面部检测应用的部署步骤,这些步骤可用于在任何移动产品上执行类似的计算机视觉算法,从这一点上说,它们是通用的。
图1:CEVA面部检测应用
虽然静态图像处理消耗少量的带宽和分配内存,但是,视频对于目前的存储器系统的要求却相当严苛。
另一方面,由于检测和区分物体需要更多的处理步骤,计算机视觉算法的存储器系统设计极具挑战性。考虑19x19像素大小的面部图形缩略图。对于这种小图,可能的灰度值组合就有256361种,需要极高的三维空间。由于面部图像的复杂性,明确描述面部特征具有一定的难度;因此,建立了以统计模型为基础的其它方法。这些方法将人脸区域视为一个图形,通过瞄准许多“面部”和“非面部”样品构建区分器,然后通过分析检测区域的图形来确定图像是否包含人脸。
面部检测算法必须克服的其它挑战是:姿态(正面,45度,侧面,倒置)、存在或缺乏结构部分(胡须、眼镜)、面部表情、遮挡(部分面部可能被其它物体遮住)、图像取向(在相机光轴不同的旋转方向,面部外表直接变化)及成像条件(照明、相机特点、分辨率)。
虽然文献中已经介绍了许多面部检测算法,但是,只有少量算法能够满足移动产品的实时限制性。虽然据报道,许多面部检测算法能够产生高的检测率,但是,由于手机等移动产品的计算和存储器限制,很少有算法适合实时部署在这些移动产品上。
通常,面部检测算法的实时执行在具有相对强大的CPU和较大存储器尺寸的PC电脑上进行。针对现有面部检测产品的考察显示,Viola和Jones在2001年推出的算法已经被广泛采纳。这是一项突破性的工作,允许采用基于外表的方法来实时运行,同时保持相同或更高的准确度。
这种算法利用简单特征的增强级联,并且可以分为三个主要部分:(1)积分图 — 用于快速特征评估的高效卷积;(2)使用用于特征选择的Adaboost,并按照重要性顺序对它们进行筛选。每个特征可作为一个简单的(弱)区分器使用;(3)使用Adaboost来了解将最不可能包含面部的区域滤出的级联区分器(弱区分器的集合)。图2是区分器级联的示意图。在图像中,大多数子图像并不是面部实例。
根据这种假设,我们可以利用更小的高效区分器在早期排除许多否定例,同时检测出差不多所有的肯定例。在后期采用更复杂的区分器来审查疑难情况。
例:24级级联区分器
一级2特征区分器=》 排除60%非面部,同时检测100%面部
二级5特征区分器=》 排除80%非面部,同时检测100%面部
3级、4级和5级20特征区分器
6级和7级50特征区分器
8级至12级100特征区分器
13级至24级200特征区分器
图2:区分器的级联
在面部检测算法的第一级,利用被称为积分图像的中间表示,可以快速计算矩形特征。如图3所示,点(x,y)的积分图像值是上部和左部所有像素的总和。D内像素的总和可以计算为4+1-(2+3)。
图3:采用积分图像对矩形特征进行快速评估
为了在嵌入式产品上执行实时面部检测应用,需要将指令级并行性和和数据级并行性相结合的高级并行性。超长指令字(VLIW)架构能够实现高级并行指令处理,提供扩展的并行性及低功耗。
单指令多数据(SIMD)架构能够在多数据元上运行单指令,从而缩短代码长度并提高性能。使用向量处理器架构,可通过加法器/减法器并行数量因子,加速这些积分和的计算。如果向量寄存器可以加载16像素,而且这些像素可同时加到下一向量,加速因子是16。显然,为处理器增加类似的向量处理单元可以使这一因子翻倍。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)