报名编号:CICC1907
团队名称:Hollow-SEKIRO-ARCAEA
学校名称:东南大学
指导老师:刘昊
团队成员:申烁、徐轶凡、林昊
这是我们第九篇分享文章。
nmsis是Nuclei MCU Software Interface Standard的缩写,是一种为基于Nuclei处理器的微控制器提供硬件抽象层的标准。nmsis包括nmsis core、nmsis dsp和nmsis nn三个组件,分别提供了对处理器核心和外设、数字信号处理库和神经网络内核的支持。
卷积、激活、池化是卷积神经网络中常用的三种操作,它们分别用于提取图像的特征、增加非线性、降低维度和防止过拟合。卷积操作是用一个卷积核(或滤波器)在输入图像上滑动,与图像的局部区域做点积运算,得到一个输出矩阵(或特征图)。卷积核的大小、数量和步长可以自定义,不同的卷积核可以提取不同的特征。激活操作是对卷积操作的输出应用一个非线性函数,如ReLU等。激活函数可以增加网络的非线性能力,使得网络可以拟合更复杂的函数。池化操作是对激活操作的输出进行降采样,即用一个池化窗口在特征图上滑动,对窗口内的值进行最大值或平均值等统计运算,得到一个更小的输出矩阵。池化操作可以减少参数数量,防止过拟合,同时保留重要的特征信息。
NMSIS的库函数很齐全,包括神经网络算法所需的各部分:卷积、激活、池化、分类、全连接、SVDF等。
下面挑选了一些nmsis中与卷积、激活、池化相关的函数来介绍:
riscv_convolve_HWC_q7_basic:这个函数实现了基本的二维卷积操作,输入是一个8位有符号整数(q7)类型的图像矩阵(高度x宽度x通道),输出也是一个8位有符号整数类型的特征图矩阵(高度x宽度x通道),卷积核也是8位有符号整数类型(高度x宽度x输入通道x输出通道),步长和偏置也是8位有符号整数类型。还有一些可配置的参数。
riscv_relu_q7:这个函数实现了ReLU激活函数,即将输入矩阵中所有小于零的元素置为零,其他元素保持不变。输入和输出都是8位有符号整数类型的矩阵,大小由参数指定。一共提供了五种激活函数:
riscv_maxpool_q7_HWC:这个函数实现了最大池化操作,输入是一个8位有符号整数类型的特征图矩阵(高度x宽度x通道),输出也是一个8位有符号整数类型的特征图矩阵(高度x宽度x通道),池化窗口大小、步长和填充方式由参数指定。
有多种池化函数:
本文介绍的内容是为了完成对蜂鸟E203 RISC-V内核进行运算算子的扩展,体现NMSIS库的使用。