本周在加利福利亚举办的嵌入式视觉峰会(EVS)上,我们展示了最新的卷积神经网络(CNN)物体识别演示。自在去年的EVS大会上发布原始演示以来,我们对其进行了多番扩展,目前,演示已扩展到涵括多个网络模型,且目前使用的是ImaginaTIon的图像编译库——IMG DNN。
何谓CNN?
首先,让我们快速回顾下CNN:CNN是机器学习的分支,试图模仿人类视觉皮层的行为来获得对图像的理解,这样,依据应用程序,特定的功能可以被识别。值得注意的是,CNN并不局限于视觉应用程序,不过本文我们将关注视觉应用。常见的视觉应用案例包括:面部识别、汽车牌照字符识别等。CNN由许多层组成,输入图像以隔离某些特性,或输出某些有意义的值时,各层将执行不同的 *** 作。CNN与其他深层神经网络(DNN)的差别在于,CNN的各层使用了图像卷积过滤器。以车牌字符识别为例, *** 作可能包括边缘检测,以及使用其他卷积过滤来提取重要特征,且输出的车牌信息是文本的形式。
在投入使用之前,已利用训练数据集对CNN进行了训练。这些数据集非常强大。在上述的案例中,训练数据可能包含了数万或数十万车牌图像。简言之,CNN充满了训练数据与预期的输出值。如果CNN的输出与预期的输出不匹配,那么CNN便会自行纠正——调整其在网络中使用的权重和系数。这个过程会一直持续到CNN生成训练数据可以接受的输出值为止。这样一来,才认为CNN是经过训练的,并让其在具有新输入值的领域使用。
演示我们的演示使用了一个实时的摄像头,可以识别出摄像机所指向的物体。摄像机帧传入CNN,屏幕上会输出一个标签和置信度百分比,说明网络对输入图像进行响应的确定性。该演示在Linux上运行,基于Acer R13 Chromebook,包括PowerVR Rogue GX6250 GPU。
演示程序实施了三个著名的网络模型——AlexNet、 GoogLeNet IncepTIon V1和 VGG-16。每个网络都有不同的特征,这意味着不同的网络在不同的场景下可能表现更好。这里,关键的高级特征是 *** 作的次数和内存的使用,其将直接影响网络的速度和准确性。演示中使用的所有网络都是Caffe型的,使用ImageNet数据集进行了训练。
AlexNet是最近一波新网络模型的首例,其通过扩大早期LeNet(仅限于字符识别)的范围,将CNN引入到深度学习中,以学习更复杂的对象。它的特点是:拥有相当高的内存使用率,相对较少的 *** 作,但相比最近的网络模型准确度欠佳。
相比其他网络模型,GoogLeNet IncepTIon V1内存占用量明显更小。而相比AlexNet,它执行的 *** 作更多,但准确性更高。
VGG-16在三个网络模型中准确度最高,但目前,内存占用量最大, *** 作次数最多,故而相比其他模型,输出速度要慢很多。
研究这些计算量或内存占用量相对较大的模型看似奇怪,但考虑每个网络的实用案例确实很重要。在有的应用程序中,准确度相当关键,但对于新的结果并非经常需要。相反,有的情况下,快速推断是首选,但却失去了绝对的精准度。网络如VGG-16因为使用的内存量和所需的 *** 作次数,也常用作基准测试和压力测试。
以上视频展示了GoogLeNet和AlexNet模型处理相同图像的情况。可见二者皆运行良好,但AlexNet在某些情况下的确表现不佳。
IMG DNN所有这些网络都是通过使用ImaginaTIon的DNN库实施。DNN库也是PowerVR GPU驱动程序的一部分。该库是DNN图像编译器和优化器,专为PowerVR量身打造。本文的演示虽是关于CNN,但DNN库可以用于加速任何类型的深度神经网络。
IMG DNN位于 OpenCL的顶层,但并不模糊,且其利用了OpenCL结构,因此可以与其他定制OpenCL代码一起使用。库执行低层特定硬件的优化,相比定制用户OpenCL的执行,其可以更好地优化图像。库充分考虑了底层PowerVR硬件的性能特征(如内存带宽、ALU的数量),随后将网络图视作一个整体,以此在PowerVR GPU中得到最优的结果,实现性能的可移植性。
嵌入式视觉峰会该演示将于5月1日至3日在加利福利亚举办的嵌入式视觉峰会(EVS)上进行展示。欢迎大家参与讨论,了解更多有关PowerVR加速CNN的资讯。
Imagination的保罗·布莱斯莱特将在峰会上发布主旨演讲:“训练CNN以获得精准推理”。想了解更多,请关注基于数量识别CNN的演示,该演示使用的OpenVX具有CNN扩展。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)