用树莓派4b构建深度学习应用(七)Codeless开发篇

前言

通过前几篇的努力,我们把主流的几个AI框架都安装了一下,涉及了太多的代码,略显枯燥。这篇我们试着在这基础上,做一些有趣的AI应用,并赶一波时髦全程采用无代码开发。

现在建立人工智能应用最大的挑战在于几个方面:

数据采集与标注需要花大量的时间和人力; 模型的训练时间很长,算力成本也高; 模型泛化能力很弱,换一个场景就需要更换模型; 基础算法艰涩难懂,科研和学校仍是主力军; 很多领域还没有成熟的商业化解决方案。

随着技术的不断发展,人工智能应该成为某一系统的底层技术,在降本增效方面发挥更大的价值。AI 应该像水和电那样,成为任何人都随开随用的一种资源。这里介绍一个网站,就有点这个意思了。

Teachable Machine

这个网站提供了一个简单的人工智能训练平台,主要以监督学习为主,提供了图像分类,声音分类和姿态识别三种类型的AI应用。可以将训练好的模型,以 Tensorflow,Tensorflow.js 或 Tensorflow Lite 三种形式来保存,这样我们可以很方便的将其部署到手机端或是树莓派上。

https://teachablemachine.with...

训练模型分为三个步骤:采集数据,训练模型,导出模型。

1. 新建项目

我们准备先做一个手势识别的应用,新建一个图像分类项目,再选择 Image Project

2. 采集数据

可以通过上传图像或是摄像头的方式来采集图像,填入分类的类别名称,比如 one。

用摄像头会比较方便,按住 Hold to Record 按钮就会记录,还可以选择帧率。录制过程中,可以随时删除一些不适合的样本,也可以重复录制,增加样本多样性。

然后依次加第二个类别,第三个类别... 一直到 ten,共十个有效类别。这时候记得一定要加一个 nothing,作为排除项。

Tip:

要注意每个类别的图像数量尽量保持差不多的水平上,避免造成样本不平衡。

3. 训练模型

填入 Epochs,默认是50,只要没有过拟合,可以根据情况改大些,提高准确率;

Batch Size,默认是16,太小的话不容易收敛,太大的话容易欠拟合。显卡的显存足够的话,我比较迷信32;

Learning Rate,学习率是每次梯度下降更新的幅度,过大容易震荡,过小影响模型收敛速度,默认 0.001。

还可以点击 Under the hood,来查看整个训练过程中的曲线,有点 tensorboard 的味道了。
最后还能计算每个类别的准确率和混淆矩阵,完美!

Tip:

训练中记得不要切换标签,保持tab一直处于开启状态,避免浏览器优化后台影响训练模型。

4. 验证模型

可以在训练结束后,重新用摄像头来验证分类的结果,列表里会输出模型的预测概率,非常直观好用。

你可以及时对错误的类别,再补充一些样本,提高分类的准确率。

5. 导出模型

点击 Export Model 按钮,会弹出一个对话框,我们这里选择 Tensorflow Lite 模型,还可以选择导出的精度类型,Floating point ,Quantized 或 EdgeTPU。

点击 Download my model 下载模型按钮,过一段时间,网站就会把转换好的模型打包成 converted_tflite.zip 压缩文件。里面包含两个文件,model_unquant.tflite 是模型文件,labels.txt 是分类标签文件。

这两个文件是不是有点眼熟,对了,就是我们上一篇 tensorflow lite 应用里输入的两个参数。那让我们上次的程序直接跑一下看看效果。

部署到树莓派

酷!!!

难得的是,这回一行代码没写,就跑出了一个手势识别的AI应用。稍微扩展一下,比如训练一个火影忍者里的结印手势,然后根据分类结果,后端再连接一个 IFFFT 应用,可以很有仪式感地打开你的智能门锁。

也可以很容易的做到挥一挥手就打开空调,打个响指就灭一盏卧室的台灯,更多这种中二,又有趣的智能家庭应用,就留给你们的想象力了。

下一篇预告

我们将在树莓派上。
部署一下 intel 的神经计算棒,
进一步的提升推理速度,
敬请期待...

欢迎扫码关注,更多分享