如何用Roboflow训练和部署自定义模型到OAK上?

2,292 阅读6分钟

在计算机视觉方面,有许多通用的、预训练的模型可供部署到边缘设备(如OpenCV AI Kit)。然而,今天计算机视觉部署的真正力量在于在你自己的数据上定制训练你自己的计算机视觉模型,以应用于你自己设备上的定制解决方案

为了训练你自己的自定义模型,你必须收集一个图像数据集,对它们进行注释,训练你的模型,然后为你的部署目的地转换和优化你的模型。这种机器学习的途径充满了细微的差别,并减缓了开发周期。更重要的是--错误并不表现为公然的错误,而是悄悄地降低了你的模型的性能。

为了简化计算机视觉的开发和部署,Roboflow、OpenCV和Luxonis正在合作,为OAK-1和OAK-D提供一键式定制训练和部署解决方案。

Luxonis OpenCV AI Kit设备--OAK-D(左)和OAK-1(右)。

在这篇博客中,我们将介绍自定义模型部署到OAK设备的过程,并展示它是多么的无缝。

最重要的是,你今天不需要有OAK设备在手就可以开发你的项目。你可以先在Roboflow的云环境中开发和测试,然后再将训练好的模型部署到OAK上。

第一步:收集你的数据集

为了训练你的自定义模型,你需要收集能代表你的模型在野外所要解决的问题的图像。使用与你的部署环境相似的图像是非常重要的。最好的做法是在你的OAK设备上,以你希望推断的分辨率来训练图像。你可以通过Roboflow上传API从你的OAK自动上传图像到Roboflow进行注释。

如果只是对一个问题有感觉,你将需要5-100张图片。要建立一个生产级别的系统,你可能需要更多的图片。

第2步:注释你的数据集

下一步是在Roboflow中上传并注释你的图像。

在创建一个新的数据集后将数据上传到Roboflow- Roboflow支持各种格式

Roboflow中标记数据

你将会在你想检测的对象周围画出边界框。请看我们关于标签的最佳做法的提示。

第3步:对你的数据进行编辑

一旦你对你的数据集的注释感到满意,你可以在Roboflow中创建一个数据集版本来准备训练。数据集的版本在时间上被锁定,允许你对实验进行迭代,因为你知道数据集在版本的时候已经被修复了。

在创建数据集版本时,你将做出两组决定。

  • 预处理- 整个数据集的图像标准化选择,如图像分辨率。对于OAK的部署,我们推荐416×416的图像分辨率。
  • 增强--图像增强从你的训练集中创建新的、经过转换的图像,使你的模型暴露在不同的数据变化中。

Roboflow中的预处理和增强选项

第四步:训练和部署你的模型到OAK上

Roboflow Train提供了单键训练和部署到OAK设备的功能。在你创建了一个版本后,点击Start Training ,选择一个检查点开始。如果你没有检查点可以开始,只需选择Train from ScratchPublic Models --> COCO

在Roboflow中开始训练

根据你的数据集的大小,训练和转换将需要15分钟-12小时,完成后你会收到一封电子邮件。

一封通知你的模型已经完成训练和转换的电子邮件。🥳

第5步:在托管的API上测试你的模型

在步骤4之后,您的模型已经准备好进行OAK部署(步骤6),但我们建议在部署之前花点时间在Roboflow托管推理API上测试您的模型。Hosted Inference API是你的模型的一个版本,部署在云服务器上。你可以在测试图像上感受到你的推理质量,并根据这个API开发你的应用程序。

当你需要边缘部署的时候,你就可以前进到设置OAK推理服务器。

这也意味着,你还不需要你的OAK在手,就可以开始迭代你的模型和测试部署条件。

第6步:将您的模型部署到OAK设备上

一旦你的模型完成了训练,它就可以部署到你的OAK设备上的边缘。

支持的设备

Roboflow OAK推理服务器在以下设备上运行。

  • DepthAI OAK-D (LUX-D)
  • Luxonis OAK-1 (LUX-1)

主机系统需要一个linux/amd64处理器。arm65/arch64支持即将到来。

推理速度

在我们的测试中,我们观察到416×416分辨率下的推理速度为20FPS,适合于大多数实时应用。这个速度将根据你的主机而略有不同。

为你的模型提供服务

在你的主机上,安装docker。然后运行。

sudo docker run --rm \
    --privileged \
    -v /dev/bus/usb:/dev/bus/usb \
    --device-cgroup-rule='c 189:* rmw' \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -p 9001:9001 \
    roboflow/oak-inference-server:latest

这将在你的机器上启动一个本地推理服务器,在9001端口运行。

使用该服务器。

  • 通过在浏览器中访问验证你的OAK是否正确。http://localhost:9001/validate
  • 通过调用内置的预训练过的COCO模型来验证推理是否正常。http://localhost:9001/coco
  • 通过获取请求来调用你的自定义模型http://localhost:9001/[YOUR_ENDPOINT]?access_token=[YOUR_ACCESS_TOKEN]

在调用时,你不能得到一个图像或json响应。

{
    'predictions': [
                {
                       'x': 95.0, 
                       'y': 179.0, 
                       'width': 190, 
                       'height': 348, 
                       'class': 'mask', 
                       'confidence': 0.35
                }
         ]
   }

预测作者戴着面具的图像响应示例(训练数据)。

这样一来,你就可以去比赛了真正的挑战开始于在你的应用程序中实施你的计算机视觉模型。

总结

恭喜你!现在你知道如何部署一个计算机视觉模型了。现在你知道了如何在几下子就把一个自定义的计算机视觉模型部署到边缘,并有一个坚韧的机器学习管道。

获得访问权

如果你已经有一个OAK设备,你可以免费开始使用。只需在Roboflow中直接申请Roboflow Train,并将您的OAK序列号回复到邮件中。如果您还没有OAK设备,请发邮件给我们,以获得折扣)。

训练愉快!更重要的是,祝你推理愉快!

The postHow to Train and Deploy Custom Models to OAK with Roboflowappeared first onOpenCV.