Roboflow OAK 设备模型部署指南

得益于社区的反馈和支持,推出了roboflowoak pip包,这是目前通过容器方法部署到OAK的推荐替代方案。

如果之前使用过上传API或推理API,那么已经拥有一个RoboflowAPI密钥。如果没有,请前往工作空间设置中获取。需要这个密钥来使用包。

每个API密钥都与特定的工作空间相关联;请像对待密码一样保密,因为API密钥可以用来访问和修改工作空间中的数据。

安装RoboflowOAK Python pip包

在Python环境中的终端中输入以下命令来安装roboflowoak:

pip install roboflowoak

roboflowoak功能概述

通过Roboflow Python包,可以:

  • 以编程方式访问有关工作空间、项目和版本的信息。
  • 将本地图像上传到Roboflow网络项目。
  • 对通过Web UI训练的模型执行推理。
  • 可视化并保存对模型所做的预测。

使用模型进行推理的示例Python脚本

将以下脚本复制/粘贴到VSCode、XCode、PyCharm、Spyder(或另一个代码编辑器)中,并更新“rf”对象中的模型/项目名称、模型版本、api_key和device_name的值。

保存Python文件到一个目录中 - 请记下目录名称和文件名称,因为稍后需要这些信息来进行部署。

如果正在部署到没有深度功能的OAK设备,请在实例化(创建)rf对象时设置depth=False。带有深度功能的OAK设备在模型名称上有"D"附加,例如OAK-D和OAK-D-Lite。

from roboflowoak import RoboflowOak
import cv2
import time
import numpy as np

if __name__ == '__main__':
    # 使用RoboflowOak模块实例化一个对象(rf)
    rf = RoboflowOak(model="YOUR-MODEL-ID", confidence=0.05, overlap=0.5,
    version="YOUR-MODEL-VERSION-#", api_key="YOUR-PRIVATE_API_KEY", rgb=True,
    depth=True, device=None, device_name="CHOOSE-A-DEVICE-NAME", blocking=True)
    # 运行模型并显示带有检测的视频输出
    while True:
        t0 = time.time()
        # rf.detect()函数运行模型推理
        result, frame, raw_frame, depth = rf.detect()
        predictions = result["predictions"]
        # {
        #     predictions:
        #     [ {
        #         x: (middle),
        #         y:(middle),
        #         width: ,
        #         height: ,
        #         depth: ###->,
        #         confidence: ,
        #         class: ,
        #         mask: { }
        #       }
        #    ]
        # }
        # frame - 经过预处理的帧,带有预测
        # raw_frame - 来自OAK的原始帧
        # depth - raw_frame的深度图,中心校正到中心相机
        # 要访问"predictions"中的特定值,请使用:[p.json() for p[a] in predictions]
        # 将"a"设置为尝试访问的索引值
        # 示例:访问"y"值:[p.json() for p[1] in predictions]
        
        # 计时:用于基准测试目的
        t = time.time()-t0
        print("FPS ", 1/t)
        print("PREDICTIONS ", [p.json() for p in predictions])

        # 设置深度计算的参数
        max_depth = np.amax(depth)
        cv2.imshow("depth", depth/max_depth)
        # 显示视频流作为连续的帧
        cv2.imshow("frame", frame)
    
        # 如何关闭OAK推理窗口/停止推理:CTRL+q或CTRL+c
        if cv2.waitKey(1) == ord('q'):
            break
                

注意while循环中的最后几行,用于显示来自OAK设备的视频输出。frame变量引用了来自OAK设备的静态图像帧(经过预处理),带有预测的检测。视频流本质上是连续的图像帧。模型主机设备的处理能力越高,每秒的帧数(fps)就越高。

设置OpenVINO和DepthAI

请查看以获取方向。

运行推理:部署

输入以下代码(替换占位符文本为Python脚本的路径):

python3 [YOUR-PYTHON-FILE].py

使用终端将模型部署到OAK设备。

在Apple Macbook Air 13"(M1)上进行推理的平均推理速度大约为15毫秒,或0.015秒。

在OAK上运行的面部检测模型。

要关闭窗口(中断或结束推理),请在键盘上输入CTRL+c。

会注意到检测到的面部的置信度很低,尽管它显然是一张脸。通过实施主动学习来解决这个问题,以消除模型中的误检,并提高检测的置信度水平。

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