作者:Steve Leibson, 赛灵思战略营销与业务规划总监
从图像和影音识别到大数据采集,卷积神经网络(CNN)和深度学习的发展为识别应用程序带来了一场新的革命。在2015年度嵌入式视觉峰会上,来自百度的GPU应用先驱任武博士发表主题演讲。他指出,百度公司基于GPU的深度学习CNN在分析网络图像大规模视觉识别数据集时准确率非常高,处于世界领先水平(详见“百度引领人工智能基准”一文)。目前,GPU也成为CNN研发人员青睐的应用技术——因为这是他们熟悉的编程模型。但GPU却功耗过高。不过,在嵌入式视觉峰会上,Auviz Systems公司的创始人Nagesh Gupta对图像处理CNN相关工作的效果进行了阐述。而Auviz Systems一直致力于为数据中心开发基于FPGA的中间件IP,以减少应用程序的功耗。
在百度高精准处理网络图像的技术处于领先地位前,多伦多大学的AlexNet一直保持领先优势。AlexNet有五个卷积层和三个致密层(CNN)。每个卷积层都用一套重量过滤器卷积输入特征图,以此产生输出特征图。AlexNet的卷积层可实现以下功能:
1、3D卷积
2、使用ReLU(修正线性单元)激活函数
3、二级抽样
这是个复杂的算法,比起以下我将进行的计算需要做更多的计算。但我们先了解下仅计算一个3D卷积需要做多少工作。11x11 Weight Matrix和11x11 输入特征图相乘,可得出1个输出值,如下所示:
该运算涉及121个平行的MAC(相乘/累积)操作,使用指令串行CPU将需要相当长一段时间完成操作。FPGA则可依据其规格,并行或在一个时钟周期内轻松地计算出512个或更多这样的MAC结果。
AuvizDNN是Auviz Systems的函数库,可提供所有所需的对象、类和函数,以在FPGA上实现CNN。AuvizDNN可以提供配置函数,而使用配置函数可以创建任何类型和任何配置的CNN。从程序开发者的角度来说,使用AuvizDNN在FPGA上实现一个完整的CNN应用,就像一个C /C++函数调用序列。在此举例AlexNet只是一个说明。可应用AuvizDNN函数库实现所有类型的CNN。而实现效果如何见下图。下图为Auviz Systems使用Xilinx Kintex-7和Kintex UltraScale FPGA的实时系统图:
基于Microsoft最新发布的数据,根据Auviz,FPGA如Xilinx Kintex Ultrascale可处理14个或更多图像/秒/瓦特,而一个高端的GPU仅能处理4个图像/秒/瓦特。这表明,FPGA是实现快速、低功耗及数据中心应用的最佳选择。
想了解更多有关CNN应用使用FPGA的信息,可从Auviz官网下载白皮书《加速云端的机器学习:FPGA深层神经网络》(需注册)。