看日本黄瓜农民如何用深度学习和TensorFlow

来自:机器学习算法与Python精研(微信号:AITop100),作者:YUDA,编辑:鱼大
来源:Google Cloud Platform

分享一则国外的文章,期望AI观望者能够有所启发。

本人的启发,抛砖引玉如下:

  • 1:嵌入式的人才是能够很好能够利用AI的(实际上是机器智能)。

  • 2:很多人力来做的麻烦事都可以一定程度上通过计算机和机器来解决。

  • 3:AI是不可阻挡的趋势,只会越来越普遍于我们生活中。

通过查阅本文,您有什么感想,希望大家可以大胆留言。


-正文-


大概一年以前,一个来自日本曾是嵌入式系统工程师Makoto Koike在他父母的黄瓜农场帮忙,并惊讶于按照大小,形状,颜色和其他属性分类黄瓜所需的工作量。


Makoto的父亲为他的黄瓜感到非常自豪,例如,他一生致力于提供新鲜和脆脆的黄瓜,且还带有很多刺。笔直和厚实的黄瓜具有鲜艳的颜色和大量的刺,被认为是优质的,并且在市场上具有更高的价格。


但Makoto非常迅速地了解到,对黄瓜进行分类与实际种植黄瓜一样困难和棘手。“每种黄瓜都有不同的颜色,形状,质量和新鲜度,”Makoto说。

来自Makoto农场的黄瓜和来自零售商店的黄瓜



在日本,每个农场都有自己的分类标准,没有行业标准。在Makoto的农场,他们将它们分成九个不同的类别, 在收获高峰期每天花费长达8小时他的母亲自己对它们进行分类 。



“分拣工作不是一项容易学习的任务。你不仅要考虑尺寸和厚度,还要看颜色,质地,小划痕,是否弯曲以及是否有刺,需要数月才能完成。学习这个系统,你不能在最繁忙的时期雇用兼职工人。我自己最近才学会了很好地分类黄瓜,“Makoto说。

扭曲或弯曲的黄瓜被列分为9种


市场上也有一些自动分拣机,但它们在性能和成本方面存在局限性,小型农场不倾向于使用它们。



Makoto认为分拣不是黄瓜农民必不可少的任务。“农民们希望集中精力,把时间花在种植美味蔬菜上。我希望在将农场业务从父母那里带走之前,自动完成分拣任务。”

Makoto Koike,他的父母在家庭黄瓜农场

深度学习的用途

Makoto首先想到了一个探索机器学习的想法,用于从完全不同的用例中分类黄瓜。



“当我看到谷歌的AlphaGo时,我意识到这里发生了一件非常重要的事情,”Makoto说道,“这是我开始用深度学习技术开发黄瓜分拣机的触发器。”



使用深度学习进行图像识别可以让计算机从训练数据集中学习图像的重要“特征”。通过使用众多人工神经元的层次结构,深度学习可以自动地对图像进行高度准确的分类。因此,神经网络可以从图像中识别不同种类的猫,或汽车或飞机的模型。对于某些应用,有时神经网络可能超过人眼的准确率。

TensorFlow使深度学习的力量民主化

但计算机真的可以学习妈妈的黄瓜分拣技术吗?Makoto开始考虑是否可以使用深度学习技术进行排序,使用谷歌的开源机器学习库TensorFlow。


“谷歌刚刚开源TensorFlow,所以我开始尝试用我的黄瓜图像,”Makoto说。“这是我第一次尝试机器学习或深度学习技术,并且立即获得比我预期更高的准确性这让我有信心可以解决我的问题。“

黄瓜分拣系统设计

下图是Makoto建造的黄瓜分拣机的系统图。该系统使用树莓派3作为主控制器,用相机拍摄黄瓜图像,并在第一阶段,在TensorFlow上运行小规模神经网络,以检测图像是否为黄瓜。然后,它将图像转发到在Linux服务器上运行的更大的TensorFlow神经网络,以执行更详细的分类。

黄瓜分拣机的系统图



Makoto使用样本TensorFlow代码Deep MNIST for Experts对卷积层,池化层和最后层进行微小修改,改变网络结构以适应黄瓜图像的像素格式和黄瓜类的数量。



以下是Makoto的黄瓜分拣机,于7月投入使用:


提升深度学习的极限

深度学习当前面临的挑战之一是您需要拥有大量的训练数据集。为了训练模型,Makoto花了大约三个月的时间拍摄了由他母亲分类的7,000张黄瓜照片,但这可能还不够。



“当我对测试图像进行验证时,识别精度超过95%。但是如果你将系统应用于真实用例,精度会下降到70%左右。我怀疑神经网络模型存在”过度拟合“的问题。 



深度学习的第二个挑战是它消耗了大量的计算能力。当前的分拣机使用典型的Windows台式PC来训练神经网络模型。虽然它将黄瓜图像转换为80 x 80像素的低分辨率图像,但仍需要两到三天才能完成对7,000张图像的模型训练。



“即使使用这种低分辨率图像,系统也只能根据其形状,长度和失真程度对黄瓜进行分类。它无法识别颜色,纹理,划痕和刺。”Makoto解释说。通过放大来提高图像分辨率。黄瓜会产生更高的准确度,但也会显着增加训练时间。



为了改善深度学习,一些大型企业已经开始进行大规模的分布式培训,但这些服务器的成本很高。Google提供云机器学习(Cloud ML),这是一个用于培训和预测的低成本云平台,专门用数百台云服务器通过TensorFlow培训网络。借助Cloud ML,Google可以为分布式培训构建一个大型集群,您只需支付使用的费用,便于开发人员在不进行大量资本投资的情况下尝试深度学习。


用于AlphaGo专用服务器


“我可以使用Cloud ML来尝试使用更高分辨率的图像和更多的训练数据来训练模型。此外,我可以尝试更改神经网络的各种配置,参数和算法,看看它如何提高准确性。我等不及了去尝试一下。“

推荐↓↓↓
人工智能与大数据
上一篇:LruCache在美团DSP系统中的应用演进 下一篇:让 Hadoop 称霸至今的框架 --Hadoop Yarn