Детекция в yolo

У меня есть функция с детекцией на yolov8 и мне в консоли выходит это:

image 1/1 /content/download.jpg: 352x640 1 cat, 1 dog, 348.5ms Speed: 21.9ms preprocess, 348.5ms inference, 37.1ms postprocess per image at shape (1, 3, 352, 640) Results saved to runs/detect/predict runs/detect/predict/download.jpg

def detect_all_in_foto_and_vidio(file):
  !rm -rf /content/runs/detect/predict
  results = model(file, save=True, save_frames=True, stream = True)
  n_result = next(results)
  output_path = os.path.join(
      n_result.save_dir, os.listdir(n_result.save_dir)[0]
  )
  for i in results:
      pass

  return output_path

Как отсюда достать информацию о найденных объектах(первую строку 1 cat, 1 dog)?


Ответы (2 шт):

Автор решения: HerrAskin

Основные сведения приводятся в документации на yolov8 по ссылке.

Как я понял, можно сделать так:

def detect_all_in_foto_and_vidio(file):
  !rm -rf /content/runs/detect/predict
  results = model(file, save=True, save_frames=True, stream = True)
  n_result = next(results)
  output_path = os.path.join(
      n_result.save_dir, os.listdir(n_result.save_dir)[0]
  )
  for i in results:
      print(i.names)  # должно быть "A dictionary of class names."

  return output_path
→ Ссылка
Автор решения: Марсель Баринов

По итогу можно просто прописать новую функцию для вывода найденных объектов.

def print_rez(file):
  a = ""
  model = YOLO('yolov8n.pt')

  # Run inference on an image
  results = model(file)  # results list

  # View results
  for r in results:
    a = a,r.verbose()
  return a

По итогу у меня выходит массив их двух строк. Так можно сделать вывод дэтэкций для картинки.


PS: Буду очень рад, если кто-то подскажет, как сделать постоянный вывод найденных обьектов в консоль в режиме реального времени.

→ Ссылка