月影星痕 发表于 2020-8-10 17:19:54

基于数据流计算图的卷积神经网络的理论和设计

摘  要:近年来在许多信号处理应用领域中,深度卷积神经网络引起了学术界和工业界很大的关注,其中 基于数据流图的深度学习网络Tensorflow框架得到了很多人的青睐。但在一些商业落地的研究和调查中发 现,部分机构涉及一些自开发的计算单元,而它不被大型网络框架所支持,又出于技术的保密性往往需要 自行修改工业界的深度学习框架,这就造成了以下情况, ①工业级大型代码框架极其复杂,各大库之间的 调用很深且一般没有注释,不容易读懂和修改,②对某一个单一应用来说,工业界绝大多数的代码都是有 冗余的,这就使得代码整体比较臃肿(厚),性能会受点影响。基于这种受限的情况下,本文提出了一种 基于信号处理数据流计算图模型的方法,在多个平台多核下实现车辆分类。该方法在整个使用过程中,展 现了灵活地设计实现优化转换能力,多平台的兼容可实施性,可在有限的资源内根据自己的算法需求,分 立式地量身定制。在硬件电路加速或芯片的设计中,数据流所得到的高输出率、低延时特点是各厂家在写 RTL硬件设计语言时着重提出的特点,其次基于数据流的软硬件设计易于算法代码之间的转换、实现、移 植、调试、分析、综合、集成、优化和验证。
关键词:深度学习;数据流;计算图;多核运算;车辆分类
0引言
随着国家进入人工智能时代,深度学习在嵌入式 和计算机应用领域无处不在,例如汽车嵌入式系统和 物联网,从而激发了在资源受限的边缘端做深度卷积 神经网络的设计方法和研究。本文中以车辆分类作为 具体研究案例,设计一种基于信号处理的数据流计算 图的模型框架和实现优化方法,迭代式的实现,实验 及优化,并在不同的平台及有限的计算资源下实现针 对四种相近车辆的分类。本文以数据流计算图原理出 发,介绍不同数据流技术建模的原理和形式,后举一 个从零开始基于车辆分类的例子,从训练某个应用的网络,选取网络参数和神经元权重开始,进行Matlab 的仿真代码实现,并以此为参考代码进行基于数据 流计算图C代码实现,随后对整个计算图进行深度优 化,最后单核和多核在不同平台下的性能进行了一一 对比。数据流计算图的简洁,跨平台,可扩展的完全 自主的特性,可用于任何特定领域,特别适合量身定 制的的嵌入图像和视频信号的操作。
1数据流模型 (Dataflow Modeling)
1.1 数据流模型原理
在数据流建模模型中,数据流图可表示为有向图,由一系列Actors(顶点)和edges(前进先出, FIFO)组成,其中actor表示任意复杂程度的计算单元 (可以是高节点的actor封装了一些计算图),edge表 示连接各actors的连线,从而构成一组计算图,代表 一个函数功能系统,数据类型则封装在token,在一 个actor通过 edge输出至另一个actor输入端。数据流边 缘可以表示e =(v1; v2),表示数据从v1到v2。这里 src(e)表示的v1称为源actor,sink(e)表示的v2称 为接收器。在一个数据流计算图中,一个actor在其接 受的数据足以计算该单元actor的算法时可以启动和调 用该actor通过其enable和invoke函数, 每个actor需要明 确定义其输入口消耗和输出口产生的 token的数量。 整个数据流计算图运行是一个离散的操作。在图1 中,Actor: FS1,FS2是2个源的参与者;Actor: Adder 是加法操作; Actor: FK是接收器。整个图表产生每个 actor触发(消耗)一个token到每个actor输出(输入) 端口上。

1.2 数据流模型概述
Core Functional Dataflow(CFDF)是一种可编程 的模型,常用于设计、分析及实现信号处理系统,尤 其是一种确定消耗产出比和有着动态数据流比例的 的信号处理单元的系统开发;Synchronous Dataflow (SDF)是最简单最流行的数据流模型,它有个限 制,即一个actor在每个传出边缘上产生的数据值是个 数字常量,同时actor从进入边缘消耗的数据值的数量 也需要是常量;Cyclo - Static Dataflow (CSDF) 是一 种类型的SDF,在一个 actor产生和消耗的token比是可变的,只要这个变值是一个固定的周期性的模式; Parameterized Dataflow (PDF) 是一种结合动态参数与 运行参数化的数据流计算图,尤其是那些有很明确的 图迭代概念的图形;Boolean Dataflow (BDF) 是SDF的 扩展,其中一个actor产生和消耗的吞吐率取决于控制 的二值函数token,它源自于动态数据流actor中的一个 指定控制端口;Enable - Invoke Dataflow (EIDF)是另 一种动态数据流建模技术。它将actors分成一系列模 式,每个模式都有一个固定的消耗和生成的token 的 数量,代表一个分支可以在运行时切换多种模式。
1.3数据流模型环境: Lightweight Dataflow Environment – C (LIDE-C)
LIDE-C(轻量级数据流环境C)是一个灵活设 计的C语言的编程环境,允许设计人员挖掘基于数据 流的技术信号处理系统的设计实现和优化,专注于 基本的应用程序编程接口(API)功能。在整个框架 提供广泛的实现信号处理系统功能的组件,以及跨 平台操作,包括可编程门阵列(FPGA),图形处理 单元(GPU),可编程数字信号处理器(DSP)和服 务器工作站。LIDE-C软件包拥有许多数据流图元素 (actor和edge)实现库,基于这些基本要素可以自由 设计自己的数据流图并定义元素,开发特定的应用程 序(例如,控制,参数化和仪器相关的模块),和触 发整个数据流图的调度程序,详解可参考文章。在 LIDE-C数据流计算图种actor和edge是关键2元素,其 中Actor设计包括四个接口函数:构造,启动,调用和 种植函数(图2)。

1)构造函数:创建actor的实例并连接端口,通过函数参数列表进行算法处理后传递给相连的一 组边。
2)启用功能:在运行时检查该actor是否有足够 的输入数据和空的缓冲区空间来支持下一次调用。
3)调用函数:为actor执行单次调用。
4)终止功能:关闭此actor在计算图的作用,包 括释放相关的存储对象及其所占用的资源。
LIDE-C中的FIFO设计构成的数据流图与其actors 本身相互独立实现和优化,开发者可专注于Actor的设 计(如算法的实现和优化),然后通过明确定义的接 口和fifos集成这些actors, 从而进行数据流图的调度 优化(并行,优先级), 这些可通过相互沟通实现整 个性能的表现。FIFO操作由C中的 接口函数封装。函数指针是指向这 些接口功能,以不同形式实现不同 的接口。LIDE-C中的标准FIFO有 以下执行操作:
创建具有特定容量的新FIFO。
从/向一个fifo读取和写入 token。
检查FIFO的容量。
检查FIFO中当前的token数。
使用FIFO完成后,用FIFO解除 存储。
在一个数据流计算图应用程序 中创建所有actors和fifos之后,逐步 连接并逐步触发检查图形下一个关 键actor,从而验证检查调试整个系 统的当前使用情况。
2   基于图像的车辆识别的网络架构
本文以基于图像的车辆识别网 络系统,从零开始一步一步得到相 应的网络,实现参考的Matlab推理网络代码,从而进 一步实现优化基于数据流计算图的C代码实现,此方 法具有一定的普适性和扩展性,且根据不同的需求可量身定制其它的应用需求。案例中的CNN实现四种 车辆之间的分类——公共汽车,卡车,面包车和汽 车,此源数据和工作基于之前的车辆分类工作,提 取了相关的有用信息,使用Caffe + Python 随机搜索 来最优的超参数。在使用50组随机生成的超参数(图 3)进行一系列搜索迭代之后,针对精确率和参数大 小及性能的特征平衡,推导出一套可实施的优化过的 超参数车辆分类系统, 等到训练模型稳定后,提取相 关的模型权重图4(注:本文目的是演示实现优化数 据流计算图的方法,所选取的类型为double型,读者 可根据深度学习相关知识,可相应地调整网络,例 如用全卷积网络或半精度数据类型或者8比特的整数类型)。



训练好后得到的超参数所形成的CNN架构(见图 4)由五层组成——两个卷积层,两个全连接层,最后是分类器层。第一层包括三个通道 (红绿蓝RGB通 道),每个输入图像96 x 96的三通道经过过滤后分解 成32个特征图,然后最大值池化为48×48。在第二层 中,有32组特征图再次卷积,然后下采样最大值池化 到24×24。第三层和第四层是两层全连接层,每个节 点有100个节点。分类器层执行从100个元素到4个元 素并通过softmax运算符得到4个等级可能概率值。在 层于层相邻之间,应用整流线性单元非线性激活函数 (ReLU)。
3基于数据流的网络架构计算图设计
在得到整个网络拓扑图(图5)并提取出网络各 个神经元的权重(图4)后,先在Matlab环境中实现其 CNN 推理的图像分类代码,其主要目的其一是确保此 参数模型的最后效果,性能和准确性,其二是有一个 参考代码并可收集每一层运算后的数值,便于后续数 据流计算图C代码的实现、比较、调试和优化,这种 逐层式至最后庞大系统的检测有益于整体代码实现的 鲁棒性,并将可能的测试失败的原因显示化在具体的 某一层某个actor或fifo,进行更好更快速的实现代码设 计优化和迭代。
在开发了基于Matlab的CNN车辆分类系统的仿真 参考模型后(图6和图7),我们继续开发基于数据流计算图LIDE-C的设计以及实现,并在多平台多核上 进行性能测试,通过迭代式优化数据流计算图及actor 算法来提高整体性能。


作为数据流模型的第一步,把CNN网络拓图转 换了网络框图(图8),每个框图都可以看成带参数 的高阶actor, 高阶actor可以封装一个或多个带参数 subgraph系统子图,而其中可能存在成千上万的actor 互连,其形式类似于硬件模块的实现,所以可以进行 很好的软硬件结合,此网络包含了共10种不同类型 的actor:读通道actor,写通道actor,卷积actor,池化actor, 非线性激活函数actor,分类器actor, 聚合actor, 广播actor,乘加 actor,矩阵乘 法actor。针对这些actors,按照不同的图结 构进行封装设计,形成三种不同的数据流 计算图(图9,图10,图11)。




设计一的优点是整个架构与框图最接 近,且非常的清晰,易于理解和实现,验 证和检查整个数据流计算图很直接方便。 缺点是当子图已经确定且封装为一个大的 actor后,难以进一步深层次地优化,若子 图来自于第三方机构,当整个程序有错误 时,很难进行调试;设计二相对简洁,在 卷积层用到了循环展开(loop unrolling)和 流水线(pipeline)技术进行优化,增加延迟 但提高输出量。此方法很适合用于网络训 练图结构,但需要一些技巧,总体来说, 整个计算图仍旧可以理解;设计三的优点 是整个数据流计算图可以任意地在某一 步、某一个actor或fifo或缓冲区里跟踪,控 制,管理,验证,检测数据,除此之外, 设计三的颗粒度更细,可以更深层次进行 优化,自行控制的选择余地比较多,相 反的,缺点是不易于理解,构成,实现, 优化这颗粒度细且庞大复杂的数据流计 算图。
参考文献:
SHEN C,PLISHKER W,WU H,et al.A lightweight dataflow approach for design and implementation of SDR systems. Proceedings of the Wireless Innovation Conference and Product Exposition,Washington DC, USA, November, 2010:640–645.
BHATTACHARYYA S S,PLISHKER W,SHEN C,et al.The DSPCAD integrative command line environment: Introduction to DICE version 1.1.Institute for Advanced Computer Studies, University of Maryland at College Park, Tech. Rep. UMIACSTR-2011-10, 2011.
HUTTUNEN H,YANCHESHMEH F, CHENK.Car type recognition with deep neural networks.ArXiv e-prints, February 2016, submitted to IEEE Intelligent Vehicles Symposium 2016.
BOUTELLIER J,LUNNIKIVI H.Design Flow for Portable Dataflow Programming of Heterogeneous Platforms.2018 Conference on Design and Architectures for Signal and Image Processing (DASIP):106-111.
Representative Projects of the Maryland DSPCAD Research Group. https://ece.umd.edu/DSPCAD/ projects/toplevel/projects.htm.
本文来源于科技期刊《电子产品世界》2020年第03期第22页,欢迎您写论文时引用,并注明出处。

雷磊 发表于 2020-8-10 19:03:44

基于数据流计算图的卷积神经网络的理论和设计

dameihuaxia 发表于 2020-10-2 14:00:23

基于数据流计算图的卷积神经网络的理论和设计

fpga_feixiang 发表于 2020-10-6 15:19:21

~~~~~~~~~~~~~~~~~~~~

dameihuaxia 发表于 2020-11-18 15:01:11

基于数据流计算图的卷积神经网络的理论和设计

fpga_feixiang 发表于 2020-11-23 14:33:23

~~~~~~~~~~~~~~~~~~~~~~

雷磊 发表于 2021-1-7 15:27:22

基于数据流计算图的卷积神经网络的理论和设计
页: [1]
查看完整版本: 基于数据流计算图的卷积神经网络的理论和设计