【2021集创赛】Risc-v杯三等奖:基于E203 ShuffleNet的图像识别SoC

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。

团队介绍

参赛单位:中国科学技术大学
队伍名称:Supernova
总决赛奖项:三等奖

1.项目简介

本设计以E203处理器为核心,添加协处理器、神经网络加速器、用于显示的外设(12864型LCD屏和通过HDMI连接的显示器)、输入按键、DDR、以太网等外设构成SoC。
在这里插入图片描述

需要识别的图片信息通过以太网从PC发往FPGA,并在DDR3中进行暂存,通过HDMI显示当前将要识别的图片。加速器从DDR中获取图片数据并进行识别,有两个模式供用户选择:单张识别和连续识别。单张模式下加速器将识别结果送入E203核内,并由程序控制LCD显示相应的字符;连续模式下加速器可以直接将识别结果通过以太网返还给PC上位机。
系统整体结构图如下所示:
在这里插入图片描述

1.1 E203程序设计

C程序主要由主函数、GPIO初始化函数、PLIC配置函数、GPIO中断函数、UART配置及发送函数、LCD控制函数构成。
主函数流程图如下图所示。当程序处于模式选择阶段时,第一个GPIO按键中断用于模式切换,第二个GPIO按键用于模式确认选择;当程序处于模式中的选择性识别时,第一个GPIO按键中断用于模式一中的切换当前显示图片的功能,第二个GPIO按键用于实现确认识别当前图片的功能。
在这里插入图片描述

1.2 NICE接口与协处理器

神经网络加速器在设计的时候考虑了两种功能模式切换以及低功耗的需求,对加速器的启动、停止、模式选择的控制均由E203以自定义指令的形式通过NICE接口传递给加速器的控制模块。
本系统里加速器将直接从DDR中读取数据,若没有数据送入时将进行无效运算,为了降低功耗,我们可以对加速器进行启动和关闭操作。同时,本系统的功能包含单张识别和连续识别两种模式,对于单张识别来说速度的需求并不高,使用较低的时钟频率,而连续识别的定位是大量数据集中处理,对速度的要求较高,使用较高的时钟频率,控制图如下:
在这里插入图片描述

1.3 UART通信

当用户在程序中选择具体模式后,E203核通过UART向PC发送对应的模式代号,此时PC将选择通过以太网向FPGA发送单张(模式一)还是连续发送多张图片(模式二)。若处于模式一状态下,程序通过UART向PC发送指令是否切换当前将要识别的图片。

1.4 TCP/UDP以太网接口

以太网是目前应用最广泛的局域网通讯方式,同时也是一种协议。以太网协议定义了一系列软件和硬件标准,从而将不同的计算机设备连接在一起。
我们的设计中,图片信息通过以太网从PC发往FPGA,连续模式下加速器可以直接将识别结果通过以太网返还给PC上位机。
为了验证以太网接口的正确性,本文使用wireshark软件和NetAssist网络调试助手来进行调试,wireshark可捕获网口发出的报文,观察发出的报文是否正确,测试结果如下图所示,可见以太网功能正确实现。
在这里插入图片描述

1.5 HDMI显示图片

开发板上HDMI接口由Sil9134芯片驱动,在使用时需要先由I2C通信协议初始化芯片寄存器,之后以VGA接口时序将图像数据发送至屏幕显示。

1.6 LCD显示结果

LCD硬件模块我们选用了12864B点阵液晶显示模块,可实现汉字、数字、英文、符号的显示。

1.7 神经网络模型

在本设计中LCD用于显示程序用户界面以及加速器最终识别结果。当用户通过程序完成模式选择并确认识别后,加速器在核的命令下开始识别图片,识别完成后加速器将识别结果通过核送到LCD模块中,LCD模块解码收到的识别结果并在LCD屏上显示最终识别结果。
本设计以旷视科技官方的ShuffleNet v2 x0.5版本模型为蓝本,结合FPGA硬件资源的考量,对模型的部分结构做了改进,命名为ShuffleNet v2 x0.1(以下简称为x0.1),可对ImageNet数据集进行32种生活用品的图像分类。
在整个模型上共包括5个Stage,基本框架如下:
在这里插入图片描述

本设计的前向推理过程完全采用有符号整型数据格式进行运算,基本思路为对每一层设定固定的位宽,将计算结果放大或缩小至该位宽的取址范围内。为了进一步节约计算资源,对数据的缩放全部使用移位来进行。
在这里插入图片描述

该参数在本设计中称该值为放大系数𝑟𝑎𝑡𝑒。由于卷积层的偏置参数的放大需要使用该值,并且每层的放大系数均不同,所以该参数将在量化网络的层与层之间进行传递。
根据以上的量化策略,对 ImageNet 中选出的 32 种生活用品进行量化后推理测试,其量化后的准确率为 90%,相比浮点运算的 96%的准确率有所下降,但考虑到本设计采用了较为激进的量化策略(全程整型运算且放大缩小均采用移位操作而不是乘法),这一结果是完全可以接受的。

1.8 神经网络硬件设计

在本设计中,加速器的应用场景和算法已经固定,且算法模型比较复杂,包含多个分支与 Block,为了更高的性能,我们选用将每层单独实现的方式作为本SoC 中 CNN 加速器的实现方式,之后连接到一起搭建完成整个网络模型。
本设计中使用滑窗法实现特征图的生成,以生成 3*3 大小的特征图为例,具体如图:
在这里插入图片描述

输入特征图大小为 2242243,conv 层采用的时33 大小的卷积核,步长为2,padding为 1,最终 conv 层计算得出的特征图大小为 112112*24。*将上述过程生成的特征图与权重进行相乘得到运算结果后在进行累加,主要的乘加运算由 DSP 完成,DSP 设置为 4 级流水线,每个 cycle 进行一次加法和乘法运算。

Shuffle 层的本意是将,输入数据的多个通道进行打乱,在 FPGA 中,数据流以像素点形式传递,只需将数据按照 shuffle 的顺序重新拼接即可,Shuffle 层的实现原理如下图所示:
在这里插入图片描述

2.技术创新点

  • 本项目完成了模型训练、前向量化、硬件设计的全流程设计,可以快速迁移到基于各种数据集的图像分类的应用上。
  • 实现了两种识别模式:单张识别和连续识别。系统的设计定位为云端处理,可以对大量图片(来自以太网)进行快速识别,即连续识别,此模式实现了 PC 和 FPGA 进行图像数据的传输与通信。

3.参赛体会

通过本项目的研究和探索,我们学习了深度学习的知识和嵌入式系统构建与实操,完成了神经网络加速器的硬件实现及其性能优化。系统性能达到了满意的效果。感谢赛方为我们提供了这样一个锻炼动手能力的机会和交流项目经验的平台。

4.后续工作

进一步优化时序、尝试使用 NICE 接口对加速器进行参数配置(目前的加速器为固定规模,不可修改),优化 PC 上位机等。

作品内容来源于Supernova,非开源,转载请标明出处。欢迎大家参加极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动,10月1日截止~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/138756.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

孙哥Spring源码第29集

第29集 解析事务属性中的传播属性 【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】 1、事务属性有哪些? 1、事务属性2、传播属性3、只读属性 设置事务为只读,提高事务运行的效率 false 4、超时属性 超时属性 通…

HarmonyOS 学习记录

时光荏苒,岁月如梭,韶华不负,未来可期。转眼间已经30岁了,学习的重要性不言而喻,在接下来的日子里记录下自己学习HarmonyOS的过程。增加一下知识储备,防患于未然嘛 不得不说华为的开发文档写的不错,开发工具直接安装后自动配置环境…

广告业展示服务预约小程序的效果如何

虽然不少人不会与广告业直接接触,但各种形式的广告却是充斥在人们生活中,线下的传单展板、线上的视频、音频、图文等都是广告很好的传播通道,同时广告业能扩展的客户属性也非常广,下到超市小摊,上到企业公司都有大小相…

APS、SAP解析BOM批量核对(我的APS项目三)

APS提供了解析BOM接口 SAP从CU50中解析了BOM 博主开发了一个程序,把两边的BOM数据拉到一起来比对,从最初的一个车型,增加到5个车型,最后成型是30个车型,几乎覆盖了F1、F2的全部车型。 并且程序还实现了消息提醒功能&…

制作企业期刊的网站,小白也能做出超吸睛的期刊

制作企业期刊的网站,对于许多企业来说,是一项既重要又具有挑战性的任务。然而,如果你是一位初学者或者是一位小白,也不用过于担心。按照小编说的步骤去做,你也能制作出吸引人的电子期刊 首先,你需要选择一个…

2011年09月29日 Go生态洞察:image/draw包的深度解析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

2.4 CE修改器:代码替换功能

代码替换功能,需要使用 Cheat Engine 工具的“代码查找”功能,来查找游戏数据存储在内存中的地址。首先找到当前数值的存储地址,并将其添加到下方地址列表中。然后右键单击该地址,并选择“找出是什么改写了这个地址”,…

ppt中的字体,如何批量替换?

想要将PPT中的文字全部更换,有什么方便的方法吗?今天分享两个方法,一键修改ppt文件字体。 方法一: 找到功能栏中的编辑选项卡,点击替换 – 替换字体,在里面选择我们想要替换的字体就可以了。 方法二&…

酷柚易汛ERP - 利润表操作指南

1、应用场景 利润表按业务维度出具的统计企业主营业务、其他业务的收入、成本、利润情况的综合报表。 2、主要操作 2.1 核算利润 打开【资金】-【利润表】核算利润。 利润表分两部分,主营业务及其他业务,各项目计算公式如下: 净利润主营…

欧洲大学专场黑客松,获奖者们在Sui上构建链上物品验证并改进荷兰拍卖

在由区块链学生协会(Blockchain Student Association)与Sui合作的黑客松上,获奖者们构建了旨在吸引新用户并弥合区块链技术与实物资产之间差距的项目。这些新项目展示了Sui的发展前景和灵活性,以及它如何解决现实世界的问题。 来…

Illustrator 2024 v28.0(矢量插画设计)

Illustrator是一款功能强大的矢量图形编辑软件,它是设计师、艺术家和创意专业人士的首选工具,用于创建和编辑各种矢量图形、插图、图标、标志和艺术作品。 以下是Adobe Illustrator的主要功能和特点: 矢量图形编辑:Adobe Illustra…

企业app软件定制开发的特点

企业app软件定制开发的特点 随着移动互联网时代的到来,企业越来越意识到拥有自己的企业app对于提升企业形象、增强市场竞争力的重要性。然而,面对市面上众多的app软件,企业往往需要根据自身的需求和特点进行定制开发。 首先,企业a…

图像实时采集系统

本方案主要在于解决图像实时采集系统对算法校正的仿真实验,以及采集卡接收电路的验证。 由于图像实时跟踪处理系统需要大量的外场景实验,大部分时候只能通过采集的现场图像以在电脑软件中读取图片的形式来进行验证算法,而无法通过采集卡对接…

亚马逊鲲鹏系统强大的指纹系统可有效防止账号关联

亚马逊鲲鹏系统最新的防指纹技术支持绑定不同的代理IP,可以根据ip创建不同的指纹环境,让账号伪装成来自不同地点、不同设备的流量,每个账号环境隔离开来,实现了完全独立的操作任务,避免了账户指纹关联和操作轨迹关联。…

20. 深度学习 - 多层神经网络

Hi,你好。我是茶桁。 之前两节课的内容,我们讲了一下相关性、显著特征、机器学习是什么,KNN模型以及随机迭代的方式取获取K和B,然后定义了一个损失函数(loss函数),然后我们进行梯度下降。 可以…

ubuntu上安装edge浏览器

1下载edge浏览器 官网下载 edge浏览器的linux版本可在上面的官网中寻找。 我选择的是Linux(.deb)。 2 安装 可在终端的edge安装包所在的路径下输入下面命令安装。 sudo dpkg -i edge安装包的名称.deb3 安装可能存在的问题 1dpkg:依赖关系问题使得edge-stable的配置工作不…

【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等

LLaMA 2.0是 Meta AI 的开创性作品,作为首批高性能开源预训练语言模型之一闯入了 AI 场景。值得注意的是,LLaMA-13B 的性能优于巨大的 GPT-3(175B),尽管其尺寸只是其一小部分。您无疑听说过 LLaMA 令人印象深刻的性能,但您是否想知…

idea 插件推荐第二期

文章目录 便捷开发CodeGlance Pro (代码缩略图)GenerateAllSetter(快速生成对象所有set方法)GsonFormatPlus:json转实体RestfulToolkitX(找到controller快捷请求接口) 美化activate-power-mode-x (敲击计数、动效)Nyan…

nginx -s reload, 提示 [emerg] duplicate location “/“

问题描述: 执行nginx -s reload, 提示 duplicate location / 问题原因: 是因为location / 有两个,匹配重复了 解决方案: 把其中一个location / 注释掉,即可

Swift--基本运算符与程序流程控制

系列文章目录 第一章:量值与基本数据类型 第二章:字符、字符串与集合类型 文章目录 系列文章目录空合并运算符区间运算符循环结构while与repeat-while条件循环结构 空合并运算符 可选值类型是Swift语言的一个独特之处,空合并运算符就是针对…