IT Academy
Справочник курса

Компьютерное зрение

Все объяснения, задачи и лабораторная в одном месте.

Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.

1. Изображение как сигнал и preprocessing

Объяснение

Изображение — массив интенсивностей с каналами и системой координат. RGB и BGR имеют разный порядок. Нормализация должна совпадать между обучением и inference.

Задача для самостоятельного решения

Почему красный объект стал синим после загрузки?

Показать разбор ответа

Вероятно, перепутан RGB/BGR. Проверьте библиотечный формат и явно преобразуйте каналы перед визуализацией и подачей модели.

2. Features, geometry и classical CV

Объяснение

Разметка определяет задачу: класс всего кадра, bounding box или маска пикселей. Независимость train/test важнее случайного перемешивания файлов. Соседние кадры одного видео почти дублируются.

Задача для самостоятельного решения

Как разделять кадры медицинского исследования или видео?

Показать разбор ответа

По независимому пациенту/сцене/записи, а не случайно по кадрам. Иначе похожие изображения попадут в обе части и завысят оценку.

3. CNN и transfer learning

Объяснение

Detection предсказывает класс и положение объекта. IoU — площадь пересечения боксов, делённая на площадь объединения. Порог влияет на признание предсказания совпадением.

Задача для самостоятельного решения

Два бокса имеют площади 10 и 10, пересечение 5. Найдите IoU.

Показать разбор ответа

Объединение 10+10−5=15, IoU=5/15≈0,333. Доля пересечения от одного бокса была бы другой метрикой.

4. Detection и tracking

Объяснение

Segmentation присваивает метку каждому пикселю. Дисбаланс фона делает pixel accuracy обманчивой. Для границ и маленьких объектов нужны подходящие метрики и анализ по классам.

Задача для самостоятельного решения

Фон занимает 99% кадра. Хороша ли модель с accuracy 99%, всегда выдающая фон?

Показать разбор ответа

Нет: она не находит ни одного целевого объекта. Смотрите IoU/Dice целевого класса и реальные ошибки масок.

5. Segmentation и multimodal models

Объяснение

Augmentation моделирует допустимые вариации данных. Преобразование изображения должно согласованно менять boxes и masks. Не каждое преобразование сохраняет смысл метки.

Задача для самостоятельного решения

Можно ли горизонтально отражать изображение дорожного знака с текстом?

Показать разбор ответа

Только если такая вариация соответствует задаче. Иначе создаётся нереалистичный пример; семантика данных важнее удобства augmentation.

6. Evaluation, augmentation и deployment

Объяснение

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

Задача для самостоятельного решения

Что проверять после quantization?

Показать разбор ответа

Метрики на исходном контрольном наборе, latency на целевом устройстве и сложные случаи: слабый свет, мелкие объекты, неожиданные разрешения.

Практика

Лабораторная работа

Подготовка

Python 3, геометрический пример без скачивания датасета.

Учебный пример

def iou(a,b):
    x1,y1 = max(a[0],b[0]),max(a[1],b[1])
    x2,y2 = min(a[2],b[2]),min(a[3],b[3])
    intersection = max(0,x2-x1)*max(0,y2-y1)
    area_a=(a[2]-a[0])*(a[3]-a[1])
    area_b=(b[2]-b[0])*(b[3]-b[1])
    union=area_a+area_b-intersection
    return intersection/union if union else 0
print(round(iou((0,0,2,2),(1,1,3,3)),3))

Как работает пример и что ожидать

Результат 0.143: пересечение 1, объединение 7. Координаты здесь задают непрерывные прямоугольники без включения крайнего пикселя через +1. Перед использованием нужно проверить порядок координат.

Итоговая работа

Соберите небольшой собственный набор изображений, разделите по сценам, проверьте RGB и transforms масок/боксов. Оцените качество по размерам объектов и условиям, затем сравните latency на целевом устройстве.

Проверка результата

1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.

Как оценить работу

По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.