Кошка vs человек — фотография как матрица чисел

Человек с первого взгляда отличает кошку от человека, но компьютер получает таблицу, плотно заполненную числами от 0 до 255. Проследим, вплоть до одного пикселя, как фото становится матрицей, убедимся, почему пиксельное расстояние не измеряет «похожесть», и вручную вычислим свёртку, которая находит границы фильтром 3 × 3. В конце рассмотрим сильные стороны и пределы признаков, заданных человеком (рамка лица·ключевые точки·сила границ).

0~255диапазон одного значения канала (8 бит)
9408столько чисел в цветном фото 56 × 56
3 × 3размер одного фильтра
2001детектор лиц Виолы–Джонса [R4]
14% → 90%цифры, сдвинутые на 2 клетки: MLP против CNN (код 2)
2кода, запускаемых прямо в Colab
1Задача

Кошка vs человек — самая простая задача для человека

Острые уши и шерсть, гладкая кожа. Человек различает их с первого взгляда. В каком виде компьютер получает эти фото и с каких подсказок он может начать?

Слева — фото мордочки кошки с красными линиями, соединяющими лоб·глаза·нос; справа — фото лица женщины с длинными волосами с зелёной рамкой лица, красными ключевыми точками и розовыми опорными точками
Изображение создано автором. Линии и точки — ключевые точки лица, заранее заданные человеком.

Красные линии на кошке слева — каркас мордочки, соединяющий лоб·глаза·нос; зелёная рамка на человеке справа — результат детекции «здесь есть лицо»; красные точки — ключевые точки по линии подбородка, бровям и контуру губ; розовые точки — главные положения глаз, носа и рта. Всё это подсказки, в которых человек заранее решил, «на что смотреть».

В этом выпуске мы разберём две вещи. Во-первых, компьютер получает не такие линии и точки, а матрицу чисел (разделы 2~3). Во-вторых, фильтры, которые находят в этих числах подсказки вроде границ, и пределы подсказок, заданных человеком (разделы 4~6).

Числовые примеры на протяжении всей серии разбираются на одном и том же фото чихуахуа (героини выпуска 4-4): пиксели и фильтры работают одинаково на любой фотографии. В практических заданиях можно выбрать любое из пяти фото: кошку, человека, собаку, чихуахуа и маффин.

Объяснение для начинающих

Задача, простая для человека, не обязательно проста для компьютера. Человек в момент взгляда на фото замечает: «есть шерсть», «уши острые», а компьютер должен вычислить каждую такую подсказку из чисел. В паре кошка vs человек подсказки довольно отчётливы, поэтому это хорошее первое упражнение в классификации изображений.

2Пиксель

Пиксели и матрицы — наименьшая информация, которую получает компьютер

Фото — это сетка чисел, а цветное фото — три такие сетки, наложенные друг на друга. Наименьшая единица, которую модель получает на вход, — одно значение канала (0~255).

1Определение

Цифровое фото — это набор маленьких клеток, плотно нарезанных по горизонтали и вертикали. Одна такая клетка называется пикселем (pixel, picture element). В пикселе хранится только один цвет, и этот цвет записывается тремя интенсивностями света — красного (R)·зелёного (G)·синего (B). Интенсивность — целое число от 0 (нет света) до 255 (максимальная яркость). Поэтому цветное фото становится таблицей из высота × ширина × 3 чисел, то есть матрицей (точнее, трёхслойным тензором).

Формавысота H × ширина W × 3 канала
Одно значениецелое от 0 до 255 (8 бит)
Наименьшая смысловая единицаодно значение канала

Проще говоряэто раскраска по клеточкам. Если для каждой клетки записать числом от 0 до 255, сколько капель из трёх баночек краски (красной·зелёной·синей) в неё добавлено, то по одной этой записке кто угодно сможет заново раскрасить ту же картинку. У компьютера есть не картинка, а эта записка.

2Формула
X[y, x, c] ∈ {0, 1, …, 255},   y = 1…H,  x = 1…W,  c ∈ {R, G, B}Внимание: эти 0~255 — значения, скорректированные для отображения на экране (гамма-кодированные). Вдвое большее число не означает ровно вдвое большую физическую интенсивность света.
Оттенки серого  Y = 0.299·R + 0.587·G + 0.114·BВзвешенная сумма, учитывающая, что человеческий глаз наиболее чувствителен к зелёному (ITU-R BT.601). Одна цветная клетка сводится к одному числу.
Перед подачей в модель:  x′ = x / 255  (в диапазон 0 ~ 1)
H, W
Число клеток по вертикали и по горизонтали. Вместе их называют разрешением
c (канал)
Слой цвета. У цветного фото три слоя R, G, B, у чёрно-белого — один
X[y, x, c]
Одно число в строке y, клетке x, канале c. Наименьший вход, который получает модель
Y
Яркость в оттенках серого, полученная смешением трёх каналов
Читаем формулу по частям
  1. {0, 1, …, 255}Значение может быть одним из 256 целых чисел. Поскольку 2⁸ = 256, одно число помещается ровно в 8 бит (1 байт).
  2. H × W × 3Количество чисел. В практических фото этой страницы 56 × 56 × 3 = 9408 чисел, в типичном входе модели 224 × 224 × 3 — 150 528, а в фото с 12-мегапиксельного телефона — около 36 миллионов.
  3. 0.299R + 0.587G + 0.114BТа же форма, что и взвешенная сумма в перцептроне. Если умножить три числа на коэффициенты и сложить, получится одна яркость. Коэффициенты в сумме дают 1, поэтому результат тоже лежит в пределах 0~255.
  4. x / 255Большие числа сжимаются до 0~1, чтобы модели было проще с ними работать. Цель та же, что и у нормализации из предыдущего выпуска.
Пробуем на числах (фото чихуахуа, уменьшенное до 14 × 14)Клетка глаза (R, G, B) = (39, 37, 43) → Y = 0.299×39 + 0.587×37 + 0.114×43 = 38.3 ≈ 38 (почти чёрный)
Клетка шерсти (R, G, B) = (212, 161, 115) → Y = 0.299×212 + 0.587×161 + 0.114×115 = 171.0 ≈ 171 (светло-бежевый)
Разница между клетками: 171 − 38 = 133. Именно такой резкий перепад в разделе 4 распознаётся как «граница».
3Схема · дробим до наименьшей информации
От фото до битовФото последовательно дробится: одно фото, одна клетка-пиксель, три значения каналов, одно число, восемь битов; одно значение канала выделено как наименьшая единица, имеющая смысл в изображении Фото1 пиксель3 значения каналов1 число8 битов R = 39 G = 37 B = 43 39 00100111 смысл «чихуахуа»«почти чёрный»три интенсивности светаодна интенсивность красноголишь вкл./выкл. наименьший вход модели ← смысла больше (понимает человек)смысла меньше (хранит машина) → Чем левее, тем больше смысла; чем правее, тем больше остаются одни числа
4Пояснение

Если продолжать дробить фото, мы дойдём до одной клетки-пикселя, чисел R·G·B в ней и восьми битов, из которых состоит одно число. Бит — наименьшая единица, которую хранит компьютер, но один бит — это не цвет и не яркость, а лишь «включено/выключено».

Поэтому в глубоком обучении на изображениях наименьшая информация, имеющая смысл, — одно значение канала, то есть число вроде «интенсивность красного в этой клетке — 39». Первый слой модели получает на вход именно эти числа (X[y, x, c]).

Но в одном таком числе нет никакого смысла «чихуахуа». Пиксель глаза (39, 37, 43) и пиксель черники (37, 31, 37) по числам почти одинаковы. Смысл возникает из того, как собраны вместе многие пиксели, а поиск таких сочетаний — это извлечение признаков из раздела 4.

5Анимированная схема · как фото становится числами

Фото чихуахуа режется на 14 клеток по горизонтали и вертикали, выбирается одна клетка глаза и превращается в числа. Числа справа рассчитаны по реальным пикселям фото.

  1. Исходное фото
  2. Режем сеткой
  3. Выбираем клетку
  4. Три числа R·G·B
  5. Одно ч/б число
  6. Разворачиваем в матрицу
6Пиксельная лупа · нажмите и посмотрите числа

Выберите фото и разрешение, затем нажмите на клетку рисунка или наведите на неё мышь. В таблице сбоку (на мобильных — ниже) — реальные числа выбранной клетки и окружающих её 7 × 7 клеток. После нажатия на рисунок клетку можно перемещать клавишами со стрелками.

Фото
Разрешение
Вид

7Главные особенности · если брать пиксели как есть
Сильные стороны
  • Самый честный вход, в котором не потеряно ни капли информации фото
  • Все фото одной формы (H × W × 3), поэтому их можно одинаково подавать в одну модель
  • Это числа, поэтому их сразу можно умножать и складывать
Ограничения
  • Слишком много чисел: 150 528 в одном фото 224 × 224
  • Стоит сдвинуть фото на клетку-другую или чуть осветлить — и меняются почти все числа
  • В одном числе нет смысла. Глаз и черника могут дать одно и то же число (разбирается в разделе 4 и в 4-3·4-4)
Место в истории: до глубокого обучения люди сами придумывали правила извлечения признаков из пикселей (ландмарки из раздела 04), а с 2012 года CNN получают пиксели как есть и сами учатся вплоть до признаков.
✓Проверь себя

Q1. Сколько чисел содержится в цветном фото размером 10 клеток по горизонтали и 10 по вертикали?

Q2. Какой цвет у пикселя со значением (R, G, B) = (0, 0, 0)?

Q3. Если сдвинуть то же фото на две клетки вправо, что будет с числами на тех же местах?

Q4. Какова наименьшая информация, которую получает на вход модель глубокого обучения для изображений?

Объяснение для начинающих

Пиксель — маленькая клетка, из которых состоит фото, и в каждой клетке записаны интенсивности красного·зелёного·синего света числами от 0 до 255. Если сравнить с таблицей из 4-1, одно фото — это одна строка из «высота × ширина × 3» столбцов. Нажимайте на клетки в пиксельной лупе, чтобы увидеть реальные числа, и меняйте разрешение, чтобы посмотреть, как меняется количество чисел.

3Пиксельное расстояние

Ловушка пиксельного расстояния — сдвиг на одну клетку, и это уже «другое фото»

Если измерять расстояние, вычитая числа на одних и тех же местах двух фото, можно ли измерить «похожесть»? Сдвинем или затемним одну и ту же чихуахуа и измерим все расстояния между пятью фото.

1Сдвиг на одну клетку — и это уже «другое фото» Для фото на этой странице

Пиксельное расстояние между двумя фото — это корень из среднего квадратов разностей чисел яркости (ч/б) на одних и тех же местах (0 означает полное совпадение). Попробуйте сдвинуть чихуахуа вбок или затемнить. Для человеческого глаза это всё та же чихуахуа, но по числам фото может оказаться дальше, чем маффин.

расстояние(A, B) = √( (1/N) Σ (Ai − Bi)² )N = 56 × 56 = 3136 клеток. Сравнение идёт по яркости в оттенках серого.
Чихуахуа (оригинал)
Изменённая чихуахуа
Маффин

2Таблица пиксельных расстояний: к кому ближе чихуахуа Для фото на этой странице

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

Значения в этой таблице измерены на пяти фото этой страницы (вырезаны только лица и уменьшены до 56 × 56). С другими фото значения сильно меняются в зависимости от фона·освещения·композиции, но вывод «пиксельное расстояние не совпадает с расстоянием по смыслу» — хорошо известное свойство и для реальных фотографий.

3Результат кода 1 в Colab · если измерить на других фото

Код 1 проводит тот же эксперимент на фото кошки (chelsea) и человека (astronaut) из scikit-image, у которых вырезаны лица и уменьшены до 56 × 56. При сдвиге той же кошки на 1 клетку расстояние выросло до 16.9, на 2 клетки — до 27.1, на 8 клеток — до 40.5, а расстояние между кошкой и человеком составило 85.3. Сдвига всего на несколько клеток достаточно, чтобы набрать почти половину расстояния до другого животного.

Пиксельное расстояние измеряет лишь то, «похожи ли числа на одних и тех же местах». Поэтому оно чувствительно к положению·яркости·композиции и не знает, что снято. Именно из-за этого ограничения нужны фильтры из раздела 4 и CNN из 4-3.

Объяснение для начинающих

k-NN из 4-1 спрашивал «ближайших соседей». Чтобы сделать то же с фотографиями, расстояние между фото должно отражать смысл. Но по пиксельному расстоянию чихуахуа ближе к маффину, чем к другой собаке (золотистому ретриверу), а та же чихуахуа, сдвинутая всего на 4 клетки, оказывается дальше маффина. Значит, искать соседей для фото по расстоянию между пикселями как есть нельзя.

4Свёртка

Свёртка и фильтры — ищем узоры, которые образуют соседние пиксели

Таблица чисел 3 × 3 (фильтр) скользит по фото, числа перемножаются и складываются. Там, где фото похоже на узор, получаются большие числа, а собранный результат — это карта признаков.

1Модель

Признак — это паттерн, который создают несколько пикселей вместе: «здесь было светло и вдруг стало темно (граница)», «круглое место темнее окружения (точка)», «тонкие линии идут густо (текстура шерсти)». CNN кладёт на фото маленькую таблицу чисел, например 3 × 3, — фильтр (ядро) — и, сдвигая её на одну клетку, перемножает совпадающие числа и всё складывает. Там, где фото похоже на узор фильтра, получается большое число, в остальных местах — маленькое, а новая матрица, собранная из этих результатов, — это карта признаков. Такое вычисление называется свёрткой.

Входматрица пикселей X
Инструментмаленький фильтр K (например, 3 × 3)
Выходкарта признаков F

Проще говоряэто игра в поиск узора штампом. Прикладываем штамп с узором «слева темно, справа светло» ко всем местам фото и записываем высокий балл там, где узор хорошо совпадает. Когда таблица баллов заполнена, сразу видно, где на фото вертикальные границы. Поменяйте штамп — поменяется и искомый узор.

2Формула
(X ∗ K)(i, j) = Σu=0…2 Σv=0…2 K(u, v) · X(i+u, j+v) + bВ математической свёртке фильтр переворачивают перед умножением, но в глубоком обучении по традиции «свёрткой» называют такое вычисление без переворота (взаимную корреляцию). Числа фильтра находятся обучением, поэтому результат тот же.
F(i, j) = ReLU((X ∗ K)(i, j)) = max(0, (X ∗ K)(i, j))ReLU заменяет отрицательные значения нулём. Места, «где узор проявился наоборот», отбрасываются, остаются только места, «где узор есть».
Max-пулинг:  P(i, j) = max { F(2i, 2j), F(2i+1, 2j), F(2i, 2j+1), F(2i+1, 2j+1) }Из каждых 2 × 2 клеток остаётся только наибольшее значение, и ширина и высота уменьшаются вдвое. Если признак сдвинется на клетку-другую, результат меняется меньше.
K(u, v)
9 чисел фильтра. Играют ту же роль, что веса w перцептрона, и находятся обучением
X(i+u, j+v)
9 пикселей под фильтром
b
Смещение. По одному на фильтр
F, P
Карта признаков и карта признаков после пулинга
Читаем формулу по частям
  1. Σ Σ K·XПеремножаем 3 × 3 = 9 пар на одинаковых позициях и всё складываем. Это ровно то же вычисление, что взвешенная сумма w · x перцептрона из 4-1; отличается лишь то, что на входе — маленький фрагмент фото.
  2. (i, j)Место, куда положен фильтр. Меняя i, j, проходим тем же фильтром по всему фото. Одни и те же веса используются повторно во всех местах, поэтому глаз находится одинаково, где бы на фото он ни был.
  3. max(0, ·)Функция активации ReLU. Из-за излома в ней появляется смысл складывать слои.
  4. max { 4 клетки }Max-пулинг. Карта признаков 56 × 56 становится 28 × 28, и объём вычислений сокращается в 4 раза.
Пробуем на числах (правый край глаза чихуахуа, ч/б фрагмент 3 × 3)X = [92 129 174 ; 38 74 137 ; 55 119 176],  фильтр вертикальной границы K = [−1 0 1 ; −1 0 1 ; −1 0 1]
Перемножаем и складываем: (−92 + 174) + (−38 + 137) + (−55 + 176) = 82 + 99 + 121 = 302 → ReLU(302) = 302 (сильная граница)
Для ровного фрагмента с одной шерстью [175 176 175 ; 174 175 176 ; 175 175 174]: (175 − 175) + (176 − 174) + (174 − 175) = 1 → почти 0 (границы нет)
3Схема · один оттиск фильтра
Одна свёрткаЛевая верхняя область 3 на 3 входа 5 на 5 и фильтр 3 на 3 перемножаются на одинаковых позициях, сумма становится первой клеткой карты признаков 3 на 3 Вход X (5 × 5)Фильтр K (3 × 3)Карта признаков (3 × 3) −101−101−101 накладываем перемножаем и складываем 302 Фиолетовое окно сдвигается на клетку вправо → вниз «слева темно, справа светло» одно число на каждое положение окна Размер выхода = (5 − 3) / 1 + 1 = 3.Если обложить края одним рядом нулей (паддинг), можно сохранить тот же размер 5 × 5, что и у входа.
4Пояснение

Фильтр — это «узор, который хочется найти», записанный числами. Фильтр с −1 в левом столбце и +1 в правом выдаёт тем большее число, чем правая сторона светлее левой. Поэтому на вертикальной границе между глазом чихуахуа (темно) и шерстью (светло) получается большое значение вроде 302, а на ровном участке с одной шерстью — значение, близкое к 0.

Важно, что один и тот же фильтр повторно используется во всех местах фото. В одном фильтре всего 9 чисел, но он находит границы в любом месте фото. Уменьшается и проблема из раздела 3 — «сдвиг на одну клетку меняет все числа»: если фото сдвинется, карта признаков просто сдвинется вместе с ним, а факт наличия границы останется.

Первый слой настоящей CNN использует десятки таких фильтров. Каждый фильтр даёт свою карту признаков, поэтому на выходе получается толстая матрица «размер фото × число фильтров».

5Анимированная схема · фильтр скользит и заполняет карту признаков

Прикладываем фильтр вертикальной границы клетка за клеткой к ч/б фрагменту 8 × 8 около глаза чихуахуа (вырезан из фото, уменьшенного до 28 × 28). Синие числа означают «справа светлее», оранжевые — «слева светлее».

  1. Кладём фильтр
  2. Перемножаем 9 пар
  3. Складываем всё
  4. Сдвиг на клетку
  5. ReLU убирает минусы
6Лаборатория фильтров · ставим разные штампы

Выберите фото и фильтр. Числа в клетках фильтра можно менять вручную. Светлые места на карте признаков справа — это места, «где узор найден». Если нажать на клетку карты признаков, ниже появится вычисление для этого места. Чтобы сохранить размер выхода 56 × 56, область за краями заполнена копией ближайшего краевого пикселя. Это не то же самое, что нулевой паддинг на схеме 3, поэтому значения в клетках рамки могут отличаться от варианта с нулевым паддингом.

Фото
Фильтр
Вход (ч/б 56 × 56)
Карта признаков (нажмите — покажет расчёт)
Фильтр K (3 × 3)
7Главные особенности
Сильные стороны
  • Один фильтр (9 чисел) повторно используется по всему фото, поэтому весов очень мало
  • Если фото немного сдвинется, признаки просто сдвинутся вместе с ним, и решение не пошатнётся
  • Если складывать слои, сама собой возникает иерархия: линии → части → целое
Ограничения
  • Фильтр видит только близкие пиксели, поэтому связь между далёкими частями становится видна лишь через несколько слоёв
  • Сама по себе слабо справляется с поворотом и изменением размера — нужно обучать на разнообразных фото
  • Признаки ранних слоёв не различают похожие узоры (глаз и чернику)
Место в истории: в 1980 году неокогнитрон Фукусимы впервые предложил архитектуру «локальные фильтры + слои друг на друге», а LeNet Лекуна (1989, 1998) обучал её обратным распространением и читал рукописные цифры. В 2012 году AlexNet с большим отрывом победил в крупномасштабной классификации фото и открыл эпоху глубокого обучения.
✓Проверь себя

Q1. Как в свёртке получается значение для одного положения фильтра?

Q2. Что получится, если применить фильтр вертикальной границы [−1 0 1]×3 к ровному фрагменту, где все клетки равны 10?

Q3. Каким станет размер карты признаков 56 × 56 после max-пулинга 2 × 2?

Q4. Кто задаёт числа фильтров в CNN?

Объяснение для начинающих

Свёртка — это вычисление, которое повторяет взвешенную сумму перцептрона из 4-1 (w·x + b) для каждого маленького кусочка фотографии. 9 чисел фильтра — это веса, а поскольку один и тот же фильтр применяется во всех местах фотографии, глаз находится одним и тем же способом, где бы он ни был. В коде 2 мы проверим, что ручной расчёт совпадает с результатом scipy, и увидим: если сдвинуть рукописные цифры на 2 клетки, нейросеть, работающая прямо с пикселями, падает до 14.2%, а маленькая CNN удерживает 90.4%.

5Признаки, заданные человеком

Признаки, заданные человеком — рамка лица, ключевые точки, сила границы

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

1История признаков, заданных человеком · обнаружение лиц и ключевые точки

До глубокого обучения распознавание лиц строилось на признаках, заданных человеком. В 2001 году Виола и Джонс быстро вычисляли тысячи простых прямоугольных признаков (признаки Хаара), измеряющих разницу яркости вроде «область глаз темнее щёк», и так находили рамку лица на фотографии [R4]. Метод HOG 2005 года подсчитывал направления границ в каждой маленькой ячейке и находил силуэт человека [R5]. Ключевые точки лица, которые отмечают положение уголков глаз, кончика носа и линии подбородка, как красные точки на изображении из раздела 1, вычисляются уже внутри найденной таким образом рамки лица [R6].

Эти методы быстры и легко объяснимы, но человек должен заранее знать, что измерять, а ещё они плохо справлялись с освещением, ракурсом и заслонением. CNN преодолела этот предел, научившись фильтрам того же рода на данных [R7].

2Признаки, заданные человеком, vs признаки, выученные моделью
Линии геометрической структуры морды кошки и ключевые точки лица человека

Изображение из раздела 1. Зелёная рамка — результат обнаружения «здесь есть лицо», красные точки — ключевые точки лица по линии подбородка, бровям и контуру губ, розовые точки — главные положения глаз, носа и рта. Красные линии у кошки — каркас морды, соединяющий лоб, глаза и нос.

Признаки, заданные человеком

Человек заранее решает, что измерять: «расстояние между глазами», «угол кончика уха».

  • Легко объяснить причину
  • Работает даже на малых данных
  • Слабы к освещению, ракурсу, заслонению
  • Не использует подсказки, о которых человек не подумал
Признаки, выученные CNN

Числа фильтра K сначала задаются случайно, а обучение исправляет их так, чтобы ответы становились верными.

  • Сама находит даже фактуру шерсти, фактуру выпечки, блеск носа
  • Сравнительно устойчива к смене освещения и ракурса
  • Нужны от тысяч до миллионов фотографий
  • Трудно объяснить, почему принято такое решение
①Кошка vs человек легко

Переключитесь на вид «Сила границы». Любопытно, что средняя сила границ по всей фотографии у обоих почти одинакова. Дело в том, что на фото человека тоже много тонких линий — длинные волосы. Разница в том, где находятся границы. У кошки фактура шерсти и полоски густо покрывают даже середину морды, а у человека щёки и лоб гладкие, и границы собираются у глаз, носа, рта и волос. Значение «центральная область» ниже показывает эту разницу. Вот почему нужно не одно среднее число, а карта по положениям — то есть карта признаков.

Признаки частей примерно на 3-м слое тоже чётко различаются. Острых треугольных ушей на макушке, полосок на лбу, маленького розового носа и длинных усов у человека нет. Красные линии и точки на изображении из раздела 1 — это способ, при котором человек сам задаёт такие подсказки, а CNN находит те же подсказки сама с помощью фильтров.

В таблице из раздела 3 пиксельное расстояние в оттенках серого между кошкой и человеком примерно такое же, как между кошкой и собакой. Для человека это самая лёгкая пара, но пиксельное расстояние этой разницы не показывает. Это ещё одно доказательство того, что пиксельное расстояние не знает смысла.

3Результат кода 1 в Colab · одна лишь сила границы переворачивается от фото к фото

В парном сравнении выше на фотографиях этой страницы центральная граница была сильнее у кошки. Но если измерить в коде 1 на фотографиях кошки и человека из scikit-image, получается наоборот (сила границы в области лица: кошка 101.5, человек 123.6). Причина в том, что волосы и зубы в улыбке на фото человека дают сильные границы.

Единственный признак, заданный человеком, вроде «много границ — значит, кошка», легко переворачивается, стоит смениться фотографии. Поэтому нужен способ, который использует не один признак, а сочетание многих, и к тому же выучивает его на данных. Это тема 4-3.

Объяснение для начинающих

Признаки, заданные человеком, позволяют легко объяснить, «почему принято такое решение», и работают даже на малых данных. Зато человек должен знать их заранее, и они легко ломаются, когда меняются условия съёмки. Переключите парное сравнение на вид «Сила границы» и сравните, где собираются границы у кошки и у человека.

6Дальние слои

Чем глубже слой, тем крупнее то, что он ищет

Фильтры первого слоя ищут линии и границы. Если складывать слои, линии собираются в углы, углы — в глаза и уши, а глаза и уши — в лицо.

1Чем глубже слой, тем крупнее то, что он ищет
Признаки, которые ищет каждый слой1-й слой ищет короткие линии и границы, 2-й — углы, кривые и фактуру, 3-й — части вроде глаз, ушей и носа, 4-й и дальше — всю морду целиком 1-й слой · линии и границы2-й слой · углы·кривые·фактура3-й слой · частиДальние слои · целое Видит лишь 3 × 3 пикселяСочетает несколько линийГлаза, острые уши, нос«Морда кошки» Чихуахуа и маффин не различитьШерсть vs выпечка различаютсяГлаз vs черника различаютсяРешение по всей компоновке

Если складывать слои, уменьшая фотографию пулингом, одна клетка дальнего слоя видит более широкую область исходной фотографии. Поэтому ранние слои ищут маленькие линии, следующие — глаза и уши как сочетания линий, а ещё более дальние — лицо целиком. Этот рисунок упрощённо передаёт тенденцию, которую Цайлер и Фергюс (2014) показали, визуализировав реакции слоёв обученной CNN.

Объяснение для начинающих

Если складывать слои, уменьшая фотографию пулингом, одна клетка дальнего слоя видит более широкую область исходной фотографии. Поэтому ранние слои ищут маленькие линии, а дальние — сочетания этих линий [R8]. В 4-3 мы увидим, как CNN из таких слоёв выдаёт вероятности и почему после добавления слоёв разделяется то, что не делилось одной плоскостью.

Код для Colab — запустите эту страницу сами

Оба кода используют только библиотеки, предустановленные в Colab, и встроенные данные. Нажмите «Скачать ноутбук (.ipynb)» и откройте его в Colab через Файл → Загрузить блокнот или скопируйте код и вставьте в ячейку нового ноутбука.

Код 1 · открываем фотографию как матрицу чиселсвязан с разделами 2·3·5 · numpy, scikit-image, scipy, matplotlib (фото встроены) · CPU несколько секунд

Смотрим форму и значения пикселей фотографий кошки и человека из scikit-image, вычисляем оттенки серого, пиксельное расстояние и силу границы. Чтобы перейти на свои данные, прочитайте своё фото через io.imread и замените (верх, левый край, сторона) в small() на положение лица.

Результат выполнения (запуск 2026-10-04, numpy 2.4 · scikit-image 0.26 · scipy 1.17 · CPU). Случайных чисел нет, поэтому результат всегда одинаков.
Код 2 · свёртка вручную и правда ли CNN устойчива к сдвигусвязан с разделом 4 · numpy, scipy, tensorflow(Keras), scikit-learn · CPU около 1 минуты

Вручную вычисляем свёртку с фильтром вертикальных границ 3 × 3, сверяем со scipy и сравниваем MLP и маленькую CNN на тестовых фото рукописных цифр, сдвинутых на 1–2 клетки.

Результат выполнения (запуск 2026-10-04, TensorFlow 2.21 · Keras 3 · CPU). Среднее по 2 сидам. В зависимости от сида, версий и оборудования числа могут немного отличаться.

Промпты для ИИ — этот код как отправная точка

Промпты для вставки в ИИ-ассистента вроде ChatGPT, Qwen или Claude. При нажатии «Копировать» выбранный код добавляется после промпта. Замените текст в 〔 〕 на описание своей ситуации.

Код для вставки

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

Словарь терминов

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

Сборник аналогий — и где аналогия не работает

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

ПонятиеБытовая аналогияАналогия с глазом·мозгомГде аналогия не работает
ПиксельОдна плитка мозаикиЧастично В сетчатке глаза тоже плотно расположены клетки, воспринимающие светКлетки сетчатки не лежат ровной решёткой: они сгущаются в центре (центральной ямке), а виды и доли цветовых клеток тоже различаются
Фильтр свёрткиПечать с вырезанным узоромЧастично Простые клетки зрительной коры сильно реагируют на границы определённого направленияСпособ обучения и связи клеток мозга гораздо сложнее. Фильтр CNN применяет одни и те же числа во всех местах, а мозг — нет
Карта признаковОтметка X на карте сокровищНетКарта сокровищ одна, а в настоящем слое карт признаков столько, сколько фильтров, — слой за слоем
ПулингВыбор старосты классаНетСтаросту выбирают люди, а max-пулинг механически берёт клетку с наибольшим числом
Ключевые точки лицаУказатели на картеНетУказатели ставит человек, а положение ключевых точек для каждой фотографии вычисляет обученная модель. Если часть лица закрыта, точка ставится не туда

Об авторе и источники

E-1 Об авторе · E-2 Научные источники · E-3 Источники иллюстраций·данных

E-1 Об авторе

Сансун Ан (генеральный директор M-Robo Inc.)

Работал в Korea Electrical Safety Corporation и газете Maeil Business Newspaper, а затем основал M-Robo Inc. — внешнее венчурное предприятие Maeil Business Newspaper, — где сейчас занимает пост генерального директора. M-Robo Inc. — медиавенчур, начинавшийся как внутренний стартап СМИ: компания предоставляла газете Kukmin Ilbo робота-журналиста (StockBot) и выполнила множество проектов для Korea Internet & Security Agency, Korea Press Foundation, Korea Communications Agency и других организаций. Сейчас компания развивает собственную новостную ИИ-газету Money-Robo. За время работы директором он победил на Asia Open Data Hackathon и дважды получил награду министра внутренних дел и безопасности Кореи за вклад в развитие стартапов в сфере данных; он автор и правообладатель 5 патентов в области искусственного интеллекта и блокчейна. Автор книги «Преступления с ИИ и самозащита» (AI범죄와 자기방어), разрабатывал электронные курсы по финтеху, статистике и искусственному интеллекту для Онлайн-института непрерывного образования KOREATECH (Korea University of Technology and Education). Доктор экономических наук (Университет Тонгук, микроэкономика и математическая экономика). Преподаёт дисциплины по данным и искусственному интеллекту в ряде университетов, в том числе Kookmin University и Hoseo University. Подробный профиль

Курсы

  • Сансун Ан (2025). Конспект лекций «Наука о данных для бизнеса» (비즈니스를 위한 데이터 과학). Open Cyber University of Korea, кафедра конвергенции искусственного интеллекта.
  • Сансун Ан (2025). [K-Digital] Обработка естественного языка с помощью ИИ. STEP (Smart Training Education Platform), Онлайн-институт непрерывного образования KOREATECH.
  • Сансун Ан (2024). [K-Digital] Основы анализа финтех-данных. STEP (Smart Training Education Platform), Онлайн-институт непрерывного образования KOREATECH.

Курсы на STEP: link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
Если из-за обновления сайта ссылки не открываются, перейдите на www.step.or.kr.

Статьи и доклады

  • Сансун Ан (2025). Модель прогнозирования расходов домохозяйств на данных Korean Retirement and Income Study: подход на основе моделей ИИ. «Будущее общество» (미래사회), 16(2). Полный текст
  • Сансун Ан (2025). Модель прогнозирования расходов домохозяйств на данных Korean Retirement and Income Study: подход ИИ. Материалы доклада на научной конференции KReIS (13.05.2025), National Pension Research Institute, National Pension Service. Материалы доклада
  • Сансун Ан (2025). Алгоритм обнаружения подозрительных сделок с наркотиками по текстам соцсетей: анализ паттернов и контекста. «Будущее общество» (미래사회), 16(1). Полный текст
  • Сансун Ан (2024). Статистические методы противодействия состязательным данным для защиты моделей обнаружения аномалий в финансовой сфере: эмпирический анализ и результаты моделирования. «Будущее общество» (미래사회), 15(3). Полный текст
  • Сансун Ан (2024). Решение на основе ИИ для обнаружения постов в соцсетях по характеристикам виртуальных персонажей. Стендовый доклад, 2024 Summer Newmedia Party (19.06.2024), Seoul Media Institute of Technology.
  • Сансун Ан (2024). Модели машинного обучения на панельных данных о производственном травматизме. Стендовый доклад, 10-я научная конференция Panel Study of Workers' Compensation Insurance (17.05.2024), Labor Welfare Research Institute, Korea Workers' Compensation & Welfare Service.
  • Сансун Ан (2024). Анализ и прогнозирование временных рядов цифровых активов: сравнение моделей временных рядов и моделей ИИ, предложения по улучшению. «Будущее общество» (미래사회), 15(1). Полный текст

E-2 Научные источники

  1. [R1] ITU-R Recommendation BT.601. Studio encoding parameters of digital television. — раздел 2 (коэффициенты оттенков серого)
  2. [R2] LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), 2278–2324. — раздел 4
  3. [R3] Fukushima, K. (1980). Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36, 193–202. — раздел 4
  4. [R4] Viola, P., & Jones, M. (2001). Rapid object detection using a boosted cascade of simple features. CVPR 2001. — раздел 5
  5. [R5] Dalal, N., & Triggs, B. (2005). Histograms of oriented gradients for human detection. CVPR 2005. — раздел 5
  6. [R6] Kazemi, V., & Sullivan, J. (2014). One millisecond face alignment with an ensemble of regression trees. CVPR 2014. — разделы 1·5
  7. [R7] Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS 2012. — раздел 5
  8. [R8] Zeiler, M. D., & Fergus, R. (2014). Visualizing and understanding convolutional networks. ECCV 2014. — раздел 6
  9. [R9] van der Walt, S., et al. (2014). scikit-image: image processing in Python. PeerJ, 2, e453. — код 1 (фото chelsea, astronaut)

E-3 Источники иллюстраций·данных

  • Изображение из раздела 1 создано автором. Учебные фото кошки и человека получены так: из этого изображения вырезана область лица, уменьшена до 56 × 56, а линии и точки удалены
  • Фото чихуахуа в разделе 2 вырезано из изображения в 4-4
  • Рисунок слоёв в разделе 6 — концептуальная схема, упрощённо передающая тенденцию, показанную в [R8]

Совет для преподавателя

Рекомендации для преподавателей, наставников OJT и репетиторов. Время указано ориентировочно — подстройте его под реальное занятие.

АудиторияСтуденты и работающие специалисты, прошедшие 4-1. Практики, которые хотят понять, «как ИИ для изображений получает фотографию»
Необходимые знанияПризнаки, целевые значения и взвешенная сумма из 4-1, умножение и сложение
Цели обучения① Вычислять форму цветной фотографии (H × W × 3) и количество чисел ② Вручную вычислять одну клетку свёртки 3 × 3 ③ Объяснять на примерах пределы пиксельного расстояния и признаков, заданных человеком
Ориентировочное времяЧтение 40–50 мин · демонстрация практики 25 мин · практика в Colab 25 мин (код 1 — 10 мин, код 2 — запуск 1 мин + разбор 14 мин)

Три формата занятия

Лекция, 50 мин

Упор на понятия

Введение 5 мин (раздел 1) → раздел 2, пиксельная лупа 15 мин → раздел 3, опыт со сдвигом 10 мин → раздел 4, ручной расчёт свёртки 15 мин → «Проверь себя» 5 мин.

OJT, 90 мин

Упор на применение в работе

Раздел 2: расчёт разрешения и количества чисел для рабочих фото (брак, сканы документов и т. п.) 20 мин → раздел 4: подбор фильтра для своих фото в лаборатории фильтров 25 мин → раздел 5: обсуждение пределов признаков, заданных человеком, 15 мин → запуск и разбор кода 2 30 мин.

Индивидуальные занятия

Темп по уровню

Новичкам — только разделы 1·2·4. Слушателям среднего уровня — пересчитать формулу размера выхода из раздела 4 с паддингом и шагом (stride), а также предсказать, как изменится устойчивость к сдвигу, если в CNN из кода 2 заменить GlobalMaxPooling на Flatten.

Ключевые моменты по разделам

РазделВопрос, на котором стоит остановитьсяСовет по работе с интерактивом
1 Задача«По чему человек узнаёт, что это кошка?»Подчеркнуть, что линии и точки — подсказки, заданные человеком
2 Пиксели«Что это за три числа в клетке глаза?»В пиксельной лупе меняем разрешение 7 → 56
3 Пиксельное расстояние«Почему одна и та же чихуахуа дальше, чем маффин?»Сдвигаем ползунок сдвига на 4 клетки и больше
4 Свёртка«Что получится, если приложить фильтр вертикальных границ к ровному кусочку шерсти?»Останавливаем анимацию на шаге «сложить всё» и сверяем вручную
5 Признаки, заданные человеком«Много границ — значит, кошка»: всегда ли это верно?Смотрим вместе вид «Сила границы» в парном сравнении и результат кода 1
6 Дальние слои«На каком слое находится фильтр, который ищет глаза?»Разбираем рисунок слоёв слева направо

Топ-5 типичных заблуждений

ЗаблуждениеВерное объяснениеЧто показать
Фото — это файл с картинкой, а не числаДля компьютера фото — это H × W × 3 чисел от 0 до 255Раздел 2, пиксельная лупа
Если пиксели похожи, снято одно и то жеДаже сдвиг на одну клетку сильно меняет расстояние. Пиксельное расстояние не знает смыслаРаздел 3, опыт со сдвигом
Свёртка — это сложная математикаЭто лишь перемножение и сложение 9 наложенных пар. То же, что взвешенная сумма перцептронаЧисловой пример в разделе 4
Фильтры проектирует человекФильтры в практике — примеры. CNN выучивает числа фильтров на данныхРаздел 4, «Проверь себя», Q4
Признаки, заданные человеком, бесполезныИх легко объяснить, и хватает малых данных. Но при смене условий они слабыРаздел 5 и перевёрнутый результат кода 1

Проверь себя (нажмите, чтобы раскрыть пояснение)

Q1. Сколько чисел в цветной фотографии 56 × 56? А в чёрно-белой?

Цветная: 56 × 56 × 3 = 9,408 чисел, чёрно-белая: 56 × 56 = 3,136 чисел.

Q2. Какова яркость в оттенках серого для клетки глаза чихуахуа (39, 37, 43) из раздела 2?

0.299×39 + 0.587×37 + 0.114×43 = 11.661 + 21.719 + 4.902 ≈ 38.3.

Q3. Что получится, если приложить фильтр вертикальных границ [−1 0 1]×3 к кусочку [92 129 174; 38 74 137; 55 119 176]?

(174−92) + (137−38) + (176−55) = 82 + 99 + 121 = 302. Это сильная граница: справа светлее.

Q4. Каков размер выхода, если к входу 56 × 56 применить фильтр 3 × 3 без паддинга (шаг 1)?

56 − 3 + 1 = 54, то есть 54 × 54. С паддингом 1 сохраняется 56 × 56.

Q5. В коде 2 на цифрах, сдвинутых на 2 клетки, MLP показал 14.2%, а CNN — 90.4%. Какие две вещи создали эту разницу?

Свёртка, которая применяет один и тот же фильтр во всех местах (находит тот же узор, даже если положение меняется), и глобальный max-пулинг, который отбрасывает положение и оставляет только самый сильный отклик.

Задания в Colab

Базовое

В коде 1 прочитайте фото своего лица (или домашнего питомца), выведите форму и количество чисел и составьте таблицу пиксельных расстояний при сдвиге на 1, 2 и 4 клетки.

Повышенной сложности

В CNN из кода 2 замените GlobalMaxPooling2D на Flatten, обучите заново и сообщите изменение точности на фото, сдвинутых на 1 и 2 клетки, по 3 сидам. Объясните причину, опираясь на пояснение из раздела 4.

Настройка сложности и что изучать дальше

НачинающимТаблицу расстояний из раздела 3 и раздел 6 можно пропустить. Главное — как следует выполнить практику разделов 2 и 4
УглублённоПусть изучат признаки Хаара и HOG и попробуют собрать похожие фильтры в лаборатории фильтров из раздела 4. Найденные статьи проверять по оригиналам
Что изучать дальше3-3 Изображения и CNN · 4-3 Кошка vs собака (полная структура CNN)
Материалы для преподавателяКритерии оценки для «Проверь себя» и примеры ответов к заданиям — на странице ответов для преподавателей (4-2)

Отличная работа!

Вы дочитали выпуск «4-2 Кошка vs человек» до конца. Обитатели лаборатории подведут итоги — каждый по одной фразе.

Пиксель-арт: четверо обитателей лаборатории фотографируются на память перед камерой
Доктор
ДокторМы открыли фотографию как числа.
  • Самая маленькая порция информации, которую получает компьютер, — одно значение канала
  • Пиксельное расстояние не знает смысла
  • Свёртка — это штамп: перемножить и сложить 9 пар
Ассистент
АссистентСдвинули всего на одну клетку — а стало дальше, чем маффин!
Исследователь Дрозофила
Исследователь ДрозофилаВ следующем выпуске сложим фильтры и соберём CNN!