在计算机视觉领域,有许多通用预训练模型可供部署到边缘设备(例如 OpenCV AI Kit)。但是,当今计算机视觉部署的真正力量在于**使用您自己的数据训练您自己的计算机视觉模型**,以应用于**您自己的自定义解决方案**到**您自己的设备**上。
要训练您自己的自定义模型,您必须收集图像数据集,对它们进行标注,训练您的模型,然后将您的模型转换为目标部署环境并进行优化。这条机器学习路径充满了细微差别,并会减慢开发周期。更重要的是——错误并非表现为明显的错误,而是静默地降低模型的性能。
为了简化计算机视觉开发和部署,Roboflow、OpenCV 和 Luxonis 正在合作,为 OAK-1 和 OAK-D 提供一键式自定义训练和部署解决方案。
在本博文中,我们将介绍自定义模型部署到 OAK 设备的过程,并展示其过程有多么无缝。
最棒的是,您甚至不需要手边有 OAK 设备即可**立即开始开发您的项目**。您可以在 Roboflow 的云环境中先进行开发和测试,然后将训练后的模型部署到您的 OAK 上。
步骤 1:收集您的数据集
为了训练您的自定义模型,您需要收集代表模型在实际环境中将要解决的问题的图像。使用与部署环境相似的图像至关重要。最佳做法是在您的 OAK 设备上以您希望推断的分辨率拍摄图像进行训练。您可以通过 Roboflow 上传 API 将图像自动上传到 Roboflow 以进行标注。
要初步了解问题,您将需要 5-100 张图像。要构建生产级系统,您可能需要更多图像。
步骤 2:标注您的数据集
下一步是在 Roboflow 中上传并标注您的图像。
您将在要检测的对象周围绘制边界框。请参阅有关 标注最佳实践 的提示。
步骤 3:对您的数据进行版本控制
对数据集的标注感到满意后,您可以在 Roboflow 中创建数据集版本以准备训练。数据集版本在时间上是固定的,允许您迭代实验,同时知道数据集已在版本创建时固定。
创建数据集版本时,您将做出两组决定
- 预处理——跨数据集的图像标准化选择,例如图像分辨率。对于 OAK 部署,我们建议使用 416×416 的图像分辨率。
- 增强——图像增强从您的训练集中创建新的、经过转换的图像,使您的模型能够接触到数据的不同变体。
步骤 4:训练您的模型并将其部署到 OAK
Roboflow Train 提供一键式训练和部署到您的 OAK 设备。创建版本后,点击开始训练
并选择要从其开始的检查点。如果您没有要从其开始的检查点,只需选择从头开始训练
或公共模型-->COCO
根据数据集的大小,训练和转换将花费 15 分钟到 12 小时,训练和转换完成后,您将收到电子邮件通知。
步骤 5:在托管 API 上测试您的模型
完成步骤 4 后,您的模型已准备好进行 OAK 部署(步骤 6),但我们建议您在部署前花点时间在 Roboflow 托管推理 API 上测试您的模型。 托管推理 API 是您的模型的版本,部署到云服务器。您可以初步了解在测试图像上进行推理的质量,并针对此 API 开发您的应用程序。
当您需要边缘部署时,可以继续设置 OAK 推理服务器。
这也意味着,您不需要手边有 OAK 设备即可开始迭代模型并测试部署条件。
步骤 6:将您的模型部署到您的 OAK 设备
模型完成训练后,就可以将其部署到您的 OAK 设备上的边缘环境中。
支持的设备
Roboflow OAK 推理服务器在以下设备上运行
- DepthAI OAK-D (LUX-D)
- Luxonis OAK-1 (LUX-1)
主机系统需要 linux/amd64 处理器。arm65/aarch64 支持即将推出。
推理速度
在我们的测试中,我们观察到以 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 上运行。
使用服务器
- 通过在您的浏览器中访问
http://localhost:9001/validate
来验证您的 OAK 是否已正确启动 - 通过调用内置的预训练 COCO 模型
http://localhost:9001/coco
来验证推理是否正常工作 - 通过对
http://localhost:9001/[YOUR_ENDPOINT]?access_token=[YOUR_ACCESS_TOKEN]
发出 GET 请求来调用您的自定义模型
在调用时,您可以获得图像或 JSON 响应。
{
'predictions': [
{
'x': 95.0,
'y': 179.0,
'width': 190,
'height': 348,
'class': 'mask',
'confidence': 0.35
}
]
}
就这样,您就踏上了征程!真正的挑战在于将您的计算机视觉模型实施到您的应用程序中。
- 有关针对 OAK 推理服务器进行开发的更多信息,请参阅 Roboflow OAK 推理服务器文档。
结论
恭喜!现在您知道如何使用经过实战检验的机器学习管道,只需点击几下,即可将自定义计算机视觉模型部署到边缘环境中。
获取访问权限
如果您已经拥有 OAK 设备,则可以免费开始使用。只需在 Roboflow 中直接请求 Roboflow Train,并在回复电子邮件时提供您的 OAK 序列号。(如果您还没有 OAK 设备,请联系我们获取折扣。)
import depthai
for device in depthai.Device.getAllAvailableDevices():
print(f"{device.getMxId()} {device.state}")
祝您训练愉快!更重要的是,祝您推理愉快!