YOLO 的简化转换
概述
上传预训练模型的权重(.pt 文件),设置输入图像形状,选择目标设备的 Robotics Vision Core 代次(在 工具选项 中了解更多参数),我们将编译一个 blob 文件和 JSON 文件,其中包含 DepthAI 解码结果所需的信息。
示例
YoloV6n R4 以及如何在 OAK 设备上运行编译后的模型。- 首先,我们需要下载模型权重。您可以从此处下载。
- 在您选择的浏览器中打开工具。然后,上传下载的
yolov6n.pt权重,并将输入图像形状设置为640 352(我们选择此输入图像形状,因为长宽比接近 16:9,且吞吐量和延迟仍然不错)。其余选项保持默认。
- 点击
提交按钮。模型将自动转换并下载到一个压缩文件夹中(该压缩文件夹将包含转换后的 blob 文件、JSON 文件以及用于生成输出 blob 文件的中间表示)。 - 在本地解压 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。