◆ ◆ ◆
导读
现在说机器学习和深度学习的应用只受限于人们的想象力并不夸张。不仅全世界的数据科学家们为之着迷,甚至在日本的农场,一位小哥为了减轻妈妈的工作负担,也开始尝试采用深度学习和Tensor Flow种黄瓜。
大约一年前,曾为日本汽车业内一名嵌入式系统设计师的MakotoKoike开始在父母的黄瓜种植园帮工。根据大小形状颜色和其他属性来分选黄瓜这件事所需的工作量令他吃惊。
Makoto Koike那一生致力于提供鲜脆黄瓜的父亲就很为他那些仍带有细刺的扎手黄瓜感到自豪。颜色鲜艳又直又粗并且有许多刺的黄瓜被认为是高档的,可在市场上要价更高。
但是MakotoKoike很快就了解到分选黄瓜就如把它们种出来一样难。“每只黄瓜的颜色、形状、质量、新鲜度都不同”,Makato说。
零售店里和Makoto Koike家农场的黄瓜
在日本,每家农场都有自己的分类方法,并且没有行业标准。MakotoKoike家农场把黄瓜分为9个不同的等级,由他妈妈亲自分选所有黄瓜,——这在收获的峰季是最高每天8小时的工作量。
“分选工作不是一项简单易学的任务。你不只要看它的大小粗细,还要看颜色质地,有没有小的划痕,是不是奇形怪状,有没有刺。这些需要好几个月才能学会,所以在最忙的时节雇临时工行不通。我自己也是最近才学得能把这些黄瓜分选好”,Makoto说到。
歪歪扭扭的黄瓜被评为次品
市面上也有(黄瓜)自动分选机,但在性能和费用方面都有局限,所以小型农场不大会用它们。
Makoto认为分选黄瓜不是瓜农的一项重要任务。“瓜农希望把注意力和功夫花在培养可口蔬菜上。我想在接手父母的农场生意之前把分选工作自动化。”
Makoto Koike(中间)和他的父母在自家黄瓜农场
◆ ◆ ◆
深度学习的众多用途
Makoto试用机器学习来分选黄瓜的创意最初来自一个完全不同的应用实例:谷歌阿尔法狗与世界顶尖职业围棋手对弈。
“当我看到谷歌的阿尔法狗,我意识到这里确实在发生一些很严肃的事情,”Makoto说,“这触发我开始开发带有深度学习技术的黄瓜分选机。”
深度学习用于图像识别,允许电脑从训练数据集中学习到什么是图像的重要“特征”。使用大量的人工神经元分层,深度学习可以高精度地自动分类图像。因此神经网络可以从图像中识别出不同种类的猫,或是不同型号的汽车和飞机。神经网络有时会在特定应用中超过人眼的表现。(如需更多信息,请看我过去的博客文章Understanding neuralnetworks with TensorFlow Playground.)
◆ ◆ ◆
TensorFlow将深度学习的权力民主化
但是计算机是否真能学会妈妈的黄瓜分选技艺?Makoto开始着手使用谷歌的开源机器学习库TensorFlow来看看自己能不能用深度学习技术来进行分选。
“谷歌刚刚开源了TensorFlow,所以我就开始把它试用于我的黄瓜图像上,”Makoto说。“这是我第一次尝试机器学习或是深度学习技术,马上就得到高过预期的准确度。那给了我信心:它能解决我的问题。”
有了TensorFlow,你不需要知道施用深度神经网络所需的高阶数学模型和优化算法。只要下载示例代码并阅读教程,你可以马上就可以开始用它。TensorFlow显著降低了机器学习的门槛,自从谷歌于去年11月开源了这个程序库,许多“非机器学习”的工程师已经开始通过他们自有的数据和应用来摆弄这项技术。
◆ ◆ ◆
黄瓜分选系统的设计
下图是Makoto设计的黄瓜分选机的系统图解。该系统以Raspberry Pi 3为主控制器用一架相机为每根黄瓜拍照。在最初阶段,系统在TensorFlow上运行小规模的神经网络来检测这是否是黄瓜的照片。系统接下来将这张照片转发至Linux服务器上的一个更大的TensorFlow神经网络执行更加精细的分类。
黄瓜分选机的系统图解
Makoto 采用了名为DeepMNIST for Experts的TensorFlow示例代码,经过一些对卷积层,池化层和最后一层的微调后,改变网络设计以适应黄瓜图像的像素格式和黄瓜分选的等级数。
下图是Makoto的黄瓜分选机,已于七月投入使用。
下图是分选臂以及相机接口的特写镜头。
◆ ◆ ◆
挑战深度学习的极限
深度学习目前面临的挑战之一是它需要大量的训练数据。为了训练模型,Makoto花了大约三个月时间,拍摄了7000张他母亲所分选的黄瓜的照片,但这恐怕还是不够。
“当我用测试图像进行验证时,识别准确度超过95%。但如果在实际操作中运用这个系统,准确度就会下降到70%左右。我怀疑神经网络模型由于训练图像的数量不够,存在“过度拟合”的问题(神经网络中的现象:模型被训练得只适于少量的训练数据)。”
深度学习的第二个挑战是它消耗大量的运算容量。现在这架分选机用一台普通的Windows台式电脑来训练神经网络模型。尽管它将黄瓜的照片转成80*80像素的低分辨率图像,但对基于7000张照片的模型,它仍需2-3天时间来完成训练。
“即使处理这样低像素的图像,这个系统也只能根据黄瓜的形状、长度和弯度来将其分类。它不能识别色泽、纹理、划痕和刺”,Makoto解释道。提高像素来放大黄瓜的图像可以提高准确度,但训练所需时间也将大大增加。
为了改进深度学习,一些大公司已经开始进行大规模分布式训练,但那些服务器往往需要巨额成本。谷歌推出了云机器学习(CloudML)这个用于训练和预测的低成本云平台,它可以投入数以百计的云服务器来使用TensorFlow训练神经网络。在Could ML平台上,谷歌会来搭建用于分布式训练的大规模集群,而你只需购买你要用到的,这让开发者们可以更容易地试用深度学习而无需大量资本投资。
这些专用服务器曾被用于阿尔法狗的比赛
Makoto对CloudML充满期待。“我可以在Cloud ML上使用更高分辨率的图像和更多的训练数据来训练模型。我还可以试着改变神经网络的各种设置、参数和算法来看看这些如何提高准确度。我已经迫不及待地想试用了。”
原文发布时间为:2016-09-06
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号