RISC-V MCU中文社区

【分享】 如何通过地址生成器实现神经网络特征图的padding

发表于 开源蜂鸟E203 2023-05-31 00:32:31
0
632
1

对于SiamFC网络结构,我们设计的卷积核宽度为3*3,卷积步长为1,则经卷积过后,特征图宽度会减少2,为了满足我们所设计的pe阵列的计算要求,则需要对输出特征图外围进行补零处理,以扩充特征图的大小,从而使卷积输出特征图结果满足我们的需求,这种补零的操作称之为padding,如下图所示。

关于padding的实现,一般有两种操作,第一种是使用稀疏地址生成器,寻找padding数据地址的规律,当涉及到相应地址的时候,直接输入零数据,第二种则是在对应padding地址存入零数据,正常读取数据。
两种实现方式的主要区别在于:稀疏地址生成器的控制逻辑更为复杂,但其相比于直接输入零数据的方式可以节省一些内存(BRAM),但是考虑到我们设计的网络为五层卷积池化结构,特征图BRAM在每层卷积结束之后都进行存储的复用,因此其大小取决于最大特征图大小,因此使用稀疏地址生成器并不能大量减少存储资源消耗。所以我们选择更易实现,更加节省控制逻辑结构的直接存储方式。
对于这种直接存储方式,其填充零的判断逻辑为:
当目标地址为输出特征图的第一行时,存入0,
当目标地址为第一列,(第一行结束时继续存入一个零,后续则根据最后一列数据的下地址来判定)存入零。
当目标地址为最后一列,(每次目标地址为第一列之后,计数特征图宽度减2个时钟,然后地址即跳转为最后一列,此时存零,下一个周期跳转至第一列,继续存零)。
当目标地址为最后一行时,则连续存入特征图宽度个零数据,即完成padding。
通过上述逻辑,设计卷积结果输出缓存器,在缓存pe阵列输出结果后,同时实现padding和特征图数据的存储。

喜欢1
用户评论
小王

小王 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板