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.

227 lines
19 KiB

---
comments: true
description: Узнайте, как использовать режим предсказаний YOLOv8 для различных задач. Изучите различные источники вывода, такие как изображения, видео и форматы данных.
keywords: Ultralytics, YOLOv8, режим предсказаний, источники вывода, задачи предсказания, режим потоковой передачи, обработка изображений, обработка видео, машинное обучение, искусственный интеллект
---
# Прогнозирование моделью Ultralytics YOLO
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="Экосистема и интеграции Ultralytics YOLO">
## Введение
В мире машинного обучения и компьютерного зрения процесс извлечения информации из визуальных данных называется 'выводом' или 'предсказанием'. Ultralytics YOLOv8 предлагает мощную функцию, известную как **режим предсказаний**, который предназначен для высокопроизводительного реального времени вывода на широкий спектр источников данных.
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/QtsI0TnwDZs?si=ljesw75cMO2Eas14"
title="Проигрыватель видео YouTube" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>Смотреть:</strong> Как извлечь результаты из модели Ultralytics YOLOv8 для пользовательских проектов.
</p>
## Прикладные области
| Производство | Спорт | Безопасность |
|:-------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|
| ![Обнаружение автозапчастей](https://github.com/RizwanMunawar/ultralytics/assets/62513924/a0f802a8-0776-44cf-8f17-93974a4a28a1) | ![Обнаружение футболистов](https://github.com/RizwanMunawar/ultralytics/assets/62513924/7d320e1f-fc57-4d7f-a691-78ee579c3442) | ![Обнаружение падения людей](https://github.com/RizwanMunawar/ultralytics/assets/62513924/86437c4a-3227-4eee-90ef-9efb697bdb43) |
| Обнаружение автозапчастей | Обнаружение футболистов | Обнаружение падения людей |
## Почему стоит использовать 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