Yolov8 结果:AttributeError:“列表”对象没有属性“路径”- 未找到属性

问题描述 投票:0回答:1

我正在 Colab 中使用 Yolov8 对象检测模型。代码正确运行图像子文件夹,并且模型在终端中输出正确的结果,但是此后我无法以可用格式获得结果。


!pip install ultralytics
import ultralytics
from ultralytics import YOLO
import pandas as pd
import os

# Mount Google Drive to access local files
from google.colab import drive
drive.mount('/content/drive')

# Set model details
model = YOLO('/content/drive/MyDrive/train/weights/best.pt')

# Set path to the parent folder containing image subfolders
parent_folder = "/content/drive/MyDrive"

# Create an empty list to store the results
results_list = []

for image_file in image_files:
    # Set path to image file
    path_to_image = os.path.join(path_to_folder, image_file)

    # Predict using the model and get the bounding box coordinates
    results = model.predict(path_to_image, conf=0.8, classes=1, boxes=True,)
    
    # Extract information from  results
    image = results.path
    xyxy = results.xyxy
    conf = results.probs

    # Append the extracted information to the list
    results_list.append([image, xyxy, conf])
    
# Create a pandas DataFrame from the results list
df = pd.DataFrame(results_list, columns=['image', 'xyxy', 'conf'])

# Save the DataFrame as a CSV file
df.to_csv('/content/drive/MyDrive/1.predictions/object_detection_results.csv', index=False)

我尝试将内容转换为 json、txt 或 csv 格式,但无法提取所需的任何变量,主要是 xyxy。

对于用例,重要的是获得:

  1. 图片名称
  2. 边界框尺寸
  3. 置信区间

理想情况下作为单独的列,每个预测一行。

我收到以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-26-bac2882f463a> in <cell line: 20>()
     26 
     27     # Extract information from  results
---> 28     imagename = results.path
     29     boxes = results.boxes
     30     probs = results.probs

AttributeError: 'list' object has no attribute 'path'

boxs / probs 和 xyxy 也会出现同样的错误。

但是我检查了文档,“路径”/“盒子”和“概率”似乎是正确的属性。

在这里不知所措,任何获得半可用格式的建议将不胜感激。

csv save predict inference yolov8
1个回答
0
投票

这里的

results
ultralytics.engine.results.Results类对象的list,是一个用于存储和操作推理结果的类。此列表中的每个对象代表源中每个图像的结果信息。当您一次向模型传递一个图像时,您可以参考此列表的 [0] 索引来获取所有需要的信息。

xyxy
conf
boxes
属性,它们都存储为 torch.Tensor,但为了方便起见,您可以将它们转换为列表。

image = results[0].path
xyxy = results[0].boxes.xyxy.tolist()
conf = results[0].boxes.conf.tolist()

有关处理结果的更多信息此处

© www.soinside.com 2019 - 2024. All rights reserved.