今天发现了一个非常好的网站
https://teachablemachine.withgoogle.com/#
不需要任何代码,只用一个摄像头就可以建一个图像分类的神经网络,晚上和女儿一起玩了下。她基本上懂了整个流程无奈太小还是自己操作不来,我就录了下面一段。
整套操作如下:
首先做一个挥手动作并用鼠标点击 TRAIN GREEN 生成至少 30 张。由于只给网络看过一类图,这是不管我展示什么动作,网络只会把它分类为挥手 (对应着白猫挥手)。
接着做一个摇头动作并点击 TRAIN PURPLE 训练第二类动作,对应着是个毛茸茸的猫在转头。这时网络可以认出两类动作,挥手和摇头。
最后做一个张口动作并点击 TRAIN ORANGE 训练第三类动作,对应着一个松鼠吃东西。训练完毕后该网络就可以认出这三类动作,挥手、摇头和张口。
类比机器学习流程,训练之后就就是预测。在下面视屏中,我分别做了挥手、摇头和张口,神经网络都返回正确的图像 (注意我照片下有绿色、紫色和橙色三组颜色,它们的长度分别代表预测对应类的概率)。
当我最后把手缓缓升起,神经网络被困惑了,它觉得第一类和第二类都有可能。
除了用图片当标签,该网络也可以用语音和文字做为标签。
挥手对应着 Hello,我把摇头改成对应着 Hell No,把张口改成对应着 My Gosh。看看并听听下面视屏效果。
这个视屏由 AVI 格式转成 MP4 有点延时,实际上是
挥手对应着 Hello
摇头对应着 Hell No
张口对应着 My Gosh
这个 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.
机器学习、金融工程、量化投资的干货营;快乐硬核的终生学习者。