一、概述

在传单和网站之间的联合项目中(传单上的产品可以在线购买或预订),通过拍摄传单的产品部分并将其发布到 Line-bot,一个指向相关产品页面的链接将创建在线站点,以便于购买。

2.它是如何工作的

3. 生产动机

谷歌的可教机器我了解了这个机器学习系统,所以我想知道我是否可以将它应用到我的工作中。可教机器我试图从设置和解决问题开始。

这是一张将Teachable Machine(以下简称T.M.)的学习功能纵向写成我的作品横向写成的表格,我检查了是否有可以使用它的地方。

功能/工作 传单 目录 数值性能 邮件处理 日常工作
图片
声音的
暂停

也在这里发布详细信息

传单和目录中有很多产品图片,所以我想知道我能做些什么。
我认为最好的模型是通过发送产品图像来返回某种结果。
我想出了两种模式。
1.一种工具,可让您通过从传单中学习产品图像并从传单发送产品图像来获取详细的产品信息。
2.通过学习传单的产品图片并发送传单的产品图片,跳转到网站上产品页面的工具。
至于2.,最近,甚至某家R公司在目录上放了一个二维码,有时会指向网站。 チラシを撮って、オンラインサイトに飛びます!
但是,如果这样做,二维码会在纸上排成一排,设计会有点难看。
突然,我环顾四周,一张链接到某T公司网站的传单引起了我的注意。
此刻,问题解决了。不使用二维码也可以做同样的事情。

二维码是 DENSO WAVE INCORPORATED 的注册商标。

4、生产要点

一、本次使用的服务工具

   可教机器:谷歌提供的机器学习服务
   节点红:IBM开发的可视化编程开发工具
   经六: 用于运行 Node-Red 的免费云服务 (Paas)
   SSS API:GoogleSheets 表格可以转换为 API 并进行搜索。不允许写作。

2.非标准Node-Red节点

完成后继续使用

  node-red-contrib-teachable-machine:T.M.とデータをやり取りするためのノード
  node-red-contrib-line-messaging-api:Line-botとして機能させるためのノード

制作过程中需要,完成后不需要

  node-red-contrib-image-output:製作中、入力した画像をモニタするために使用。
  node-red-contrib-browser-utils:製作中PCのWEBカメラの画像を入力に使うためのノード

我尝试过但最终没有使用的东西

  node-red-contrib-line-image-api:Lineからの画像を取り込むために試したノード
  node-red-contrib-publicgooglesheets:GoogleSheetsに読み書きするノード。VlookUP関数的な使用ができない。

本次使用的所有服务工具目前均免费提供。
有很多东西需要提前注册,但是这次我就不讲怎么注册了。

3. Node-Red的概念图和概述

这是一个显示数据流的概念图。
チラシを撮って、オンラインサイトに飛びます!
下面是放置在 Node-Red 中的节点的概述。
有很多节点排成一列,但完成后只需要有编号标注的节点进行操作。所有以浅绿色msg开头的节点都是用来检查创建过程中流的是什么消息,完成后可以删除。
チラシを撮って、オンラインサイトに飛びます!

4.每个节点的设置

内容将按照上图整体图中气球中的数字顺序进行说明。

①网络钩子

设定的内容仅此而已。
チラシを撮って、オンラインサイトに飛びます!
然而,我花了很长时间才达到这一点。
在这里,如概念图所示,您应该为 Line 发送的消息设置第一个接收端口。

配置 webhook 节点就像指定 URL 的路径部分(主机名后的斜杠转换)一样简单。报价来源

我不知道写的是什么。
我浪费时间试图进入页面编辑节点红色的最后几列,
经过大量测试,我发现一切正常。
重要的是将您决定的文件夹的名称(以斜杠开头)设置到 Line 一侧,以便您可以从 Line 接收数据。
该名称是故意设置的,以表明任何事情都是可以接受的。

接下来,在 Line 端设置刚刚确定的文件夹的名称(路径)。
打开 Line Developers 站点上的 Messaging API 设置。
在设置项中的 Webhook URL 中设置。
チラシを撮って、オンラインサイトに飛びます!
黑色方块是您的 heroku 帐户 ID。
查看正在编辑的 Node-Red URL,它看起来像这样。

https://node-red-■■■■.herokuapp.com/red/#flow/123456789012345

删除红色后加上前一个Path的字符串后的地址就是Line的接收端口。

②http请求

这里也很困难,但很重要。在这里,从 Line 发送的消息内容来看,
指定存储图像的 URL 并进行设置以接收图像数据。

在设置 Node-Red 之前,请在 Line 公众号管理器设置中查看您的帐户设置的详细信息。
チラシを撮って、オンラインサイトに飛びます!
在制作机器人时,您倾向于将照片和视频的接收设置为“不接收”,
这是因为如果我这次不能发送和接收图像,我就有麻烦了。

http requestの設定内容です。
チラシを撮って、オンラインサイトに飛びます!

・方法:这次是从Line端请求图像数据,所以是“GET”。
・URL:内容如下。

https://api-data.line.me/v2/bot/message/{{{line.event.message.id}}}/content

Line 消息似乎不直接发送图像等大数据,而是嵌入保存数据的 ID。这里,我们获取URL地址作为图片的位置,获取数据,将数据发送给下一个T.M.

图像位置的 URL 是: (单击链接跳转到 LineDeve 手册。)

 https://api-data.line.me/v2/bot/message/{messageId}/content

那么,表示图片的[messageId]在哪里呢?
线索隐藏在第一个 Debug 节点吐出到调试窗口中的内容中。
调试节点设置是
チラシを撮って、オンラインサイトに飛びます!
这就是真正被喷出的信息。
チラシを撮って、オンラインサイトに飛びます!
我通过向下钻取找到了 id。但是,由于这个数字只有一次,所以通过点击复制路径部分可以看到这个id存储在[line.event.message.id]中。
替换 URL 中指示图像位置的 {messageId} 部分的字符串是应该在 URL 中设置的内容。

・Payload:指数据的主体,通常包含消息的主体等,但这次,如上图所示,必须是“(媒体)”图像或视频。只是一个除法,“忽略”它。

・身份验证:为了让 T.M. 从 Line 接收图像数据,需要进行身份验证。
这就是创建 Line-bot 时所承诺的通道访问令牌发挥作用的地方。
使用令牌的常见身份验证名为“Bearer Authentication”,并从 Line-Developers 中的消息传递 API 设置中复制并粘贴通道访问令牌。
チラシを撮って、オンラインサイトに飛びます!

・输出格式:指定发送到 T.M. 的图像格式。这是一个二进制缓冲区。

③可示教机

最后,我们将图像数据发送给 T.M.
为了解释起见,最后在这里可教机器主体部分我会接触,但其实我先准备了一个学习模型。
在将学习模型缩小到三个并发现它们能够识别和区分图像之后,我们开始着手将它们变成 Line-bots。说实话,一开始我还怀疑传单小而复杂,我可能无法区分它们。我做的第一个模型是用 3 大帧数据训练的,几乎可以 100% 识别,于是开始制作。完成后,我们将学习模型增加到21个项目。
使用 T.M. 相当简单。训练模型的方法看起来很深奥,但我想你可以立即理解如何使用它。
跳转到链接的 T.M. 并选择“试用”→“来自新项目的图像项目”。
在此示例中,我们将产品的目录号添加到 Class 并为每个产品注册 5 到 6 个传单图像。
需要注意的一点是尽可能将产品放置在图像的中心。尽可能靠近对焦拍摄的图像。我试图包括稍微远离拍摄的图像,拍摄的图像稍微向左或向右倾斜。

实际注册和训练的屏幕
チラシを撮って、オンラインサイトに飛びます!
这次,我们从某公司T的宣传单的WEB链接项目中选择了21个项目。
然后单击“导出模型”并选择“上传模型”。
稍等片刻,将显示“共享链接”,因此将 URL 设置为节点。 (底部图像绿框)
チラシを撮って、オンラインサイトに飛びます!
模式:在线
输出:这一次,我们只需要返回一个最有可能的候选,所以选择“Best predition”。

④模板

在这里,我将准备 T.M. 的回复,以从以下 Google 表格数据中提取信息。
在调试窗口中检查 (3) 中来自 T.M. 的消息内容。
チラシを撮って、オンラインサイトに飛びます!
内容是一个数组,包含目录号 A013,精度为 0.66038...
这次只需要目录号,所以复制路径并获取“payload[0].class”中的数据。
仅在下面的红线中设置模板的内容。这会将消息的正文更改为仅目录号。
チラシを撮って、オンラインサイトに飛びます!

⑤http请求

在这里,预先在 Google Sheets 中创建一个目录号和网站 URL 表,如下所示,并使用 T.M. 提供的目录号。
チラシを撮って、オンラインサイトに飛びます!

这是我在搜索 Node-Red 的外部节点以从 GoogleSheets 提取数据时遇到的第一件事。
チラシを撮って、オンラインサイトに飛びます!
但是,只提供了四个功能:读取/写入单元格值,添加/删除行。如果您准备使用 JavaScript 处理它,这很好,但我希望它能够轻松返回搜索结果,就像 Excel 中的 VlookUP 函数一样。
经过一番研究,我发现SSS API曾是。
在日本网站上,您也可以只获取一个数据。(但是,由于无法在 Sheet 一侧写入信息,因此不适合某些用途。)

https://api.sssapi.app/<"SSS API_ID">/<"sheetの一番左の列の値">

应该设置为http请求节点,但是不知道怎么把最后一个<"value in the left column of the sheet">,
浪费了我的时间。毕竟,有人告诉我,但我能够通过一种简单的方法将 Payload 包装在三重 {} 中并将其添加到 URL 中来解决它。
チラシを撮って、オンラインサイトに飛びます!
绿框的内容是https://api.sssapi.app/<"SSS API_ID">/{{{payload}}}。

⑥拆分

如果来自 SSS API 的响应只是所需工作表 B 列中的 URL,那会很容易,但如下图所示,用于搜索的目录号和 URL 作为一行数据返回。
チラシを撮って、オンラインサイトに飛びます!
因此,它用于分隔目录号和 URL。
没有设置,只有默认设置。
チラシを撮って、オンラインサイトに飛びます!
这会将输出更改为:它分为两种。
チラシを撮って、オンラインサイトに飛びます!

⑦ 开关

这里,被分成两个的消息根据内容被分成三个。
第一个是正确返回URL时的数据:当包含“https”这个词时
二是产品不在WEB上处理时的数据:当包含“WEB”字样时
第三个是不再需要的目录号数据:杂项
チラシを撮って、オンラインサイトに飛びます!

⑧模板

在这里,我们在包含 URL 时塑造回复消息。
チラシを撮って、オンラインサイトに飛びます!

⑨模板

这里,我打算在没有WEB处理的时候形成一个回复消息,
这是一个没有必要的节点,因为可以保持流动的数据保持原样。
チラシを撮って、オンラインサイトに飛びます!

顺便说一句,第三个目录号的数据显示在调试窗口中,因为分支后不需要,但它是与主线的背离。

⑩回复留言

终于结束了。这里是发送最终回复消息到线路端的设置。
对于个人设置,只需从 Line Developers 站点中提取并粘贴您自己的帐户值即可。
Secret:频道基本设置中的“Channel Secret”值。
AccessToken:粘贴在 Messaging API 设置中找到的“Channel Access Token”值。
チラシを撮って、オンラインサイトに飛びます!

这样就完成了。谢谢你的辛劳工作。我真的很累((+_+))

##5.印象与反思
Node-Red 是一种初学者很难接近的机制,但我认为它是学习 JavaScript 的一个非常强大的工具。我觉得我在如何处理无意义的信息、如何提出论点等方面有很多怪癖。还有一个反弹,这次我打算写关于如何尽可能详细地写它。
我觉得拍传单和目录,区分产品和提供某种服务的模式可以在实践中使用,所以当我在我部门的一次会议上介绍时,我发送了第一张图片。我担心我不会在区分时犯错误。
事实上,根据产品的不同,学习模型很有可能被识别为不同的产品。完成后,注册产品的数量突然从 3 项增加到 21 项,因此混杂了一些准确率不高的数据。可能的原因是首先注册的图像数量少到每件物品只有 5 到 6 张,而右手拿着传单,左手拿着智能手机拍摄的图像是一个粗略的摇晃图像,以及我用 的照明拍摄的室内,但我忽略了光线照射的方式有很大的不同。
此外,T.M. 返回准确度,但这次它忽略了准确度,只选择最高的那个。本来,如果是60%以下,回个消息让你再拍一张,
应该回应。当输入图像以外的消息时,我也会进行一些处理。
另外,如果一张传单中有多个产品,比如不同的颜色,我们目前创建一个列表,暂时退回产品目录号较低的产品,但也有一个交互过程来确认使用哪个产品我认为是是必要的。
再次,我想花一些时间研究一下如何让数据学习和它的准确性,然后判断它是否实用。
训练图像实际上是一项非常艰巨的任务。当涉及到增加样本图像的数量时,它变得更加困难。不开玩笑,我开始担心是否需要工具来简化学习过程。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308626613.html

相关文章: