一切始于对深度学习,神经网络的热爱,然后再进一步。 我看了几门课程,参加了Kaggle的比赛……“还有什么要做?”。 然后,一个机器人吸尘器(小米吸尘器V1)自己经营,并提出了一个有趣的主意...

详细介绍
本文是特定生命周期的中期摘要。 我希望这对希望从事机器学习但尚未决定朝哪个方向发展的人们会有所帮助。 大约一年前,我再次改变了工作和居住地。 在一个新地方,他们谈论了很多关于机器学习的话题,但是大多数是想推广炒作话题的经理。 剩下的,没有太多热情就满足了这个话题(仍然为他们工作)。
我想知道什么是机器学习。 一年后,我可以说这个话题非常多。 让我们看看哪些特定方面可用于生活和商业。
- 古典机器学习。
简要地:出现之前的一切 海帕 深度学习(deep learning)。 如果您具有关于销售,客户,交易的表格数据,并且想要增加销售,吸引客户,识别欺诈,那么您就在这里。 这里有一些很好的讲座,可以帮助您了解如何分析数据并使用诸如随机森林,K均值或XGBoost之类的方法。 我还喜欢Kaggle微课程和随之而来的房价预测竞赛 。 也许任何拥有真实客户(因此拥有数据库)的企业都可以应用这些方法。 有很多有趣的事情。 - 深度学习
无人驾驶汽车,无人驾驶汽车,并用吉姆·卡里(Jim Carrey)的头取代杰克·尼科尔森(Jack Nicholson)的头 。 但是,如果您下潜更深,任何头都会绕过去。 这是对面部,情绪,身体位置,从视频中提取语义以及各种视频流转换的识别。 自动转录和自动翻译,疾病和杂草的定义,好吧,您几乎可以理解。 除了计算机视觉之外,还包括自然语言处理(NLP),音频流的处理和模拟,游戏神经网络GAN。 无论选择哪种深度学习,您都可以花时间:
深化神经网络架构的细节。
我认为,该领域最接近科学,并且需要相应的数学和计算机科学知识。 如果您渴望尝试一种新的杀手级激活功能,扭曲自定义图层,从而使学习率不仅降低三叉戟,而且变成一根管子,那么此深度学习领域就是您的最佳选择。 打开最新的科学文章并开始实验。 从业务角度来看,这些公司可以做的事情是愿意专门投资于讨论的。 斯坦福大学 ( Stanford University)上有一些关于YouTube的熟人讲座。
深化基础架构细节。
训练神经网络成像以识别图像需要机器资源。 铁的选择范围很广,仅受皮夹大小的限制。 我认为GTX 1070 Ti可以被认为是一个不错的开始,但不要忘记仅凭视频卡并不能解决所有问题,因为仍然需要准备数据并将其馈送到神经网络。 较弱的CPU或较慢的硬盘驱动器可能会成为系统的瓶颈。 因此,请购买一个额外的i5处理器,16 gig RAM和一个固态硬盘。 键盘就这样了,它将以最便宜的价格出售。 另一个选择是Google Cloud,Azure,AWS,Kaggle。 云服务提供了数十种甚至数百种选择,K80的起价约为每小时50美分(与GTX 1070 Ti大致相同)。 Google为您提供了300美元的押金,供您练习。 Azure给出了200美元,与亚马逊没有交易。 我喜欢Google选项,因为您可以快速更改视频卡(“啊,走路就像走。今天就是V100”)。 当然,与您的研究部门进行现场测试的摇滚明星的薪水相比,这些费用将是一笔小数目。 一个小型的生活技巧,当连接到云中的计算机时,请使用端口转发: you_user@your_host -L 8888:127.0.0.1:8888
。 这将允许您在本地计算机上运行远程Jupyter。 我也想谈谈Google TPU。 可以直接从Google Colab完全免费地使用它们,但这就是问题。 当您使用或多或少的标准模型时,一切看起来都很漂亮,但是自定义模型一旦启动,其行为将无法预测。
深化生产实施。
进行架构设计和参加比赛的实验非常有用,但是实际上并不是那么重要,您的模型给出的准确度为85%或87%。 对于这种情况下的无人驾驶汽车或移动应用而言,决策的速度将更为重要,而对于医疗需求,很可能会出现第二种错误(“健康!加油,再见!”)。 就是说,确定优先级就变得很重要。 另外,还有一系列技术问题:如何在产品环境中推出并确保连续运行,如何在新数据上训练模型,如何监视和评估工作结果,最后如何捕获和修复错误。 我们已经在普通软件中遇到了所有这些问题,但是现在它们又进入了不同的水平。 已经有专门为机器学习量身定制的版本控制工具(Git-LFS,Saturn Cloud),但是尚不存在公认的标准,当然它也有其自身的特色。 另一个生活技巧:如果将超参数保存在单独的配置文件中,则可以轻松恢复成功的实验。
使用现成的模型和转移学习。
对于那些想了解它在现实中如何工作的人来说,机器学习是最简单,最有吸引力的部分。 有足够的现成模型,几十行代码,瞧:屏幕周围遍布彩色正方形。 无需花费时间和资源从头开始训练模型。 如果您想要现场识别,甚至在硬件中甚至有现成的解决方案(顺便说一下,关于它们的出色概述) 。 似乎可以接受并使用它,但是有些细微差别。 在标准数据集上训练现成的模型。 因此,要找出谁从您的企业中窃取酸奶油:Vaska猫或Semyon猫,您仍然必须调整模型(转移学习)。 也许拿着一把扫帚的芭芭玛莎会花很多钱。
主体
在这里,我们回到帖子的开头。 到机器人吸尘器过去时,我想使用机器视觉制作一个简单的功能应用程序或设备。 因此,这个想法浮出水面,为吸尘器提供了另一个与外界交流的渠道。
如果将小型相机固定在其上,则可以使用现成的模型或自己训练。 应用可能性很大。 从斑点清洁到跟踪狗。 您可以使用GAN在物理空间中进行某种游戏,或使用NLP模型进行游戏,并教他如何以语音助手的方式说话。 简而言之,是时候训练自己的家用机器人了。
当然,您需要从简单的事情开始。 例如,搜索我们已经制造的Habré。 事实证明,它位于“内部” Ubuntu 14.04中,这意味着,如果您具有root用户,则可以从操纵杆进行控制 。 如果您获取激光雷达数据,那么您会发现手边的无人驾驶汽车的原型也不少。
选择已经在这个阶段开始。 拿一台完成的带有Wi-Fi的相机和一块电池或一块板,像Jetson Nano一样进行推理? 我可以在Raspberry Pi上组装相机,Wi-Fi和电池吗? 每种方法都有其独特的有趣之处,但是我试图坚持主要目标:使用机器学习制造功能简单的设备,因此我选择了第一种方法。
相机行驶时,真空吸尘器发动并骑着它。 它运行完美,还有时间做梦。 假设赫克托(Hector)从他的街道上拖了一根棍子,并拖着它,躺在他最喜欢的地毯上。 相机悬挂在足够高的位置,可以捕获污染(在这里我记得关于脏盘子的挑战),并将坐标发送到真空吸尘器。 找狗仍然比较容易。 将摄像机放在吸尘器上就足够了,当检测到狗时就开始向前移动,然后绕一整圈返回底座。
但是这些都是未来的计划。 现在让我们做一些非常简单的事情。 让真空吸尘器根据相机所看到的物体发出不同的声音。 为此,我们需要通过公共队列连接的两个线程。
- 该模型(我使用的是现成的TensorFlow模型Zoo之一)识别对象并将其名称放入队列。
- 另一个线程从队列中获取对象的名称,并生成声音文件的URL。
- 路径被传递到真空吸尘器,并通过ftp或http敲打文件的接收地址。
- 在每个对象的文件夹中,有几个文件需要更改。 该文件是随机选择的。 此外,还有一个用于再现声音的参数,以便以10 fps的速度固定赫克托的真空吸尘器不会发出疯狂的嘎嘎作响,而是令人信服且有尊严地进行交流。
该图如下所示:

它是这样工作的:
小计
目标已实现:吸尘器正在讲话。 我很高兴自己没有一次做太多事情。 下一步是将模式识别与调节运动的流程相关联,并尝试进行转移学习。
人工智能这个话题如此之多,以至于很难一开始就确定该做什么。 我认为没有单一的切入点。 完全没有必要从复杂的导数的计算或Python编程课程开始(尽管两者肯定有用)。 选择您个人感兴趣的事物,并可能会与您一起完成自己的事业。
PS实现的详细信息在存储库中 。 欢迎发表评论和提出要求。