无代码边缘AI工具
我们很高兴为您带来基于Jetson Nano构建的reComputer上的全新体验,用于快速简便的物体识别。
只需几个简单的命令,就可以下载和部署环境,从实时屏幕监控、识别和输出结果的过程不能比三个块更简单。
演示视频
仓库安全演示
农场守卫演示
前期准备
在这个示例中,我们将介绍如何在全新的NVIDIA Jetson系统下下载和安装所需的内容,然后打开边缘AI工具并使用实时摄像头执行物体检测。以下是步骤概览。

- 下载和部署
- 放置块
- 显示结果
硬件要求
在开始之前,您需要准备以下硬件。
硬件图片 | 硬件名称 |
---|---|
![]() | reComputer J1010 with Jetson Nano module 或 reComputer J1020 with Jetson Nano module |
![]() | Logitech C270 HD Webcam 或 其他Jetson支持的V4L2 USB摄像头 |
!!!注意 此示例仅在基于 Jetson Nano 构建的 reComputer 上运行。请注意,基于 Jetson Xavier NX 构建的 reComputer 目前不支持运行,但将来会支持。
软件要求
在开始之前,请确保您的设备已刷入 JetPack 4.6.1。如果您想要使用 JetPack 4.6.1 重新刷写 Jetson Nano eMMC,请参考这里。
您可以通过在终端中输入以下命令来检查已安装的 JetPack 版本:
cat /etc/nv_tegra_release

注意: R32.7.1 对应 JetPack 4.6.1
入门指南
一旦硬件和软件按照上述描述准备就绪,让我们继续体验 Edge AI Tool。在此示例中,请根据需要连接您的显示器、鼠标或键盘,您也可以通过 SSH 或 VNC 远程控制您的 NVIDIA Jetson。
步骤 1. 下载和部署
在 NVIDIA Jetson 中打开命令行窗口,输入以下命令将所需文件下载到 Jetson。
git clone https://github.com/Seeed-Studio/node-red-contrib-ml.git
Once the download is complete, run the following command to start the required docker.
cd node-red-contrib-ml
sudo ./docker-ubuntu.sh
整个安装和启动过程大约需要7到9分钟。
步骤2. 放置积木块
安装完成后,使用NVIDIA Jetson系统自带的Google Chrome浏览器输入以下URL来访问操作界面。
127.0.0.1:1880
您也可以在地址栏中输入IP地址加端口号(1880)来访问操作页面。

我们可以在下图中看到Edge AI工具操作的分布。

-
块区域: 此区域包含许多可供用户操作的块。
-
编程区域: 此区域是用户的编程区域。用户可以将块从块区域拖放到编程区域来完成程序。
-
设置区域: 最右侧是设置区域。在这里我们可以看到编程区域的流程,并可以在此区域完成一些必要的设置或对块等进行设置操作。
在块区域中,有一个名为seeed recomputer的部分,我们将重点关注这三个块的使用。

-
video input: 此块用于从摄像头输入获取视频流。此块可以设置为选择网络摄像头或本地V4L2 USB摄像头等。
-
detection: 此块用于选择要识别的模型。输入的视频流将使用您选择的模型进行识别。目前在此版本下只能使用COCO数据集。
-
video view: 此块用于在屏幕上输出处理后的视频流。
接下来我们可以看一下块的组成。以构建块video input为例。

在此块的左侧有一个方形蓝色区域。当此区域隐藏时,表示视频流输入已关闭。

当此区域显示时,表示视频流输入已开启。

同样,video view块在右侧也有这样的方形块。隐藏会关闭视频流输出的显示,反之亦然。

如果块的右上角有蓝点,这是提醒该块已被编辑但尚未部署。顺便说一下,整个项目运行需要用块编程并部署后才能显示结果。

块右侧的灰色方块是块连接的地方。在这里左键单击并将其拖动到下一个块的左侧连接处,然后您可以连接两个块以形成程序流。

需要注意的是,程序流按照从左到右的顺序执行,左侧连接只能连接到右侧连接。
如果块的左侧没有连接,则应将其用作程序流的起始节点。如果块的右侧没有连接,则应将其用作整个程序流的结束节点。
像object detection这样有两个连接的块,意味着可以向该块输出几种不同的内容。然后可以同时输出视频流和日志。

块的使用也非常简单快捷。您可以通过长按鼠标左键拖动要使用的块,然后将其拖动到主屏幕的编程区域。

基于上述对块的描述,我们可以设计一个简单的块程序如下。

上面显示的程序是从摄像头获取输入视频流,然后使用模型检测来输入识别对象的结果。
步骤3. 显示结果
放置块后,我们仍需要对块进行简单配置才能使用。如果要设置特定块,可以双击它,相应的设置框将在右侧弹出。
让我们首先设置video input块。

-
Device type: 在这里您可以设置摄像头的类型,目前支持两种类型的摄像头:网络摄像头和本地摄像头。
-
Video: 在这里选择您的摄像头。如果这里没有可用的摄像头,请仔细检查摄像头是否受支持或是否连接成功。
-
URL: 如果您选择了网络摄像头,Video字段将变为URL。请在这里填写网络摄像头的输入源。

- Resolution: 在这里选择您的摄像头分辨率。选择错误的分辨率可能导致运行时错误。
对于object detection块,设置如下。

- Model name: 在这里您选择用于对象识别的模型名称,目前仅支持COCO数据集。
!!!Note COCO是一个大规模的对象检测、分割和标注数据集。COCO具有以下几个特点:
- 对象分割
- 上下文识别
- 超像素物体分割
- 330K图像(>200K已标记)
- 150万个对象实例
- 80个对象类别
- 91个物体类别
- 每张图像5个标题
- 250,000个带关键点的人物

完成后,点击界面右上角的部署按钮,程序流将开始运行。

如果一切正常,您可以看到视频流识别的对象被框圈起来并给出置信度值。

深入操作
在前面的章节中,我们体验了 Edge AI Tool 程序的最简单形式。在本节中,我们将带您了解 Edge AI Tool 的更多扩展功能。
块下载
除了块部分中的块之外,我们还可以根据需要下载更多块来完成更复杂的项目。
在右侧的设置区域中,有一个更多选项按钮,我们选择管理调色板。

在弹出页面中,您可以看到已安装的块,选择安装来下载更多块。这里,我们以邮箱块为例。

安装后,可以在块部分的底部看到新安装的块。

导入其他项目
有时候,也许您想要分享您有趣的项目供他人体验。或者也许是别人的项目您想要自己使用,那么您可以参考以下方法。
在右侧的设置区域中,有一个更多选项按钮,我们选择导入。

接下来我们可以在弹出窗口中粘贴我们已分享或获得的代码。

在这个例子中,我们将与您分享一个精彩的项目,该项目专注于通过摄像头实时检测是否有人进入环境的能力,如果检测到人员则发送电子邮件通知。
[
{
"id": "7963f97f362cdfc6",
"type": "tab",
"label": "warning email",
"disabled": false,
"info": "",
"env": []
},
{
"id": "41a8f267df4eb722",
"type": "video input",
"z": "7963f97f362cdfc6",
"name": "",
"deviceType": "rtsp",
"rtsp": "",
"local": "video0",
"resolution": "2560",
"frequency": "60",
"senderr": true,
"active": false,
"x": 160,
"y": 140,
"wires": [
[
"c5fef75b0ab418c6"
]
]
},
{
"id": "c5fef75b0ab418c6",
"type": "detection",
"z": "7963f97f362cdfc6",
"name": "",
"modelName": "coco_dataset",
"showResult": true,
"senderr": true,
"x": 380,
"y": 200,
"wires": [
[
"40523cc8b61cfcc9"
],
[
"689c67f6610be9e2"
]
]
},
{
"id": "40523cc8b61cfcc9",
"type": "video view",
"z": "7963f97f362cdfc6",
"name": "",
"width": 640,
"data": "payload",
"dataType": "msg",
"thumbnail": false,
"active": false,
"pass": false,
"outputs": 0,
"x": 650,
"y": 140,
"wires": []
},
{
"id": "689c67f6610be9e2",
"type": "switch",
"z": "7963f97f362cdfc6",
"name": "person intrusion detected",
"property": "payload.labels",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "person",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 410,
"y": 540,
"wires": [
[
"40f6ca0fbb322dd5"
]
]
},
{
"id": "40f6ca0fbb322dd5",
"type": "e-mail",
"z": "7963f97f362cdfc6",
"server": "",
"port": "465",
"secure": true,
"tls": true,
"name": "",
"dname": "warning email",
"credentials": {
"userid": "",
"password": ""
},
"x": 720,
"y": 620,
"wires": []
},
{
"id": "80a51065a9ee835e",
"type": "ui_spacer",
"z": "7963f97f362cdfc6",
"name": "spacer",
"group": "529bf2dedebe9911",
"order": 2,
"width": 12,
"height": 1
},
{
"id": "529bf2dedebe9911",
"type": "ui_group",
"name": "Default",
"tab": "ad4ccf9922566f44",
"order": 1,
"disp": true,
"width": 20,
"collapse": false,
"className": ""
},
{
"id": "ad4ccf9922566f44",
"type": "ui_tab",
"name": "Home",
"icon": "dashboard",
"disabled": false,
"hidden": false
}
]
请注意,代码不能直接使用,您需要在 "rtsp": "",
中填入您的网络摄像头的输入源。在 "server": "",
中填入您的邮件服务器地址,并在 "credentials": { "userid": "", "password": "" },
中填入您的用户名和密码。
当一切准备就绪后,程序块开始工作,并在检测到活动时向您推送邮件。

在这个项目中,使用了两个新的程序块:switch 和 email。
switch 构建块是根据您设置的判断信息来决定程序走向的地方。例如,在这个程序中,我将 switch 块命名为 person intrusion detected,并填入了属性 payload.labels。payload.labels 是前一个块 object detection 的键值。当属性值等于 person 时,执行 switch 后连接的块。

email 块的设置相对简单一些,您只需要根据您的邮箱支持的协议,填入您想要接收消息的邮件地址和服务器地址。

当然,如果您直接复制代码并完成代码更改,您可以不对块进行进一步的更改。如果您更习惯使用图形界面,您也可以在块设置中完成这些元素的配置。
故障排除
如果 docker 启动不成功,以及如果块中没有 seed recomputer,我应该怎么办?
我们可以使用以下命令关闭 docker 并重新启动它。
cd node-red-contrib-ml/
sudo docker-compose --file docker-compose.yaml down
sudo docker-compose --file docker-compose.yaml up
如果我无法观察到结果或调试中出现错误,我应该怎么办?
请使用以下命令查看docker安装是否正确。您应该看到图中显示的三个docker。如果其中任何一个缺失,请返回入门指南中的第一步并重新安装docker。
sudo docker image ls

如果安装与图像匹配,则使用以下命令检查已启动的 docker 的运行状态。
sudo docker ps

如果没有如上图所示启动的 docker,请尝试重启 docker 或检查设备的型号和系统版本是否符合要求。
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。