19 KiB
comments | description | keywords |
---|---|---|
true | Узнайте, как использовать режим предсказаний YOLOv8 для различных задач. Изучите различные источники вывода, такие как изображения, видео и форматы данных. | Ultralytics, YOLOv8, режим предсказаний, источники вывода, задачи предсказания, режим потоковой передачи, обработка изображений, обработка видео, машинное обучение, искусственный интеллект |
Прогнозирование моделью 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
```