Презентацию к лекции можно скачать здесь.
Интерес к процессам отслеживания и распознавания лиц, всегда был значительным, особенно в связи с все возрастающими практическими потребностями: системы охраны, верификация кредитных карточек, криминалистическая экспертиза, телеконференции и т.д. Несмотря на ясность того житейского факта, что человек хорошо идентифицирует лица людей, совсем не очевидно, как научить этому компьютер, в том числе как декодировать и хранить цифровые изображения лиц. Так в последние десять лет или около того, распознавание лиц стало популярной областью исследований в компьютерном зрении и одним из самых успешных применений анализа изображений. Данная область привлекает не только исследователей в области информатики, а также неврологов и психологов.
По сути, отслеживание и распознавание лиц является практическим применением теории распознавания образов, в задачу которого входит автоматическая локализация лица на фотографии или видеопотоке и, в случае необходимости, идентификация персоны по лицу. В настоящее время функцию идентификации людей на фотографиях уже активно используют в программном обеспечении для управления фотоальбомами (Picasa, iPhoto и др.) [, , ].
Способность различать лица присуща человеку с его появления, и является самым естественным способом идентификации. При встрече с новым человеком мы сначала смотрим на лицо и лишь, потом анализируем его походку, голос, манеру одеваться. Компьютеры сравнительно недавно приблизились к этой возможности, не смотря на то, что проблема отслеживания и распознавания лиц рассматривалась еще на ранних стадиях компьютерного зрения. Первыми заказчиками на разработку систем основанных на распознавании образов были правоохранительные органы. Задача, которая ставилась, – захват из толпы отдельных лиц и определение находится ли данный человек в розыске. Но на начало развития компьютерных технологий, это была непосильная задача. Современные технологии отслеживания и распознавания лиц позволяют производить автоматический поиск и распознавание лиц в графических файлах и видеопотоке. В настоящее время данная технология широко распространена и применяется в следующих областях [, ]:
Уже более сорока лет разрабатываются автоматизированные, а сейчас и автоматические системы распознавания человеческих лиц.
Существует несколько классов таких систем:
Как уже говорилось, основная идея распознавания лица относится к задаче распознавания образов. Такие задачи не имеют точного аналитического решения. Основная идея распознавания лица состоит в выделении информативных признаков в изображении лица, кодировании и сравнении закодированного лица с базой данных.
Для решения задач отслеживания и распознавания лиц были предложены различные методы. Среди таких методов можно выделить подходы, основанные на нейронных сетях, на преобразовании Карунена-Лоэва (или метод главных компонет), скрытых марковских сетях, метод Виолы–Джонса, вейвлет преобразованиях [, , ].
В настоящее время метод Виолы–Джонса является самым популярным методом для поиска области лица на изображении в силу своей высокой скорости и эффективности. Пол Виола и Майкл Джонс разработали и представили этот метод в 2001. В основе метода Виолы–Джонса по поиску лица лежат идеи: интегральное представление изображения по признакам Хаара, метод построения классификатора на основе алгоритма адаптивного бустинга, и метод комбинирования классификаторов в каскадную структуру. Эти идеи позволяют осуществлять поиск лица в режиме реального времени [].
Признак Хаара состоит из смежных прямоугольных областей. Эти области позиционируются на изображении, далее происходит суммирование интенсивности пикселей в областях, затем между суммами вычисляется разность. Значение полученной разности и является значением определенного признака, определенного размера, определенным образом расположенного на изображении. На ].
На этапе обнаружения в методе Виолы—Джонса используется окно, определенного размера, которое движется по изображению. Признак Хаара рассчитывается для каждой области изображения, над которой проходит окно. Наличие или отсутствие предмета в окне определяется разницей между значением признака и обучаемым порогом. Поскольку признаки Хаара мало подходят для обучения или классификации, для описания объекта с достаточной точностью необходимо большее число признаков. Поэтому в методе Виолы—Джонса признаки Хаара организованы в каскадный классификатор [].
Преимущество использования признаков Хаара является наибольшая, по сравнению с остальными признаками, скорость. При использовании интегрального представления изображения, признаки Хаара могут вычисляться за постоянное время.
(рис 8.1) Признаки Хаара
(рис 8.2) Примеры использования признаков Хаара
Методу Виолы–Джонса присуща высокая вероятность точного обнаружения лица, даже при наблюдении объекта под небольшим углом, примерно до 30°. Но при большем угле наклона вероятность обнаружения лица резко падает. В стандартной реализации метода указанная особенность не позволяет обнаруживать лицо человека, повернутое под произвольным углом, что в значительной мере затрудняет или делает невозможным использование данного метода в современных системах [].
Метод главных компонент (Principal Component Analysis, PCA) – один из наиболее распространенных методов для уменьшения размерности данных, потери наименьшего количества информации. Метод позволяет выделять характерные признаки лица и использовать их для реконструкции и восстановления. Данный метод основан на преобразовании Карунена – Лоэва.
Главная идея этого метода состоит в представлении изображений лиц людей в виде набора главных компонент изображений, называемых "собственные лица" (Eigenfaces). Полезным свойством собственных лиц является то, что изображение, соответствующее каждому такому компоненту имеет лицеподобную форму, как представлено на рис 8.3. Вычисление главных компонент основывается на вычислении собственных векторов и собственных значений ковариационной матрицы, которая рассчитывается из изображения. Сумма главных компонент, умноженных на соответствующие собственные вектора, является реконструкцией изображения.
(рис 8.3) Пример изображений собственных векторов
Для каждого изображения лица вычисляются его главные компоненты. Обычно берётся от 5 до 200 главных компонент. Остальные компоненты кодируют мелкие различия между лицами и шумами. Процесс распознавания заключается в сравнении главных компонент неизвестного изображения с компонентами всех известных изображений. При этом предполагается, что изображения лиц, соответствующих одному человеку, сгруппированы в кластеры в собственном пространстве. Из базы данных выбираются изображения кандидаты, имеющие наименьшее расстояние от входного (неизвестного) изображения [, , ].
Так же выделяют антропометрический метод, суть которого заключается в выделении набора ключевых точек (или областей) лица и последующем выделении набора признаков. Каждый признак является либо расстоянием между ключевыми точками, либо отношением таких расстояний. Кроме количественных признаков существуют качественные признаки, которые полнее описывают объект принятия решений: пол, тип, телосложение, рост. В свою очередь каждый признак может принимать одно из нескольких возможных значений. Для того, чтобы представить количественные признаки в бинарном виде необходимо, основываясь на статистические данные, разбить диапазон допустимых значений признака на интервалы. Таким образом, каждая личность, изображенная на фотопортрете, может быть описана массивом признаков в виде последовательности нулей и единиц, порцией знаний.
Основной принцип работы программ по отслеживанию и распознаванию лиц работают следующим образом. На первом шаге анализируется изображение, после чего осуществляется поиск лиц. Затем идет обработка, направленная на выделение индивидуальных особенностей каждого обнаруженного человеческого лица. На основе отобранных индивидуальных характеристик составляется цифровой шаблон. Индивидуальными характеристиками в этом случае являются расстояние между глазами, глубина их посадки, формы скул, носа, челюсти. Все это преобразуется в цифровой код, который представляет собой что-то подобное "цифровому слепку лица", по которому в дальнейшем производится сравнение, например с разыскиваемыми преступниками. В большинстве случаев восстановить обратное изображение уже практически не возможно. Этот подход является основой биометрии [].
В настоящее время существует большое количество библиотек для разработчиков, в которые включены модули по отслеживанию и распознаванию лиц. Особым вниманием пользуются следующие библиотеки:
opencv_objdetec, который позволяет обнаруживать объекты на изображении, включая нахождение лиц и обнаружение людей;Модуль анализа лица Intel Perceptual Computing SDK предоставляет набор алгоритмов, которые позволяют определять местоположения лица, его ориентации в пространстве, выделение контрольных точек, и распознавание лица в базе данных [, ].
Как показано на рис 8.4, алгоритм обнаружения лиц выявляет прямоугольную плоскость положения лица или нескольких лиц из изображения или видео последовательности. Это может быть полезным, когда необходимо определить, сколько лиц на изображении и их расположение.
Алгоритм определения контрольных точек дополнительно идентифицирует характерные точки лица (глаза, рот и т.д.) для определенного прямоугольника. Местоположение глаз представляет особый интерес для приложений, которые основаны на индикации изменения перспективы в зависимости от того, как пользователи смотрят на экран. Также функция может быть полезна при создании аватара или для выяснения ориентации головы, которую можно запросить прямо из алгоритма.
Модуль распознавания лица может проассоциировать данное лицо с именем, если человек ранее зарегистрирован в базе данных имен.
(рис 8.4) Операции слежения за лицом
Приложение использует следующую процедуру для создания экземпляра модуля анализа лица и предоставления из него данных:
1) Расположение модуля реализации:
Приложение использует функцию PXCSession::CreateImpl для создания экземпляра интерфейса PXCFaceAnalysis, как показано в примере 8.1.
PXCFaceAnalysis *face=0; session->CreateImpl(PXCFaceAnalysis::CUID,(void**)face);
2) Инициализация модуля:
Для инициализации модуля используются две функции QueryProfile и SetProfile. Первая функция возвращает доступные конфигурации. Последняя содержит одну конфигурацию в качестве текущей активной конфигурации. В примере 8.2, приложение запрашивает первую поддерживаемую конфигурацию, использует ее, чтобы найти устройство ввода, которое может предоставить данные, а затем инициализирует модуль с конфигурацией. Следует отметить, что требования входного модуля задаются как часть структуры ProfileInfo, которая может быть как глубинным изображением, и/или цветным изображением. Служебный класс UtilCapture обнаружит устройство ввода, соответствующее входным характеристикам модуля.
PXCFaceAnalysis::ProfileInfo pinfo; face->QueryProfile(0,pinfo); UtilCapture capture(session); capture.LocateStreams(pinfо.inputs); face->SetProfile(pinfo);
3) Инициализация элементов анализа лица:
Дополнительно к инициализации модуля приложению необходимо инициализировать каждый элемент анализа лица, такой как отслеживание лица и его контрольных точек. Каждый элемент имеет собственные конфигурационные параметры. Приложение вызывает функции QueryProfile и SetProfile для интерфейса каждого элемента, например, PXCFaceAnalysis::Detection, PXCFaceAnalysis::Landmark, как показано в примере 8.3.
PXCFaceAnalysis::Detection *det=face->DynamicCast <PXCFaceAnalysis::Detection>(); PXCFaceAnalysis::Detection::ProfileInfo dinfo; det->QueryProfile(0,dinfo); det->SetProfile(0,dinfo);
4) Цикл обработки данных:
В цикле приложение передает данные от устройства ввода модулю анализа лица. Для передачи данных приложение вызывает функцию ProcessImageAsync, как показано в примере 8.4. Следует отметить, что данные из устройства ввода могут содержать комбинированные изображения, такие как цветные и глубиные изображения. Приложение может использовать набор функций PXCSmartArray<PXCImage> для упрощения программирования.
Если приложению необходимо переключиться на другой контекст, приложение вызывает функцию ProcessImageAsync с указателем NULL для сброса идентифицированных состояний сохраненных в модуле.
PXCSmartArray<PXCImage> images;
PXCSmartSPArray sps(2);
for (;;) {
// Get samples from input device and pass to the module capture.
ReadStreamAsync(images.ReleaseRefs(),sps.ReleaseRef(0))
face->ProcessImageAsync(images,sps.ReleaseRef(1));
sps.SynchronizeEx();
// Tracking or recognition results are ready. Now process them
...
}
Для простого отслеживания лица и определения контрольных точек с входных данных камеры или записанного файла приложение может использовать конвейерный утилитный класс UtilPipeline или встроенную версию процедуры представленной выше, что показано в примере 8.5.
class MyPipeline: public UtilPipeline {
public:
MyPipeline() {
EnableFaceLandmark();
}
virtual bool OnNewFrame() {
PXCFaceAnalysis *face=QueryFace();
... // Face tracking operations
}
};
int wmain(int argc, wchar_t* argv[]) {
MyPipeline mp;
mp.LoopFrames();
return 0;
}
Приложение может использовать функцию QueryData интерфейса PXCFaceAnalysis::Detection для нахождения данных по отслеживанию лица. Также это может быть множество лиц на любом изображении. Приложение может использовать функцию QueryFace для нахождения определителей доступных лиц на изображении, как показано в примере 8.6.
PXCFaceAnalysis::Detection *detector=face->DynamicCast
<PXCFaceAnalysis::Detection>();
for (int i=0;;i++) {
pxcUID fid; pxcU64 ts;
if (face->QueryFace(i,fid,ts)<PXC_STATUS_NO_ERROR) break;
PXCFaceAnalysis::Detection::Data data;
detector->QueryData (fid, data);
// Process data
}
При нахождении данных по контрольным точкам подобно как и при отслеживании лица приложение может использовать функции QueryLandmarkData и QueryPoseData интерфейса PXCFaceAnalysis::Landmark для нахождения данных связанных с контрольными точками, как показано в примере 8.7. Структура LandmarkData предоставляет данные о позиции для каждой определенной контрольной точки (или характерных чертах лица). Структура PoseData предоставляет информацию об ориентации головы.
PXCFaceAnalysis::Landmark *landmark=face->DynamicCast
<PXCFaceAnalysis::Landmark>();
for (int i=0;;i++) {
pxcUID fid; pxcU64 ts;
if (face->QueryFace(i,fid,ts)<PXC_STATUS_NO_ERROR) break;
PXCFaceAnalysis::Landmark::LandmarkData ldata;
landmark->QueryLandmarkData (fid,
PXCFaceAnalysis::Landmark::LABEL_NOSE_TIP,
0, data);
PXCFaceAnalysis::Landmark::PoseData pdata;
landmark->QueryPoseData (fid,pdata);
// Process data
}
Распознавание работает путем сравнения изображения (которое содержит лицо человека, находящегося перед камерой) с набором эталонных изображений. Наиболее схожее эталонное изображение побеждает, и человек, который связан с эталонным изображением, является распознанным. Приложению необходимо индексировать и поддерживать список эталонных изображений.
Пример 8.8 демонстрирует простой пример вычисления сходства двух неподвижных изображений. Приложение создает два экземпляра Model из двух входных изображений, выполнив функцию ProcessImageAsync, а затем функцию CreateModel. Здесь экземпляр Model является выделением главных признаков набора данных, которые представляют лицо на изображении для сравнения. Затем приложение использует функцию Compare для вычисления сходства между этими двумя моделями.
В более сложных сценариях приложение может обрабатывать эталонные изображения в рабочем порядке и сохранять эталонные данные в базу данных. Во время выполнения приложение получает эталонные данные из базы данных и воссоздает эталонный список. Две функции Serialize и DeserializeModel предназначены для такого использования.
PXCFaceAnalysis::Recognition::Model *createModelFromImage(PXCImage *image) {
PXCSmartSP sp;
face->ProcessImageAsync(image,sp);
sp->Synchronize();
pxcUID fid;
face->QueryFace(0,fid);
PXCFaceAnalysis::Recognition::Model *ml=0;
face->DynamicCast<PXCFaceAnalysis::Recognition>()->CreateModel(fid,ml);
return ml;
}
bool IsSimilar(PXCImage *imagel, PXCImage *image2) {
PXCFaceAnalysis::Recognition::Model *ref=createModelFromImage(image1);
PXCFaceAnalysis::Recognition::Model *cur=createModelFronInage(image2);
pxcU32 index;
return cur->Conpare(ref,1,0,index)>=PXC STATUS NO ERROR;
}
Приложение Face_recognition демонстрирует, как использовать анализ интерфейса SDK анализ лица для распознавания лица.
Образец отображает цветное изображение от устройства ввода. Если человек распознан, приложение выводит его/ее имя на прямоугольника вокруг лица, как показано на рис 8.5. Чтобы добавить имя в базу данных, пользователь может нажать клавишу 'a' и затем ввести имя человека (рис 8.6). Добавление более одного вида одного и того же человека увеличивает надежность распознавания [8].
(рис 8.5) Результат работы приложения Face_recognition
(рис 8.6) Добавление человека в базу
Приложение ).
(рис 8.7) Главное окно приложения face_tracking
В меню пользователи могут выбрать следующие опции:
С помощью кнопок расположенных в правой части пользовательского интерфейса возможно установить следующие параметры:
На рис 8.12 представлено приложение в работе, находятся 7 контрольных точек и область распознанного лица.
(рис 8.8) Выбор устройства ввода из списка
(рис 8.9) Выбор модуля распознавания
(рис 8.10) Выбор количества контрольных точек
(рис 8.11) Выбор режима работы приложения
(рис 8.12) Работа приложения face_tracking
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.