Luxonis OAK设备与Roboflow集成指南

Luxonis OAK设备提供了更多的功能和开箱即用的选项,用于定制推理。本指南将详细介绍如何使用Luxonis DepthAI SDK和Roboflow集成来部署预训练的计算机视觉模型。

准备工作

在开始之前,需要准备一些必要的工具和资源。如果还没有构建模型,首先需要收集数据。对于没有标记数据集或训练模型的用户,有几个选择。

创建一个Roboflow账户,创建一个工作空间并启动一个项目。接下来,可以导入一个标注好的数据集,从Roboflow Universe克隆一个项目,或者标注自己的数据集。然后,生成一个数据集版本并训练模型。Roboflow快速入门指南是一个全面的逐步指南,将详细指导完成这些步骤。

一旦拥有了一个训练好的模型,将看到一个带有绿色勾选标记的数据集版本,并表示用于训练的模型类型。

安装所需包

Luxonis DepthAI SDK首先,打开一个新的终端窗口并导航到想要安装所需包的目录或文件夹。创建一个新的Python环境或虚拟环境,运行Python版本3.6、3.7、3.8、3.9或3.10并激活它。

git clone https://github.com/luxonis/depthai.git

导航到depthai目录。输入cd depthai在终端中。安装依赖项。

Windows:

py -3 install_requirements.py

Linux/MacOS/RaspbianOS:

python install_requirements.py

Mac M1和M2用户对于希望使用DepthAI SDK Roboflow集成与M1 Macs的用户,需要按照这个GitHub Issue评论中的说明首先创建一个环境来安装DepthAI python包。

这些说明也链接在Roboflow文档中。

Roboflow文档:Mac M1 DepthAI安装在成功安装DepthAI python包后,继续在包含DepthAI包的Python环境中的终端窗口中输入以下命令来安装DepthAI SDK包。

python3 -m pip install depthai-sdk

Roboflow Python SDK(可选)虽然安装Roboflow的Python包不是必需的,但对于希望以编程方式与他们的Roboflow项目互动的用户,这是推荐的。这使得以下功能立即可用于MLOps管道:

  • 列出可用的工作空间、项目、数据集版本、训练好的模型和相关元数据
  • 创建新项目并生成具有指定预处理和增强技术的指定数据集版本
  • 启动Roboflow Train训练作业
  • 上传YOLOv8目标检测模型权重以部署
  • 将优化的模型部署到更多目标设备,如NVIDIA Jetsons、Raspberry Pi、基于Web的应用程序、计算机/笔记本电脑或专用服务器。

要安装Roboflow Python SDK,请在包含Luxonis DepthAI SDK的相同Python环境中的终端中输入以下命令:

pip install roboflow

模型部署

将以下代码片段添加到Python文件中。这可以在记事本中以.txt文件保存并另存为.py文件,或在Vim或VSCode等代码编辑器中完成。

from depthai_sdk import OakCamera import depthai # 从Roboflow Universe下载并部署模型 # https://universe.roboflow.com with OakCamera() as oak: color = oak.create_camera('color') model_config = { 'source': 'roboflow', # 指定从Roboflow下载模型 'model':'beverage-containers-3atxb/2', 'key':'181b0f6e43d59ee5ea421cd77f6d' # 假的私有API密钥,替换为自己的! } nn = oak.create_nn(model_config, color) oak.visualize(nn, fps=True) oak.start(blocking=True)

在'model'旁边输入项目ID和版本号,并用私有API密钥替换旁边的占位符API密钥。这些信息也可在训练好的Roboflow Universe模型的"API文档"部分找到。

对于Beverage Containers数据集,项目ID是beverage-containers-3atxb,将部署版本2。

如果使用USB-C到USB-C电缆将OAK连接到主机设备,请用OakCamera(usb_speed=depthai.UsbSpeed.HIGH)替换第7行中的OakCamera()以避免USB设备警告。

在进行必要的更新后保存并运行.py文件。例如,如果文件名为infer.py,则使用以下命令运行:

python3 infer.py

自定义模型预测

DepthAI SDK为推理结果提供了许多自定义选项。其中包括自定义渲染的边界框、在视频文件上运行预测和目标跟踪的能力。

OakCamera — DepthAI SDK文档1.9.2文档在本地视频文件上推理

from depthai_sdk import OakCamera import depthai # 从Roboflow Universe下载并部署模型 # https://universe.roboflow.com with OakCamera(replay="INSERT_PATH_TO_VIDEO_FILE.mp4") as oak: color = oak.create_camera('color') model_config = { 'source': 'roboflow', # 指定从Roboflow下载模型 'model':'beverage-containers-3atxb/2', 'key':'181b0f6e43d59ee5ea421cd77f6d' # 假的私有API密钥,替换为自己的! } nn = oak.create_nn(model_config, color) oak.visualize(nn, fps=True) oak.start(blocking=True)

保存输出文件

from depthai_sdk import OakCamera import depthai import os # 从Roboflow Universe下载并部署模型 # https://universe.roboflow.com with OakCamera() as oak: color = oak.create_camera('color') model_config = { 'source': 'roboflow', # 指定从Roboflow下载模型 'model':'beverage-containers-3atxb/2', 'key':'181b0f6e43d59ee5ea421cd77f6d' # 假的私有API密钥,替换为自己的! } nn = oak.create_nn(model_config, color) # 设置fps为True将在输出视频上打印fps # record_path是视频的保存位置 oak.visualize(nn, record_path=os.curdir, fps=True) oak.start(blocking=True)

目标跟踪

from depthai_sdk import OakCamera import depthai # 从Roboflow Universe下载并部署模型 # https://universe.roboflow.com with OakCamera() as oak: color = oak.create_camera('color') model_config = { 'source': 'roboflow', # 指定从Roboflow下载模型 'model':'beverage-containers-3atxb/2', 'key':'181b0f6e43d59ee5ea421cd77f6d' # 假的私有API密钥,替换为自己的! } nn = oak.create_nn(model_config, color, tracker=True) oak.visualize(nn, fps=True) oak.start(blocking=True)

性能

当连接到Raspberry Pi 4 Model B 8GB(Raspbian OS 64位)作为主机设备时,OAK处理帧的速度为Roboflow "Accurate"模型每秒4-6帧(FPS),Roboflow "Fast"模型为每秒9-10帧。在训练模型之前,图像被调整为640x640。

有关计算机视觉模型大小的更多信息:

选择计算机视觉模型大小

在训练任何机器学习模型时,必须在推理速度和准确性之间进行权衡。参数更多的大型模型通常更准确,参数更少的小型模型通常推理速度更快。

Roboflow博客

Jacob Solawetz

OAK设备在设备断开互联网连接后仍可继续处理预测。关闭OAK设备将从系统中移除缓存的权重。如果Luxonis OAK设备断电或关闭OAK,请重复上述步骤,从模型部署部分开始,再次处理模型预测。

现在拥有将Roboflow Universe中的任何10,000个预训练计算机视觉模型或自己的自定义Roboflow模型部署Luxonis OAK设备上所需的工具,使用Luxonis DepthAI SDK。

使用预定义的逻辑从OAK设备获取样本帧,并上传到Roboflow数据集以标记、重新训练和重新部署改进的模型。

RoboflowPython SDK中提供了使用预定义逻辑的主动学习。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485