今天发现了一个非常好的网站
https://teachablemachine.withgoogle.com/#
不需要任何代码,只用一个摄像头就可以建一个图像分类的神经网络,晚上和女儿一起玩了下。她基本上懂了整个流程无奈太小还是自己操作不来,我就录了下面一段。
整套操作如下:
首先做一个挥手动作并用鼠标点击 TRAIN GREEN 生成至少 30 张。由于只给网络看过一类图,这是不管我展示什么动作,网络只会把它分类为挥手 (对应着白猫挥手)。
接着做一个摇头动作并点击 TRAIN PURPLE 训练第二类动作,对应着是个毛茸茸的猫在转头。这时网络可以认出两类动作,挥手和摇头。
最后做一个张口动作并点击 TRAIN ORANGE 训练第三类动作,对应着一个松鼠吃东西。训练完毕后该网络就可以认出这三类动作,挥手、摇头和张口。
类比机器学习流程,训练之后就就是预测。在下面视屏中,我分别做了挥手、摇头和张口,神经网络都返回正确的图像 (注意我照片下有绿色、紫色和橙色三组颜色,它们的长度分别代表预测对应类的概率)。
当我最后把手缓缓升起,神经网络被困惑了,它觉得第一类和第二类都有可能。
除了用图片当标签,该网络也可以用语音和文字做为标签。
挥手对应着 Hello,我把摇头改成对应着 Hell No,把张口改成对应着 My Gosh。看看并听听下面视屏效果。
这个视屏由 AVI 格式转成 MP4 有点延时,实际上是
这个 Teachable Machine 网站非常酷,该神经网络完成的图像分类是由 Tensorflow.js 实现的,从 github 看源码背后的网络架构是 SqueezeNet。它属于卷积神经网络中轻量级的网络,在参数只有 AlexNet 1/50 的时候和其表现相当。
女儿和我一起玩了半天这个,对神经网络也产生了兴趣,虽然不知道反向传播是怎么推导出来的,但是被激发起的这个兴趣以后迟早会让她自动去学习而达到这一步。As to motivate kids to learn something, show them what it DOES, not what it is.