我目前正在使用 Ultralytics Yolov8 模型进行物体检测。 我使用自定义数据集训练了我的模型。我在 Roboflow 上注释了我的数据集并以 Yolov8 格式导出。 训练结果看起来不错。然而,我在 Roboflow 上手动注释的边界框坐标与预测的边界框坐标不匹配。
例如,我有一张名为 image_1.jpg 的图像,它在 Roboflow 上进行了注释,并且是训练集的一部分。 Roboflow 定义了坐标(作为标签的一部分):
[0 0.36953125 0.39609375 0.54765625 0.7875]
最后 4 个数字显示边界框的 x1,x2,y1,y2 坐标。但是,当我使用以下代码将这张图像传递到预测方法(仅用于检查)时
model = YOLO(‘best_weights.pt’)
result = model.predict(path_of_example_image, save = True)
boxes = result[0].boxes.xyxy
我得到坐标了:
张量([[ 22.5558, 9.7429, 619.7601, 345.7614]])
当我使用预测坐标绘制边界框时,该区域完全覆盖对象((正确)预测类的准确度为 0.99%)。另一方面,当我用手动注释的坐标绘制边界框时,该对象根本没有被覆盖,因为显然所有坐标都低于 1。所以我只是想知道在模型中应用了什么样的预处理,以便Roboflow 标签中的坐标有意义,我的训练结果实际上很好?
输入是标准化值(范围为 0 到 1),这意味着您需要将它们乘以图像的宽度和高度以获得像素坐标。