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

如何让YOLOv8在CLI中显示图像各类别检测数量?

实现YOLOv8 CLI显示单张图像类别检测数量总和的方法

方法一:直接修改YOLOv8推理源码

这是最直接的方式,改完后用原生CLI命令就能输出目标结果。

1. 定位目标文件

不管你是通过pip安装的YOLOv8还是克隆的源码包,找到ultralytics/yolo/v8/detect/predict.py文件:

  • pip安装路径:Python环境的site-packages/ultralytics/目录下
  • 源码克隆路径:项目根目录的对应路径中

2. 修改检测逻辑代码

打开predict.py,找到DetectionPredictor类里的predict_step方法,在处理单张图像预测结果的循环中,添加类别统计与打印代码:

# 遍历每张图像的预测结果
for i, pred in enumerate(preds):
    # 保留置信度符合阈值要求的检测框(和原逻辑一致)
    pred = pred[pred[:, 4] > self.args.conf]
    # 统计每个类别的检测数量
    cls_counts = {}
    for cls_id in pred[:, 5].cpu().numpy():
        cls_name = self.model.names[int(cls_id)]
        cls_counts[cls_name] = cls_counts.get(cls_name, 0) + 1
    
    # 格式化统计结果字符串
    if cls_counts:
        count_str = ", ".join([f"{v} {k}" for k, v in cls_counts.items()])
    else:
        count_str = "No detections"
    
    # 提取推理与NMS阶段的耗时(使用YOLOv8自带的时间统计变量)
    infer_time = (self.t[1] - self.t[0]) * 1000
    nms_time = (self.t[2] - self.t[1]) * 1000
    # 按YOLOv7格式输出结果
    print(f"{count_str}, Done. ({infer_time:.1f}ms) Inference, ({nms_time:.1f}ms) NMS")

注意:如果不同YOLOv8版本中self.t时间变量不适用,可参考原代码中输出时间的逻辑,替换为对应变量即可。

3. 测试效果

保存修改后,正常使用CLI执行推理命令:

yolo detect predict source=你的图片路径 model=你的模型文件.pt conf=0.25

此时命令行就会输出和YOLOv7格式一致的类别检测数量统计。

方法二:编写自定义脚本(无需修改源码)

不想改动YOLOv8源码的话,可以写个小脚本调用官方API,手动统计并输出结果:

from ultralytics import YOLO
import time

# 加载训练好的模型
model = YOLO("你的模型文件.pt")
# 指定要检测的单张图像路径
img_path = "你的图片路径.jpg"

# 记录推理总耗时
start_time = time.time()
results = model(img_path)
end_time = time.time()

# 统计每个类别的检测数量
cls_counts = {}
for result in results:
    for box in result.boxes:
        cls_name = model.names[int(box.cls[0])]
        cls_counts[cls_name] = cls_counts.get(cls_name, 0) + 1

# 格式化输出内容
count_str = ", ".join([f"{v} {k}" for k, v in cls_counts.items()]) if cls_counts else "No detections"
total_time = (end_time - start_time) * 1000
# 打印最终结果
print(f"{count_str}, Done. ({total_time:.1f}ms) Inference + NMS")

运行该脚本即可得到目标输出,缺点是无法直接使用原生CLI命令启动推理,需通过脚本触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:51:18