You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改YOLOv8检测结果以保留两位小数(简易方法)

实现YOLOv8检测结果保留两位小数的简易方法

方法一:在推理代码中直接处理(无需修改库)

这是最便捷的方式,不用改动YOLOv8源码,直接在你的推理脚本里对检测到的置信度做格式化处理:

1. 控制台输出或结果保存时格式化

from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolov8n.pt")
# 执行检测
results = model("your_image.jpg")

# 遍历所有检测结果
for result in results:
    for box in result.boxes:
        # 获取类别名称
        class_name = result.names[int(box.cls)]
        # 方式1:四舍五入保留两位小数
        conf_score = round(box.conf.item(), 2)
        # 方式2:强制显示两位小数(如0.9转为0.90)
        # conf_score = "{:.2f}".format(box.conf.item())
        # 输出格式化后的结果
        print(f"{class_name} {conf_score}")

2. 自定义可视化显示两位小数

如果需要在检测图上显示两位小数的置信度,可以手动绘制检测框和文本:

from ultralytics import YOLO
import cv2

model = YOLO("yolov8n.pt")
results = model("your_image.jpg")
img = cv2.imread("your_image.jpg")

for result in results:
    for box in result.boxes:
        # 转换坐标为整数
        x1, y1, x2, y2 = map(int, box.xyxy[0])
        class_name = result.names[int(box.cls)]
        conf_score = round(box.conf.item(), 2)
        # 绘制检测框
        cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
        # 绘制带两位小数置信度的标签
        cv2.putText(img, f"{class_name} {conf_score}", (x1, y1-10), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2)

# 显示结果
cv2.imshow("YOLOv8 Detection", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

方法二:修改YOLOv8源码实现全局生效

如果希望所有场景下的置信度都默认显示两位小数,可以修改库的核心文件:

1. 修改结果字符串输出格式

找到YOLOv8安装目录下的 ultralytics/utils/ops.py,定位到Boxes类的__repr__方法,将置信度的输出改为两位小数格式:

# 原代码示例
# return f"Boxes(boxes={self.xyxy}, scores={self.conf}, classes={self.cls})"

# 修改后
formatted_conf = [round(c.item(), 2) for c in self.conf]
return f"Boxes(boxes={self.xyxy}, scores={formatted_conf}, classes={self.cls})"

2. 修改可视化标签的小数显示

找到 ultralytics/utils/plots.py,定位到Annotator类中绘制标签的代码,将置信度的格式化从{conf:.1f}(或无指定)改为{conf:.2f}:

# 原代码示例
# label = f"{names[int(cls)]} {conf:.1f}" if conf else f"{names[int(cls)]}"

# 修改后
label = f"{names[int(cls)]} {conf:.2f}" if conf else f"{names[int(cls)]}"

注意:修改源码后,如果后续更新YOLOv8库,改动会被覆盖,建议在虚拟环境中操作,或自定义子类继承原有类来实现修改。

内容的提问来源于stack exchange,提问作者0nespo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:25:43