Семь задач компьютерного зрения
Соотнеси строку результата с классификацией, детекцией, сегментацией экземпляров, семантической сегментацией, оценкой глубины, позой или OBB и выбери веса YOLO26 для начала работы.
Выбор задачи — самое дорогостоящее решение, которое ты принимаешь до обучения. Выберешь сегментацию, хотя достаточно рамок, — и расходы на разметку вырастут; выберешь вертикальные рамки для кораблей, снятых с дрона, — и почти вся площадь каждой рамки будет занята водой. Ultralytics YOLO поддерживает семь задач через один API, поэтому выбор зависит от нужного результата, а не от инструментов.
Практические занятия
Краткий обзор семи задач#

Смотри на столбец с результатом — именно ему должна соответствовать строка результата в твоей спецификации.
| Задача | Результат | На какой вопрос отвечает | Веса YOLO26 |
|---|---|---|---|
| Классификация | Одна метка на изображение с вероятностью | «Что изображено на картинке?» | yolo26n-cls.pt |
| Детекция | Класс, рамка и оценка уверенности для каждого объекта | «Что и где?» | yolo26n.pt |
| Сегментация экземпляров | Класс и пиксельная маска для каждого объекта | «Какова точная форма каждого объекта?» | yolo26n-seg.pt |
| Семантическая сегментация | Один класс для каждого пикселя | «К какому типу области относится каждый пиксель?» | yolo26n-sem.pt |
| Оценка глубины | Расстояние в метрах для каждого пикселя | «Как далеко находится каждый пиксель?» | yolo26n-depth.pt |
| Оценка позы | Рамка и ключевые точки для каждого человека или объекта | «В какой позе находится тело?» | yolo26n-pose.pt |
| Ориентированные ограничивающие рамки | Повернутая рамка для каждого объекта | «Что где находится и под каким углом?» | yolo26n-obb.pt |
Две пары задач часто вызывают путаницу. Сегментация экземпляров и семантическая сегментация: сегментация экземпляров разделяет каждый объект (три машины, три маски); семантическая сегментация присваивает класс только пикселям (одна область «машина», без подсчета объектов). Детекция и OBB: обе задачи возвращают по одной рамке на объект, но OBB поворачивается вместе с объектом, что важно, когда объекты расположены под углом на изображениях сверху.
Один API, семь типов выходных данных#
Смена задачи не означает смену инструментов. Файл весов определяет, что вернется, а объект Results заполняет соответствующий атрибут:
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
outputs = ["probs", "boxes", "masks", "semantic_mask", "depth", "keypoints", "obb"]
for suffix in ["-cls", "", "-seg", "-sem", "-depth", "-pose", "-obb"]:
weights = f"yolo26n{suffix}.pt"
model = YOLO(weights)
result = model(image, verbose=False)[0]
filled = [name for name in outputs if getattr(result, name) is not None]
print(f"{weights:18} task={model.task:9} -> {', '.join(filled)}")yolo26n-cls.pt task=classify -> probs
yolo26n.pt task=detect -> boxes
yolo26n-seg.pt task=segment -> boxes, masks
yolo26n-sem.pt task=semantic -> semantic_mask
yolo26n-depth.pt task=depth -> depth
yolo26n-pose.pt task=pose -> boxes, keypoints
yolo26n-obb.pt task=obb -> obbСмотри на правый столбец: сегментация и оценка позы также возвращают рамки, потому что это детекция плюс еще одна возможность. Семантическая сегментация и оценка глубины вообще не возвращают данные по отдельным объектам — вместо этого они описывают каждый пиксель. Твой код для последующей обработки обращается ровно к одному из этих атрибутов, поэтому в строке спецификации с выходными данными нужно указать его.
Как выбрать на практике#
Сначала определи, что должно описывать одно предсказание, а затем выбери самую простую задачу, которая дает ответ для строки с критерием принятия решения:
- Одна метка для всего изображения → классификация.
- Класс для каждого пикселя, без необходимости разделять объекты → семантическая сегментация.
- Расстояние для каждого пикселя → оценка глубины.
- Что-то про каждый объект:
- где он находится, чтобы посчитать, найти или отфильтровать его → детекция (добавь треккинг, чтобы отслеживать идентификаторы между кадрами);
- его точная форма, граница или площадь → сегментация экземпляров;
- его поза → оценка позы;
- его поворот на изображениях сверху → OBB.
Если подходят две задачи, выбирай ту, которую дешевле разметить и запустить. Для большинства продуктов детекция — вариант по умолчанию: рамки быстро рисовать и проверять, а вместе с треккингом они уже позволяют считать объекты, создавать оповещения о зонах и анализировать трафик, как на этом изображении шоссе:

Глубина: задача, которая отвечает на вопрос «как далеко»#
Оценка глубины возвращает карту размером с изображение, в которой для каждого пикселя указано расстояние в метрах, — без классов и рамок. Используй ее, когда решение зависит от расстояния: например, чтобы робот объезжал препятствия, автомобиль замедлялся при приближении к объекту или можно было примерно оценить объем груды.
from ultralytics import YOLO
model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg", verbose=False)[0]
depth = result.depth.data # meters, one value per pixel
print(f"depth map {tuple(depth.shape)}, nearest {float(depth.min()):.1f} m, farthest {float(depth.max()):.1f} m")depth map (1080, 810), nearest 2.0 m, farthest 14.9 mОдна камера оценивает глубину по таким усвоенным признакам, как перспектива и размер объектов, поэтому перед использованием для критически важных с точки зрения безопасности расстояний измерь погрешность на своих сценах. Оценка глубины хорошо сочетается с детекцией: сначала обнаружь объект, а затем считай глубину по карте внутри его рамки.
Подводные камни#
| Типичная ошибка | Симптом | Оптимальный выбор |
|---|---|---|
| Сегментация там, где хватило бы рамок | Код для последующей обработки никогда не использует маску | Детекция |
| Неповернутые рамки на изображениях сверху | Рамки захватывают в основном фон, а соседние объекты подавляют друг друга | OBB |
| Классификация сцены с несколькими объектами | Метка зависит от одного небольшого объекта | Детекция и правило |
| Семантическая сегментация, когда нужно считать объекты | Соприкасающиеся объекты сливаются в одну область | Сегментация экземпляров |
| Размер рамки как приблизительная оценка расстояния | Правила перестают работать при разном размере объектов | Оценка глубины или детекция вместе с оценкой глубины |
| Оценка позы для проверки присутствия | Ты никогда не считываешь ключевые точки | Детекция |
Более сложные выходные данные обходятся дороже на каждом этапе: маски и ключевые точки дольше размечать и проверять, к тому же для них нужны более строгие правила разметки. Начни с самой дешёвой задачи, которая позволяет принять решение, и усложняй её только тогда, когда реальному потребителю нужны дополнительные детали.
Показать решение
Для спецификации погрузчика ответ — детекция с yolo26n.pt, данные считываются из result.boxes.
Для принятия решения нужно знать, где находятся погрузчики и люди, чтобы код мог проверить, насколько близко они друг к другу. На этот вопрос отвечают рамки. Сегментация экземпляров увеличила бы затраты на разметку, но не изменила бы оповещение, поскольку нижний край рамки уже указывает положение объекта на земле. Оценка позы не нужна, поскольку поза не влияет на решение. Оценка глубины помогла бы преобразовать координаты на изображении в метры, но калиброванная неподвижная камера и без нее отображает плоскость пола. OBB стоит тестировать, только если камеры направлены строго вниз, а погрузчики появляются под большими диагональными углами.