如何将 'Detections' 对象变成字符串

How to turn 'Detections' object into string

我有这段代码,它使用 YOLOV5 和我训练的模型的权重来推断图像以检测和识别埃及货币。对象 'results' 的数据类型为 'Detections'。有什么办法可以将它转换成字符串对象,因为出于某种目的我需要标签输出吗?我尝试了 str() 函数,但它没有用。

import torch
import os
import cv2

# Model
model = torch.hub.load(r'C:\Users\HAYA\PycharmProjects\curency_recognition\yolov5-master\yolov5-master', 'custom', path=r'C:\Users\HAYA\PycharmProjects\curency_recognition\_best.pt', source='local')
# Image
im = [r'E:\_currency.jpg']
# Inference
results = model(im)
# results
results.print()
results.save()  # or .show()
results.show()
results.xyxy[0]  # img1 predictions (tensor)
results.pandas().xyxy[0]

以下函数有点“错误”,但它可以为您提供所需的结果

def results_parser(results):
  s = ""
  if results.pred[0].shape[0]:
    for c in results.pred[0][:, -1].unique():
      n = (results.pred[0][:, -1] == c).sum()  # detections per class
      s += f"{n} {results.names[int(c)]}{'s' * (n > 1)}, "  # add to string
  return s

我 运行 来自原始存储库的 Zidane 图像上的默认 yolov5s,在获得结果对象后我做了以下操作:

# Model
model = torch.hub.load(r'/content/yolov5//', 'custom', path=r'/content/yolov5/yolov5s.pt', source='local')
# Image
im = [r'runs/detect/exp/zidane.jpg']
# Inference
results = model(im)
print(results_parser(results))

输出为:

2 persons, 2 ties, 

希望此回答对您有所帮助,祝您有愉快的一天)