YOLO 的简化转换
YOLO 的简化转换
概述
上传预训练模型的权重(.pt 文件),设置输入图像形状,选择目标设备的 Robotics Vision Core 代(有关参数的详细信息,请参阅 工具选项),我们将编译一个 blob 和一个 JSON 文件 ,其中包含 DepthAI 解码结果所需的信息。
示例
YoloV6n R4 以及如何在 OAK 设备上运行编译后的模型。- 首先,我们将下载模型的权重。您可以从此处下载。
- 在您选择的浏览器中打开 tools。然后,上传下载的
yolov6n.pt权重并将Input image shape设置为640 352(我们选择此输入图像形状是因为宽高比接近 16:9,并且吞吐量和延迟仍然不错)。其余选项保持不变。
- 点击
Submit按钮。模型将被自动转换并下载到一个 zip 文件夹中(zip 文件夹将包含一个转换后的 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 # model node
18 nn = pipeline.create(dai.node.NeuralNetwork)
19 nn.setModelPath(MODEL_PATH)
20
21 # parser node
22 parser = pipeline.create(YOLOExtendedParser, n_classes=len(LABELS), label_names=LABELS)
23
24 # input node
25 camera = pipeline.create(dai.node.Camera).build()
26 camera_stream = camera.requestOutput(size=INPUT_SIZE, type=frame_type)
27
28 # connect nodes
29 camera_stream.link(nn.input)
30 nn.out.link(parser.input)
31
32 # visualize
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("Got q key from the remote connection!")
43 break有关运行模型的更多详细信息,请参阅 推理 部分。
工具选项
Yolo Version- 必需,应使用哪个 Yolo 版本进行转换。在工具中,集成了自动 Yolo 版本检测器,当您上传模型权重时,它会自动检测 Yolo 版本并进行设置。RVC2 or RVC3- 必需,目标设备的 Robotics Vision Core 代。File- 必需,预训练模型的权重(.pt 文件),大小需要小于 300Mb。Input image shape- 必需,用于方形输入图像形状的整数,或用空格分隔的宽度和高度。它必须能被 32(或 64,取决于步幅)整除。Shaves- 可选,默认值为 6。使用的 shave 数量。有关 shave 的更多信息,请参阅 此处。Use OpenVINO 2021.4- 可选,默认值为 true。此复选框控制在编译到 IR 时是否使用旧版前端标志。如果关闭,则默认为 OpenVINO 2022.1。使用 2022.1 时注意到了轻微的性能下降。因此,我们建议将其设置为 true。