RISC-V MCU中文社区

【分享】 【队伍编号CICC1607】手势识别算法的设计

发表于 全国大学生集成电路创新创业大赛 2022-05-29 12:33:39
0
186
1

手势识别算法的设计

团队名称:就你手搓CPU是吧
报名编号:CICC1607
文章编号:2


我们组计划计划基于E203内核搭建用于手势识别任务的智能Soc,算法方面选择了轻量级网路LeNet-5。它是个经典的卷积神经网路结构,常用于手写数字和英文字母的识别。在这里我们用于完成我们的手势识别任务。它的结构如下所示:

第一层是输入层,大小为输入图像的尺寸,由于采用灰度图,故为32* 32* 1,接下来进行卷积+池化操作,共两次,之后将得到的特征展开输入全连接层,最后输出种类。

事实上,卷积核大小、卷积核个数(特征图需要多少个)、池化核大小(采样率多少)这些参数都是变化的,这就是所谓的CNN调参,需要根据任务需要进行不同的选择。

在我们自己训练时,对部分参数进行了调整。为了兼顾效率与精度,我们采取40*40的网络输入。数据集如下所示,共包含120000张图片,进行旋转等操作后喂入神经网络。

采用pytorch进行训练,设置交叉熵损失函数,SGD优化器,训练过程如下所示:

epoch = 0    train_acc = 0.772     test_acc = 0.918
epoch = 1    train_acc = 0.942     test_acc = 0.952
epoch = 2    train_acc = 0.963     test_acc = 0.899
epoch = 3    train_acc = 0.972     test_acc = 0.873
epoch = 4    train_acc = 0.977     test_acc = 0.967
epoch = 5    train_acc = 0.984     test_acc = 0.642
epoch = 6    train_acc = 0.978     test_acc = 0.976
epoch = 0    train_acc = 0.708     test_acc = 0.815
epoch = 1    train_acc = 0.91     test_acc = 0.927
epoch = 2    train_acc = 0.946     test_acc = 0.852
epoch = 3    train_acc = 0.963     test_acc = 0.947
epoch = 4    train_acc = 0.973     test_acc = 0.952
epoch = 5    train_acc = 0.98     test_acc = 0.973
epoch = 6    train_acc = 0.986     test_acc = 0.856
epoch = 7    train_acc = 0.988     test_acc = 0.977
epoch = 8    train_acc = 0.991     test_acc = 0.978

训练过程很快就收敛了,得到了300k左右大小的模型,在可接受范围内。这一模型用于后续完成手势识别任务。

喜欢1
用户评论
XinChen

XinChen 实名认证

Nan

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