OpenVX 实现卷积神经网络扩展

处理器/DSP

891人已加入

描述

去年12月,Imagination宣布率先实现OpenVX 1.1一致性。在本文中,我们将展示,自发布第一款Khronos OpenVX 1.1 API及第一次实现卷积神经网络(CNN)扩展以来,我们是如何开展工作。

首先,先简要介绍背景。OpenVX是Khronos group 开发的一款API,Imagination Technologies在其开发过程中给予了支持。新的API为开发人员提供了一个标准的方法,即,使用图像视觉操作有效地编写应用程序。这些操作包括“边缘检测”或“阈值”。

 

OpenVX API允许用户将这些操作链接起来,以检测图像边角或调整图像视角。这样,相比在另外的API如OpenCL或Compute(其目标并不在视觉操作),该应用程序的开发将更方便快捷。我们在OpenCL PowerVR GPU上运行实施。

阅读本文,您将获取更多Imagination创建OpenVX 1.1一致性的资讯。

 

 

该API的优势在于,一个OpenVX应用程序可以在不同的场景应用。例如,可能有一个应用程序在系统的CPU上(无GPU)运行。适用于这两个平台的应用程序因为标准API的存在,则无需调整运行。

CNNC扩展

我们还率先实现了OpenVX CNN扩展。

CNN是什么?CNN即“卷积神经网络”,是机器学习的一部分。它应用在许多不同的领域,其中一个便是图像识别。Imagination 实现了OpenVX扩展。我们还创建了一个演示,以展示此功能在PowerVR GPU上运行的情况。

首先,在OpenVX中使用标准的视觉操作,以获取用户创建的图像边界框。然后,使用简单的LeNet CNN图,预估用户输入图像所代表的含义。在这个演示中,我们识别到数值,并针对MNIST手写数据集训练演示。

当然,还可以扩展至识别各种各样的东西。例如,我们可以用它来识别声音,并转换成可以实时语音识别的应用程序。同样,相比在CPU上运行,该运行可以使移动设备效率更佳,电池使用寿命更长。相比在OpenCL中进行同样的操作,该应用程序又更加便携。使用OpenVX意味着,我们能相对地以几行代码及数十工时就可以完成演示,相比从头开始耗费数百或数千工时要更具效率。

 

 

上图是一个非常简单的操作集,但这可以扩展至更复杂的图形和深度学习算法。这个演示目前在通用硬件上运行,但我们可以设想更进一步,使用专用硬件来简化特定的操作。这意味着,相比在通用处理器上运行,我们可以进一步提升性能和效率,并将更多的算法在移动设备而非云端运行。这样会大幅改善延迟,减少网络连接操作。

 

 

在上图中可以看到,我们绘制了一个又高又瘦的字符“8”。可以看到字节“1”和“8”被高度激活。如果继续让“8”更瘦长,图像将分解,并错误地将结果标为“1”。而这种错误可以避免,只要修改图片以获悉边角信息即可。不过,为简单起见,该演示只展示OpenVX 1.1 API和我们已经实现的扩展。

 

以上是视频演示。你将注意到,我们绘制的数字4是封闭式的。这是因为,目前,图像无法识别字符“4”。这可能是由于,训练数据集使用的是其他方式来绘制这个数字,如下。如果我们对数据集进行扩展,包括编写数值的方法,那么网络将更加强健。

 

 

2017年5月1日至3日在加利福利亚召开的“嵌入式视觉峰会”上,我们将对该演示进行展示。请加入我们视觉或机器学习的讨论。Imagination的保罗?布莱斯莱特也将在峰会上发表主旨演讲“使CNN的推理更有效”。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分