Skip to main content

将您自己的 AI 模型训练并部署到 Grove - Vision AI

可升级为工业传感器

通过 SenseCAP S2110 控制器S2100 数据记录器,您可以轻松将 Grove 转变为 LoRaWAN® 传感器。Seeed 不仅帮助您完成原型设计,还为您提供通过 SenseCAP 系列坚固的工业传感器扩展项目的可能性。

IP66 外壳、蓝牙配置、与全球 LoRaWAN® 网络的兼容性、内置 19 Ah 电池以及强大的 APP 支持,使得 SenseCAP S210x 成为工业应用的最佳选择。该系列包括土壤湿度、空气温湿度、光强、CO2、EC 传感器以及一款 8 合 1 气象站。尝试最新的 SenseCAP S210x,助力您的下一个成功的工业项目。

SenseCAP 工业传感器
S2100
数据记录器
S2101
空气温湿度
S2102
光强
S2103
空气温湿度 & CO2
S2104
土壤湿度 & 温度
S2105
土壤湿度 & 温度 & EC
S2110
LoRaWAN® 控制器
S2120
8 合 1 气象站

概述

在本教程中,我们将教您如何为您的特定应用训练自己的 AI 模型,并轻松将其部署到 Grove - Vision AI 模块。让我们开始吧!

硬件介绍

在整个教程中,我们将主要使用 Grove - Vision AI 模块。因此,首先让我们熟悉一下这款硬件。

Grove - Vision AI 模块

Grove Vision AI 模块 是一款拇指大小的 AI 摄像头,定制传感器已预装用于人员检测的机器学习算法以及其他定制模型。它可以在几分钟内轻松部署和显示,工作于超低功耗模式,并提供两种信号传输方式以及多个板载模块,这些特性使其成为入门 AI 驱动摄像头的完美选择。

软件介绍

在本教程中,我们将使用以下软件技术:

  • Roboflow - 用于标注
  • YOLOv5 - 用于训练
  • TensorFlow Lite - 用于推理

什么是 Roboflow?

Roboflow 是一个基于在线的标注工具。该工具允许您轻松标注所有图像,对这些图像进行进一步处理,并将标注后的数据集导出为不同格式,例如 YOLOv5 PyTorch、Pascal VOC 等!Roboflow 还提供了现成的公共数据集供用户使用。

什么是 YOLOv5?

YOLO 是 “You Only Look Once”(你只需看一次)的缩写。它是一种实时检测和识别图像中各种对象的算法。Ultralytics YOLOv5 是基于 PyTorch 框架的 YOLO 版本。

什么是 TensorFlow Lite?

TensorFlow Lite 是一个开源、产品级、跨平台的深度学习框架,它将 TensorFlow 中的预训练模型转换为一种特殊格式,可以针对速度或存储进行优化。这种特殊格式的模型可以部署在边缘设备上,例如使用 Android 或 iOS 的手机,或者基于 Linux 的嵌入式设备(如 Raspberry Pi 或微控制器),以在边缘进行推理。

教程结构

本教程将分为三个主要部分:

  1. 使用公共数据集训练自己的 AI 模型
  2. 使用自己的数据集训练自己的 AI 模型
  3. 将训练好的 AI 模型部署到 Grove - Vision AI 模块

第一部分是构建自己的 AI 模型最快捷的方法,步骤最少。第二部分需要一些时间和精力来构建自己的 AI 模型,但这将非常值得学习。第三部分关于部署 AI 模型,可以在完成第一或第二部分后进行。

因此,有两种方式可以遵循本教程:

  1. 先完成 第一部分,然后完成 第三部分 - 快速路径
  2. 先完成 第二部分,然后完成 第三部分 - 慢速路径

然而,我们建议首先遵循第一种方式,然后再转向第二种方式。

1. 使用公共数据集训练您的 AI 模型

对象检测项目的第一步是获取用于训练的数据。您可以下载公开可用的数据集,也可以创建自己的数据集!

那么,开始对象检测最快捷、最简单的方法是什么呢?使用公共数据集可以节省大量时间,否则您需要自己收集数据并进行标注。这些公共数据集已经预先标注好,让您有更多时间专注于您的 AI 视觉应用。

硬件准备

  • Grove - Vision AI 模块
  • USB Type-C 数据线
  • 具有互联网连接的 Windows/ Linux/ Mac 设备

软件准备

  • 无需准备额外的软件

使用公开可用的标注数据集

您可以下载许多公开可用的数据集,例如 COCO 数据集Pascal VOC 数据集 等。Roboflow Universe 是一个推荐的平台,它提供了广泛的数据集,并且拥有 90,000+ 数据集和 66+ 百万张图片,可用于构建计算机视觉模型。此外,您还可以直接在 Google 上搜索 开源数据集,从各种可用的数据集中进行选择。

  • 步骤 1. 访问 此链接,获取 Roboflow Universe 上公开的 Apple Detection 数据集

  • 步骤 2. 点击 Create Account 创建一个 Roboflow 账户

  • 步骤 3. 点击 Download,选择 YOLO v5 PyTorch 作为 Format,点击 show download code,然后点击 Continue

这将生成一个代码片段,我们稍后将在 Google Colab 训练中使用它。因此,请将此窗口保持打开状态。

使用 YOLOv5 在 Google Colab 上进行训练

选择公共数据集后,我们需要对数据集进行训练。这里我们使用 Google Colaboratory 环境在云端进行训练。此外,我们在 Colab 中使用 Roboflow API 来轻松下载数据集。

点击 此处 打开一个已准备好的 Google Colab 工作空间,按照工作空间中提到的步骤逐一运行代码单元。

注意: 在 Google Colab 的代码单元中 步骤 4 下,您可以直接复制上述 Roboflow 提供的代码片段。

它将引导您完成以下内容:

  • 设置训练环境
  • 下载数据集
  • 执行训练
  • 下载训练好的模型

对于包含 699 张图片的苹果检测数据集,在运行 NVIDIA Tesla T4 GPU(16GB GPU 内存)的 Google Colab 上,训练过程大约耗时 7 分钟。

如果您按照上述 Colab 项目操作,您会发现可以同时加载 4 个模型到设备中。然而,请注意一次只能加载一个模型。这可以由用户指定,稍后将在本 Wiki 中进行解释。

部署和推理

如果您想直接跳到 第 3 节,了解如何将训练好的 AI 模型部署到 Grove - Vision AI 模块并执行推理,点击这里

2. 使用自己的数据集训练专属 AI 模型

如果您希望构建特定的目标检测项目,而公共数据集中没有您想要检测的目标,那么您可能需要构建自己的数据集。在录制自己的数据集时,您需要确保覆盖目标的所有角度(360度),并将目标放置在不同的环境、不同的光照条件和不同的天气条件下。录制完自己的数据集后,您还需要对数据集中的图像进行标注。本节将涵盖所有这些步骤。

尽管有多种收集数据的方法,例如使用手机摄像头,但最好的方法是使用 Grove - Vision AI 模块内置的摄像头。这是因为在 Grove - Vision AI 模块上进行推理时,颜色、图像质量和其他细节会保持一致,从而使整体检测更加准确。

使用 Roboflow 标注数据集

如果您使用自己的数据集,则需要对数据集中的所有图像进行标注。标注的意思是简单地在我们想要检测的每个目标周围绘制矩形框并为其分配标签。我们将解释如何使用 Roboflow 来完成这一过程。

Roboflow 是一个基于在线的标注工具。在这里,我们可以直接将录制的视频导入 Roboflow,并将其导出为一系列图像。这个工具非常方便,因为它可以帮助我们将数据集分配为“训练集、验证集和测试集”。此外,该工具允许我们在标注图像后对其进行进一步处理。此外,它可以轻松地将标注好的数据集导出为 YOLOV5 PyTorch 格式,这正是我们需要的!

在本教程中,我们将使用包含苹果图像的数据集,以便稍后可以检测苹果并进行计数。

  • 步骤 1. 点击 这里 注册一个 Roboflow 账户

  • 步骤 2. 点击 Create New Project 开始我们的项目

  • 步骤 3. 填写 Project Name,保持 License (CC BY 4.0)Project type (Object Detection (Bounding Box)) 为默认值。在 What will your model predict? 栏目下,填写一个标注组名称。例如,在我们的案例中,我们选择 apples。这个名称应该突出您的数据集中的所有类别。最后,点击 Create Public Project
  • 步骤 4. 拖放您使用 Grove - Vision AI 模块捕获的图像
  • 步骤 5. 图像处理完成后,点击 Finish Uploading。耐心等待图像上传完成。
  • 步骤 6. 图像上传完成后,点击 Assign Images
  • 步骤 7. 选择一张图像,在苹果周围绘制一个矩形框,选择标签为 apple,然后按 ENTER
  • 步骤 8. 对剩余的苹果重复相同操作

注意: 尽量标注图像中看到的所有苹果。如果只有部分苹果可见,也尽量标注。

  • 步骤 9. 继续标注数据集中的所有图像

Roboflow 有一个名为 Label Assist 的功能,它可以提前预测标签,从而加快您的标注速度。然而,它并不适用于所有目标类型,而是仅适用于某些特定类型的目标。要启用此功能,您只需按下 Label Assist 按钮,选择一个模型选择类别,然后浏览图像以查看带有预测标签的边界框。

如上所示,它只能帮助预测上述 80 个类别的标注。如果您的图像不包含上述类别的目标,则无法使用 Label Assist 功能。

  • 步骤 10. 标注完成后,点击 Add images to Dataset
  • 步骤 11. 接下来,我们将图像分配为“Train、Valid 和 Test”。保持默认的分配百分比,然后点击 Add Images
  • 步骤 12. 点击 Generate New Version
  • 步骤 13. 如果需要,您现在可以添加 PreprocessingAugmentation。这里我们将 Resize 选项更改为 192x192

这里我们将图像大小更改为 192x192,因为我们将在训练中使用该大小,这样训练速度会更快。否则,在训练过程中需要将所有图像转换为 192x192,这会消耗更多的 CPU 资源并使训练过程变慢。

  • 步骤 14. 接下来,继续使用剩余的默认设置并点击 Generate(生成)
  • 步骤 15. 点击 Export(导出),将 Format(格式) 选择为 YOLO v5 PyTorch,选择 show download code(显示下载代码) 并点击 Continue(继续)

这将生成一个代码片段,我们稍后将在 Google Colab 的训练中使用。因此,请将此窗口保持打开状态。

在 Google Colab 上使用 YOLOv5 进行训练

完成数据集标注后,我们需要对数据集进行训练。跳转到此部分,了解如何使用 YOLOv5 在 Google Colab 上运行并训练 AI 模型。

3. 部署训练好的模型并进行推理

Grove - Vision AI 模块

现在我们将训练结束后获得的 model-1.uf2 文件移动到 Grove - Vision AI 模块中。在这里,我们将 Grove - Vision AI 模块与 Wio Terminal 连接,以查看推理结果。

注意: 如果这是您第一次使用 Arduino,我们强烈建议您参考 Arduino 入门指南。此外,请按照此教程设置 Wio Terminal 以配合 Arduino IDE 使用。

  • 步骤 3. 双击 Grove - Vision AI 模块上的启动按钮以进入大容量存储模式

之后,您将在文件资源管理器中看到一个新的存储驱动器,名为 GROVEAI

  • 步骤 4.model-1.uf2 文件拖放到 GROVEAI 驱动器中

当 uf2 文件完成复制到驱动器后,驱动器将消失。这意味着 uf2 文件已成功上传到模块。

注意: 如果您有 4 个模型文件准备好,可以逐个拖放每个模型。先拖放第一个模型,等待复制完成后,再次进入启动模式,拖放第二个模型,以此类推。

  • 步骤 5. 在 Grove - Vision AI 模块仍通过 USB 连接到电脑的同时,将其通过 Grove I2C 接口连接到 Wio Terminal,如下所示
  • 步骤 6. 在 Arduino IDE 中安装 Seeed_Arduino_GroveAI 库 并打开 object_detection.ino 示例

  • 步骤 7. 如果您仅加载了一个模型(索引为 1)到 Grove - Vision AI 模块中,它将加载该模型。然而,如果您加载了多个模型,可以通过更改 MODEL_EXT_INDEX_[value]指定使用哪个模型,其中 value 可以是 1、2、3 或 4。

// 例如:
if (ai.begin(ALGO_OBJECT_DETECTION, MODEL_EXT_INDEX_2))

上述代码将加载索引为 2 的模型。

  • 步骤 8. 由于我们正在检测苹果,因此需要对代码进行轻微修改,修改位置在这里
Serial.print("Number of apples: ");
  • 步骤 9. 将 Wio Terminal 连接到电脑,上传此代码到 Wio Terminal,并在 Arduino IDE 的串口监视器中以 115200 波特率打开

您将在串口监视器中看到检测信息,如上图所示。

  • 步骤 10. 点击这里 打开摄像头流的预览窗口,并查看检测结果
  • 步骤 11. 点击 Connect(连接) 按钮。然后您将在浏览器中看到一个弹窗。选择 Grove AI - Paired 并点击 Connect(连接)
  • 步骤 12. 使用预览窗口查看实时推理结果!

如上图所示,苹果被检测到并显示了带有边界框的结果。这里的“0”对应于同一类别的每次检测。如果您有多个类别,它们将分别命名为 0、1、2、3、4 等。此外,每个检测到的苹果的置信度分数(如上图中的 0.8 和 0.84)也会显示出来!

额外内容

如果你想更具冒险精神,可以继续阅读本 Wiki 的其余部分!

我可以在我的电脑上训练 AI 模型吗?

你也可以使用自己的电脑来训练一个目标检测模型。然而,训练性能将取决于你的硬件配置。此外,你需要一台运行 Linux 操作系统的电脑来进行训练。在本 Wiki 中,我们使用了一台运行 Ubuntu 20.04 的电脑。

  • 步骤 1. 克隆 yolov5-swift 仓库并在 Python>=3.7.0 环境中安装 requirements.txt
git clone https://github.com/Seeed-Studio/yolov5-swift 
cd yolov5-swift
pip install -r requirements.txt
  • 步骤 2. 如果你之前按照本 Wiki 的步骤操作过,你可能还记得我们在 Roboflow 中标注后导出了数据集。此外,在 Roboflow Universe 中,我们下载了数据集。在这两种方法中,都有一个如下所示的窗口,询问你要下载数据集的格式。因此,现在请选择 download zip to computer,在 Format 下选择 YOLO v5 PyTorch,然后点击 Continue

之后,一个 .zip 文件 将会下载到你的电脑上。

  • 步骤 3. 将我们下载的 .zip 文件复制并粘贴到 yolov5-swift 目录中并解压
# 示例
cp ~/Downloads/Apples.v1i.yolov5pytorch.zip ~/yolov5-swift
unzip Apples.v1i.yolov5pytorch.zip
  • 步骤 4. 打开 data.yaml 文件并编辑 trainval 目录如下
train: train/images
val: valid/images
  • 步骤 5. 下载一个适合我们训练的预训练模型
sudo apt install wget
wget https://github.com/Seeed-Studio/yolov5-swift/releases/download/v0.1.0-alpha/yolov5n6-xiao.pt
  • 步骤 6. 执行以下命令开始训练

在这里,我们可以传递多个参数:

  • img: 定义输入图像大小
  • batch: 确定批量大小
  • epochs: 定义训练的轮数
  • data: 设置 yaml 文件的路径
  • cfg: 指定模型配置
  • weights: 指定权重的自定义路径
  • name: 结果名称
  • nosave: 仅保存最终的检查点
  • cache: 缓存图像以加快训练速度
python3 train.py --img 192 --batch 64 --epochs 100 --data data.yaml --cfg yolov5n6-xiao.yaml --weights yolov5n6-xiao.pt --name yolov5n6_results --cache

对于一个包含 987 张图像的苹果检测数据集,在一台配备 NVIDIA GeForce GTX 1660 Super GPU(6GB 显存)的本地电脑上,训练过程大约需要 30 分钟完成。

如果你之前按照 Colab 项目操作,你会知道可以一次性将 4 个模型加载到设备中。然而,请注意一次只能加载一个模型。这可以由用户指定,稍后将在本 Wiki 中解释。

  • 步骤 7. 如果你导航到 runs/train/exp/weights,你会看到一个名为 best.pt 的文件。这是训练生成的模型。
  • 步骤 8. 将训练好的模型导出为 TensorFlow Lite 格式
python3 export.py --data {dataset.location}/data.yaml --weights runs/train/yolov5n6_results/weights/best.pt --imgsz 192 --int8 --include tflite  
  • 步骤 9. 将 TensorFlow Lite 转换为 UF2 文件

UF2 是一种由微软开发的文件格式。Seeed 使用这种格式将 .tflite 转换为 .uf2,从而使 tflite 文件可以存储在 Seeed 推出的 AIoT 设备上。目前,Seeed 的设备最多支持 4 个模型,每个模型(.tflite)小于 1M。

你可以通过 -t 指定模型放置的索引。

例如:

  • -t 1: 索引 1
  • -t 2: 索引 2
# 将模型放置到索引 1
python3 uf2conv.py -f GROVEAI -t 1 -c runs//train/yolov5n6_results//weights/best-int8.tflite -o model-1.uf2

尽管你可以一次性将 4 个模型加载到设备中,但请注意一次只能加载一个模型。这可以由用户指定,稍后将在本 Wiki 中解释。

  • 步骤 10. 现在会生成一个名为 model-1.uf2 的文件。这就是我们将加载到 Grove - Vision AI 模块中以执行推理的文件!

资源

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供多种支持,确保您在使用我们的产品时拥有顺畅的体验。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...