找回密码
 注册
关于网站域名变更的通知
查看: 139|回复: 2
打印 上一主题 下一主题

基于FPGA的数字识别-实时视频处理的定点卷积神经网络实现

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-7 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

7 \# O3 |# B; `+ D7 J数据集
7 M& h$ b4 C: P9 Q! F& y. _手写数字识别的MNIST数据集(网站)广泛应用于计算机视觉领域。然而,并不适合在我们的应用中训练神经网络,因为它与相机图像有很大的不同。主要区别包括:( d* \& H( |" G
●MNIST图像是深色背景上的浅色数字,与来自摄像头的图像相反(下图中A来自MINIST,B来自普通的相机);8 R1 s: ]- z' j+ d% T2 t
●摄像头产生彩色图像,图像大小为320×240像素,而MNIST是灰度的MNIST图像大小为28×28像素;) l) q' D8 _# T) u' r, v. ?
●与MNIST图像中居中放置的数字和相同背景(黑色)不同,数字可以在相机图像中移动和轻微旋转,有时背景中会有噪声;) f0 n/ _) s$ w+ {
●MNIST没有单独的数字图像类别。
2 W; s7 {: a: O, Q4 s5 h3 i1 R8 ?( b' n& I) W, n; u8 Z$ I
鉴于MNIST数据集的识别性能非常高,我们将摄像机图像的大小减少到28×28像素,并将其转换为灰度。这有助于我们解决以下问题:
2 {+ K' A3 s% I7 a3 e4 L( ^  ^●识别的准确度没有明显损失,因为即使在小图像中,数字仍然很容易被识别;# @" c0 X! j- M8 v# @: v2 y" V
●对于数字识别而言,颜色信息过多,所以转换成灰度图像刚刚好;
4 m' z) {% K  C4 p- H●通过减少和平均相邻像素,可以清除来自摄像机的噪声图像。
* h6 ]4 N/ e1 l2 P/ d由于图像变换也是在硬件级上执行的,因此必须预先考虑最小的一组算术函数,这些函数可以有效地将图像转换为所需的形式。修改摄像头图像的算法如下所示:
" u) }1 D! ~. c; W●从320×240图像中裁剪出一个中心部分,该部分测量224×224像素,由于224=28×8,因此随后可以轻松过渡到所需的图像大小。
/ W  |2 Y/ r- Q4 `7 a●然后,将裁剪的图像部分转换为灰度图像。由于人类视觉感知的特殊性,我们采用加权平均,而不是简单的平均。为了便于在硬件级别进行转换,使用以下公式:
# p6 [2 o$ b6 v) d" Y  ?# [7 Z3 vBW=(8xG+5xR+3xB)/16
$ D: |8 h- G5 A即RGB的权重为5:8:3% H5 L, G& ?! z9 Y  {
为了便于FPGA编程实现,我们可以在FPGA中使用移位实现8的乘法和16的除法。$ n2 `2 I) t- l- J: s+ |
最后,将224×224图像分割成8×8块。我们计算每个块的平均值,在28×28图像中形成相应的像素。* o( B3 Z6 ]0 a& V
由此产生的算法简单,适合FPGA实现并且速度非常快。; |9 N! i4 f8 j( p& ?
为了使用MNIST图像训练神经网络,需要把MINIST训练集进行修改:
  @! d4 d8 M* I+ j" B  ~●颜色反转;
  y! h( H, g8 i+ [) V/ Z" ^●在两个方向上随机旋转10度;
! K7 w6 n7 q# {7 f5 J# I●图像随机扩展或缩小4像素;. Z1 H9 M) \  d/ d8 T
●图像强度的随机变化(从0到80);0 Z7 l8 E! M/ E  C
●增加0%至10%的随机噪声。
7 C$ Q2 Q* p4 b8 J8 K& R●将来自摄像头的图像混合到训练集中。% v* t/ p8 P$ n7 v
上诉操作可以使用MATLAB或者python批量处理。8 k3 Q" @1 g0 f
$ n* A' E2 l5 r+ i$ L/ y
CNN设计
* \8 I7 M) l4 {& W6 |CNN的体系一直在发展(也就是为什么ASIC没有批量生产,还用FPGA验证一些CNN最新的算法),但是本质仍然是一样,因为我们使用的FPGA是一个入门型的,所以我们也不用最新的CNN。1 O; F5 r% v$ ^( \5 s4 @
CNN的本质:输入大小从一层到另一层减小,而过滤器的数量增加。在网络的末端,形成一组特征,这些特征被馈送到分类层,并且输出层指示图像属于特定类别的可能性。+ C# z* t  z  i9 c. x) D3 |# h( o
. g+ i! H) n6 }4 D
由于使用FPGA实现所以权重的总数对于设计来说是个瓶颈,所以需要最小化存储权重的总数(这对于移动系统至关重要),并促进向定点计算(FPGA只能进行定点计算)的转移:' B! Z; ]5 e9 c+ i& ]! F
尽可能减少完全连接层的数量,这些层消耗大量的权重;
$ h! `0 q& ~' u9 U9 [7 b. l. l在不降低分类性能的情况下,尽可能减少每个卷积层的滤波器数量;7 d4 ^$ R9 {1 ?8 k' M" @4 A
不使用偏差,当从浮点转换为定点时,添加常数会妨碍值的监控范围,并且每层上的舍入偏差误差会累积;# m- G" c  U! m5 L/ c  s
使用简单类型的激活,如RELU(线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元),因为其他激活,如Sigmoid和Tahn,包含除法、求幂和其他难以在硬件中实现的运算;
  N) ?/ W$ o; j) i尽量减少异构层的数量。
7 j* S8 Y3 k9 Z8 \( d在将神经网络转换为硬件之前,在准备好的数据集上对其进行训练,并保留软件实现的方式以供测试。使用Keras和TensoRFlow后端的软件实现。
, x8 J" n( n5 Q% \. r+ f! c- Q+ M
% x7 o4 d  D! W: I8 u5 w
- D! o3 [( f  u) E9 \$ |

基于FPGA的数字识别.pdf

351.57 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-6-7 13:10 | 只看该作者
非常详细,感谢作者

该用户从未签到

3#
发表于 2022-6-7 16:24 | 只看该作者
(~ ̄▽ ̄)~,哈哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-7 01:30 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表