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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

2 g# {" j$ I. c/ c  P) c$ M8 \) ~数据集
; ?; f6 b) N+ c/ k/ y* ~手写数字识别的MNIST数据集(网站)广泛应用于计算机视觉领域。然而,并不适合在我们的应用中训练神经网络,因为它与相机图像有很大的不同。主要区别包括:1 {9 M' n3 h3 M8 G" p
●MNIST图像是深色背景上的浅色数字,与来自摄像头的图像相反(下图中A来自MINIST,B来自普通的相机);# b3 U. Q7 g& H4 ?! E& I
●摄像头产生彩色图像,图像大小为320×240像素,而MNIST是灰度的MNIST图像大小为28×28像素;% ^) a6 _0 Y4 U3 O
●与MNIST图像中居中放置的数字和相同背景(黑色)不同,数字可以在相机图像中移动和轻微旋转,有时背景中会有噪声;4 j/ y/ d) U% c# A( [
●MNIST没有单独的数字图像类别。
# R! S: R5 h+ S8 H5 |' q5 M9 C7 M0 \3 X( e
鉴于MNIST数据集的识别性能非常高,我们将摄像机图像的大小减少到28×28像素,并将其转换为灰度。这有助于我们解决以下问题:
' F+ N+ e3 X8 t7 [●识别的准确度没有明显损失,因为即使在小图像中,数字仍然很容易被识别;- Q  v! Q/ W: V& N
●对于数字识别而言,颜色信息过多,所以转换成灰度图像刚刚好;
% ]$ H6 c0 h0 S6 q0 {●通过减少和平均相邻像素,可以清除来自摄像机的噪声图像。" C# s+ w! j8 c( x, p2 W1 S" H- }6 B
由于图像变换也是在硬件级上执行的,因此必须预先考虑最小的一组算术函数,这些函数可以有效地将图像转换为所需的形式。修改摄像头图像的算法如下所示:
% g; \0 F" A# ]/ o/ c●从320×240图像中裁剪出一个中心部分,该部分测量224×224像素,由于224=28×8,因此随后可以轻松过渡到所需的图像大小。
! j# d$ g& \. ?, N/ T●然后,将裁剪的图像部分转换为灰度图像。由于人类视觉感知的特殊性,我们采用加权平均,而不是简单的平均。为了便于在硬件级别进行转换,使用以下公式:
. p! p$ S  D0 z9 d) @BW=(8xG+5xR+3xB)/16: C3 S0 A, C) W9 g+ T: u
即RGB的权重为5:8:3$ T5 X" Z, `5 `2 H9 q9 l
为了便于FPGA编程实现,我们可以在FPGA中使用移位实现8的乘法和16的除法。
! Z" e4 Y2 ^$ p% T; y最后,将224×224图像分割成8×8块。我们计算每个块的平均值,在28×28图像中形成相应的像素。
! Y1 M) e& r! P由此产生的算法简单,适合FPGA实现并且速度非常快。
2 q* ?( X6 w7 E" o为了使用MNIST图像训练神经网络,需要把MINIST训练集进行修改:
. v$ @: G2 U- p, L●颜色反转;
6 R/ k- P8 l2 j& _0 T" L% \; u●在两个方向上随机旋转10度;
6 T; A0 u) }/ s9 E% A8 ~●图像随机扩展或缩小4像素;
1 Z2 {) A6 w3 p●图像强度的随机变化(从0到80);
& w, z5 a( E% f: \0 H; c" O: ]6 Q●增加0%至10%的随机噪声。) v8 R( v# X$ @9 N( f
●将来自摄像头的图像混合到训练集中。. ~3 W4 y' h8 h# ~  H1 e
上诉操作可以使用MATLAB或者python批量处理。0 p) w; u- w; b0 f% _: p0 A

( z8 F% F9 n/ XCNN设计
% o4 |+ F, D6 |' a- S6 }CNN的体系一直在发展(也就是为什么ASIC没有批量生产,还用FPGA验证一些CNN最新的算法),但是本质仍然是一样,因为我们使用的FPGA是一个入门型的,所以我们也不用最新的CNN。
: x, D/ u. X5 _+ I; ]CNN的本质:输入大小从一层到另一层减小,而过滤器的数量增加。在网络的末端,形成一组特征,这些特征被馈送到分类层,并且输出层指示图像属于特定类别的可能性。* f- x3 ^0 P4 i# v8 G! C/ o

& i7 P& W8 Y" _由于使用FPGA实现所以权重的总数对于设计来说是个瓶颈,所以需要最小化存储权重的总数(这对于移动系统至关重要),并促进向定点计算(FPGA只能进行定点计算)的转移:
% I! K: j; \) X尽可能减少完全连接层的数量,这些层消耗大量的权重;3 B. x& y& U( j8 V( G( Q
在不降低分类性能的情况下,尽可能减少每个卷积层的滤波器数量;
, h3 B- n& f! p! w+ C4 F$ b( t5 w不使用偏差,当从浮点转换为定点时,添加常数会妨碍值的监控范围,并且每层上的舍入偏差误差会累积;
6 S. Q) f: w5 H  Z0 |- V使用简单类型的激活,如RELU(线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元),因为其他激活,如Sigmoid和Tahn,包含除法、求幂和其他难以在硬件中实现的运算;' f( L$ `3 |& N9 Q+ Z
尽量减少异构层的数量。7 L( ?$ \1 c6 u3 h+ |* \& w) E
在将神经网络转换为硬件之前,在准备好的数据集上对其进行训练,并保留软件实现的方式以供测试。使用Keras和TensoRFlow后端的软件实现。* ~# S& |2 A7 o3 f4 Z( [3 q# _' X( B

/ s! E& _* v0 S+ c
& d  [* q: q. ^: u, @

基于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-7-26 14:36 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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