YOLO的代码写完,运行太慢,准备运用onnx,onnx返回目标的坐标与YOLO不一样,这可如何是好啊,各位码神帮帮忙啊

YOLO的代码写完,运行太慢,准备运用onnx,onnx返回目标的坐标与YOLO不一样,这可如何是好啊,各位码神帮帮忙啊

以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
要将ONNX返回的边界框坐标与YOLO一样,首先需要了解两者的输出格式。
YOLO的输出格式通常为:(中心点x, 中心点y, 宽度, 高度, 置信度, 类别) ONNX的输出格式可能因模型而异,但通常为:(左上角x, 左上角y, 右下角x, 右下角y, 置信度, 类别)
为了将ONNX的输出格式转换为YOLO的输出格式,可以使用以下代码:
def onnx_to_yolo_bbox(onnx_bbox):
x1, y1, x2, y2, conf, class_id = onnx_bbox
w = x2 - x1
h = y2 - y1
cx = x1 + (w / 2)
cy = y1 + (h / 2)
return [cx, cy, w, h, conf, class_id]
# 假设 onnx_outputs[0] 是一个包含边界框的列表
yolo_bboxes = [onnx_to_yolo_bbox(bbox) for bbox in onnx_outputs[0]]
这段代码首先将ONNX的边界框坐标转换为YOLO的格式,然后将其添加到一个新的列表中。最后,yolo_bboxes将包含与YOLO相同的边界框坐标。