一种基于SoC芯片的深度神经网络嵌入式实现方法与流程

文档序号:14687913发布日期:2018-06-15 06:30阅读:564来源:国知局

本发明属于机载智能计算领域,提出了一种基于SoC芯片的深度神经网络嵌入式实现方法。



背景技术:

在2015年的ImageNet挑战赛中,深度神经网络的图片辨识能力超过了人眼的辨识能力;2016年,DeepMind公司基于深度神经网络开发的人工智能围棋程序AlphaGo战胜了围棋世界冠军李世石;同年,谷歌推出基于深度神经网络的翻译器,中英互译质量达到80%,深度神经网络在多个领域的智能计算任务中展现出了越来越好的应用效果,在航空领域同样具有极好的应用前景。基于深度神经网络的智能计算系统可以更好地完成辅助甚至自动驾驶任务,例如智能图像识别能够帮助驾驶员更好地掌握飞行环境,提前发现目标;智能决策系统可以更好地应对突发状况,实时优化路线;智能火炮系统可以更好地进行武器选择、切换等。

然而深度神经网络的规模往往十分庞大,运行在工作站、巨型机乃至计算机集群之上,很难在资源有限的机载嵌入式计算环境中运行,目前关于神经网络在嵌入式环境中的实现有两个主要研究方向:一是基于ASIC定制电路进行实现,根据所用深度神经网络模型的资源需求和拓扑结构,进行硬件电路设计;但是ASIC设计难度大,验证周期长,网络模型在设计完成后无法再更改,灵活性非常差。另一个方向是基于FPGA进行深度神经网络的嵌入式实现,FPGA硬件电路设计相对于ASIC具有较好的设计迭代速度,能够快速进行验证,而且FPGA具有可重配置特性,当网络发生变化时可以比较容易地进行更改;但是FPGA芯片调度能力较弱,在实现深度神经网络时,时序设计的难度非常大。



技术实现要素:

本发明的目的:

提出了一种基于SoC芯片的深度神经网络嵌入式实现方法,通过该方法可以实现在机载嵌入式环境中布局深度神经网络,执行智能计算任务。该方法使用SoC内置的处理器内核执行整体调度任务,从而更好地利用FPGA可以动态重配置的特性,提升网络的灵活性。

本发明的技术方案:

本发明提出了一种基于SoC芯片的深度神经网络嵌入式实现方法,

神经网络主程序在SoC芯片的处理器内核上实现,完成全局调度任务;计算密集部分在SoC芯片的可编程逻辑上实现,完成并行计算任务;两部分通过片内高速总线进行控制指令和状态信息的交换,实现处理器与可编程逻辑的协同工作;

SoC芯片支持动态可重配置,可以在处理器内核的控制下,动态加载不同的配置文件,为方便描述,依据SoC芯片中可编程逻辑加载的配置文件的顺序,将芯片的状态分别标记为状态1、状态2、状态i……状态N;

在机载嵌入式环境中运行时,视频/图像信息传入SoC芯片,根据需要在处理器中完成数据预处理过程;同时处理器控制可编程逻辑加载子层1的计算逻辑和相关计算参数,计算逻辑包括卷积计算、激励函数计算、降采样计算等;在完成数据预处理后,可编程逻辑在处理器的控制下开始执行神经网络计算,依次完成子层1中各项计算,计算结果存入片外存储器中;完成状态i-1(1<i<N)的计算后,处理器控制可编程逻辑加载下一子层的计算逻辑和相关计算参数,SoC芯片进入状态i,可编程逻辑读取片外存储器中上一层的计算结果,继续运行深度神经网络,依次完成当前子层中的各项计算,并将计算结果存入片外存储器中,重复此过程,直至状态N;在状态N中,可编程逻辑加载了子层N和全连接层的计算逻辑和相关参数,完成神经网络最后的分类计算,最终计算结果反馈给处理器,经处理器按需求格式输出。

在上述方案中,为了便于描述,神经网络模型的每个子层各生成一个配置文件,在具体应用中,可以根据实际的模型结构和芯片硬件资源情况,调整使用相邻的多个子层生成一个配置文件,整体计算过程不变,最终通过对可编程逻辑的动态重配置,实现大规模深度神经网络在硬件资源有限的SoC芯片上的布局。

本发明具有的优点效果:

本发明提出的基于SoC芯片的深度神经网络嵌入式实现方法与一般的深度神经网络实现相比较,大幅度缩小了运行平台的体积与功耗,从而具备在机载嵌入式环境中运行的可行性;同时得益于集成电路技术的发展,SoC芯片将处理器硬核和可编程逻辑集成在同一个芯片内,通过片内高速总线连通两个部分,弥补了FPGA芯片调度能力弱的缺陷,大幅度提升了芯片执行任务时的灵活性,同时可以更好地利用FPGA动态可重配置的特点,在有限的硬件资源上实现更大规模的神经网络模型。

附图说明

图1为基于SoC的深度神经网络处理过程示意图。

具体实施方式

参见附图1对本发明做进一步详细说明。

该方法基于SoC芯片进行实现,神经网络主程序在处理器内核上实现,完成全局调度任务;计算密集部分在可编程逻辑上实现,完成并行计算任务;两部分通过片内高速总线进行控制指令和状态信息的交换,实现处理器与可编程逻辑的协同工作;深度神经网络运行时,输入信息根据实际情况经过视频接口、以太网接口、总线接口或存储接口等传入SoC芯片,根据需要在处理器中完成图像灰度计算、数据归一化或图像分割等预处理过程。同时处理器控制可编程逻辑加载子层1的计算逻辑和相关计算参数,子层内包含的运算因模型的不同而不同,常见的有卷积计算、激励函数计算、降采样计算等,而运算涉及的卷积核尺寸、激励函数类型、降采样步长等参数同样可以根据实际网络需求进行选择。这些参数被预先载入片外存储器的指定位置,其位置信息和对应的计算逻辑以配置文件的形式存储在FLASH中。在完成数据预处理和配置文件加载后,可编程逻辑部分开始执行神经网络计算,依次完成子层1中卷积层、降采样层计算,计算结果存入片外存储器中,如图1(a)状态所示。完成状态i-1(1<i<N)的计算后,状态信息反馈给处理器,由处理器控制可编程逻辑加载第i个配置文件,载入新的计算逻辑和参数,芯片从片外存储器中读取上一层的计算结果,继续神经网络计算,状态如图1(b)状态所示。重复上述过程,直至状态N,芯片加载最后一个子层和全连接层的计算逻辑及参数,完成最后的分类过程,将最终计算结果反馈给处理器,经过数据格式转换,最后经视频接口、以太网接口或者总线接口等途径输出指定格式的计算结果,如图1(c)状态所示。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1