软件工程与应用  >> Vol. 10 No. 1 (February 2021)

基于STM32图像智能处理平台的设计开发
Design and Development of Intelligent Image Processing Platform Based on STM32

DOI: 10.12677/SEA.2021.101007, PDF, HTML, XML, 下载: 54  浏览: 167  科研立项经费支持

作者: 马一民, 艾德润, 曾相森, 刘廷镇:沈阳工业大学信息科学与工程学院,辽宁 沈阳

关键词: STM32决策树集成学习gcForest计算机视觉STM32 Decision Tree Ensemble Learning gcForest Computer Vision

摘要: 现有的图像智能处理平台所使用的各类NPU成本较高,并且非嵌入式平台,没有配套配件,无法进行单独工作;而现有的嵌入式平台缺乏计算机视觉以及机器学习相关的软件库。本文将致力于解决以上两种问题,因此我们设计并实现了一种基于STM32系列芯片的图像智能处理平台。该平台可以广泛应用于物联网、智慧家居、智慧城市等方面。我们为其开发了一套软件库,包含基本图像处理算法和多粒度级联森林(gcForest)推断,使得该平台有能力被应用于多种计算机视觉任务。基于STM32系列芯片,平台可以提供灵活的硬件拓展,允许扩展多种内存格式,提供功能、存储、性能的优化支持,满足了用户的个性化应用需求。
Abstract: The various NPUs used by the existing image intelligent processing platforms are costly, and are non-embedded platforms without supporting accessories and cannot work alone; while the existing embedded platforms lack computer vision and machine learning-related software libraries. This article will focus on solving the above two problems, so we have designed and implemented an image intelligent processing platform based on STM32 series chips. The platform can be widely used in the Internet of Things, smart homes, smart cities, etc. We have developed a software library for it, including basic image processing algorithms and multi-granularity cascading forest (gcForest) inference, making the platform capable of being applied to a variety of computer vision tasks. Based on the STM32 series of chips, the platform can provide flexible hardware expansion, allow expansion of multiple memory formats, provide optimization support for functions, storage, and performance, and meet the user's personalized application needs.

文章引用: 马一民, 艾德润, 曾相森, 刘廷镇. 基于STM32图像智能处理平台的设计开发[J]. 软件工程与应用, 2021, 10(1): 44-49. https://doi.org/10.12677/SEA.2021.101007

1. 引言

随着人工智能和5G互联网的普及,物联网、智慧生活已经逐渐走入人们的生活。但是目前的智慧城市、智慧家居的普及需要一套可以快速构建整套硬件、软件相互结合的平台。而随着机器学习技术的发展,传统方式以其实现周期长,功能单一,搭建困难等缺点已经不适合未来智慧生活的需要,因此,目前需要一款能够在复杂场景应用(不过分依赖于PC端)并且可以进行二次开发的平台。

本文所设计的图像智能处理平台致力于将机器学习方法推广到复杂环境中应用。该平台可以让用户在此平台上进行特定的串口输入或二次开发,在计算机视觉方面功能丰富,基于本平台进行二次开发之后可快速构建出一系列丰富的图像处理功能,可以应用于复杂环境中,如交通信号识别及流量控制、自动驾驶场景检测、辅助驾驶、防盗检测、防盗预警、生物特征识别等多方面复杂环境。

值得一提的是,平台的软件库为gcForest [1] 的C++工业级实现奠定基础,允许用户以Tensorflow类似的方法在PC机上构建模型进行训练,训练完毕后保存模型并部署到嵌入式设备。通过良好的易用性有力地扩展了gcForest的应用环境。gcForest基于决策树原理构造,对标神经网络的新一代深度模型,有计算开销较小、可解释性强等优势。gcForest的更广泛使用也将对深度模型研究带来更多其它可能。

2. 相关工作

大多数国内外学者对于嵌入式平台的开发都不约而同的选择了STM32平台。STM32平台拥有着高性能、低成本、低功耗的优势,并且可以实现多种多样的功能。白小龙等人 [2] 基于STM32开发了串口通讯系统;吴坤洋 [3] 等人基于STM32开发了简易电路测试仪;胡武清 [4] 等人基于STM32开发了远近光灯自动控制系统等等。却很少有人在STM32平台上实现图像处理的功能。陈文翔 [5] 等人在STM32上实现了JPEG图像编码/解码流程。目前几乎没有人开发基于STM32的图像处理与机器学习功能。

3. 需求分析

随着嵌入式设备性能的逐步提升和智慧城市的推广与应用,以物联网为首的民用领域得到了飞跃式提高。然而现阶段物联网设备几乎不会使用计算机视觉技术,而是使用类似指纹识别和红外线感应等技术,这是因为嵌入式设备的性能决定了它无法直接使用PC上的算法,而现在还没有与之相关的专用于嵌入式设备的算法。我们抓住了这个痛点,运用最新的理论来完成这个算法并开发了配套硬件。用户可以以此为基准快速构建整套硬件设备,将其用于嵌入式物联网、智能家居、智慧城市等应用环境当中,在解放人力和提高生产力的基础上,提升人们在日常生活中的体验感。

4. 整体设计

本项目将从底层开始构建一套用于嵌入式设备的基础图像处理算法库和gcForest推断库,并在PC端实现对应的gcForest训练库,允许用户在PC端进行gcForest模型训练,并将保存的模型下载到嵌入式设备,以使用推断库进行推断。该嵌入式库可以运行在指定的STM32硬件上。

平台将为用户提供两种调用方法:一是使用约定的串口指令直接向芯片传入期望执行的算法和输入数据(一般为图像张量),二是基于库的源码进行二次开发,同想要实现的业务逻辑一同编译并下载到芯片,数据依然通过串口输入。两种方法的运算结果均通过串口输出。平台为使用者提供了智能的图像采集功能,允许利用低功耗的OV7670摄像头实现机器视觉检测方面的应用,为用户提供C语言支持接口,并提供19个基础的图像处理算法以实现处理复杂输入。允许用户自主选择帧差分算法、颜色追踪、标记跟踪、人脸检测、图像捕捉、眼动跟踪、矩阵码检测/解码、直线检测等功能。

我们在嵌入式设备上实现的gcForest推断库实现了参数化多粒度扫描和级联森林两个主要模块,并将其组装为计算图。将训练好的gcForest模型存入可读入设备,输入数据(一般图像张量)进行推断。基于gcForest的储存将按照三部分内容展开:第一部分以逗号分隔格式存储各个多粒度扫描窗口参数;第二部分以逗号分隔形式存储级联森林每层各个随机森林ID;第三部分以S-Express形式存储每个ID对应的实际随机森林中各个决策树结构。推断库通过这些数据实例化其所描述的gcForest模型为计算图结构。下面将就最主要的gcForest模块和基本视觉算法模块进行详细说明。

5. gcForest模块

gcForest是2017年提出的一种决策树集成算法。由于神经网络可以被简单的理解为多层非线性函数的堆叠,那我们可以考虑,是不是可以将其他的学习模型堆叠起来,以获取更好的表示性能,gcForest就是基于这种想法提出来的一种深度结构。gcForest通过级联的方式堆叠多层随机森林,以获得更好的特征表示和学习性能。它使用级联的森林结构来进行表征学习,需要很少的训练数据,就能获得很好的性能,而且基本不怎么需要调节超参数的设置 [6]。gcForest的主体分为级联森林模块和多粒度扫描模块两部分,下面将分别介绍这两部分并说明训练库的工作流程。

5.1. 级联森林模块

将输入特征经过级联森林,输出新的类别概率向量,将新的类别概率向量链接输入特征作为下一层输入,经过多个级联森林(k-fold交叉验证用于避免过拟合,并决定是否添加级),输出最终类别概率向量 [7]。Cascade Forest结构如图1所示。

Figure 1. Cascade forest structure diagram

图1. 级联森林结构图

Cascade结构的每一级接收前一级处理的特征信息并将所得结果传输给下一级。每一级由两种类型的森林组成,其中蓝色表示随机森林,黑色表示完全随机森林。

每个完全随机森林中包含500个complete-random trees,每个树随机选取数据特征作为划分节点的父节点,当每个叶节点中类型相同或者不超过10个样例时,停止划分,即不再生长。

每个随机森林包含500个树,与完全随机树森林不同的是树划分父节点的选取是通过随机选取sqrt(k) (k表示输入特征维度)个特征,选最佳的gini指数特征作为父节点划分节点。

5.2. 多粒度扫描模块

深度神经网络在处理特征关系方面是强大的,例如,卷积神经网络对图像数据有效,其中原始像素之间的空间关系是关键的。递归神经网络对序列数据有效,其中顺序关系是关键的 [8]。受这种认识的启发,论文采用多粒度扫描流程来增强级联森林。通过使用多个尺寸的滑动窗口,最终的变换特征矢量将包括更多的特征。多粒度扫描就是将原始数据转化为输入向量格式。主要有两种类型:序列数据和图片数据,作用跟DNN类似。如图2所示:

Figure 2. Feature representation of sliding window scanning

图2. 滑动窗口扫描的特征表示

假设序列数据特征维度是400,特征窗口大小为100,滑动步长为1,则通过滑动特征窗口将会得到301个100维的向量。通过两个森林训练得到301个3维的向量,并且将得到的概率向量连接为转换后的输入向量。

假设图片特征是20 × 20,特征窗口大小选择为10 × 10,滑动步长为1,则通过滑动特征窗口得到121个10 × 10的矩阵,通过两个森林训练得到121个3维的向量,并且将得到的概率向量连接为转换后的输入向量。

5.3. 训练库工作流程

使用我们在PC上实现的的训练库时,用户需指定每个随机森林中的决策树个数等超参数。在训练开始时产生一个一层级联的基准gcForest,训练过程使用每个实例进行k − 1次训练(基于k折交叉验证),产生k − 1个类向量,然后对其取平均值以产生作为级联中下一级的增强特征的最终类向量。在扩展一个新的级后,整个级联的性能将在验证集上进行估计,如果没有显著的性能增益,训练过程将终止。对于每个级联,由完全随机森林和普通随机森林两部分组成,完全随机森林中每棵树随机选取一个特征作为分裂树的分裂节点 [9],然后一直生长直到每个叶节点细分到只有1个类别或者不多于10个样本。类似的,普通随机森林每棵树通过随机选取sqrt(k) (k表示输入特征维度)个候选特征,然后通过gini分数筛选分裂节点 [10]。训练结束后,将模型保存为我们设计的储存格式。整体流程如图3所示:

Figure 3. Schematic diagram of training library workflow

图3. 训练库工作流程示意图

6. 基本视觉算法模块

由于嵌入式设备使用环境如智慧城市、智慧家居等较为复杂,常常导致采集到的目标图像不是十分理想。为此,我们在嵌入式设备上实现了图像增强功能,对图像进行进一步处理,以便能够得到更好的特征和视觉效果。我们实现了以下19种基本视觉算法。

1) 图像扫描与显示;

2) 彩色图像转灰度图像;

3) 图像曝光、染色及其二值化;

4) 图像伸缩变换及其旋转变换;

5) 亮度、对比度增强以及图像反色;

6) 图像灰度映射及对比度拉伸;

7) 直方图均衡化及规定化;

8) 图像卷积和空间域滤波;

9) 图像傅里叶变换与高斯、巴特沃斯滤波;

10) 图像Harr小波变换及去噪;

11) 图像灰度双阈值分割;

12) 边缘检测Sobel、拉普拉斯、LOG;

13) Canny边缘检测;

14) 霍夫直线检测;

15) 区域生长;

16) 形态学腐蚀、膨胀、开闭运算;

17) 距离变换;

18) 分水岭分割;

19) 模板匹配。

7. 结论与展望

平台采用了一系列新技术,第一个完成了gcForest算法在嵌入式平台的实现,为使用者提供了智能的图像处理功能,并提供了19个基本视觉算法以实现处理复杂输入。借助高性能STM32系列芯片,支持嵌入式设计,允许扩展多种内存格式,提供功能、存储、性能的优化支持,满足了用户的个性化应用需求。随着本平台应用范围的不断扩大,用户对系统的功能需求也会越来越丰富,所以对系统功能的扩充不可避免。另外,系统的性能与用户体验效果的提高对保持系统的使用优势至关重要,所以我们要进行系统性能的研究,不断提高系统性能。

基金项目

沈阳工业大学大学生创新创业训练项目——沈工(国)创字(202010142021)。

参考文献

[1] Zhou, Z.H. and Feng, J. (2017) Deep Forest: Towards an Alternative to Deep Neural Networks. International Joint Conference on Artificial Intelligence, August 2017, Melbourne, 3553-3559.
https://doi.org/10.24963/ijcai.2017/497
[2] 白小龙, 邢靖虹. 一种STM32内部HSI时钟自适应串口通讯系统[P]. 中国专利, CN201911385663.9. 2019-12-29.
[3] 吴坤洋, 吴广栋, 高鉴. 基于STM32的简易电路测试仪的设计[J]. 微型电脑应用, 2020, 36(4): 79-81, 85.
[4] 胡武清, 朱晓峰. 基于STM32远近光灯自动控制系统[J]. 计算机产品与流通, 2020(7): 129.
[5] 陈文翔. 基于STM32的图像处理系统[J]. 科技研究, 2014(1): 191.
[6] 赵璞. 基于gcForest的不平衡分类技术研究与应用[D]: [硕士学位论文]. 重庆: 重庆邮电大学, 2019.
[7] 李志军, 崔利娟. 基于深度森林的交通标志识别方法研究[J]. 工业控制计算机, 2019, 32(5): 114-115,120.
[8] 郭佳盛. 基于深度学习的自适应学习的学生模型研究[D]: [硕士学位论文]. 厦门: 厦门大学, 2017.
[9] 翁理国, 刘万安, 施必成, 等. 基于多维多粒度级联森林的高原地区云雪分类[J]. 计算机应用, 2018, 38(8): 84-89.
[10] 刘广东, 邱晓晖. 基于多模式LBP与深度森林的指静脉识别[J]. 计算机技术与发展, 2018, 28(7): 83-87.