← Неделя 11

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Умное саммари · компьютерное зрение

Для нас — кот. Для компьютера — числа.

В прошлый раз мы искали похожие строки таблицы и тексты. Теперь объект — целая фотография. Главный вопрос не «какую сеть взять?», а как представить изображение, чтобы сходство чисел помогало решить нашу задачу?

Файл JPG / PNG
→
Пиксели
→
Признаки
→
Знакомые модели

Серое изображение

Одна матрица яркостей. В обычном 8-битном примере 0 — чёрный, 255 — белый.

RGB-изображение

Три канала: красный, зелёный и синий. Цвет пикселя описывается тройкой чисел.

Видео

Последовательность изображений во времени. Добавляются порядок кадров и движение.

Одна строка аналитической таблицы может описывать одно изображение целиком. Файл хранит картинку; после чтения появляются пиксели. Из них человек строит ручные признаки или сеть получает выученное представление. Ручные признаки не являются обязательной технической ступенью перед embedding.

Классификация 🏷

Что изображено? Выбираем общий класс: например, «транспорт».

Детекция □

Где объекты? Находим их, задаём рамки и классы.

Сегментация ◫

Какие пиксели относятся к объекту? Получаем маску, а не только рамку.

Пиксели — ещё не смысл. Один кот может сидеть, прыгать, быть в тени или наполовину скрываться. Малый сдвиг меняет множество чисел, хотя для нас это тот же объект. Важны поза, масштаб, свет, фон, шум и размытие.

RGB-картинка 100 × 100: сколько цветовых значений без альфа-канала?

100 × 100 × 3 = 30 000. Пикселей 10 000, но каждый содержит три цветовых значения.

Почему просто сравнить все пиксели бывает неудобно?

Признаков много, а положение объекта, свет и фон сильно меняют числа. Нужное нам представление должно сохранять полезные различия и меньше реагировать на несущественные изменения.
Кот уверен, что в файле хранится кот. Компьютер пока обнаружил только 30 000 поводов не торопиться с выводом. 🐈
Лист 1 / 6 · Неделя 11

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Ручной feature engineering

Сначала — один хороший признак.

Ручной признак — вычислимая характеристика, которую придумал аналитик. Это не «старый плохой способ»: иногда простая величина решает задачу понятнее и дешевле большой сети. Но каждый такой признак — гипотеза, а не универсальный закон.

День или ночь

Начните со средней яркости и порога. Тёмные снимки чаще ночные, светлые — дневные.

Солнечный лес

Две оси: яркость и доля зелёного. Ярко и зелено — кандидат на лес, но ещё не доказательство.

Много неба

Одной доли синего мало. Нужны положение синей области и граница: море тоже синее.

Подвигайте порог «день / ночь»

Учебные, придуманные примеры: ночь с фонарями — яркость 190; день в тени — 70. Наше правило: не ниже порога → «день».

Это иллюстрация ограничения признака, не эксперимент с реальными фотографиями.

Красный круглый объект

Нужны цвет, форма и отделение объекта от фона. «Круглый» ещё предстоит превратить в правило.

Красная куртка + собака

Нужно распознать человека, одежду, её цвет и собаку; затем проверить отношение «рядом».

Человек с подарком

Добавляются поза, предмет в руках, выражение лица и контекст. Десятки правил быстро превращаются в головоломку.

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

Совет доктора Игоря: прежде чем усложнять модель, предложите простой baseline. Затем специально найдите пример, который ставит его в тупик.

«Зелёное + яркое = лес». Отлично. Теперь объясните модели зелёный диван под прожектором. 🌳
Лист 2 / 6 · Неделя 11

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Нейрон → слои → CNN

Не волшебство, а обучаемые вычисления.

Один искусственный нейрон сначала собирает взвешенную сумму входов, а затем применяет функцию активации. Вес задаёт, как вход влияет на сумму; свободный член b сдвигает её.

z = w₁x₁ + w₂x₂ + … + wᵈxᵈ + b   →   y = f(z)

Например, x₁ = 0,8, x₂ = 0,2, w₁ = 0,5, w₂ = −1, b = 0,1. Тогда z = 0,5 · 0,8 − 0,2 + 0,1 = 0,3. Это результат суммы; он не становится вероятностью автоматически. Что означает выход, зависит от функции и задачи.

Зачем нелинейность?

Без нелинейных преобразований последовательность линейных слоёв сводится к одной линейной модели.

Как учатся веса?

В примере обучения с учителем: прогноз → сравнение с ответом → ошибка → небольшая поправка весов → повтор.

Зачем слои?

Слои комбинируют сигналы. Сеть учится внутреннему языку признаков — representation learning.

Пиксели
→
Края
→
Текстуры
→
Части
→
Образ

Это педагогическая интуиция из урока, а не буквальная подпись каждого нейрона.

Filter / kernel

Маленькое окно проверяет локальный паттерн: край, угол, текстуру.

Один фильтр — по всей картинке

Один и тот же набор весов применяется в разных местах изображения. Не нужен отдельный детектор края слева, справа, сверху и снизу.

Feature map

Карта отклика показывает, где и насколько сработал фильтр. Много фильтров — много карт.

Глубже — не обязательно лучше. Мало данных, плохая разметка и неверная проверка не исправляются количеством слоёв. Человек выбирает задачу, данные, критерий качества и разбирает ошибки.

Кто назначает сети: «этот нейрон ищет ухо»?

В рассматриваемом обучении полезные параметры подстраиваются по ошибке. Мы не обязаны вручную назначать каждому нейрону человеческое понятие.

Фильтр и карта признаков — одно и то же?

Нет. Фильтр — правило вычисления локального отклика с весами. Feature map — результат применения этого правила в разных местах.
Лист 3 / 6 · Неделя 11

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

ImageNet · representation learning · transfer learning

Embedding: картинка возвращается в таблицу.

В историческом блоке урока ImageNet служит точкой поворота: большой набор размеченных изображений позволил сравнивать системы распознавания. В 2012 году AlexNet показал силу глубоких свёрточных сетей и обучения признаков по данным. Это не означает, что ручные признаки перестали быть полезными.

Ручной путьИзображение → придуманные человеком признаки → модель
Выученный путьИзображение → нейросеть → полезное внутреннее представление

Embedding — вектор признаков изображения, например [0,12; 1,87; −0,44; 0,03; …]. Вместо итогового класса берём внутреннее представление сети. В учебной аналогии это числовой отпечаток, но не уникальный паспорт и не человеческое объяснение картинки.

Одна строка

Один объект — одно изображение. Столбцы — координаты embedding; имя файла остаётся метаданными.

Похожесть

Близость векторов полезна, если обученное представление отражает нужные нам свойства. Абсолютной похожести нет.

Перенос знаний

Предобученная сеть уже искала визуальные закономерности. Используем её как готовую фабрику признаков, не обучая с нуля.

Изображение
→
Нейросеть
→
Вектор
→
Таблица

После этого снова доступны знакомые методы: Distances, Neighbors, кластеризация, Logistic Regression, kNN, Random Forest, SVM. Для разведки — проекции PCA / t-SNE / UMAP и поиск необычных объектов. Двумерный рисунок embedding-пространства — только наглядная схема или проекция многомерных данных.

Сеть выбирает свой язык похожести. Для человека два покемона похожи характером, а embedding может сблизить их по цвету, форме или фону. Не требуйте, чтобы каждая координата имела понятное название вроде «зелёность».

Что общего у Bag of Words и Image Embedding?

Они превращают сложный объект в числовую строку, с которой можно строить модели. Но признаки устроены по-разному: частоты слов и выученные визуальные координаты.

Хорошие соседи доказывают, что сеть понимает мир как человек?

Нет. Они показывают полезность выбранного представления на этих примерах. Нужно смотреть и странных соседей, и ограничения.
Нейросеть не отняла у аналитика работу. Она просто прислала ещё одну таблицу — без понятных названий столбцов. 🙂
Лист 4 / 6 · Неделя 11

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Orange · Image Analytics

Сначала смотрим, потом считаем.

Установите расширение Image Analytics. Начните с 20–30 изображений: проверьте папку, скорость, выбранный embedder и число пропущенных файлов. На выходе нужна не «красивая сетка картинок», а таблица признаков.

Import Images → Image Viewer [осмотр исходных картинок] Import Images → Image Embedding → Data Table [признаки] Image Embedding → Distances (Cosine) → Hierarchical Clustering → Image Viewer

Image Viewer — отдельная ветка осмотра. Он не заменяет Image Embedding. После embedding проверьте число обработанных и skipped images; для анализа используйте embedding-координаты, а не случайно добавленные размер файла, ширину и высоту.

Эмбеддеры, обсуждавшиеся в уроке
МодельДля чегоГде считает
SqueezeNetНебольшая универсальная модель; удобный первый запуск.Локально
Inception v3Общие изображения, объекты и сцены.Удалённо
VGG-16 / VGG-19Классические универсальные представления; VGG-19 была в старой домашней.Удалённо
PaintersЖивопись и стиль.Удалённо
DeepLocМикроскопические изображения клеток.Удалённо
openfaceЛица; был в интерфейсе урока. Наличие зависит от версии.Проверьте свою версию

Для перечисленных официально описанных моделей Orange SqueezeNet локальный, остальные требуют интернет. Личные фотографии не отправляйте в удалённый сервис без осознанного согласия; для учебного опыта достаточно предмета или рисунка.

Поиск трёх соседей: два входа, а не одна цепочка

Embeddings → Neighbors: Data [весь набор кандидатов] Embeddings → Image Viewer: выделить один объект Image Viewer: Selected Data → Neighbors: Reference Neighbors → второй Image Viewer [найденные соседи]

Метрику и число соседей задайте в Neighbors. Уберите исходное изображение из ответа. Отдельная матрица Distances нужна иерархической кластеризации, но не подаётся вместо Data в Neighbors.

Глазами проверяем дважды. До embedding — мусор, дубликаты, разметку и папки. После — удачные и странные совпадения. Вектор для мусора не перестаёт быть мусором.

Соединения виджетов уточнены по справке Neighbors; режимы моделей — по Image Embedding. Содержание листа опирается на урок.

Лист 5 / 6 · Неделя 11

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Проверка модели · GAN · финал

Изображение правдоподобно. Вывод тоже проверен?

После embedding классификация остаётся обычной задачей обучения с учителем. Классы можно получить из подпапок: кошки / собаки, еда / транспорт. Нужно несколько примеров каждого класса; одно изображение уникального вида — не основа честной проверки распознавания этого вида.

Import Images → Image Embedding → Select Columns → Test & Score Logistic Regression / kNN / Random Forest / SVM → Test & Score Test & Score → Confusion Matrix → Image Viewer [ошибки]

Accuracy — общая доля верных ответов. Precision / Recall помогают рассмотреть ошибки выбранного класса; AUC в бинарном примере оценивает качество ранжирования. Confusion Matrix показывает, кто с кем путается. Затем откройте сами ошибочные изображения.

Не подглядывайте. Копии одной картинки не должны разойтись между обучением и проверкой. Финальный test нельзя использовать для бесконечного выбора настроек. Одна высокая метрика не описывает все типы ошибок.

Generator

Из случайного шума создаёт пример, похожий на реальные данные.

Discriminator

Пытается отличить реальные примеры от сгенерированных.

GAN: обучение

Проверка → ошибка → изменение весов. Две сети совершенствуются в состязании.

GAN в уроке — пример генерации, дорисовки, реставрации, переноса стиля и синтетических данных. Vision-language модели связывают изображение с текстом: описание, вопросы, поиск. В большой карте computer vision есть также детекция, сегментация и OCR.

Ловушка deepfake: правдоподобная картинка не доказывает, что событие произошло. Проверяйте источник и контекст. Убедительный ответ модели тоже остаётся ответом, который надо проверить.

Accuracy высокая. Где искать скрытую проблему?

Посмотрите частоты классов, Confusion Matrix, ошибки каждого класса, дубликаты и протокол проверки. Нужны конкретные ошибочные картинки, а не только средняя цифра.

Главная роль нейросети в этой неделе?

Она строит полезное представление. Картинка становится строкой таблицы, а постановка задачи, проверка и интерпретация остаются у человека.

Уголок библиофила из урока: Ethem Alpaydın, Machine Learning (2021) — общая карта ML; John D. Kelleher, Deep Learning (2019) — слои, обучение и ограничения. Обе книги — MIT Press Essential Knowledge. Читать как навигатор, не пытаться сразу выучить всё.

Совет доктора Игоря: сначала найдите странного соседа в embedding-пространстве, а потом уже гордо показывайте красивых. Покемоны оценят вашу научную честность.

Итог: пиксели → представление → таблица → модель → метрики → реальные ошибки → человеческий смысл.

Основа: предоставленный полный конспект урока 11, разделы 0–23; слайды «Компьютерное зрение: от пикселей к признакам». Нумерация листов этого саммари не является нумерацией слайдов.

Лист 6 / 6 · Неделя 11