You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

19 KiB

comments description keywords
true Узнайте, как использовать режим предсказаний YOLOv8 для различных задач. Изучите различные источники вывода, такие как изображения, видео и форматы данных. Ultralytics, YOLOv8, режим предсказаний, источники вывода, задачи предсказания, режим потоковой передачи, обработка изображений, обработка видео, машинное обучение, искусственный интеллект

Прогнозирование моделью Ultralytics YOLO

Экосистема и интеграции Ultralytics YOLO

Введение

В мире машинного обучения и компьютерного зрения процесс извлечения информации из визуальных данных называется 'выводом' или 'предсказанием'. Ultralytics YOLOv8 предлагает мощную функцию, известную как режим предсказаний, который предназначен для высокопроизводительного реального времени вывода на широкий спектр источников данных.



Смотреть: Как извлечь результаты из модели Ultralytics YOLOv8 для пользовательских проектов.

Прикладные области

Производство Спорт Безопасность
Обнаружение автозапчастей Обнаружение футболистов Обнаружение падения людей
Обнаружение автозапчастей Обнаружение футболистов Обнаружение падения людей

Почему стоит использовать Ultralytics YOLO для вывода?

Вот почему вам следует рассмотреть режим предсказаний YOLOv8 для ваших различных потребностей в выводе:

  • Универсальность: Возможность делать выводы по изображениям, видео и даже потоковым трансляциям.
  • Производительность: Разработан для обработки данных в реальном времени без потери точности.
  • Простота использования: Интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
  • Высокая настраиваемость: Различные настройки и параметры для настройки поведения модели вывода в соответствии с вашими конкретными требованиями.

Ключевые особенности режима предсказаний

Режим предсказаний YOLOv8 разработан, чтобы быть надежным и универсальным, он включает в себя:

  • Совместимость с несколькими источниками данных: независимо от того, представлены ли ваши данные в виде отдельных изображений, коллекции изображений, видеофайлов или потокового видео, режим предсказаний покрывает все это.
  • Режим потоковой передачи: Используйте функцию потоковой передачи для создания генератора объектов Results, экономящего память. Активируйте это, установив stream=True в методе вызова предиктора.
  • Пакетная обработка: Возможность обрабатывать несколько изображений или видеокадров за один пакет, что дополнительно ускоряет время вывода.
  • Дружественная интеграция: Легко интегрируется с существующими данными и другими программными компонентами благодаря гибкому API.

Модели Ultralytics YOLO возвращают либо список объектов Results, либо генератор объектов Results в Python, экономящий память, когда stream=True передается в модель во время вывода:

!!! Example "Предсказание"

=== "Вернуть список с `stream=False`"
    ```python
    from ultralytics import YOLO

    # Загрузка модели
    model = YOLO('yolov8n.pt')  # предварительно обученная модель YOLOv8n

    # Пакетный вывод на список изображений
    results = model(['im1.jpg', 'im2.jpg'])  # вернуть список объектов Results

    # Обработка списка результатов
    for result in results:
        boxes = result.boxes  # Объект Boxes для вывода bbox
        masks = result.masks  # Объект Masks для вывода масок сегментации
        keypoints = result.keypoints  # Объект Keypoints для вывода поз
        probs = result.probs  # Объект Probs для вывода вероятностей классификации
    ```

=== "Вернуть генератор с `stream=True`"
    ```python
    from ultralytics import YOLO

    # Загрузка модели
    model = YOLO('yolov8n.pt')  # предварительно обученная модель YOLOv8n

    # Пакетный вывод на список изображений
    results = model(['im1.jpg', 'im2.jpg'], stream=True)  # вернуть генератор объектов Results

    # Обработка генератора результатов
    for result in results:
        boxes = result.boxes  # Объект Boxes для вывода bbox
        masks = result.masks  # Объект Masks для вывода масок сегментации
        keypoints = result.keypoints  # Объект Keypoints для вывода поз
        probs = result.probs  # Объект Probs для вывода вероятностей классификации
    ```

Источники вывода

YOLOv8 может обрабатывать различные типы входных источников для вывода, как показано в таблице ниже. Источники включают статические изображения, видеопотоки и различные форматы данных. В таблице также указано, можно ли использовать каждый источник в режиме потоковой передачи с аргументом stream=True . Режим потоковой передачи полезен для обработки видео или живых трансляций, так как создает генератор результатов вместо загрузки всех кадров в память.

!!! Tip "Совет"

Используйте `stream=True` для обработки длинных видеороликов или больших наборов данных для эффективного управления памятью. Когда `stream=False`, результаты для всех кадров или точек данных хранятся в памяти, что может быстро накопиться и вызвать ошибки переполнения памяти для больших входов. В отличие от этого, `stream=True` использует генератор, который хранит в памяти результаты только текущего кадра или точки данных, значительно сокращая потребление памяти и предотвращая проблемы с переполнением памяти.
Источник Аргумент Тип Заметки
изображение 'image.jpg' str или Path Одиночный файл изображения.
URL 'https://ultralytics.com/images/bus.jpg' str URL на изображение.
скриншот 'screen' str Снять скриншот.
PIL Image.open('im.jpg') PIL.Image Формат HWC с RGB каналами.
OpenCV cv2.imread('im.jpg') np.ndarray Формат HWC с BGR каналами uint8 (0-255).
numpy np.zeros((640,1280,3)) np.ndarray Формат HWC с BGR каналами uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor Формат BCHW с RGB каналами float32 (0.0-1.0).
CSV 'sources.csv' str или Path CSV-файл, содержащий пути к изображениям, видео или каталогам.
видео 'video.mp4' str или Path Видеофайл в форматах, вроде MP4, AVI и т.д.
каталог 'path/' str или Path Путь к каталогу, содержащему изображения или видео.
глоб 'path/*.jpg' str Шаблон глоба для сопоставления нескольких файлов. Используйте символ * как подстановочный.
YouTube 'https://youtu.be/LNwODJXcvt4' str URL на видео YouTube.
поток 'rtsp://example.com/media.mp4' str URL для потоковых протоколов, таких как RTSP, RTMP, TCP, или IP-адрес.
много-потоков 'list.streams' str или Path Текстовый файл *.streams с одним URL потока на строку, например, 8 потоков запустятся с пакетом размером 8.

Ниже приведены примеры кода для использования каждого типа источника:

!!! Example "Источники предсказаний"

=== "изображение"
    Выполнить вывод на файл изображения.
    ```python
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Определите путь к файлу изображения
    source = 'path/to/image.jpg'

    # Выполнить вывод на источник
    results = model(source)  # список объектов Results
    ```

=== "скриншот"
    Выполнить вывод на текущее содержимое экрана в виде скриншота.
    ```python
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Определение текущего скриншота как источника
    source = 'screen'

    # Выполнить вывод на источник
    results = model(source)  # список объектов Results
    ```

=== "URL"
    Выполнить вывод на изображение или видео, размещенные удаленно по URL.
    ```python
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Определение URL удаленного изображения или видео
    source = 'https://ultralytics.com/images/bus.jpg'

    # Выполнить вывод на источник
    results = model(source)  # список объектов Results
    ```

=== "PIL"
    Выполнение вывода на изображение, открытое с помощью Python Imaging Library (PIL).
    ```python
    from PIL import Image
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Открытие изображения с помощью PIL
    source = Image.open('path/to/image.jpg')

    # Выполнение вывода на источник
    results = model(source)  # список объектов Results
    ```

=== "OpenCV"
    Выполнение вывода на изображение, прочитанное с помощью OpenCV.
    ```python
    import cv2
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Чтение изображения с помощью OpenCV
    source = cv2.imread('path/to/image.jpg')

    # Выполнение вывода на источник
    results = model(source)  # список объектов Results
    ```

=== "numpy"
    Выполнение вывода на изображение, представленное в виде массива numpy.
    ```python
    import numpy as np
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Создание случайного массива numpy с формой HWC (640, 640, 3) со значениями в диапазоне [0, 255] и типом uint8
    source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')

    # Выполнение вывода на источник
    results = model(source)  # список объектов Results
    ```

=== "torch"
    Выполнение вывода на изображение, представленное в виде тензора PyTorch.
    ```python
    import torch
    from ultralytics import YOLO

    # Загрузка предварительно обученной модели YOLOv8n
    model = YOLO('yolov8n.pt')

    # Создание случайного тензора torch с формой BCHW (1, 3, 640, 640) со значениями в диапазоне [0, 1] и типом float32
    source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

    # Выполнение вывода на источник
    results = model(source)  # список объектов Results
    ```