人工智能芯片软件栈的开发及算法研究
发布时间:2021-02-19 06:19
随着摩尔定律逐渐接近尾声,一味地通过提升工艺来比拼硬件性能将变得越来越艰难。在现有工艺下,如何改进硬件架构来适应不断变化的人工智能算法变得愈发的重要。为了针对具体应用,研究从底层硬件到上层软件接口的设计,保证芯片底层和上层软件接口设计符合具体应用的需求,本论文在基于开源硬件框架的人工智能芯片研究平台和FPGA开源软件框架PYNQ基础上,开发了所需的软件栈,并通过改进的YOLOv3-Tiny目标检测算法实现了软件栈的验证。主要工作包括:(1)设计了人工智能芯片软件栈的总体框架,完成了人工智能芯片研究平台的软件开发,包括算法的模型训练、模型转换,CNN加速指令及加速硬件的驱动程序开发和CNN应用级API调用接口开发。(2)特定应用场景的目标检测算法在该平台的移植与测试。传统检测方法在猪群检测和计数应用方面存在的检测设备易损、检测结果不理想等问题。本文在YOLOv3-Tiny算法的基础上,增加了一个检测尺度并进行特征密集连接复用,提高了目标检测算法的精度。最后将YOLOv3-Tiny移植在人工智能芯片研究平台进行测试对比,测试结果显示设计方案获得了较好的效果。
【文章来源】:杭州电子科技大学浙江省
【文章页数】:77 页
【学位级别】:硕士
【部分图文】:
模型转换概念--中间表示ONNX(OpenNeuralNetworkExchange,开放神经网络交换)是一种开放式文件格式,专为机器学习设计,可以令不同AI框架训练得到的模型采用相同格式存储数据并进行交互
浙江省硕士学位论文9ONNX采用的是protobuf这种序列化数据结构协议来存储神经网络中的参数信息(类似于Caffe),在onnx.proto文件中可以了解数据协议的规则和一些其他信息。以卷积为例结构如下。图2.3ONNX中的Node配置ONNX将每一个网络的每一层都当作节点Node,由这些节点构建一个Graph网络,最后将这个Graph和该ONNX模型的其他信息结合在一起生成的model即为最终的.onnx模型。有了ONNX这样的工具,可以让开发者很方便地对各框架下的模型进行转换,比如TensorFlow模型转ONNX,只需如下一条命令即可完成:Pythontensorflow2onnx.pytensorflow_model_pathoutput_layer_namesaved_onnx_path_name针对运用于嵌入式设备的算法而言,模型转换更多强调的是网络结构转换,以适用于嵌入式设备进行推理。希望尽可能复用现有模块,使得在模型推理时访问DDR的次数越少越好。常用的有卷积-BN融合、平均池化层转卷积、全连接层转卷积等。2.2.3模型量化方法嵌入式平台的深度学习算法,要重点关注四项指标:推理时间、内存消耗、算法性能和吞吐量、运算量。算法的训练与改进大都是在PC端进行的,一般不会考虑算法中存储空间的开辟和分配问题[27],但由于CNN体量过大,不太适合用于嵌入式移动端,因此目前卷积神经网络的一大发展方向就是模型压缩,即在保持一定的精度的情况下,对模型大小进行压缩,以减少内存占用和加速前向推理。目前现有的深度学习模型压缩方法主要有四种:(1)剪枝:即删除一些对准确率影响不大的冗余项和不重要项,如神经元、连接、通道等;(2)低秩因子分解:使用矩阵或者张量分解,用精简的张量来表达复杂的张量以估计学习模
浙江省硕士学位论文11=×127(2.1)表达式(2.1)中y表示量化后的8bit数据,x表示原32位浮点数据,Round()函数表示进行数值的四舍五入,t表示输入数据的最大绝对值,那么通过执行该量化过程即可将4字节的float数据按比例缩放为[-127,127]范围内的整数,可以减少4倍左右的位宽消耗。图2.4量化训练方法模型训练可以看作是从输入到输出的前向推理以及由输出到输入的反向推理共同作用,将32位的输入数据经过卷积层和激活层后将权重和激活值都量化为8位整型数据,池化层不做改变,然后根据真值和预测值计算Loss,再进行反向传播;反向传播其实传播的是weights和bias参数的导数,不进行量化,使用原32位浮点数进行运算。PC端经过这种量化方法训练出来的模型得到的参数也是8位整型结果。同理,推理过程接受到训练得到的int8类型输入数据,经过量化推理得到int8输出数据,但是经过试验发现将bias进行如上的量化之后并没有明显的速度提升,反而会导致目标检测精度降低不少,在bias比weights数据量少很多的情况下,对bias进行量化得不偿失,对比之下,选择不对bias进行量化而是采用原始的浮点数据参与计算,得到量化推理方法如下所示:
【参考文献】:
期刊论文
[1]论人工智能技术应用研究现状和发展前景[J]. 王嫄,解文霞,孔德莉,高喜平. 科技与创新. 2019(20)
[2]人工智能芯片国产化路径浅析[J]. 王焕宁. 科学技术创新. 2019(19)
[3]基于Tiny-yolo的网络压缩与硬件加速方法[J]. 黄智勇,吴海华,虞智,仲元红. 华南理工大学学报(自然科学版). 2019(06)
[4]PYNQ中实现SoftMax函数加速器[J]. 孙齐伟. 电子产品世界. 2019(06)
[5]2019年中国芯片行业市场现状及发展趋势分析[J]. 变频器世界. 2019(04)
[6]新一代人工智能研究的回顾与展望[J]. 黄欣荣. 新疆师范大学学报(哲学社会科学版). 2019(04)
[7]基于机会窗口的中国AI芯片行业追赶研究[J]. 路嘉明. 产业经济评论. 2019(01)
[8]人工智能开源平台发展态势研究[J]. 王冲鶄,陈丝. 信息通信技术与政策. 2018(08)
[9]人工智能整体技术体系和国内外发展情况[J]. 沈应龙. 科技中国. 2018(07)
[10]卷积神经网络在图像分类和目标检测应用综述[J]. 周俊宇,赵艳明. 计算机工程与应用. 2017(13)
硕士论文
[1]CNN目标检测系统在嵌入式平台的设计与实现[D]. 严敏佳.电子科技大学 2019
[2]基于深度学习的动物面部识别算法研究[D]. 宋各方.杭州电子科技大学 2019
[3]基于FPGA的目标检测算法加速与实现[D]. 吴晋.北京交通大学 2018
[4]指纹识别芯片的算法设计及其在FPGA上的原型验证[D]. 刘桑.北京交通大学 2017
[5]基于FPGA的深度学习加速器设计与实现[D]. 余奇.中国科学技术大学 2016
本文编号:3040726
【文章来源】:杭州电子科技大学浙江省
【文章页数】:77 页
【学位级别】:硕士
【部分图文】:
模型转换概念--中间表示ONNX(OpenNeuralNetworkExchange,开放神经网络交换)是一种开放式文件格式,专为机器学习设计,可以令不同AI框架训练得到的模型采用相同格式存储数据并进行交互
浙江省硕士学位论文9ONNX采用的是protobuf这种序列化数据结构协议来存储神经网络中的参数信息(类似于Caffe),在onnx.proto文件中可以了解数据协议的规则和一些其他信息。以卷积为例结构如下。图2.3ONNX中的Node配置ONNX将每一个网络的每一层都当作节点Node,由这些节点构建一个Graph网络,最后将这个Graph和该ONNX模型的其他信息结合在一起生成的model即为最终的.onnx模型。有了ONNX这样的工具,可以让开发者很方便地对各框架下的模型进行转换,比如TensorFlow模型转ONNX,只需如下一条命令即可完成:Pythontensorflow2onnx.pytensorflow_model_pathoutput_layer_namesaved_onnx_path_name针对运用于嵌入式设备的算法而言,模型转换更多强调的是网络结构转换,以适用于嵌入式设备进行推理。希望尽可能复用现有模块,使得在模型推理时访问DDR的次数越少越好。常用的有卷积-BN融合、平均池化层转卷积、全连接层转卷积等。2.2.3模型量化方法嵌入式平台的深度学习算法,要重点关注四项指标:推理时间、内存消耗、算法性能和吞吐量、运算量。算法的训练与改进大都是在PC端进行的,一般不会考虑算法中存储空间的开辟和分配问题[27],但由于CNN体量过大,不太适合用于嵌入式移动端,因此目前卷积神经网络的一大发展方向就是模型压缩,即在保持一定的精度的情况下,对模型大小进行压缩,以减少内存占用和加速前向推理。目前现有的深度学习模型压缩方法主要有四种:(1)剪枝:即删除一些对准确率影响不大的冗余项和不重要项,如神经元、连接、通道等;(2)低秩因子分解:使用矩阵或者张量分解,用精简的张量来表达复杂的张量以估计学习模
浙江省硕士学位论文11=×127(2.1)表达式(2.1)中y表示量化后的8bit数据,x表示原32位浮点数据,Round()函数表示进行数值的四舍五入,t表示输入数据的最大绝对值,那么通过执行该量化过程即可将4字节的float数据按比例缩放为[-127,127]范围内的整数,可以减少4倍左右的位宽消耗。图2.4量化训练方法模型训练可以看作是从输入到输出的前向推理以及由输出到输入的反向推理共同作用,将32位的输入数据经过卷积层和激活层后将权重和激活值都量化为8位整型数据,池化层不做改变,然后根据真值和预测值计算Loss,再进行反向传播;反向传播其实传播的是weights和bias参数的导数,不进行量化,使用原32位浮点数进行运算。PC端经过这种量化方法训练出来的模型得到的参数也是8位整型结果。同理,推理过程接受到训练得到的int8类型输入数据,经过量化推理得到int8输出数据,但是经过试验发现将bias进行如上的量化之后并没有明显的速度提升,反而会导致目标检测精度降低不少,在bias比weights数据量少很多的情况下,对bias进行量化得不偿失,对比之下,选择不对bias进行量化而是采用原始的浮点数据参与计算,得到量化推理方法如下所示:
【参考文献】:
期刊论文
[1]论人工智能技术应用研究现状和发展前景[J]. 王嫄,解文霞,孔德莉,高喜平. 科技与创新. 2019(20)
[2]人工智能芯片国产化路径浅析[J]. 王焕宁. 科学技术创新. 2019(19)
[3]基于Tiny-yolo的网络压缩与硬件加速方法[J]. 黄智勇,吴海华,虞智,仲元红. 华南理工大学学报(自然科学版). 2019(06)
[4]PYNQ中实现SoftMax函数加速器[J]. 孙齐伟. 电子产品世界. 2019(06)
[5]2019年中国芯片行业市场现状及发展趋势分析[J]. 变频器世界. 2019(04)
[6]新一代人工智能研究的回顾与展望[J]. 黄欣荣. 新疆师范大学学报(哲学社会科学版). 2019(04)
[7]基于机会窗口的中国AI芯片行业追赶研究[J]. 路嘉明. 产业经济评论. 2019(01)
[8]人工智能开源平台发展态势研究[J]. 王冲鶄,陈丝. 信息通信技术与政策. 2018(08)
[9]人工智能整体技术体系和国内外发展情况[J]. 沈应龙. 科技中国. 2018(07)
[10]卷积神经网络在图像分类和目标检测应用综述[J]. 周俊宇,赵艳明. 计算机工程与应用. 2017(13)
硕士论文
[1]CNN目标检测系统在嵌入式平台的设计与实现[D]. 严敏佳.电子科技大学 2019
[2]基于深度学习的动物面部识别算法研究[D]. 宋各方.杭州电子科技大学 2019
[3]基于FPGA的目标检测算法加速与实现[D]. 吴晋.北京交通大学 2018
[4]指纹识别芯片的算法设计及其在FPGA上的原型验证[D]. 刘桑.北京交通大学 2017
[5]基于FPGA的深度学习加速器设计与实现[D]. 余奇.中国科学技术大学 2016
本文编号:3040726
本文链接:https://www.wllwen.com/kejilunwen/dianzigongchenglunwen/3040726.html