电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
创作
电子发烧友网>电子资料下载>电子资料>使用人工智能识别您的视觉内容

使用人工智能识别您的视觉内容

2023-07-03 | zip | 0.17 MB | 次下载 | 免费

资料介绍

描述

介绍

我最近在 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. 第一步是取下脚垫。每个脚垫都隐藏着一颗螺丝。使用内六角扳手松开并取下它们。

 
poYBAGOYPkqAQbLkAAE2mX5JGcg148.png
 

2. 打开后,您将看到树莓派不幸的是,必须从底层板上的柱子上取下 Pi,以露出 PiCamera 带状电缆连接器。

 
pYYBAGOYPlGAalDFAAIS5dHp9zM476.jpg
 

3. Raspberry Pi 已从柱子上取下,带状电缆连接器暴露在外。

 
pYYBAGOY1ECAWtOhAAIVL5e0UeI552.jpg
 

4. 现在将带状电缆穿过机箱顶部的线性通风口。

 
poYBAGOY1ESAFwjFAAHcLyFN_WM430.png
 

5. 设置的最后一部分是为相机配备一个漂亮的外壳。在thingiverse上有很多你可以选择的。我已经尝试了好几次,到目前为止,我最喜欢的是migrassi 的PiCamera 2 Axis Rotating Holder,在下面可以看到它坐在 Mycroft 的顶部。我使用 GizmoDorks HIPS 3mm 在我的 lulzbot mini 上打印了它。支架和相机插槽需要一些打磨才能正确安装。将相机插入插槽时要小心。当我打印它时,它很合身!

 
poYBAGOY1FuAImY-AAosVMmJMRE399.jpg
手术成功,病人活了下来!
 

将相机连接并放置在其外壳中后,请确保将您的 pi 配置为使用相机:

sudo raspi-config 

然后,您将获得以下菜单并按下选项 5 接口选项。

 
poYBAGOY1F2AT2G5AADqEUmpCN0026.png
 

然后从那里选择并按照提示进行操作。建议在此之后重新启动。

 
pYYBAGOY1GGAAkbXAADi6oGej_k107.png
 

安装 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 有一个模型浏览器,可让您查看图像、概念、标签、值等。这是自定义模型的关键工具。

 
pYYBAGOY1GSAHT33AAG-igzoesg077.jpg
Clarifai 模型浏览器视图
 

通过查看这些图像以及使用 testModel.py 脚本返回给我的值。我可以看到,我没有在岩石图像上训练它足够“手掌”,并且模型与岩石和纸张最“混淆”。所以我使用我的 trainModel.py 脚本用 5 个以上的岩石和图像以及 4 个以上的纸质图像来训练模型。在此之后,使用相同的序列,clarfiai 定制模型得分 90%!现在我担心这个模型正在学习我的手,所以我让我儿子浏览了同样的 20 张图像。. .得分75%!怀疑得到证实。

使用这些知识,在未来,我将把模型训练给更多的人,来自不同的人。此外,我并没有真正正确使用返回的分数。返回的一些分数彼此非常接近。我们可以利用这一事实让 Mycroft 要求再进行一轮,而不是回答错误或对冲并要求确认。我们还可以使用一种训练机制,让 mycroft 定期要求确认,尤其是在置信度值接近时。

借助慷慨的免费开发人员选项以及对图像和操作的较大允许限制,我们可以轻松地改进这个模型。事实上,仅用 10 张图片就可以看到模型从 80% 提高到 90%,这向我展示了我们可以多快将其打造为可靠且通用的模型。

技能

一旦我确信我的自定义 clarifai 模型运行良好,我就准备将其纳入一项技能中。有关创建 Mycroft 技能的一般信息,请参阅。我将重点介绍我在这里找到的一些重要方面。

Mycroft 技能位于 /opt/mycroft/skills 文件夹中。此文件夹中的每个文件夹都代表一项技能。

 
poYBAGOY1GaAIYH8AADdn2YkgvI800.png
 

该技能的目录结构比较简单。主要操作发生在__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)

 

 

 

 

 

 

 

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1普中科技HC6800-EM3使用操作手册
  2. 21.69 MB   |  3次下载  |  2 积分
  3. 2PCB板EMC/EMI的设计技巧
  4. 0.20 MB   |  3次下载  |  免费
  5. 32024PMIC市场洞察
  6. 2.23 MB   |  2次下载  |  免费
  7. 4MSP430™闪存器件引导加载程序(BSL)
  8. 1.45MB   |  2次下载  |  免费
  9. 5PL4807单节锂离子电池充电器中文手册
  10. 1.36 MB   |  2次下载  |  免费
  11. 6LTH7充电电路和锂电池升压5V输出电路原理图
  12. 0.04 MB   |  1次下载  |  免费
  13. 7HT2120两节锂电池保护板电路
  14. 0.22 MB   |  1次下载  |  免费
  15. 8BQ77207EVM用户指南
  16. 865.23KB   |  1次下载  |  免费

本月

  1. 1XL4015+LM358恒压恒流电路图
  2. 0.38 MB   |  151次下载  |  1 积分
  3. 2PCB布线和布局电路设计规则
  4. 0.40 MB   |  33次下载  |  免费
  5. 3智能门锁原理图
  6. 0.39 MB   |  13次下载  |  免费
  7. 4GB/T4706.1-2024 家用和类似用途电器的安全第1部分:通用要求
  8. 7.43 MB   |  11次下载  |  1 积分
  9. 5JESD79-5C_v1.30-2024 内存技术规范
  10. 2.71 MB   |  10次下载  |  免费
  11. 6elmo直线电机驱动调试细则
  12. 4.76 MB   |  9次下载  |  6 积分
  13. 7WIFI智能音箱原理图完整版
  14. 0.09 MB   |  7次下载  |  10 积分
  15. 8PC1013三合一快充数据线充电芯片介绍
  16. 1.03 MB   |  7次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935115次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183332次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73806次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65985次下载  |  10 积分