本页目录

  • 概述
  • 示例
  • 工具选项

YOLO 的简化转换

概述

我们创建了一个工具来简化 Yolo 目标检测器的导出过程。具体来说,我们的工具支持从 Yolov5 到 Yolov11 以及 Gold Yolo 的转换。上传预训练模型的权重(.pt 文件),设置输入图像形状,选择目标设备的 Robotics Vision Core 代次(在 工具选项 中了解更多参数),我们将编译一个 blob 文件和 JSON 文件,其中包含 DepthAI 解码结果所需的信息。

示例

此示例展示了如何转换 YoloV6n R4 以及如何在 OAK 设备上运行编译后的模型。
  1. 首先,我们需要下载模型权重。您可以从此处下载。
  2. 在您选择的浏览器中打开工具。然后,上传下载的 yolov6n.pt 权重,并将 输入图像形状 设置为 640 352(我们选择此输入图像形状,因为长宽比接近 16:9,且吞吐量和延迟仍然不错)。其余选项保持默认。
    将 YoloV6n R4 上传到工具
  3. 点击 提交 按钮。模型将自动转换并下载到一个压缩文件夹中(该压缩文件夹将包含转换后的 blob 文件、JSON 文件以及用于生成输出 blob 文件的中间表示)。
  4. 在本地解压 ZIP 文件夹,然后使用以下脚本对导出的模型进行推理。请务必设置 MODEL_PATH,并参考 .json 文件获取所需的输入尺寸和标签信息。
Python
1import depthai as dai
2from depthai_nodes.node import YOLOExtendedParser
3
4MODEL_PATH = ... # 例如 "yolov6n.blob"
5INPUT_SIZE = ... # 例如 (640, 352)
6LABELS = ... # 例如 ["person","bicycle","car", ...]
7
8visualizer = dai.RemoteConnection(httpPort=8080)
9device = dai.Device()
10platform = device.getPlatform().name
11frame_type = (
12    dai.ImgFrame.Type.BGR888i if platform == "RVC4" else dai.ImgFrame.Type.BGR888p
13)
14
15with dai.Pipeline(device) as pipeline:
16
17    # 模型节点
18    nn = pipeline.create(dai.node.NeuralNetwork)
19    nn.setModelPath(MODEL_PATH)
20
21    # 解析节点
22    parser = pipeline.create(YOLOExtendedParser, n_classes=len(LABELS), label_names=LABELS)
23
24    # 输入节点
25    camera = pipeline.create(dai.node.Camera).build()
26    camera_stream = camera.requestOutput(size=INPUT_SIZE, type=frame_type)                                  
27
28    # 连接节点
29    camera_stream.link(nn.input)
30    nn.out.link(parser.input)
31
32    # 可视化
33    visualizer.addTopic("Video", nn.passthrough, "images")
34    visualizer.addTopic("Detections", parser.out, "images")
35
36    pipeline.start()
37    visualizer.registerPipeline(pipeline)
38
39    while pipeline.isRunning():
40        key = visualizer.waitKey(1)
41        if key == ord("q"):
42            print("从远程连接获取到 q 键!")
43            break

工具选项

  • Yolo 版本 - 必需,选择要使用的 Yolo 版本转换。工具内部集成了自动 Yolo 版本检测器,当您上传模型权重时,它会自动检测 Yolo 版本并进行设置。
  • RVC2 或 RVC3 - 必需,目标设备的 Robotics Vision Core 代次。
  • 文件 - 必需,预训练模型的权重(.pt 文件),大小需小于 300Mb
  • 输入图像形状 - 必需,如果是正方形输入图像形状则为整数,或者用空格分隔的宽度和高度。该值必须能被 32(或 64,取决于步长)整除。
  • Shaves - 可选,默认值为 6。使用的 shaves 数量。要了解更多关于 shaves 的信息,请参考此处
  • 使用 OpenVINO 2021.4 - 可选,默认值为 true。此复选框控制编译为 IR 时是否使用旧版前端标志。如果关闭,则默认为 OpenVINO 2022.1。我们注意到使用 2022.1 时性能略有下降。因此,我们建议将其设置为 true