后处理
输出解释与转换
预定义模型
目标检测
- 边界框坐标 (xmin, ymin, xmax, ymax): 定义检测到的目标在图像中所处的矩形区域。坐标是归一化的,即相对于图像尺寸表示为0到1之间的值。
- 置信度分数: 表示模型对检测结果的确定程度。分数越高,表明对检测准确性的信心越大。
- 类别标签: 指示检测目标的类别,由模型在训练过程中学习得到。
- MobileNet: 可通过
MobileNetDetectionNetwork节点使用。 - Yolo: 可通过
YoloDetectionNetwork节点使用。可通过 Luxonis Tools 导出。 我们支持多个Yolo模型版本,每个版本针对不同的检测需求进行了优化:YoloV5YoloV6 (R1, R2, R3, R4)YoloV7YoloV8GoldYolo
ImgDetections 文档。 解析数据的示例如下:Python
1import depthai as dai
2
3# 假设管道和模型设置已完成
4# 有关管道创建的详细信息,请参考DepthAI文档
5
6# 连接设备并启动管道
7with dai.Device(pipeline) as device:
8
9 # 从输出队列中获取检测结果
10 qDet = device.getOutputQueue(name="network_node_name", maxSize=4, blocking=False)
11 detections = qDet.get().detections
12
13 # 解析每个检测结果
14 for detection in detections:
15 xmin, ymin, xmax, ymax = detection.bbox
16 confidence = detection.confidence
17 class_id = detection.label
18 # 进一步处理或使用...自定义模型
getLayerFp16(layer_name)或getLayerInt8(layer_name)等方法获取输出, 您需要提供特定层的名称。由于这些方法返回的是所选层的扁平化输出, 因此需要对其形状进行重塑以便后续使用。您可以在 EfficientDet实验 中找到示例。 以下代码片段简要说明了该过程:Python
1import depthai as dai
2import numpy as np
3
4# 假设管道和模型设置已完成
5# 有关管道创建的详细信息,请参考DepthAI文档
6output_shape=(1,1000) # 替换为您自己的形状
7
8# 连接设备并启动管道
9with dai.Device(pipeline) as device:
10
11 # 定义队列
12 qDet = device.getOutputQueue(name="network_node_name", maxSize=4, blocking=False)
13
14 # 获取输出列表并重塑为所需尺寸
15 outputs = in_nn.getLayerFp16('network_output_name')
16 outputs = np.array(outputs).reshape(output_shape)
17
18 # 进一步解析、处理或使用...