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

news2024/11/26 18:42:23

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

团队介绍

参赛单位:中国科学技术大学
队伍名称: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日截止~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高频SQL50题(基础题)-5

文章目录 主要内容一.SQL练习题1.602-好友申请:谁有最多的好友代码如下(示例): 2.585-2016年的投资代码如下(示例): 3.185-部门工资前三高的所有员工代码如下(示例): 4.1667-修复表中的名字代码…

设计模式之工厂模式 ( Factory Pattern )(1)

其他设计模式也会后续更新… 设计模式其实需要有一定开发经验才好理解,对代码有一定的设计要求,工作中融入才是最好的 工厂模式 ( Factory Pattern ) 工厂模式(Factory Pattern)提供了一种创建对象的最佳方式 工厂模式在创建对…

工业控制(ICS)学习笔记

目标:工业互联网安全的比赛 工控CTF之协议分析1——Modbus_ctf modbus-CSDN博客 常见的工控协议有:Modbus、MMS、IEC60870、MQTT、CoAP、COTP、IEC104、IEC61850、S7comm、OMRON等 不用看了,没太多技术含量,做了一会发现全得看答案…

【工程实践】Docker使用记录

前言 服务上线经常需要将服务搬到指定的服务器上,经常需要用到docker,记录工作中使用过dcoker指令。 1.写Dockerfile 1.1 全新镜像 FROM nvidia/cuda:11.7.1-devel-ubuntu22.04ENV WORKDIR/data/Qwen-14B-Chat WORKDIR $WORKDIR ADD . $WORKDIR/RUN ap…

Python 邮件发送(163为例)

代码 import smtplib import socket from email.mime.text import MIMEText from email.header import Headerdef send_mail():# 设置发件人、收件人、主题、内容from_address 18847097110163.comto_address 963268595qq.comsubject test emailbody hahahhahaha# SMTP邮件…

向量数据库的分类概况

保存和检索矢量数据的五种方法: 像 Pinecone 这样的纯矢量数据库 全文搜索数据库,例如 ElasticSearch 矢量库,如 Faiss、Annoy 和 Hnswlib 支持矢量的NoSQL 数据库,例如 MongoDB、Cosmos DB 和 Cassandra 支持矢量的SQL 数据库&am…

农业水土环境建模流程、DEM数据制备、土地利用数据制备、土壤数据制备、气象数据制备、农业措施数据制备、参数率定与结果验证、农业面源污染分析

目录 一、农业水土环境建模概述 二、ArcGIS入门 三、农业水土环境建模流程 四、DEM数据制备流程 五、土地利用数据制备流程 六、土壤数据制备流程 七、气象数据制备流程 八、农业措施数据制备流程 九、参数率定与结果验证 十、模型结果分析及地图制作 十一、农业土壤…

MT8788核心板主要参数介绍_联发科MTK安卓核心板智能模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块,具有超高性能和低功耗特点。该模块采用联发科AIOT芯片平台。 MT8788核心板搭载了12nm制程的四个Cortex-A73和四个Cortex-A53处理器,最高主频可达2.0GHZ。它还配备了4GB64GB(2GB16GB、3GB32GB)的内存&a…

4004 DC音频转换器原理

4004是一款低噪声、固定频率360KHz的电荷泵型DC DC转换器,在输入电压2.8V到5V的情况下,恒定输出5V电压,电压精度为:3%,输出电流达到300mA。4004外部零件少,非常适合小型的电池供电应用。4004优化后的电荷泵…

2023亚太杯数学建模A题思路解析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料5 最后 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 2023年第十三…

2023亚太杯数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

python 路径变更后 pip 运行报错

python 路径变更后 pip 运行报错 Fatal error in launcher: Unable to create process using "d:\python-3.6.6\python .exe" "D:\python-3........出现这种原因是因为生产 Scripts\pip.exe中存在绝对路径,因此当python变更过路径后所有 Scripts目…

YOLOv8 营业执照提取 统一社会信用代码、企业名称

目录 背景 尝试一:整图OCR识别,然后正则匹配 尝试二:利用显著特征,直接传统方法定位,切出来识别 尝试三:yolov8训练一个统一社会信用代码、企业名称位置检测 ​编辑 效果 模型信息 项目 ​编辑 代…

终端训练模型日志重定向

在终端中要执行模型的训练时,我们有时候既需要把模型执行的日志输出到终端展示,又想把训练日志保存到日志文件中: 假设执行的代码时trian.py python -u train.py | tee -a ./train.log-u:这是 Python 解释器的一个选项,用于强制标…

DRAM和SRAM

特点 Static Random Access Memory:速度快、存储一位需要元器件更多、功耗较大、集成度低、更贵 Dynamic Random Access Memory:容量大、需刷新、附属电路更复杂、功耗较小、集成度高 存储位元 SRAM DRAM 逻辑结构 SRAM 典型的SRAM芯片有6116&am…

【已解决】git push send-pack: unexpected disconnect while reading sideband packet

解决办法:修改缓存大小 打开项目所在路径下的git目录 找到config文件,用记事本打开编辑。 添加如下内容并保存即可 [http] postBuffer 1048576000

【NLP】大型语言模型,ALBERT — 用于自监督学习的 Lite BERT

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

社交媒体可持续性挑战:TikTok的危机与应对

随着社交媒体的全球普及,TikTok已成为一个备受欢迎的短视频平台,吸引了数以亿计的用户。然而,在其增长和成功背后,也伴随着一系列可持续性挑战。本文将深入探讨TikTok面临的可持续性问题,以及它如何应对这些挑战&#…

libusb获取Windows设备实例路径DevicePath

libusb 当前版本(1.0.26)libusb.h 头文件提供的接口似乎没有办法获取 Windows 平台相关的设备实例路径,其形如: \\?\usb#vid_04ca&pid_7070#5&20d34a76&0&6#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 只是提供了…

内网渗透(frp和proxychains4)

一、准备工作 需要三台机器,去哦这里准备的是win7(目标主机),kali(攻击者),红帽(跳板) 攻击机(kali):192.168.10.15 跳板机&#xff0…