AI и машинное обучение

Учебник Компьютерное зрение для начинающих

27 уроков · 6 разделов · бесплатно, без регистрации

Компьютерное зрение учит машины «видеть»: превращать миллионы пикселей в осмысленные выводы — что на картинке, где находится объект, к какому классу он относится. Этот курс ведёт от самых основ (изображение — это просто матрица чисел) к свёрточным нейросетям, детекции, сегментации и современным моделям вроде Vision Transformers и диффузионных генераторов. Идеи мы делаем осязаемыми: свёртку, оператор Собеля, пулинг и морфологию вы прогоните прямо в браузере на маленьких матрицах «пикселей» через стандартный Python. Реальные библиотеки (OpenCV, PyTorch, PIL) показаны как код для чтения. От читателя нужны базовое понимание нейросетей и Python.

Курс «Компьютерное зрение» состоит из 6 разделов и 27 уроков: Основы: изображение как данные, Классическая обработка изображений, Признаки и границы, Свёрточные нейросети (CNN), Задачи распознавания и Современное CV и практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Основы: изображение как данные

    1. Что такое компьютерное зрение и какие задачи оно решает

      Зачем нужно компьютерное зрение и четыре главные задачи: классификация, детекция, сегментация и генерация изображений.

    2. Изображение как данные: пиксели, каналы и градации серого

      Картинка — это матрица чисел. Разбираем пиксели, каналы RGB и оттенки серого и собираем «картинку» из чисел руками на Python.

    3. Разрешение и битность: сколько информации в картинке

      Что такое разрешение, битовая глубина и динамический диапазон, и как они влияют на качество, размер и обработку изображения.

    4. Цветовые пространства: RGB, HSV и оттенки серого

      Зачем нужны разные цветовые модели: RGB для хранения, HSV для выделения цвета, grayscale для формы. Когда какое удобнее.

  2. 2 Классическая обработка изображений

    1. Точечные операции: яркость, контраст, инверсия, порог

      Простейшие преобразования, где новый пиксель зависит только от старого: яркость, контраст, инверсия и бинаризация по порогу — руками на Python.

    2. Гистограмма яркости: характер картинки в одном графике

      Гистограмма показывает распределение яркостей пикселей. Строим её руками и учимся читать: тёмная, светлая, контрастная картинка.

    3. Фильтры и свёртка: ядро, которое скользит по картинке

      Главная операция обработки изображений — свёртка. Что такое ядро (kernel) и как оно применяется. Делаем свёртку 3×3 вручную на Python.

    4. Размытие, резкость и шумоподавление

      Как разные ядра дают размытие и резкость, чем гауссово размытие лучше простого, и почему от шума спасает медианный фильтр.

  3. 3 Признаки и границы

    1. Выделение границ: градиент яркости и оператор Собеля

      Граница — это резкий перепад яркости. Считаем градиент оператором Собеля вручную и видим, как всплеск магнитуды отмечает край объекта.

    2. Углы и ключевые точки: идея SIFT и ORB

      Почему углы — лучшие ориентиры, чем края, и как дескрипторы SIFT/ORB позволяют находить один и тот же объект на разных снимках.

    3. Морфология: эрозия и дилатация

      Операции над бинарными масками: эрозия сжимает объект и убирает шум, дилатация наращивает и заполняет дыры. Реализуем обе руками.

    4. Почему ручные признаки уступили нейросетям

      Классический CV строился на признаках, которые придумывал инженер. Разбираем, почему этот подход упёрся в потолок и проиграл обучаемым признакам CNN.

  4. 4 Свёрточные нейросети (CNN)

    1. Почему полносвязные сети плохи для картинок

      Обычная полносвязная сеть на картинках взрывается по числу параметров и игнорирует пространственную структуру. Считаем, почему так, и зачем нужна свёртка.

    2. Свёрточный слой: фильтры обучаются сами

      Как устроен свёрточный слой: обучаемые фильтры, карты признаков, несколько фильтров на слой и что задают stride и padding.

    3. Пулинг: уменьшаем карту, сохраняя суть

      Слой пулинга сжимает карты признаков, давая устойчивость к сдвигу и экономию вычислений. Считаем max- и avg-пулинг 2×2 руками.

    4. Архитектура CNN и что «видят» её слои

      Полная схема свёрточной сети: свёртки и пулинг как извлечение признаков, полносвязные слои как классификатор, и иерархия от краёв к объектам.

    5. Известные архитектуры: LeNet, AlexNet, VGG, ResNet

      Краткая история ключевых CNN: от LeNet к AlexNet, глубокому VGG и революции остаточных связей в ResNet.

  5. 5 Задачи распознавания

    1. Классификация изображений: как работает и как мерить

      Полный путь классификатора от датасета до метрик: обучение, accuracy, top-5, матрица ошибок и почему точности мало при дисбалансе классов.

    2. Детекция объектов: bounding box, YOLO и R-CNN

      Как сети находят несколько объектов и рисуют рамки. Метрика IoU, два семейства детекторов: точные R-CNN и быстрые одностадийные YOLO.

    3. Сегментация: семантическая, инстанс и U-Net

      Сегментация присваивает класс каждому пикселю. Разница семантической и инстанс-сегментации и почему U-Net с её формой так удобна.

    4. Распознавание лиц и эмбеддинги

      Почему распознавание лиц — это не классификация, а сравнение эмбеддингов, и как косинусная близость векторов решает, один ли это человек.

    5. Аугментация данных: больше пользы из тех же картинок

      Зачем искусственно расширять датасет: повороты, отражения, кропы и сдвиги яркости борются с переобучением и учат сеть инвариантности.

  6. 6 Современное CV и практика

    1. Transfer learning: чужая сеть для своей задачи

      Почему не нужно учить сеть с нуля: берём предобученную на ImageNet модель и дообучаем под свою задачу на малом датасете.

    2. Vision Transformers: мост к трансформерам

      Как трансформеры из мира текста пришли в зрение: картинка как последовательность патчей, self-attention и в чём ViT сильнее и слабее CNN.

    3. Генеративные модели: GAN и диффузия

      Как машины не распознают, а создают картинки: дуэль генератора и дискриминатора в GAN и постепенное «расшумление» в диффузионных моделях.

    4. Инструменты: OpenCV и PyTorch/torchvision

      Обзор практического инструментария CV: OpenCV для классической обработки и PyTorch с torchvision для нейросетей. Код — для чтения.

    5. Этика, ограничения и что дальше

      Где CV ошибается и кому это вредит: предвзятость датасетов, приватность распознавания лиц, обманчивость моделей. Итоги курса и куда двигаться.