资料介绍
描述
介绍
我最近在 startuphuscle.xyz 上听到了Mycroft.ai的首席执行官 Joshua Montgomery讨论他的公司为将开源替代语音助手推向市场所做的努力。无论您拥有一张图像还是数十亿张图像,距离使用人工智能识别您的视觉内容仅几步之遥。
预测类型取决于您运行输入的模型。AI 已卸载到云中的 clarifai 服务器。基本上,您向 clarifai 发送一张图片,然后 clarifai 将在该图片中找到的一组标签/单词/概念发回给您。
Clarifai 提供的 api 是几种不同的语言,其中一种是 python。这使其非常适合与 Mycroft 技能一起使用,因为它们也是用 python 编写的。有一个非常慷慨的开发人员选项,无需任何费用即可使用,让您可以访问 clarifai 的标准模型以及创建和训练自己的模型的能力。
如果你想开始破解计算机视觉/机器学习项目,你真的应该考虑 clarifai。
使用 Mycroft Mark I
Mycroft Mark I 是一个“嵌入式”Linux 应用程序,在无头模式下运行在 Raspberry Pi 上。无头意味着您必须将显示器和键盘连接到 Mark I,或者最好使用ssh从计算机登录您的 Mark I。在 Mycroft 社区论坛中提供了有关执行此操作的全面信息,更一般地,在Derek Molloy 的 Exploring Raspberry Pi: Interface to the Real World with Embedded Linux 1st Edition 中。对于任何有兴趣超越使用 pi 的基础知识的制造商来说,这都是一本令人难以置信的书。
我不会在这里详细介绍,但这里有一些ssh提示:
- 在您的桌面/笔记本电脑上打开许多终端窗口
- 您可以将桌面上的文本剪切并粘贴到 nano 编辑器中
- 在您的 Mycroft 上下载并安装feh以查看图像
您可以在 feh 了解有关 feh 的更多信息- 一个快速轻便的图像查看器。为了使用 feh 通过 ssh 查看图像,请使用 -X 开关来打开 x windows 终端:
ssh -X
如果 x 终端窗口“超时”并且一段时间后不允许您查看,只需将其杀死并如上所述创建另一个 x 终端窗口。
将 PiCamera 添加到 Mycroft Mark I
Raspberry Pi 3 位于 Mycroft Mark 1 的核心,但 PiCamera 连接器没有暴露,因此您必须做一些手术来连接 PiCamera。我从 adafruit 购买了 2 米长的 PiCamera 带状电缆来连接相机。就长度而言,这可能有点矫枉过正,但太短会更糟。
下面的一组图片将对您有所帮助,但是正如您所见,PiCamera 功能区已经到位。这些照片是我事后拍的!但我认为你将能够跟随。
1. 第一步是取下脚垫。每个脚垫都隐藏着一颗螺丝。使用内六角扳手松开并取下它们。
2. 打开后,您将看到树莓派。不幸的是,必须从底层板上的柱子上取下 Pi,以露出 PiCamera 带状电缆连接器。
3. Raspberry Pi 已从柱子上取下,带状电缆连接器暴露在外。
4. 现在将带状电缆穿过机箱顶部的线性通风口。
5. 设置的最后一部分是为相机配备一个漂亮的外壳。在thingiverse上有很多你可以选择的。我已经尝试了好几次,到目前为止,我最喜欢的是migrassi 的PiCamera 2 Axis Rotating Holder,在下面可以看到它坐在 Mycroft 的顶部。我使用 GizmoDorks HIPS 3mm 在我的 lulzbot mini 上打印了它。支架和相机插槽需要一些打磨才能正确安装。将相机插入插槽时要小心。当我打印它时,它很合身!
手术成功,病人活了下来!将相机连接并放置在其外壳中后,请确保将您的 pi 配置为使用相机:
sudo raspi-config
然后,您将获得以下菜单并按下选项 5 接口选项。
然后从那里选择并按照提示进行操作。建议在此之后重新启动。
安装 Clarifai
请在开始安装 clarifai 之前通读一遍!否则在重新启动时,你会以僵尸 Mycroft 告终,深情地盯着你,但永远是黄色的眼睛,但默默无闻!
安装 clarifai python api 很简单:
pip install clarifai
但是,这样做会取消在 Mark 1 上运行的 Pillow 版本,并安装名为 Pillow 的库的 2.9.0 版本。因此,如果您在安装 clarifai 后出于任何原因重新启动 Mark I,Mycroft 将无法工作,但您仍然可以ssh进入它。快速查看/var/log/mycroft-skills.log可以看出:
Traceback (most recent call last): File "/usr/local/bin/mycroft-skills", line 9, in <module> from pkg_resources import load_entry_point File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3147, in <module> @_call_aside File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3131, in _call_aside f(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3160, in _initialize_master_working_set working_set = WorkingSet._build_master() File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 668, in _build_master return cls._build_from_requirements(__requires__) File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 681, in _build_from_requirements dists = ws.resolve(reqs, Environment()) File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 870, in resolve raise DistributionNotFound(req, requirers) pkg_resources.DistributionNotFound: The 'pillow==4.1.1' distribution was not found and is required by mycroft-core
所以我们需要 4.1.1 版本的 Pillow,而不是 clarifai 安装的 2.9.0!但不要只是 sudo pip install Pillow 因为这将安装 Pillow 5.0.0 而 Mycrfot 将无法使用它。而是卸载 Pillow 并强制安装 4.1.1 版本:
sudo pip install Pillow==4.1.1
但我们还没有到那里!重新启动后,我仍然得到了黄疸和沉默的治疗!再次查看/var/log/mycroft-skills.log显示:
Traceback (most recent call last): File "/usr/local/bin/mycroft-skills", line 9, in <module> from pkg_resources import load_entry_point ... pkg_resources.DistributionNotFound: The 'future==0.16.0' distribution was not found and is required by mycroft-core
所以我只是发出了以下命令,
sudo pip install future=0.16.0
闭上眼睛重新启动!他还活着!最后一步是确保您授予对 Mycroft 的访问权限以使用 PiCamera:
sudo usermod -a -G video mycroft
我不记得在我之前的 clarifai 和 mycroft 项目中必须经历所有这些,所以一定有一些变化。经验教训:始终阅读安装消息,并在出现问题时始终查看 /var/log/mycroft-skills.log。现在乐趣可以开始了!
使用 Clariai
clarifai python api 易于使用。我建议在尝试将其集成到技能中之前编写一些测试脚本并尝试一下。这将使您有机会熟悉它并解析它发回的 json 包。
此外,您可以调试大部分视觉功能,而不必在调试语音组件时担心这一点。完成此操作后,将 clarifai 方面融入您的技能非常容易,想想“剪切和粘贴”。
clarifai文档是必读的,我有几个项目也会对您有所帮助:
在这篇文章中,我将专注于创建和训练自定义模型。继续为您注册免费的 clarifai 开发者帐户,获取您的 api 密钥并创建一个应用程序!
创建、训练和使用自定义模型
Clarifai 有许多现成可用的训练模型,例如颜色、名人、旅行等等。然而,他们没有“石头剪刀布”模型。这就是定制模型发挥作用的地方。clarifai 文档中详细描述了创建自定义模型。我将在这里展示我如何应用该过程来创建我的“石头剪刀布”模型。
定制模型流程:
- 添加带有相关概念的图像
- 创建模型
- 训练模型
- 使用模型
我用作创建和训练模型的实用程序的所有脚本的完整代码都在我的 github 页面上。
我在石头、纸或剪刀的每个位置制作了手的图像。这些是用 iPhone 拍摄的照片,我用我自己、我的妻子和儿子作为“手”模型。然后我制作了一个简单粗暴的脚本,用我的概念而不是概念将这些图像“上传”到 clarifai。我分别加载每个图像:
clarifai_app.inputs.create_image_from_filename(filename="rock1.jpg", concepts=['rock'], not_concepts=['paper','scissors'])
添加所有具有相关概念的图像后,您必须创建模型。这非常简单,只需要一行代码。
model = clarifai_app.models.create('rockpaperscissors', concepts=['rock','paper','scissors'])
模型 id 只是您给它的名称,在本例中为“rockpaperscissors”。您的图像已加载,您的模型已制作完成。现在,您的模型将需要一些培训才能正常工作:
from clarifai.rest import ClarifaiApp app = ClarifaiApp(api_key='YOU API KEY HERE') model = app.models.get('rockpaperscissors') model.train()
Clarifai 不仅返回概念,还将返回一个关联值,该值表示 clarifai 对它所报告的概念在图像中的信心程度。
当我在对初始图像进行训练后首次测试模型时,模型将所有东西都识别为具有高置信度值的岩石。所以你需要做一些后续培训。我训练了用 iPhone 拍摄的图像,石头、纸和剪刀各 10 个。现在我正在查看来自我办公桌上 PiCamera 的图像。
所以为了进一步训练模型,我做了一个简单的命令行菜单驱动脚本。我在 ssh 的 Mark I 命令行上运行它。我也可以将这个过程整合到 Mycroft 技能中。也许我会,但为了让模型尽快训练并运行,我去了 cli old school!
以下是显示使用 testModel.py 脚本运行的输出跟踪。概念右侧的值表示已在图片中观察到概念的置信度。
------------------------------ RPS - TEST MODEL MENU ------------------------------ 0. Exit 1. Take Test picture ------------------------------ Enter your choice [0-1] : 1 Taking a picture... scissors : 0.98923486 paper : 0.005966468 rock : 6.13205e-05 Enter your choice [0-1] : 1 Taking a picture... scissors : 0.9895846 paper : 0.0037088227 rock : 0.0001315531 Enter your choice [0-1] : 1 Taking a picture... paper : 0.95485735 scissors : 0.22752154 rock : 0.00014038719 Enter your choice [0-1] : 1 Taking a picture... paper : 0.89271563 scissors : 0.1276629 rock : 0.00030472572
使用这个脚本,我测试了 20 轮 RPS 的随机序列。在本次训练中,模型已经使用我的手在 63 张图像(Rock 18、Paper 24、Scissors 21)上进行了训练。我的模型 80% 正确。Clarifai 有一个模型浏览器,可让您查看图像、概念、标签、值等。这是自定义模型的关键工具。
Clarifai 模型浏览器视图通过查看这些图像以及使用 testModel.py 脚本返回给我的值。我可以看到,我没有在岩石图像上训练它足够“手掌”,并且模型与岩石和纸张最“混淆”。所以我使用我的 trainModel.py 脚本用 5 个以上的岩石和图像以及 4 个以上的纸质图像来训练模型。在此之后,使用相同的序列,clarfiai 定制模型得分 90%!现在我担心这个模型正在学习我的手,所以我让我儿子浏览了同样的 20 张图像。. .得分75%!怀疑得到证实。
使用这些知识,在未来,我将把模型训练给更多的人,来自不同的人。此外,我并没有真正正确使用返回的分数。返回的一些分数彼此非常接近。我们可以利用这一事实让 Mycroft 要求再进行一轮,而不是回答错误或对冲并要求确认。我们还可以使用一种训练机制,让 mycroft 定期要求确认,尤其是在置信度值接近时。
借助慷慨的免费开发人员选项以及对图像和操作的较大允许限制,我们可以轻松地改进这个模型。事实上,仅用 10 张图片就可以看到模型从 80% 提高到 90%,这向我展示了我们可以多快将其打造为可靠且通用的模型。
技能
一旦我确信我的自定义 clarifai 模型运行良好,我就准备将其纳入一项技能中。有关创建 Mycroft 技能的一般信息,请参阅。我将重点介绍我在这里找到的一些重要方面。
Mycroft 技能位于 /opt/mycroft/skills 文件夹中。此文件夹中的每个文件夹都代表一项技能。
该技能的目录结构比较简单。主要操作发生在__init__.py文件中。在这里,我们创建技能并创建一个列表,以包含稍后在游戏和游戏逻辑中使用的单词。
class RockPaperScissorsSkill(MycroftSkill): def __init__(self): super(RockPaperScissorsSkill, self).__init__(name="RockPaperScissorsSkill") self.gameChoices = ['rock','paper','scissors']
Mycroft 可以通过使用适应意图解析器或 Padatious 来确定您想要运行的技能。Adapt 将.vocab文件中的关键字与话语中检测到的词(您在唤醒词“Hey Mycroft”之后所说的)匹配。Padatious 使用神经网络模式匹配方法将话语与.vocab文件中的句子进行比较。
我喜欢 Padatious 方法,因为它允许您对自然语言非常接近地建模话语。每种方法都有其优点和缺点,但对于自然发音短语的快速技能发展,我更喜欢 Padatious。它还没有真正支持会话上下文,这是一个减号,但我认为这将在未来发生变化。
在初始化函数中,我们创建了 clarifai 应用程序并使用它来访问我们之前创建的rockpaperscissors模型。创建您的 clarifai 帐户和应用程序后,“api_key”对您来说是唯一的。我将它放在技能目录的 settings.json 文件中以增加灵活性。
def initialize(self): self.load_data_files(dirname(__file__)) self.clarifai_app = ClarifaiApp(api_key=self.settings["api_key"]) self.rpsModel = self.clarifai_app.models.get('rockpaperscissors') self.register_intent_file('rps.intent',self.handle_rps)
一项技能可以根据所说的内容(识别的话语)执行许多任务。这些话语中的每一个都与一个处理程序配对。在这种情况下,只有一个处理程序def handle_rps()。您可以在这里看到 Mycroft 没有作弊,他只是随机选择石头、纸或剪刀,并且这个“选择”保存在一个列表中。Mycroft 的选择保存在索引 0 中。然后他提示玩家选择。这可以通过对话文件来完成,然后您可以为开始提示添加一些变化,因为对话文件中的行将被随机选择。我只是在这里保持简单,并使用了self.speak()函数。
def handle_rps(self,message): rpsRound = [] rpsRound.append(self.mycroftChoice()) self.speak("O K lets play") self.speak("rock paper scissors go") rpsRound.append(self.playerChoice()) self.speak("i chose " + rpsRound[0]) self.speak("you chose " + rpsRound[1]) self.gameLogic(rpsRound)
然后,Mycroft 将通过评估来自 clarifai 自定义模型的响应来确定玩家选择了什么。
def playerChoice(self): self.take_picture() resp = self.rpsModel.predict_by_filename(self.settings["img_location"] + 'rps.jpg') return self.parseResponse(resp)
。
- 2023年人工智能产业概况及应用趋势分析 6次下载
- 人工智能是干嘛的 人工智能在金融行业的应用 0次下载
- 什么是人工智能 人工智能应用领域 0次下载
- 人工智能专题报告:生成式人工智能产业全梳理 3次下载
- 用人工智能保护森林
- 神经形态视觉传感器在人工智能的应用综述 21次下载
- 智能系统的定义与识别:人造智能与人工智能资料下载
- 人工智能的伦理智能体应用及相关研究 7次下载
- 人工智能到底是什么?什么工作需要学习人工智能 17次下载
- 人工智能计算机视觉的详细资料概述 9次下载
- 如何使用人工智能进行智能家居生态系统设计的研究分析 5次下载
- 人工智能及其产业发展如何?人工智能标准化白皮书(2018版)免费下载 0次下载
- 人工智能行业发展状况如何?人工智能行业研究报告详细资料免费下载 15次下载
- 电子书 中美人工智能行业生态比较 243次下载
- 人工智能之自动指纹识别 2018中国市场规模逼近4个亿 12次下载
- 人工智能的语音识别技术详解 681次阅读
- 生成式人工智能和感知式人工智能的区别 1158次阅读
- aigc是什么意思和人工智能有什么区别 9178次阅读
- 人工智能给教育带来哪些巨大好处 7937次阅读
- 什么是人类智能 杨学山浅谈通用人工智能的发展途径 2900次阅读
- 计算机视觉教学的内容有哪些? 3556次阅读
- 关于未来人工智能和自动化的预测 3044次阅读
- 苹果将人工智能和面部识别系统应用于车头灯 4715次阅读
- 人工智能瞬间识别慢性疾病还有多远? 1481次阅读
- 关于人工智能领域最新的报告分析 4701次阅读
- 中国人工智能创业领军20人里_你认识几个 9661次阅读
- 人工智能如何发挥运动传感器数据的协同作用 889次阅读
- 人工智能需要哪些知识_人工智能需要学什么_如何自学人工智能 4.4w次阅读
- IBM使用人工智能帮助他们预测有机化学反应的生成 4883次阅读
- 人工智能是一把双刃剑 1.1w次阅读
下载排行
本周
- 1普中科技HC6800-EM3使用操作手册
- 21.69 MB | 3次下载 | 2 积分
- 2PCB板EMC/EMI的设计技巧
- 0.20 MB | 3次下载 | 免费
- 32024PMIC市场洞察
- 2.23 MB | 2次下载 | 免费
- 4MSP430™闪存器件引导加载程序(BSL)
- 1.45MB | 2次下载 | 免费
- 5PL4807单节锂离子电池充电器中文手册
- 1.36 MB | 2次下载 | 免费
- 6LTH7充电电路和锂电池升压5V输出电路原理图
- 0.04 MB | 1次下载 | 免费
- 7HT2120两节锂电池保护板电路
- 0.22 MB | 1次下载 | 免费
- 8BQ77207EVM用户指南
- 865.23KB | 1次下载 | 免费
本月
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 151次下载 | 1 积分
- 2PCB布线和布局电路设计规则
- 0.40 MB | 33次下载 | 免费
- 3智能门锁原理图
- 0.39 MB | 13次下载 | 免费
- 4GB/T4706.1-2024 家用和类似用途电器的安全第1部分:通用要求
- 7.43 MB | 11次下载 | 1 积分
- 5JESD79-5C_v1.30-2024 内存技术规范
- 2.71 MB | 10次下载 | 免费
- 6elmo直线电机驱动调试细则
- 4.76 MB | 9次下载 | 6 积分
- 7WIFI智能音箱原理图完整版
- 0.09 MB | 7次下载 | 10 积分
- 8PC1013三合一快充数据线充电芯片介绍
- 1.03 MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935115次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183332次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73806次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多