现场可编程门阵列(FPGA)技术不断呈现增长势头, 2013年全球FPGA市场已经增长至35亿美元。 1984年Xilinx刚刚创造出FPGA时,它还是简单的胶合逻辑片,而如今在信号处理和控制应用中,它已经取代了自定制专用集成电路(ASIC)和处理器。今天来自北邮数据科学中心的杨阳来为大家解读如在使用FPGA构建人工神经网络系统。
以下为杨阳老师演讲实录
源起:使用FPGA搭建视障人士便携导航系统
在刚刚过去的第八届华为杯中国大学生智能设计竞赛,我们用PaddlePaddle来搭建一个人工神经网络放到我们自己的硬件平台里,实现了基于深度学习的视障人士便携导航系统,获得了二等奖。我们选择这个题目的原因,是考虑中国有大批的视障人群,这些视障人群在出行方面会遇到不少困难。我们传统的方式需要一些专门的人力、物力帮助视障人士出行,但是这种传统方式有一定的缺陷性,一般来说需要专人的陪同,另一方面,如果希望视障人士有很好的出行体验的话,我们需要很昂贵的导盲系统设备。
我们后来想到了应用FPGA加上深度学习的技术来设计一套完整的盲人的视障导航系统,本身FPGA进行深度学习的时候功耗特别低,小型化,而且速度也比较快。因此,我们的主要设计工作是分两部分:一部分是高层的PaddlePaddle深度学习算法设计,另一部分是关于底层的FPGA硬件设计。
首先我们通过大规模的行人出行指示图象,用PaddlePaddle进行大规模的训练,然后在PaddlePaddle里搭建一套深度学习神经网络,将这些深度神经网络的参数训练好之后写到FPGA里。
当时我们做了一个六层网络作为核心的单元,网络系数是通过PaddlePaddle对行人的指示标志图象训练获得,指示标志的样本我们采用了一个国外的实验室给的一个数据集,比赛的时间比较短,来不及自己采集,直接就用了一个别人的实验室给我的一个行人指示标志的图片,一共是3400张,这就是给一个例子,比如说这样的情况行人是允许通过的,因为前面可能有斑马线,这种情况可能是前面施工就禁止通行。
完成了算法设计,生成了参数,我们就想把这些参数烧录到硬件当中,形成具有实际功能的作品。我们的系统开发采用的是zynq7000系列,这个芯片有一个好处分为是它的下层是包括了传统的pl端,就是所谓普通LPG的逻辑电路,为我们整个发板带了一些丰富的外设提供了便利。比如说包括一