查看原文
其他

嵌入式机器学习系列00:STM32图像分类

兰时 边缘智能实验室 2021-01-31


前言


可能有的同学会有疑问,STM32 能做图像分类这么复杂的事情吗?

我们可以肯定的告诉你:完全可以,这就是嵌入式机器学习(EmbeddedML技术!不要忘了MCU才是真正的“霸主”!

下面请听小编为你慢慢道来。

首先嵌入式机器学习是一个很大的话题,涉及到的技术主要有:
  • 嵌入式软硬件技术:ARM、DSP、C/C++、Linux、Android等
  • 图像处理:数字图像理论、OpenCV等
  • 机器学习理论:高数、线代、CNN、激活函数、损失函数、梯度下降等
  • 机器学习框架:TensorFlow、Caffe等
  • Python . . .

这么多!想想都头晕,如果我们把这些都写在一篇文章里那么你一定不干,我们也不干啊。所以我们决定做一个嵌入式机器学习(EmbeddedML)专栏,通过一系列的文章和视频,带你走进这个新奇的世界!


机器学习技术简介


机器学习是一种新的编程方式,一种能够让机器具有学习能力的编程方式。

我们来看看传统的编程方式与机器学习这种编程方式有何不同。

传统的编程方式是使用规则(由程序员编写)和数据生成结果。

机器学习与传统的编程方式相反,我们输入的是结果和数据,得到的是规则,这个规则是通过机器学习技术得到的,而不是由程序员编写的。


为什么要使用机器学习技术?

在某些应用场景中,使用机器学习技术的好处是显而易见的。
对于计算机来说,实际生活中的很多应用场景都非常的复杂,比如分辨猫和狗,大多数时候,我们无法事先编写一套规则让计算机分辨出哪个是猫哪个是狗。
此时机器学习技术的优越性就显现出来了,我们使用大量已标记的猫狗图片,去训练深度网络模型,得到一个识别猫狗的规则,计算机利用这个规则就能进行猫狗识别了。

机器学习的过程

机器学习应用一般分为两个过程:

  • 一是模型的训练,这个过程需要大量的数据和计算量,一般在计算能力很强的计算机上进行。

  • 二是使用训练所得的模型对输入进行预测,这个过程计算量相对就会小很多,可以在手机上,甚至是在MCU上进行。

自己动手尝试,是了解一个新事物最好的方式。我们为你准备了一个轻松易行的实验项目,不需要开发板,只要你有一台电脑就能运行。下面开始!


在STM32上进行图像分类实验


这里仅介绍如何在STM32上运行机器学习模型,从而对输入图像的类别进行预测。至于模型的网络搭建、训练和转换将在后续文章中介绍。

项目地址:https://github.com/edgeML/cifar10_image_classifier_on_stm32


图像分类项目简介

本项目实现了在STM32上进行图像分类的任务。使用CIFAR-10数据集,通过Caffe机器学习框架搭建和训练神经网络模型,然后将所得模型进行转换,使其能够运行在STM32上。本项目运行在Keil的模拟器中,所以无需开发板即可体验机器学习在STM32上的应用效果。


CIFAR-10数据集简介

CIFAR-10数据集由10类32x32的彩色图片组成,一共包含60000张图片,每一类包含6000图片。其中50000张图片作为训练集,10000张图片作为测试集。
有了CIFAR-10数据集我们就不用自己到处去收集照片了,可以直接开始训练模型,然后使用模型。

CIFAR-10数据集官网:https://www.cs.toronto.edu/~kriz/cifar.html


项目的输入

输入是一幅宽32像素高32像素的彩色图像,为方便STM32实验操作,事先将图像转换为像素值数组,存放在armnnexamplescifar10_inputs.h中。


项目输出

输出是测试图像所属的类别的概率,概率值最大的就是目标图像的所属类,输出结果如下图所示:


细心的同学可能要问了,为什么这里的输出是127,而不是一个0~1之间的数?

这个跟我们使用的Softmax函数有关一般Softmax函数的公式是这样的:

y_i = e^(x_i) / sum(e^x_j)
而在STM32上我们采用的是以2为底Softmax函数,所以其输出会有所不同。
y_i = 2^(x_i) / sum(2^x_j)

众所周知,微控制器的计算性能有限,这样做可以大大减小计算量,并且从数学上来讲梯度是一样的,我们依然能够很好地分辨出目标图像所属的类别


调试运行

下面的视频讲解了本项目的使用方法,最后从互联网随机下载一张图片进行了测试,识别效果都非常好,点开看看吧!


关注边缘智能实验室,后台回复 "edgeAI",获取本文相关资源链接!

RECOMMEND推荐阅读

机器学习介绍


边缘智能实验室

边缘智能实验室

专注于边缘智能!

长按识别二维码关注

你点的每个赞,我都认真当成了喜欢
Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存