0Pricing
Learn AI with Python · Урок

Обнаружение объектов с YOLOv8

ultralytics YOLO, model.predict(), ограничивающие рамки, фильтрация по уверенности, пользовательское обучение

«Обнаружение объектов с YOLOv8» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Классификация и обнаружение

Классификация изображения определяет, что на нём находится. Обнаружение объектов идёт дальше: оно находит местоположение каждого объекта, рисуя ограничивающие рамки и метки. YOLO — самый популярный детектор реального времени.

Что такое YOLO?

YOLO (You Only Look Once — «Вы смотрите только один раз») обнаруживает все объекты за один прямой проход, поэтому работает достаточно быстро для видео. YOLOv8 от Ultralytics предоставляет удобный Python API для вывода и обучения.

pip install ultralytics

Загрузка предварительно обученной модели

Импортируйте YOLO и загрузите контрольную точку. yolov8n.pt — нано-модель: маленькая и быстрая. Более крупные варианты (s, m, l, x) обменивают скорость на точность. При первом использовании веса загружаются автоматически.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")

Запуск вывода

Вызовите model.predict (или просто model(image)) для пути к изображению, URL или массива. Метод возвращает список результатов — по одному на каждое входное изображение.

results = model.predict("street.jpg", conf=0.5)

Порог conf

Параметр conf задаёт минимальную уверенность, необходимую для сохранения обнаружения. Увеличьте его, чтобы отбрасывать ненадёжные рамки и уменьшать количество ложных срабатываний; уменьшите, чтобы находить больше объектов, принимая риск появления шума.

results = model.predict("street.jpg", conf=0.25)  # more detections
results = model.predict("street.jpg", conf=0.7)   # only confident ones

Чтение рамок

Каждый результат содержит объект boxes. boxes.xyxy задаёт углы ограничивающей рамки в виде [x1, y1, x2, y2] — координат пикселей верхнего левого и нижнего правого углов.

r = results[0]
print(r.boxes.xyxy)  # tensor of [x1, y1, x2, y2] rows

Классы и уверенность

Вместе с рамками Вы получаете boxes.cls (индексы классов) и boxes.conf (оценки уверенности). Преобразуйте индексы в названия с помощью model.names.

for box in r.boxes:
    cls_id = int(box.cls)
    conf = float(box.conf)
    name = model.names[cls_id]
    print(name, round(conf, 2))

Визуализация результатов

results[0].plot() возвращает массив изображения с нанесёнными на него рамками и метками, готовый для отображения или сохранения. Это удобно для быстрой проверки обнаружений.

annotated = results[0].plot()

import cv2
cv2.imwrite("output.jpg", annotated)

Обнаружение объектов в видео

Передайте видеофайл или индекс веб-камеры, и YOLO обработает каждый кадр. При использовании stream=True результаты выдаются кадр за кадром, что позволяет экономить память при работе с длинными видео.

for result in model.predict("clip.mp4", stream=True):
    boxes = result.boxes
    # process each frame

Пользовательское обучение

Чтобы обнаруживать собственные классы объектов, обучите модель на размеченном наборе данных, описанном в YAML-файле. Вызовите model.train, указав конфигурацию данных, количество эпох и размер изображения. YOLO дообучит предварительно обученные веса.

model = YOLO("yolov8n.pt")
model.train(
    data="my_dataset.yaml",
    epochs=50,
    imgsz=640
)

YAML-файл данных

YAML-файл набора данных содержит папки с изображениями для обучения и валидации, а также названия классов. YOLO ожидает, что для каждого изображения будет соответствующий файл разметки с нормализованными координатами рамок каждого объекта.

# my_dataset.yaml
# train: images/train
# val: images/val
# names:
#   0: helmet
#   1: vest

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете YOLOv8.

Повторение: обнаружение объектов с помощью YOLOv8

Вы загрузили предварительно обученный детектор с помощью YOLO("yolov8n.pt"), запустили model.predict(img, conf=0.5) и считали обнаружения из results[0].boxes.xyxy, .cls и .conf. Вы визуализировали результаты с помощью results[0].plot() и дообучили модель на пользовательских классах через model.train, используя YAML-файл данных.

Часто задаваемые вопросы

Урок «Обнаружение объектов с YOLOv8» бесплатный?

Да — полный текст урока «Обнаружение объектов с YOLOv8» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Обнаружение объектов с YOLOv8»?

ultralytics YOLO, model.predict(), ограничивающие рамки, фильтрация по уверенности, пользовательское обучение Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Обнаружение объектов с YOLOv8»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Тензоры PyTorch и Autograd
  2. Пользовательские наборы данных и DataLoaders
  3. Создание и обучение CNN в PyTorch
  4. Обнаружение объектов с YOLOv8
← Назад к Learn AI with Python