gpt4 book ai didi

python - Ultralytics YOLOv8 `probs` 属性返回 `None` 用于对象检测

转载 作者:行者123 更新时间:2023-12-03 07:52:16 28 4
gpt4 key购买 nike

我正在使用 Ultralytics YOLOv8 实现对图像执行对象检测。但是,当我尝试使用结果对象中的 probs 属性检索分类概率时,它返回 None 。这是我的代码:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt') # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model('00000.png') # return a list of Results objects

# Process results list
for result in results:
boxes = result.boxes # Boxes object for bbox outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs

print(probs)

当我运行上述代码时,print(probs) 的输出为None。剩余的输出为

image 1/1 00000.png: 640x640 1 person, 1 zebra, 7.8ms
Speed: 2.6ms preprocess, 7.8ms inference, 1.3ms postprocess per image at shape (1, 3, 640, 640)

为什么 probs 属性返回 None,以及如何检索每个检测到的对象的分类概率? Ultralytics YOLOv8 实现中的这种行为背后是否有特定的设计原因?

最佳答案

问题是您正在尝试从检测任务的结果中获取分类概率值。在yolov8中,对象分类和对象检测是不同的任务。实现对象检测,您将获得带有类 ID 及其置信度的框。您将获得类 ID 及其概率作为对象分类结果。

如果您确切需要分类概率值,请执行对象分类任务。然而,在这种情况下,孔图像将按概率最大的一类进行分类,并且不会生成边界框。

model = YOLO('yolov8n-cls.pt') # load a pretrained classification model
results = model('00000.png')

for result in results:
probs = result.probs # Probs object for classification outputs
print(probs)

如果您需要进行对象检测,可以通过 boxes.conf 访问置信度值,但它们与分类概率不同

model = YOLO('yolov8n.pt')  # load a pretrained detection model
results = model('00000.png')

for result in results:
boxes = result.boxes # Boxes object for bbox outputs
confs = boxes.data[:, 4:6] # Confidence and class ID of the detected objects
print(confs)

有关 Yolov8 任务的更多详细信息:https://docs.ultralytics.com/tasks/

关于python - Ultralytics YOLOv8 `probs` 属性返回 `None` 用于对象检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76898029/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com