csv Yolov 8结果:AttributeError:'list'对象没有属性'path'-找不到属性

x6yk4ghg  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(222)

我在colab中使用Yolov 8对象检测模型。代码正确地运行了图像处理器,模型在终端中输出了正确的结果,但是在这一点之后,我无法以可用的格式获得结果。

!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.图像名称
1.边界框尺寸
1.置信区间
理想情况下为单独的列,并且每个预测一行。
我得到以下错误:

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'


对于boxes / probs和xyxy也会出现相同的错误。
但是我检查了文档,'path' / 'boxes'和'probs'似乎是正确的属性。
在这里的损失,任何建议,以获得一个半可用的格式将不胜感激。

vzgqcmou

vzgqcmou1#

这里的resultsultralytics.engine.results.Results 类对象的列表,该类用于存储和操作推理结果。此列表中的每个对象表示源中每个图像的结果信息。当您每次向模型传递单个图像时,您可以引用此列表的[0]索引以获取所有需要的信息。
xyxyconf是**boxes**属性,它们都存储为 torch.Tensor,但为了方便起见,您可以将它们转换为列表。

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

字符串
有关使用结果的更多信息,请单击此处。

相关问题