深度学习:使用PowerVR实现计算机视觉

嵌入式视觉产品的市场需求量大,且呈不断发展壮大之势,其范围包括消费产品如手机、笔记本电脑、电视、可穿戴设备、汽车安全、安全与数据分析等。来自ABI、Gartner和TSR的最新数据表明,智能相机产品的总市场(TAM)量在2019年时将超过30亿台。

计算机视觉的用户案例包括计算摄影、扩增实境、挥手感控及场景感知。当下,很多手机能通过人脸检测自动调整相机对焦和曝光,而像美图手机这样的产品还能实时美化人脸。在近期召开的嵌入式视觉联盟会议上,百度公司发布了一款深度神经网络应用程序(DNN)。该程序允许用户直接从相机实时输入流中识别成千上万的对象。百度在移动应用程序处理器上实现了他们的神经网络,其使用PowerVR GPU来匹配图像实时数据库的对象。

百度离线移动应用款

百度离线移动应用款

对于汽车市场而言,在车辆上添加计算机视觉可以减少事故的发生。例如,美国人民每年的驾驶里程为两万亿英里,而每年大约有六百万辆机动车发生事故。而相比之下,谷歌的无人驾驶汽车原型已经在公路上完成了超过一百万英里的驾驶里程,却没有发生任何一起因计算机故障引起的事故,这充分说明了计算机视觉在推动这个市场转型时的巨大潜力。如今,很多制造商会提供高级驾驶员辅助系统(ADAS)。该系统在使用传统的雷达和激光雷达技术时,也使用了可视化数据来实现安全功能,如盲点检测、行人检测和自动紧急制动。

对于监测市场而言,将计算机视觉添加到安全摄像头可降低闭路电视运营商的成本,同时又可提高可靠性。例如,使用先进的人群分析算法,则可通过检测步行模式的细微变化来识别对象(如隐藏的武器)的存在。在消费市场中,Nest等公司的安防产品可通过智能手机提醒用户其家中发生的异动,并过滤掉不重要的异动行为如影子在墙上的移动或树木的迎风摆动。

超市等零售环境传统上主要依靠支付和商店忠诚度来跟踪消费者的行为,而使用计算机视觉则为新客户的开发带来了契机。Vadaro等公司生产的零售相机可以通过评估顾客的年龄、性别、停留时间及关注的产品来识别顾客是新顾客还是老顾客。这些相机还能给零售商和广告商反馈有价值的信息,并通过自动化任务如计算排队等候人数等来改善服务质量。

Vadaro Eagle零售分析传感器

Vadaro Eagle零售分析传感器

计算机视觉算法

计算机视觉算法涉及到许多不同类型的任务,通常呈流水线形式,如下所示:

 典型的计算机视觉处理流水线

典型的计算机视觉处理流水线

• 图像预处理任务包括降噪、色彩标准化、伽马校正和去翘曲。
• 特征提取和描述即标识图像中可精确测量的点和区。后续阶段的处理则可在已简化的特征上操作,这样可避免全尺寸图像操作,也因此降低了计算难度。
• 图像配准即对准多重图像以简化像素级的对比工作。例如,使图像作为全景或HDR图像缝合在一起。
• 对于需要了解三维空间如三维模型重建的视觉算法,深度计算改善了其性能和稳固性。
• 对象识别用于标识代表对象类别的像素或特征。由于此任务极其复杂,许多算法都基于机器学习和人工智能技术。
• 运动分析是从多个视频帧中提取信息,如辅助预测车辆或行人等对象在一段时间内的运动轨迹。
• 启发法可促进瞬间决策,如允许快速移动的车辆进行纠正操纵。

特征提取和描述

特征提取将含有大量像素的图像转换成已缩减的特征点集,即特征向量(或描述符号)。一个好的算法从输入数据中提取相关信息是为了以缩减的图像代替全尺寸图像来完成后续的视觉任务。其共同的特征包括边缘、角落及具有共享属性如亮度或色彩(即斑点)的区域。比较知名的特征探测器有Sobel和Canny边缘探测器、Harris和FAST的角点探测器及高斯差分 (DoG)斑点探测器。示例如下。

边缘、角落和高斯差分

边缘、角落和高斯差分

尺度不变特征变换算法

SIFT(尺度不变特征变换算法)是最早期的特征探测器,精准度高。SIFT从DoG尺度空间极值点中检测斑点,融入Harris检测的变体,丢弃了类似边缘的特征值。正如下图所示,SIFT算法为多尺度图像(或octave)计算尺度空间金字塔。在每个多尺度图像中,通过高斯核卷积图像获得多个模糊图像,这可抑制高频空间信息。DoG操作从另一个低模糊版的相同图像中减去一个模糊图像,从而保留频率范围之间的空间信息。通过将其中一个模糊图像缩减2倍像素采样及重复计算,可连续对octave进行计算。最终的输出是产生一个迷你图。迷你图包括octave的多个DoG尺度空间图像在内,还包含了代表特征点的高变体区域。

高斯差分金字塔

高斯差分金字塔

加速强健特征

SIFT计算精准度虽高,但计算成本大,这对于嵌入式设备的实时执行不实用。随后,运算效率高的SURF(加速强健特征)检测器便开始迅速发展。SURF使用一系列简化的矩形过滤器代替了SIFT繁重的卷积操作。简化的矩形过滤器近似高斯平滑滤波器,通过预计算积分图像并将其存储在一个数组中,以此有效地实现过滤。正如下图所示,A区的积分图像是其左上区域像素强度的总和,而通过计算D-B-C+A四个数组, 便可计算在固定时间下矩形内的像素总和。

积分图像

积分图像

哈尔特征

较为盛行的Viola-Jones人脸检测算法也使用了矩形特征,即通常所说的哈尔特征(如下图所示)。这些特征的计算即:减去阴影矩形中的像素总和,计算清晰矩形中像素的总和,并使用这些特征找出图像中类似人脸区域的属性,如:眼部区域比上脸颊(特征B)区域更暗,鼻梁区域又比眼部区域(特征C)更亮。通过在此粒度区域层进行操作,哈尔特征可有效地辨别人脸面部表情的变化。

 Viola-Jones对象检测框架的四种特征类型

Viola-Jones对象检测框架的四种特征类型

直方图

另一个较为流行的特征描述符是方向梯度直方图(HOG),其使用在许多汽车ADAS系统中,用于检测路面行人。如下图所示,HOG将图像分成单元格,并通过强度梯度分布描述局部出现的对象。这些单元格捕获的梯度结构是典型的局部形态,可容忍局部几何形状的细小变化,这也使得HOG更适于检测直立行走的人,且无论其是否发生轻微的肢体动作均可检测。

 HOG检测的行人

HOG检测的行人

HOG通过过滤图像卷积核来计算梯度值。随后,单元格内的每个像素则在梯度计算的基础上对基于方向的直方图通道进行加权投影。并将单元格组成内存块,以对照度和对比度的变化进行归一化处理。HOG在没有进行定向和取向的单一图像上操作,这使得HOG的计算成本比SIFT更低。然而,HOG所需的卷积和直方图计算则比SURF在积分图像上的加减法操作计算成本更高。

对象识别

对象识别即在代表某一类对象如人或汽车的图像中标识像素组。由于此项任务的计算复杂性,很多算法均基于机器学习和人工智能,如使用级联分类器或神经网络。通常首先进行离线训练,并产生一个可随后与新图像匹配的数据库。此训练步骤的计算量大,可能需要花费数天或数周在超级计算机上执行。然而,与数据库匹配新图像则工作量小,因此适合在嵌入式设备上实时执行。

级联分类器

Viola-Jones人脸检测框架使用了学习算法来筛选最佳的人脸特征和序列分类器。匹配算法使用哈尔特征使滑动窗口在图像上移动,以检测可能的匹配。哈尔特征是弱分类器,在孤立状态下准确度低,因此Viola-Jones对加权弱分类器进行了线性组合,即加强版的分类器。加强版的分类器使算法快速拒绝非人脸图像得同时,又可以高概率的检测到人脸,因此极大平衡了性能和准确度。正如下图所示,在级联的每个阶段,均可测试当前窗口图像的少量特征:那些没有被拒绝及可以进入下一阶段的特征。Viola-Jones序列分类器使用了38级的级联,每级难度逐渐加深。第一级为简单的注意提示,使用了两个特征以获得0%的假阴性率和40%的假阳性率,这大约占整个级联评估次数的一半。

哈尔级联分类器

哈尔级联分类器

支持向量机

特征空间很大时,使用级联非常有效,因为级联仅仅关注执行程度最佳的特征。当所有的特征都要用于解决方案时(例如基于HOG特征的行人检测算法),则通常使用更为简单的基于监督式学习的算法。支持向量机(SVM)便是一大例证。SVM使用学习算法来识别图像模式。相比需要巧妙结合诸多弱分类器的加强版分类器,SVM建立了一个模型,并在一组训练样本的基础上,将一个图像分配为两种类别。在SVM模型中,将训练样本表示为空间中的点进行映射,这样,单独类别的样本便可以被尽可能宽的清晰间隔分开。

一旦训练图像包含了特定的对象,SVM分类器便可提供对象在其它图像中存在的置信水平,并通过这个阀值来做出二元判定。训练及匹配基于SVM的分类器比级联更加简单,这是一大优势,但其计算成本却很大。

卷积神经网络

准确检测各式各样对象的需求大大推动了分层机器学习模型研究的发展,如卷积神经网络(CNN)。CNN试图模仿人类视觉系统。正如下图所示,CNN的核心操作是图像卷积和缩减像素采样。卷积过滤器坐标是代表神经元之间连接强度的权重,而缩减像素采样操作可以在不同层次找到对象。这些操作需要不断重复多次,由此产生了一套高层次的特征,并形成一个可进行最终输出预测的全连通图。

 CNN框架

CNN框架

由于CNN为每个图像像素执行卷积操作,因此相比其它基于手动设计特征的对象检测如SURF和HOG,其计算成本更大。虽难度加深,但精准度更高:基于CNN的检测器在对象检测质量方面遥遥领先。此外,由于CNN存储了所有的学习参数,因此不用改变底层算法亦可将其调整到许多不同类型的对象中。兼具准确度与灵活性使其在当下广为流行,相信在不久的将来,CNN亦将成为主流趋势。

扩展阅读

计算机视觉是我们接下来异构计算系列文章重点探讨的内容。请继续关注如何在移动和嵌入式设备中建立计算机视觉平台。

以下为已发布的异构计算系列文章,仅供参考:

• 异构计算移动系统入门指南
• 快速指南:为PowerVR Rogue GPU编写OpenCL内核
• 提高异构软件的性能和功效
• Android系统的PowerVR成像框架
• 异构计算案例研究:图像卷积滤波
• 深入探究:用PowerVR实现计算机视觉
o 第一部分:计算机视觉算法
o 第二部分:计算机视觉硬件IP
o 第三部分:PowerVR上的OpenCL人脸检测
• PowerVR成像框架支持零拷贝流
• PowerVR成像框架相机样本
• 测量GPU计算性能
• Imagination移动计算的智能有效方法
• PowerVR异构计算的完整术语表

原文链接:
http://blog.imgtec.com/powervr/deep-dive-implementing-computer-vision-wi...

--电子创新网--
粤ICP备12070055号