Eigenface

редактировать
Некоторые собственные лица из ATT Laboratories Cambridge

An eigenface () - это имя, данное набору собственных векторов при использовании в задаче компьютерного зрения распознавания лиц человека. Подход с использованием собственных лиц для распознавания был разработан Сировичем и Кирби (1987) и использован Мэтью Терк и Алексом Пентландом при классификации лиц. Собственные векторы выводятся из ковариационной матрицы распределения вероятностей в векторном пространстве большой размерности изображений лиц. Сами собственные грани образуют базисный набор всех изображений, используемых для построения ковариационной матрицы. Это приводит к уменьшению размеров, позволяя меньшему набору базовых изображений представлять исходные обучающие изображения. Классификация может быть достигнута путем сравнения того, как лица представлены базовым набором.

Содержание
  • 1 История
  • 2 Поколение
    • 2.1 Практическая реализация
    • 2.2 Пример кода Matlab
    • 2.3 Вычисление собственных векторов
    • 2.4 Соединение с SVD
  • 3 Использование в распознавании лиц
  • 4 Обзор
  • 5 См. Также
  • 6 Примечания
  • 7 Ссылки
  • 8 Внешние ссылки
История

Подход собственного лица начался с поиска низкоразмерного представления изображения лица. Сирович и Кирби (1987) показали, что анализ главных компонентов может использоваться для набора изображений лиц для формирования набора базовых характеристик. Эти базовые изображения, известные как собственные изображения, можно линейно комбинировать для восстановления изображений в исходном обучающем наборе. Если обучающий набор состоит из M изображений, анализ главных компонентов может сформировать базовый набор из N изображений, где N < M. The reconstruction error is reduced by increasing the number of eigenpictures; however, the number needed is always chosen less than M. For example, if you need to generate a number of N eigenfaces for a training set of M face images, you can say that each face image can be made up of "proportions" of all the K "features" or eigenfaces: Face image1= (23% от E 1) + (2% от E 2) + (51% от E 3) +... + (1% E n).

В 1991 г. М. Терк и А. Пентланд расширили эти результаты и представили метод распознавания лиц по собственному лицу. Помимо разработки системы для автоматического распознавания лиц с использованием собственных лиц, они показали способ вычисления собственных векторов ковариационной матрицы , чтобы компьютеры того времени могли выполнять собственное разложение на большое количество изображений лиц. Изображения лиц обычно занимают многомерное пространство, и традиционный анализ главных компонентов на таких наборах данных был невозможен. В статье Тёрка и Пентланда продемонстрированы способы извлечения собственных векторов на основе матриц, размер которых определяется количеством изображений, а не количеством пикселей.

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

Генерация

A набора собственных лиц может быть сгенерирована путем выполнения математического процесса под названием анализ главных компонентов (PCA) на большом наборе изображений, изображающих разные человеческие лица. Неформально собственные лица можно рассматривать как набор «стандартизированных ингредиентов лица», полученных на основе статистического анализа многих изображений лиц. Любое человеческое лицо можно рассматривать как сочетание этих стандартных лиц. Например, лицо человека может состоять из среднего лица плюс 10% из собственного лица 1, 55% из собственного лица 2 и даже −3% из собственного лица 3. Примечательно, что не требуется много собственных граней, объединенных вместе, чтобы достичь справедливого приближения к большинство лиц. Кроме того, поскольку лицо человека записывается не цифровой фотографией , а просто списком значений (одно значение для каждого собственного лица в используемой базе данных), для лица каждого человека требуется гораздо меньше места.

Создаваемые собственные грани отображаются как светлые и темные области, расположенные по определенному шаблону. Этот паттерн - это то, как различные черты лица выделяются для оценки и оценки. Будет шаблон для оценки симметрии, есть ли какой-либо стиль волос на лице, линия роста волос или оценка размера носа или рта. У других собственных лиц есть шаблоны, которые труднее идентифицировать, и изображение собственного лица может очень мало походить на лицо.

Техника, используемая для создания собственных лиц и их использования для распознавания, также используется вне распознавания лиц: распознавание рукописного ввода, чтение по губам, распознавание голоса, язык жестов / руки жесты интерпретация и анализ медицинских изображений. Поэтому некоторые не используют термин собственное лицо, а предпочитают использовать «собственное изображение».

Практическая реализация

Для создания набора собственных лиц необходимо:

  1. Подготовить обучающий набор изображений лиц. Изображения, составляющие обучающую выборку, должны быть сделаны при одинаковых условиях освещения и должны быть нормализованы, чтобы глаза и рот были выровнены на всех изображениях. Все они также должны быть повторно дискретизированы до общего разрешения пикселей (r × c). Каждое изображение обрабатывается как один вектор, просто путем конкатенации строк пикселей в исходном изображении, в результате чего получается один столбец с элементами r × c. Для этой реализации предполагается, что все изображения обучающего набора хранятся в одной матрице T, где каждый столбец матрицы является изображением.
  2. Вычтите среднее значение. Среднее изображение a должно быть вычислено и затем вычтено из каждого исходного изображения в T.
  3. . Вычислить собственные векторы и собственные значения ковариационной матрицы S. Каждый собственный вектор имеет ту же размерность (количество компонентов), что и исходные изображения, и, таким образом, сам по себе может рассматриваться как изображение. Поэтому собственные векторы этой ковариационной матрицы называются собственными гранями. Это направления, в которых изображения отличаются от среднего изображения. Обычно это будет затратным в вычислительном отношении этапом (если вообще возможно), но практическая применимость собственных граней проистекает из возможности эффективно вычислять собственные векторы S, никогда не вычисляя S явно, как подробно описано ниже.
  4. Выберите основные компоненты. Отсортируйте собственные значения в порядке убывания и расположите собственные векторы соответственно. Количество основных компонентов k определяется произвольно путем установки порога ε для общей дисперсии. Общая дисперсия v = (λ 1 + λ 2 +... + Λ n) {\ displaystyle v = (\ lambda _ {1} + \ lambda _ {2} +... + \ lambda _ {n })}{\ displaystyle v = (\ lambda _ {1} + \ lambda _ {2} +... + \ lambda _ {n})} , n = количество компонентов.
  5. k - наименьшее число, которое удовлетворяет (λ 1 + λ 2 +... + Λ k) v>ϵ { \ displaystyle {\ frac {(\ lambda _ {1} + \ lambda _ {2} +... + \ lambda _ {k})} {v}}>\ epsilon}{\displaystyle {\frac {(\lambda _{1}+\lambda _{2}+...+\lambda _{k})}{v}}>\ epsilon}

Теперь эти собственные лица можно использовать для представления как существующих, так и новых лиц: мы можем спроецировать новое (с вычитанием среднего) изображения на собственные лица и, таким образом, записать, как это новое лицо отличается от среднего лица. Собственные значения, связанные с каждым собственным лицом, представляют, сколько изображений в обучающем наборе отклоняются от среднего изображения в этом направлении. Информация теряется из-за проецирования изображения на подмножество собственных векторов, но потери сводятся к минимуму, сохраняя эти собственные грани с наибольшими собственными значениями. Например, при работе с изображением размером 100 × 100 будет получено 10 000 собственных векторов. В практических приложениях большинство лиц обычно можно идентифицировать с помощью проекции от 100 до 150 собственных граней, так что большинство из 10 000 собственных векторов можно отбросить.

Пример кода Matlab

Вот пример вычисления собственных лиц с помощью расширенной базы данных Yale Face B. Чтобы избежать вычислительных ресурсов и узких мест при хранении, изображения лиц отбираются с коэффициентом 4 × 4 = 16.

очистить все; закрыть все; загрузить yalefaces [h, w, n] = размер (yalefaces); д = ч * ш; % векторизовать изображения x = reshape (yalefaces, [d n]); х = двойной (х); % вычесть среднее значение mean_matrix = среднее значение (x, 2); x = bsxfun (@minus, x, средняя_матрица); % вычислить ковариацию s = cov (x '); % получить собственное значение и собственный вектор [V, D] = eig (s); eigval = diag (D); % сортировать собственные значения в порядке убывания eigval = eigval (end: - 1: 1); V = fliplr (V); % показывают среднее значение и рисунок главных собственных векторов с 1-го по 15-й, подзаголовок (4, 4, 1) imagesc (reshape (mean_matrix, [h, w])) серый цвет для i = 1:15 подзаголовка (4, 4, i + 1) imagesc (reshape (V (:, i), h, w)) end

Обратите внимание, что хотя ковариационная матрица S генерирует много собственных граней, только часть из них необходима для представления большинства граней. Например, чтобы представить 95% общего изменения всех изображений лиц, нужны только первые 43 собственных лица. Чтобы вычислить этот результат, используйте следующий код:

% оценивает количество основных компонентов, необходимых для представления 95% общей дисперсии. eigsum = сумма (eigval); csum = 0; для i = 1: d csum = csum + eigval (i); тв = csum / eigsum; если tv>0,95 k95 = i; перерыв конец; конец;

Вычисление собственных векторов

Выполнение PCA непосредственно на ковариационной матрице изображений часто невозможно с вычислительной точки зрения. Если используются небольшие изображения, скажем, 100 × 100 пикселей, каждое изображение является точкой в ​​10000-мерном пространстве, а ковариационная матрица S является матрицей 10000 × 10000 = 10 элементов. Однако ранг ковариационной матрицы ограничен количеством обучающих примеров: если есть N обучающих примеров, будет не более N - 1 собственных векторов с ненулевыми собственными значениями. Если количество обучающих примеров меньше размерности изображений, главные компоненты могут быть вычислены более легко следующим образом.

Пусть T будет матрицей предварительно обработанных обучающих примеров, где каждый столбец содержит одно изображение с вычитанием среднего. Затем ковариационная матрица может быть вычислена как S= TT, а разложение по собственным векторам S задается как

S vi = TTT vi = λ ivi {\ displaystyle \ mathbf {Sv} _ {i} = \ mathbf {T} \ mathbf {T} ^ {T} \ mathbf {v} _ {i} = \ lambda _ {i} \ mathbf {v} _ {i}}\ mathbf {Sv} _ {i} = \ mathbf {T} \ mathbf {T} ^ {T} \ mathbf {v} _ {i} = \ lambda _ {i} \ mathbf {v} _ {i}

Однако TT - большая матрица, и если вместо этого мы возьмем разложение по собственным значениям

TTT ui = λ iui {\ displaystyle \ mathbf {T} ^ {T} \ mathbf {T} \ mathbf {u} _ {i} = \ lambda _ {i} \ mathbf {u} _ {i}}\ mathbf {T } ^ {T} \ mathbf {T} \ mathbf {u} _ {i} = \ lambda _ {i} \ mathbf {u} _ {i}

тогда мы замечаем, что, предварительно умножив обе части уравнения на T, мы получим

TTTT ui = λ я T ui {\ displaystyle \ mathbf {T} \ mathbf {T} ^ {T} \ mathbf {T} \ mathbf {u} _ {i} = \ lambda _ {i} \ mathbf {T} \ mathbf {u } _ {i}}\ mathbf {T} \ mathbf {T} ^ {T} \ mathbf {T} \ mathbf {u} _ {i} = \ lambda _ {i} \ mathbf {T} \ mathbf {u} _ {i}

Это означает, что если uiявляется собственным вектором TT, то vi= Tuiявляется собственным вектором S . Если у нас есть обучающий набор из 300 изображений размером 100 × 100 пикселей, матрица TTбудет матрицей 300 × 300, что гораздо более управляемо, чем ковариационная матрица 10000 × 10000. Обратите внимание, однако, что результирующие векторы viне нормализованы; если требуется нормализация, ее следует применить как дополнительный шаг.

Соединение с SVD

Пусть X обозначает d × n {\ displaystyle d \ times n}d \ раз п матрицу данных со столбцом xi {\ displaystyle x_ {i}}x_ {i} как вектор изображения с вычтенным средним. Тогда

ковариация (X) = XXT n {\ displaystyle \ mathrm {covariance} (X) = {\ frac {XX ^ {T}} {n}}}{\ displaystyle \ mathrm {ковариация} (X) = {\ frac {XX ^ {T}} {n}}}

Пусть разложение сингулярного значения (SVD) X будет:

X = U Σ VT {\ displaystyle X = U {\ Sigma} V ^ {T}}X = U {\ Sigma} V ^ {T}

Затем разложение на собственные значения для XXT {\ displaystyle XX ^ {T}}XX ^ {T} - это:

XXT = U Σ Σ TUT = U Λ UT {\ displaystyle XX ^ {T} = U {\ Sigma} {{\ Sigma} ^ {T}} U ^ {T} = U {\ Lambda} U ^ {T}}XX ^ {T} = U {\ Sigma } {{\ Sigma} ^ {T}} U ^ {T} = U {\ Lambda} U ^ {T} , где Λ = diag (собственные значения XXT {\ displaystyle XX ^ {T}}XX ^ {T} )

Таким образом, мы можем легко увидеть, что:

Собственные грани = первые k {\ displaystyle k}k (k ≤ n {\ displaystyle k \ leq n}k \ leq n ) столбцов U {\ displaystyle U}U , связанный с ненулевыми сингулярными значениями.
i-е собственное значение XXT = 1 n ({\ displaystyle XX ^ {T} = {\ frac {1} { n}} (}XX ^ {T} = {\ frac {1} {n}} (i с сингулярным значением X) 2 {\ displaystyle X) ^ {2}}X) ^ {2}

Используя SVD для матрицы данных X, нет необходимости вычислять фактическую ковариационную матрицу получить собственные лица.

Использование в распознавании лиц

Распознавание лиц было мотивацией для создания собственных лиц. Для этого использования собственные грани имеют преимущества по сравнению с другими доступными методами, такими как скорость и эффективность системы. Поскольку собственное лицо - это в первую очередь метод уменьшения размеров, система может представлять множество объектов с относительно небольшим набором данных. Как система распознавания лиц, она также довольно инвариантна к значительному уменьшению размера изображения; тем не менее, он начинает значительно выходить из строя, когда разница между наблюдаемыми изображениями и изображениями зонда велика.

Для распознавания лиц изображения галереи - те, которые видит система - сохраняются в виде наборов весов, описывающих вклад каждого собственного лица в это изображение. Когда новое лицо представляется системе для классификации, его собственные веса определяются путем проецирования изображения на набор собственных лиц. Это обеспечивает набор весов, описывающих поверхность зонда. Затем эти веса классифицируются по всем весам в галерее, чтобы найти наиболее близкое соответствие. Метод ближайшего соседа - это простой подход к нахождению евклидова расстояния между двумя векторами, где минимум может быть классифицирован как самый близкий объект. (Turk Pentland 1991, p. 590) harv error: no target: CITEREFTurkPentland1991 (help )

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

Псевдокод
  • Заданный вектор входного изображения U ∈ ℜ n {\ displaystyle U \ in \ Re ^ {n}}U \ in \ Re ^ { n} , вектор среднего изображения из база данных M {\ displaystyle M}M , вычислить вес k-й собственной грани как:
    wk = V k T (U - M) {\ displaystyle w_ {k} = V_ { k} ^ {T} (UM)}w_ {k} = V_ { k} ^ {T} (UM)
    Затем сформируйте вектор весов W = [w 1, w 2,..., wk,..., wn] {\ displaystyle W = [w_ { 1}, w_ {2},..., w_ {k},..., w_ {n}]}W = [w_ {1}, w_ {2},..., w_ {k},..., w_ {n}]
  • Сравните W с весовыми векторами W m {\ displaystyle W_ {m}}W_{m}изображений в да табаза. Найдите евклидово расстояние.
    d = | | Вт - Вт м | | 2 {\ displaystyle d = || W-W_ {m} || ^ {2}}d = || W-W_ {m} || ^ {2}
  • Если d < ϵ 1 {\displaystyle d<\epsilon _{1}}d <\ epsilon _ {1} , то m-я запись в базе данных является кандидатом на распознавание.
  • Если ϵ 1 < d < ϵ 2 {\displaystyle \epsilon _{1}\ epsilon _ {1} <d <\ epsilon _ {2} , тогда U может быть неизвестным лицом и может быть добавлено в базу данных.
  • Если d>ϵ 2, U {\ displaystyle d>\ epsilon _ {2}, U}d>\ epsilon _ {2}, U не является изображением лица.

Веса каждого изображения в галерее содержат только информацию, описывающую это изображение, а не объект. Изображение одного объекта при фронтальном освещении может иметь очень разные веса к тем же объектам при сильном левом освещении. Это ограничивает применение такой системы. Эксперименты в исходной статье Eigenface дали следующие результаты: в среднем 96% с изменением освещенности, 85% с изменением ориентации и 64% с изменение размера. (Turk Pentland 1991, p. 590) Harv error: no target: CITEREFTurk Pentland1991 (help )

В метод собственных граней были внесены различные расширения, например. Этот метод объединяет (измерение расстояния между чертами лица) с представлением собственного лица. Другой метод, аналогичный методу собственных граней, - «fisherfaces », который использует линейный дискриминантный анализ. Этот метод распознавания лиц менее чувствителен к изменению освещения и позы лица, чем использование собственных лиц. Fisherface использует помеченные данные, чтобы сохранить больше информации, относящейся к классу, на этапе уменьшения размерности.

Еще одна альтернатива eigenfaces и fisherfaces - это модель активного внешнего вида. Этот подход использует активную модель формы для описания контура лица. Собирая множество контуров лиц, можно использовать анализ главных компонентов для формирования базового набора моделей, которые инкапсулируют вариации различных лиц.

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

Обзор

Eigenface предоставляет простой и дешевый способ реализовать распознавание лиц в том, что:

  • Его процесс обучения полностью автоматизирован и легко кодируется.
  • Eigenface адекватно сокращает статистическая сложность в представлении изображений лиц.
  • После расчета собственных лиц в базе данных распознавание лиц может быть достигнуто в реальном времени.
  • Eigenface может работать с большими базами данных.

Однако недостатки метод eigenface также очевиден:

  • Он очень чувствителен к освещению, масштабированию и перемещению и требует строго контролируемой среды.
  • Eigenface испытывает трудности с улавливанием изменений выражения.
  • Наиболее важные из них. Собственные лица в основном связаны с кодированием освещения и не предоставляют полезной информации о реальном лице.

Чтобы справиться с отвлечением освещения на практике, метод собственных лиц обычно отбрасывает первые три собственных лица из набора данных. Поскольку освещение обычно является причиной самых больших изменений в изображениях лиц, первые три собственных лица будут в основном захватывать информацию о трехмерных изменениях освещения, которые мало влияют на распознавание лиц. Отказавшись от этих трех собственных лиц, вы получите приличное повышение точности распознавания лиц, но другие методы, такие как fisherface и linear space, по-прежнему имеют преимущество.

См. Также
Примечания
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-18 09:25:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте