开源人工智能相关的Scratch插件

前言

早上@bilikyar提到:

codelab scratch 里面的 knn图像分类插件,貌似运行一段时间就会崩(也挺吃内存的),这是为什么呢?

@bilikyar给了两张截图:

我答复说:

确实挺吃内存,用的是js实现的tensorflow,性能比较低. 但我没有遇到浏览器崩溃的情况。我下午把这一部分开源出来好了,大家可以一起来改进。

图像分类插件

图像分类插件是这样的一种插件: 使用这个插件,用户可以训练自己图像分类模型,之后利用训练出的模型,去预测摄像头看到的物体。利用这个插件,可以制作许多有趣的项目。

诸如我们之前制作的的闭眼,请熄灯:

由于使用了神经网络(MobileNet,Google提出的一种小型却高效的CNN模型,在accuracy和latency之间做了折中),这类的项目一般会被冠以人工智能的称号。

废话少说,放码过来

我直接把代码放上来: scratch3_knn

简单介绍

技术层面, 底层使用的是TensorFlow.js

TensorFlow.js is an open-source hardware-accelerated JavaScript library for training and deploying machine learning models.

由此可知scratch3_knn的所有运算都发生在本地浏览器里,并没有利用云端,代码是隐私安全的。也正由于计算都发生在本地,所以很吃性能。

scratch3_knn本质上是对tensorflow/tfjs-models做了积木化的包装。

值得一提的是tfjs-models中有许多有趣的项目,大家可以自行挖掘。

ml5js

Friendly Machine Learning for the Web. -- ml5js.org

阅读这篇文章的朋友可能对适合教育的机器学习项目感兴趣。我把此前接触的另一个有趣的项目也列出来: ml5js

我们在使用TensorFlow.js之前,在图像分类这块使用的是ml5js

刚才在整理资料时,发现小喵科技在这块做的探索和CodeLab挺相似的。他们似乎也经历了从ml5js到tfjs的过程。

此外,值得一提的是,小喵科技是家很优秀的公司,我记得买过他家的硬件,他们拥抱开源,很多项目都放在了Github上。除了产品做得用心,教程也写的挺用心的: 小喵科技 机器学习5(轻量TensorFlow)教程

很踏实的一家公司,给小喵科技点赞👍

测试

如果希望在本地测试scratch3_knn,环境的搭建可以参考我们此前的文章: 创建你的第一个Scratch3.0 Extension

欢迎提issue

@bilikyar提到的,有可能会因为性能问题导致代码崩溃,欢迎大家提issue。

此外积木在语义上还比较粗糙,在积木语义方面有更好的建议也欢迎提issue和PR。

发散思维

有很多AI相关的js插件,其实都可以积木化到Scratch中,face-api.js是我非常喜欢的一个js库,积木化它似乎并不难。

参考




Fork me on GitHub