春回大地
万物生长
又到了天天吃黄瓜减肥的季节
一条新闻成功吸引了小编的注意:
在日本,一位名叫Makoto Koike的汽车行业工程师,运用深度学习的方法,为种植黄瓜的父母搭建了一套自动分拣黄瓜的系统。
在黄瓜收获的旺季,Makoto的母亲平均每天要花费超过8小时来进行黄瓜的分拣工作,不仅费时费力,更没法临时雇人帮忙。为了省去父母的烦恼,Makoto灵机一动,用了一台Windows PC机、树莓派3和三个摄像头,配合谷歌开源的 TensorFlow 人工智能框架,做了一套人工智能图像识别系统来分拣黄瓜,最后甚至还动用了Google Cloud 云计算平台。这番孝心实在煞费苦心得感人肺腑!
△ 在Makoto 父母所在的农场,黄瓜会因为颜色、长短、粗细、纹理的不同,被分为9个等级,售价也不同
△ Makoto 与其父母在黄瓜园内
△ Makoto 做的黄瓜分拣机
从视频中,我们看到黄瓜依据程序设定无任何差错的被分拣开来。此举省去农民们大量枯燥而重复的工作,大大的提高了分拣的效率。
为了一测究竟,于第十三届中国(深圳)国际文化产业博览交易会文博会中芬设计园分会场中,由深圳开放创新实验室主导的人工智能与计算机视觉工作坊,创客导师就带领大家一起实际体验了一把!
首先由深圳开放创新实验室创客导师为大家介绍此次工作坊。现场观众认真听讲。此次工作坊的重点——Arduino / Genuino 101 开发板。等待被识别的黄瓜们。导师指导参与者烧录程序。现场观众拿起开发板进行识别。经现场试验,黄瓜成功被识别。
看到这里,你一定会说,给我看几张图我依旧不知道怎么玩啊!不着急,小编特意指教实验室的好基友——“创客大爆炸”中一位不愿透露姓名的工程师John Guan,为大家诚意出品了以下图文/视频教程。(掌声~~~)
↓↓↓ 致力于“让人人都能玩转人工智能”的大爆炸工程师拍下了整个制作过程:
↓↓↓点击阅读原文,即可获得善解人意的中文教程。如果你有任何问题,欢迎在评论区,或上我们的论坛(http://bbs.makercollider.com)交流。
没有wifi的小伙伴请参考以下极简教程:
1. 材料准备
你需要准备:
附: 相关套件:CurieNeurons Kit
CurieNeurons Kit(居里神经元开发套件)是一套面向神经网络及智能硬件初学者的开发套件,包含拥有128个神经元的Arduino101。它有一种特别的Daisy Chain链接模式,能让每个进入神经网络的数据能分别在不同的神经元中进行实时处理!
因此使用CurieNeurons来进行图像识别,相较于TensorFlow有以下3大优势:
所需资源更少:只要一个Aruduino101板子和Arducam就能进行训练和识别;
样本训练和学习速度更快:在几纳秒的时间内就能在本地完成训练和识别;
学习质量更高:能够根据物体的形状、轮廓、颜色信息进行综合判断
就是这么厉害!
2. 开发板程序烧写
有关下载和安装库文件、库文件配置、程序上传的详细过程及代码请点击阅读原文获取!
3. 硬件组装
首先我们组装 Genuino 101 和 ArduCam 扩展板:
再将 MicroSD 卡装入 ArduCam 扩展板上的 MicroSD 卡插槽中:
再将 OV2640 摄像头模块连接到扩展板上:
最后再将手机支架固定上去:
组装好的硬件一览:
然后,我们把组装好的这一套放在三家脚架上:
4. 黄瓜样本准备
首先,我们要准备一些黄瓜作为学习样本:
大致把他们分为4类:好黄瓜;坏黄瓜(弯的);好的荷兰黄瓜;坏的荷兰黄瓜(蔫的)。
5. Curie 学习
首先,用数据线连接 Arduino101 ,然后打开电脑上的 Arduino IDE:
然后打开“串口监视器”:
此时连接上串口监视器后,设备会进行初始化,出现下面的界面后表示已经准备就绪:
现在,我们把准备好的四组黄瓜黄瓜样本给居里学习:
比如这个“好黄瓜”,我们让 Arduino101 学习为分类1(cat=1),再进行如下操作:
首先将黄瓜放到镜头中的画面中央区域,尽可能保证学习样本被包裹在屏幕中闪烁的红框中:
然后,在串口监视器中输入“ 1 ”:
点击发送后,Arduino101会自动进行数据的采样和学习,并返回目前所占用的神经元数量:
完成后,会自动进行识别:
可以看到已经开始正确识别了。
以此类推,我们将四种黄瓜依次给 Arduino101 进行学习:
“好黄瓜”学习为分类1(cat=1),发送“ 1 ”
“好的荷兰黄瓜”学习为分类2(cat=2),发送“ 2 ”
“坏黄瓜” 学习为分类3(cat=3),发送“ 3 ”
“坏的荷兰黄瓜” 学习为分类4(cat=4),发送“ 4 ”
为了降低画面背景对识别结果产生的干扰,我们还可以发送“ 0 ”,让 Arduino101 将背景图像数据学习为分类0 (cat=0 / Forget),即消除影响,这个操作将不会占用神经元:
建议的学习流程:
学习一遍所有黄瓜样本 → 学习一遍背景 → 学习一遍所有黄瓜样本 → 学习一遍背景
这样,基本的学习就完成了。
6. 效果测试
让我们测试一下识别的效果:
我们把好的黄瓜放进去:
可以看到在串口监视器中已经正确识别了。
我们再把好的荷兰黄瓜放进去:
我们再把坏黄瓜放进去:
我们再把坏的荷兰黄瓜放进去:
全部识别正确!
如果识别出错的也很简单,直接在串口监视器中再教它一次就好啦。
是不是很简单咩~
话不多说
放黄瓜过来吧!
↓↓↓ 点击阅读原文,即可获得善解人意的中文教程