嵌入式人工智能前端设备智能化前景广阔
2018-01-04
嵌入式人工智能是计算机视觉的一个方向,随着深度学习的兴起,在算法层面的准确度也相应提高,与之前相比,嵌入式人工智能的视频分析就是把云端或本地服务器的处理能力放到嵌入式系统上,使得它能够非常低功耗和实时的进行本地处理。
嵌入式人工智能顾名思义就是机器和人的交互。目前来看,我们身边许多嵌入式人工智能设备,如摄像头、机器人等,它们都需要强大的本地实时交互、计算的能力,这也意味着前端设备上需要有智能化的能力。
嵌入式人工智能环境感知方面,需要实时的理解和响应,即使网络条件差,或者没有网络,也需要能够正常工作。为了解决这些问题,深度学习必须在前端有限的计算资源和功耗下运行。
然而嵌入式人工智能深度学习算法,计算量非常大,通常需要运行在高性能的服务器上,对于在前端运行提出了非常高的要求。这些正是嵌入式视觉的机遇与挑战。
深度学习针对嵌入式人工智能方面的优化,主要有网络结构优化,模型压缩,定点化,二值化,结合SIMD,缓存,多线程,异构计算的优化。
网络结构优化
基于一个初始版本,对网络结构进行调整,某些层的修改,参数的调整,使得它能够在不降低精度的情况下速度更快。
模型压缩剪枝
把一些不必要的分支给砍掉,在进行一个预测的时候,计算量相对会减少一些,速度变快。
定点化,二值化
深度学习模型的参数都是浮点数,相对来说它的计算比整数要复杂一些,特别在一些低端的芯片,乘法器都不够多的情况下,浮点的性能就会比较差。如果把它转成定点整数运算,那么在精度下降1%的情况下,它的速度将会带来几倍的提升。
二值化比定点化更进一步,一个权重值只占用一个比特,并且可以将乘法运行转换为异或操作,在特定硬件上并行性会更高,执行速度会更快,非常适合在低端芯片上使用。
SIMD,缓存,多线程
SIMD,单指令多数据,一次一条指令做多个操作,增加缓存命中,减少内存访问。一些不同的算法如果放在不同的线程中去跑,对外提供的整体组合的效果会非常的快。
异构计算
与硬件相关比较大,根据我选择的不同的硬件、不同的方案、定制化指令的不同,硬件选择都会接触到异构计算。
将高性能服务器上运行的算法,迁移到嵌入式平台实时运行,其难度非常大,除了算法软件层面的优化,还需要充分利用硬件提供的计算能力。在硬件选择方面,更是需要选取最适合的方案才能搭配出最优的性价比。
硬件选择
ASIC专用芯片
在人工智能早期,只有少数公司用到这个方案,所以它的受众并不会特别大。
基于GPU的方案
GPU中有多核并发的优势,在上面运行深度学习的复杂运算时,可以进行并行运算。同时,GPU本身支持定点、、浮点的操作,用GPU方案,相对来说能达到一个几倍的加速。
基于FPGA的方案
FPGA对开发人员的要求非常高,首先要对软件很熟悉,又要非常熟悉硬件,现在有些公司提供的一些解决方案,相当于能够直接将深度学习的模型导到他们做的FPGA方案上去,然而,他们并不知道内部是如何优化的,整个FPGA方案的成本会非常高。
基于DSP的方案
伴随着一些大公司如高通、CEVA等厂商的使用,它的出货量变得非常大,所以单片的成本非常低。DSP可以进行数字信号处理,以图像来说,它有专门的并行操作可以对图像进行快速访问并计算。
纯CPU方案
与前面说的四种优化方式相比,它的场景非常大,对于我们来说更多注重的是它优化的方向。因为所有方案里面都是有CPU的,它是一个必不可少的方案,如果在CPU上做的很快,那么在一些硬件、协处理器的情况下,速度会更加提升。
嵌入式人工智能前端设备智能化前景广阔。嵌入式人工智能硬件+算法一体化的解决方案,以最优的性价比提供给客户,才是嵌入式视觉解决方案的核心竞争力。