System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及图像处理,特别是涉及一种基于fpga的卷积神经网络运算前的图像双线性插值方法。
技术介绍
1、卷积神经网络是多层前馈网络,其基本结构是从接收图像的输入层开始,经过多个卷积层(convolutional layer)和池化层(pooling layer),再经过全连接层(fullyconnected layer)然后输出相同于分类个数的结果。其中卷积层尤为重要,卷积的本质是乘累加运算,即将图像和卷积核像素值一一对应相乘再相加得到卷积后的像素值。然而任意大小的图片,其边缘的部分不会永远位于卷积核中心,经过卷积核处理,会损失部分值。所以需要对原图像进行边界填充,或者将图像缩小放大成需要的尺寸比例。
2、目前基于fpga的卷积神经网络图像预处理的工程,绝大部分均使用软件框架内嵌的函数实现,包括tensorflow、pytorch、opencv等。由于卷积神经网络的输入图像大小需要固定比例,使用软件框架不仅仅需要增加外设提前处理图像尺寸,而且将预处理完成的图像搬运到fpga进行卷积运算,也增大了通信带宽。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种基于fpga的卷积神经网络运算前的图像双线性插值方法。
2、一种基于fpga的卷积神经网络运算前的图像双线性插值方法,应用于fpga硬件电路中,fpga硬件电路包括:缩放比例系数模块、实际目标地址生成模块、偏移量计算模块、乘加模块、数据存储器模块、数据缓存模块,所述方法包括:
3、步骤1
4、步骤2:所述数据存储器模块使用1块fpga片上ram存储器按原始图像的行列顺序,存储输入的原始图像的所有像素点数据,所述原始图像为待输入至卷积神经网络进行运算的图像数据;
5、步骤3:所述数据缓存模块利用乒乓缓存,以每次获取4个像素点数据的方式依次从所述数据存储器模块获取原始图像的每一行数据进行缓存,所述数据缓存模块使用了fpga的4块ram模块;
6、步骤4:所述实际目标地址生成模块根据所述数据缓存模块缓存像素点数据的地址和图像的缩放比例,确定实际目标图像地址;
7、步骤5:所述偏移量计算模块根据所述像素点数据的地址和实际目标图像地址,采用偏移量分析公式确定偏移量;
8、步骤6:所述乘加模块根据fpga器件特性,采用变形后的双线性插值公式,进行偏移量与像素点数据的乘法运算,输出为满足目标图像大小的插值后的图像数据,以输入到卷积神经网络中进行运算。
9、在其中一个实施例中,所述确定图像的缩放比例的表达式为:
10、ratio=des/ori
11、其中,ratio为图像的缩放比例,des为原始图像的像素点行列数,ori为目标图像的像素点行列数。
12、在其中一个实施例中,所述ram存储器的深度设置为ori*ori,其中,ori为目标图像的像素点行列数。
13、在其中一个实施例中,所述ram模块为全双工的存储器,提供a、b两个端口,ram模块的a口控制读写的顺序,ram模块的b口始终输出目标图像的行数据。
14、在其中一个实施例中,所述确定实际目标图像地址的表达式为:
15、缩小时:desaddrreal=desaddr*ratio
16、放大时:desaddrreal=desaddr/ratio
17、其中,desaddrreal为实际目标图像地址,desaddr为缓存像素点数据的地址,raito为图像的缩放比例。
18、在其中一个实施例中,所述偏移量分析公式为:
19、dx(dy)=|desaddrreal-desaddr|
20、其中,dx(dy)为在x轴上和y轴上的偏移量,desaddrreal为实际目标图像地址,desaddr为缓存像素点数据的地址。
21、在其中一个实施例中,所述变形后的双线性插值公式为:
22、p_new=p1+[(p4-p3)+(p1-p2)]dxdy-(p1-p2)dx+(p3-p1)dy
23、其中,p_new为插值后的图像数据,p1、p2、p3和p4为像素点数据,dx为在x轴上的偏移量,dy为在y轴上的偏移量。
24、有益效果:
25、1.使用变形后的双线性插值,相比于传统的最近邻插值算法拥有更高的图像还原度,并且在fpga上减少了乘法器的使用。
26、2.仅在fpga侧完成图像的任意比例缩放,fpga具有更高的运算效率,同时减少了数据与外部处理器的交互。
27、3.流水线与多缓存处理,支持图像的任意比例放大缩小,加快了卷积运算的处理。
本文档来自技高网...【技术保护点】
1.一种基于FPGA的卷积神经网络运算前的图像双线性插值方法,其特征在于,应用于FPGA硬件电路中,FPGA硬件电路包括:缩放比例系数模块、实际目标地址生成模块、偏移量计算模块、乘加模块、数据存储器模块、数据缓存模块,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述确定图像的缩放比例的表达式为:
3.根据权利要求1所述的方法,其特征在于,所述RAM存储器的深度设置为Ori*Ori,其中,Ori为目标图像的像素点行列数。
4.根据权利要求1所述的方法,其特征在于,所述RAM模块为全双工的存储器,提供A、B两个端口,RAM模块的A口控制读写的顺序,RAM模块的B口始终输出目标图像的行数据。
5.根据权利要求1所述的方法,其特征在于,所述确定实际目标图像地址的表达式为:
6.根据权利要求1所述的方法,其特征在于,所述偏移量分析公式为:
7.根据权利要求1所述的方法,其特征在于,所述变形后的双线性插值公式为:
【技术特征摘要】
1.一种基于fpga的卷积神经网络运算前的图像双线性插值方法,其特征在于,应用于fpga硬件电路中,fpga硬件电路包括:缩放比例系数模块、实际目标地址生成模块、偏移量计算模块、乘加模块、数据存储器模块、数据缓存模块,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述确定图像的缩放比例的表达式为:
3.根据权利要求1所述的方法,其特征在于,所述ram存储器的深度设置为ori*ori,其中,ori为目标图像的像素...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。