本文是一篇工程硕士论文,本文定位于微型机器学习技术在手势识别领域的应用,同时为进一步保障用户的隐私和降低成本,设计并实现了一个基于超低分辨率红外阵列传感器和低成本AI芯片的静态手势识别系统。该系统的实现,一方面有助于促进微型机器学习技术的发展,为微型机器学习应用提供一种切实可行的实现途径,并且整个设计与实现流程的完整展现,将有助于这个领域的持续进步。
第一章绪论
1.1 研究背景及意义
微型机器学习是一个快速发展的边缘计算概念,它将嵌入式系统和机器学习联系起来,目的是实现超低功耗、低成本、高效、隐私,将机器学习推理带入电池供电的智能设备[1]。 嵌入式系统主要由设计用于执行特定功能的硬件和软件组成。它们是计算机,但与通用计算机(如电脑,手机,平板电脑)相比,它们专注于特定操作。嵌入式系统的示例包括打印机,家用电器,数码相机,电子计算器,ATM机等。微控制器构成嵌入式系统的硬件部分,使它们能够执行任务。这个微小的处理实体通常被嵌入到日常使用的电器中,但它们也可能构成智能设备的核心处理单元[2]。如今以微控制器驱动的设备的数量正在成倍增长,但是在许多情况下,设备上的微控制器随着时间的推移保持着低利用率,因为它们通常执行简单的处理任务。这些被广泛使用的设备,由于靠近信息的物理源以及拥有未被充分利用的处理能力,非常适合部署轻量级推理算法[3]。
随着机器学习的迅速普及和使用,在嵌入式系统上的应用受到越来越多的关注,大量的智能设备有望从中受益,尤其是接近传感器的智能数据分析和处理。为使机器学习在这些应用中发挥价值,有必要在嵌入式系统上从训练好的机器学习模型中获取结果。解决这个问题有两种主要办法,即云端机器学习和边缘机器学习。云端机器学习是将从网络边缘收集的所有数据,通过网络发送给云端,由云端进行机器学习模型的推理,并且返回机器学习模型推理的结果,而边缘机器学习则是直接在网络边缘进行机器学习模型的推理[4]。微型机器学习,也叫嵌入式机器学习,是将边缘机器学习的范围扩展到微控制器端[5],最早由谷歌研究员Pete Warden 提出,微型机器学习的目标不是完全取代传统的机器学习,即云端机器学习,而是与云端机器学习相辅相成,使终端设备具备某种认知能力。
1.2 国内外研究现状
1.2.1 微型机器学习
(1)硬件和软件
在过去的几年里,研究人员提出了各种加速深度学习推理的技术,这些技术包括硬件层面和软件层面的优化[7]。Bo Jiao等人设计出一个以FPGA的存算一体化(PIM)架构为特点的物体检测加速器,在100MHz的时钟速率下实现201.6GOPs的吞吐量,相应的性能密度为0.57GOPS/DSP[12]。Massimo Giordano等人设计出非易失性深度神经网络芯片,用于边缘人工智能的训练和推理,实现0.92TOPS的峰值性能和2.2TOPS/W的性能[13]。
Simone Disabato等人提出一种基于迁移学习和K-近邻的增量算法以支持嵌入式系统和物联网单元的机器学习和深度学习的设备上学习[14]。Ji Lin等人提出MCUNet,一个联合设计高效神经架构搜索和轻量级推理引擎的框架,实现微控制器上ImageNet规模的推理[15]。Han Cai等人提出NetAug,一种可以改善微型神经网络性能的新的训练方法[16]。Jisu Kwon等人在微型机器学习语音识别应用中使用软硬件协同设计方法,将应用中对输入数据进行预处理的部分发布到硬件,并且应用中的电阻-晶体管逻辑不仅使用海宁窗还收集音频原始数据,被添加到应用的集成电路声音收集模块[17]。他们还提出通过部分替换微控制器中机器学习固件的网络模型部分以灵活响应不同输入的技术[18]。Hamoud Younes等人提出一种基于浅层神经网络的张力支持向量机的新型硬件结构,以进行奇异值分解计算,相比于基于雅可比的张力支持向量机,每次分类的能耗降低88%,准确率最多损失3%[19]。Colby Banbury等人提出MicroNets,使用可微神经网络搜索来搜索具有低内存使用量和低操作数的模型[20]。
第二章 相关背景知识介绍
2.1 硬件介绍
2.1.1 微控制器
本文所使用的微控制器是嘉楠科技于2018年推出的一款针对于边缘侧的AI芯片勘智K210[79]。这是一款采用RISC-V处理器架构,定位于AI和IoT市场的系统级芯片(SoC),集成机器视觉与机器听觉能力,同时也是使用非常方便的微控制器(MCU)[80]。采用台积电(TSMC)超低功耗的28纳米先进制程,具有双核64位处理器,拥有较好的功耗性能、稳定性以及可靠性。该微控制器力求零门槛开发,能在最短时效部署于用户的产品中,同时赋予产品人工智能。芯片的基本参数如表2.1所示。
勘智K210包含RISC-V 64位双核CPU,每个核心内置独立FPU。以机器视觉和机器听觉为核心功能,包含KPU和APU分别用于计算卷积神经网络和处理麦克风阵列输入,并且具备能够进行高性能复数FFT计算的快速傅里叶变换加速器,因此,对于绝大多数机器学习算法而言,勘智K210拥有高性能处理能力。此外,勘智K210还具有丰富的外设单元,包括DVP、JTAG、OTP、FPIOA、GPIO、UART、SPI、RTC、I2S、I2C、WDT、Timer、PWM,能够满足海量的应用场景。
2.2 算法理论介绍
2.2.1 机器学习
机器学习是实现人工智能的重要途径,也是最早发展起来的人工智能算法[81]。与传统基于规则设计的算法有所不同,机器学习的关键在于从大量数据中寻找规律,以及自动学习算法所需要的参数。机器学习最早出现在1783年的贝叶斯定理中,并且贝叶斯定理已成为机器学习的一种,是根据类似事件的历史数据推出事件发生的可能性[81]。机器学习涉及概率、统计等多个学科,目前已经在医学诊断、数据挖掘、计算机视觉、自然语言处理等多个领域取得广泛应用,而在这些领域,很难开发常规的算法执行所需的任务。
机器学习算法按学习方式可分为四类:监督式学习,无监督式学习和强化学习[81]。其中,监督式学习,是默认所有数据都带有标签信息,随后根据输入数据对输出进行预测;对于无监督式学习,所有数据都不带标签信息,算法从输入数据中学习固有结构;强化学习被认为是迈向通用人工智能的关键算法,是有关环境中的智能体根据学习策略行动以使奖励最大化的问题。
传统的机器学习算法包括支持向量机、决策树、随机森林、逻辑回归等,主要依赖人工进行特征的提取。
2.2.2 深度学习
深度学习可以说是机器学习出现以来最大的突破之一[81]。是机器学习的子集,通过模仿人类大脑的运作方式来进行知识的学习,输入数据通常较为复杂,并且规模大、维度高。与传统机器学习相比,深度学习的主要优势在于:随着输入数据量的增加,深度学习模型能够不断提升。深度学习的发展历经数次波折,最早的神经网络,即人工神经元网络还只是通过简单的加权和与激活函数来模拟人类神经元的过程,随后,以此为基础的感知机,使用梯度下降法来学习多维的训练数据,成功解决二分类的问题,由此掀起深度学习的第一次热潮。其后,感知机被证明只是一种线性模型,无法解决生活中占绝大多数的非线性问题,导致深度学习陷入长时间的低迷。直到1986年,Geoffrey Hinton将非线性激活函数Sigmoid应用到多层感知机,并利用反向传播算法进行模型的学习,从而使模型能够有效处理非线性问题,然而由于Sigmoid 在函数两端存在饱和效应,带来梯度消失的问题,以及随着神经网络的加深,训练参数容易陷入局部最优解的问题,使得深度学习再次陷入低谷。
第三章 静态手势传感器数据的产生、收集和处理 ......................... 23
3.1 传感器数据产生 ........................ 23
3.1.1 I2C总线介绍 ................................................... 23
3.1.2 传感器内部主要寄存器介绍 ............................ 24
第四章 静态手势分类模型的设计 ........................ 32
4.1 深度学习框架介绍 ............................. 32
4.2 超轻量定制神经网络 ...................................... 32
第五章 微控制器端静态手势识别系统的设计与实现 .............................. 41
5.1 总体设计方案 .......................... 41
5.2 系统的实现 ................... 41
第五章 微控制器端静态手势识别系统的设计与实现
5.1 总体设计方案
微控制器端的静态手势识别系统的总体设计方案如图5.1所示。
整个系统主要分为三个模块。分别是感应模块,处理模块和显示模块。感应模块由红外阵列传感器AMG8833构成,负责感应静态手势,生成一组关于静态手势的温度阵列数据;显示模块由LCD液晶屏构成,负责将静态手势的热力图以及系统对该静态手势的识别结果进行实时显示;处理模块由微控制器勘智K210构成,负责驱动感应模块,并对感应模块采集的关于静态手势的温度阵列数据进行处理,以及将处理结果输出到显示模块。
第六章 总结与展望
6.1 本文工作总结
近年来,人工智能在各个领域取得了长足的进步,随着人工智能硬件及算法的不断突破,越来越多的研究人员开始考虑实现人工智能的最后一公里,即边缘智能。机器学习是实现人工智能的重要途径,机器学习模型的训练通常在