我正在 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。
对于用例,重要的是获得:
理想情况下作为单独的列,每个预测一行。
我收到以下错误:
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 也会出现同样的错误。
但是我检查了文档,“路径”/“盒子”和“概率”似乎是正确的属性。
在这里不知所措,任何获得半可用格式的建议将不胜感激。
这里的
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()
有关处理结果的更多信息此处。