使用FPGA实现深度学习技术应用.docx
《使用FPGA实现深度学习技术应用.docx》由会员分享,可在线阅读,更多相关《使用FPGA实现深度学习技术应用.docx(10页珍藏版)》请在第一文库网上搜索。
1、使用FPGA实现深度学习技术应用这是新的系列教程,在本教程中,我们将介绍使用EEGA实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。在本教程中,旨在加深对深度学习和FPGA的理解。用CC+编写深度学习推理代码高级综合(H1S)将C/C+代码转换为硬件描述语言FPGA运行验证在上一篇文章中,我们在MNIST数据集上创建并训练了一个网络模型。从本文开始,为了在FPGA上运行推理处理,我们将首先用C编写推理处理代码。在这篇C+实现的第一篇文章中,我们开始针对卷积层的C+实现。具体内容是(D卷积层的实现,(2)运算校验(C验证,C/RT1协同验证)(就是H1S的流程)卷积层实现在上一篇文章
2、中,我解释了卷积层是对图像的过滤过程,但是并没有解释输入输出通道如何处理,过滤时图像的边缘处理等。由于本文旨在实现层面的理解,因此我将详细介绍这些要点。处理I/O通道在图像处理中,对RGB输入图像进行噪声去除等滤波处理,并频繁地进行RGB图像的处理。在这种情况下,卷积过程往往是针对每个通道(R/G/B)独立完成的,输入的G/B通道值不影响输出的R通道结果。每通道独立卷积另一方面,在卷积层中执行的卷积过程中,所有输入通道的值影响每个输出通道。因此,对于输出图像的每个像素(输出通道,Y坐标,X坐标),所有输入通道和周围的像素区域都会参与计算,导致计算量非常大。使用所有通道的卷积另外,如上所述每个通
3、道独立卷积的卷积层称为DePthWiSeConvo1utj.ono这通常用于减少计算量的网络模型,例如Mobi1eNet(https:/arxiv.org/abs/1704.04861)0图像边缘处理在对图像进行卷积处理时,图像边缘的处理往往是一个问题。由于卷积过程在计算某个像素时使用了周围像素,因此对于没有周围像素的像素,例如图像边缘的像素,就无法获取周围像素。卷积独幽络主要通过以下两种方式处理边缘像素。无填充:输出图像减少了输入图像的卷积区域。补零:将输入图像预先用卷积区域扩展,用零填充该区域,对原始输入图像进行卷积处理。没有填充的卷积的图形表示如下所示:在这种情况下,输出图像将是比输入图
4、像小一个滤波蛰尺寸的区域(橙色部分)。如果内核大小为3(中心像素+/-1),则输出图像大小在宽度和高度上都将为-2,因为图像之外的1个像素是无法进行卷积的区域。无填充卷积:输出图像缩小接下来,零填充的图形表示如下所示。在这个例子中,预先在输入图像的外部添加了一个值为O的区域(灰色区域),进行卷积,这样就不会出现图像缩小现象。如果内核大小为3,则带填充的输入图像大小在宽度和高度上均为+2,因为1像素将添加到屏幕外部且值为零。零填充卷积:输出图像大小保持不变在我们的模型中,我们在所有卷积层中使用零填充。C代码如果根据目前为止的解释用C语言实现卷积过程,它将类似于下面的代码。voidconv2d(c
5、onstf1oat*x,constf1oat*weight,constfIoat*bias,int32twidth,int32theight,int32tinchanne1s,int32_toutchanne15, int32tksize,f1oat*y)for(int32toch=O;ochoutchanne1s;+och)for(int32th=O;hheight;+h)for(int32tw=O;wwidth;+w)f1oatsum=O.f;for(int32_tich=O;ichin_channe1s;+ich)for(int32_tkh=O;khksize;+kh)(for(int3
6、2_tkw二O;kwksize;+kw)int32_tph=h+kh-ksize/2;int32_tpw-w/zeropadding+kw-ksize/2;pwOif(ph=width)Ph=heightcontinue;ph)anne1s*width+ich)int64_tpw;int64_t*ksize+kh)*pixidx=(ich*height+weight_idx=ksize+kw;(och*in_chsum+=xpix_idx*weightweight_idx;)/addbiassum=biasoch;y(och*height+h)*width+w=sum;)此函数的解释如下所示:
7、输入- -x:输入图像。shape=(inchanne1s,height,width)一weight:权重因子。shape=(out_channe1s,in_channe1s,ksize,ksize)一bias:偏置值。shape=(out_channe1s)输出- -y:输出图像。shape-(out_channe1s,height,width)参数:一width:输入/输出图像的宽度- height:输入/输出图像高度一inchanne1s:输入图像的通道数- -out_channe1s:输出图像的通道数一ksize:内核大小每个输入/输出的内存布局shape=(.)如表格所示,但f1oa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 FPGA 实现 深度 学习 技术 应用