В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов. Представлены способы использования данных компонент для решения задачи распознавания лиц в режиме реального времени.
Ключевые слова: распознавание лиц, Accord.NET Framework, AForge.NET
Введение
Распознавание лиц является одной из самых актуальных задач в таких областях, как цифровая обработка изображений, компьютерное зрение, биометрия, организация видеоконференций, разработка интеллектуальных систем безопасности и контроля доступа.
Распознавание лиц заключается в идентификации одного или нескольких человек путем сравнения входных изображений с имеющимися изображениями в базе данных. Методы, применяемые для решения задачи распознавания лиц, должны обеспечивать высокий процент верно распознанных объектов и хорошую скорость обработки видеопотока.
Существует много различных библиотек для программной реализации системы распознавания лиц, например, такие как OpenCV, Emgu CV, Accord.NET Framework, Matrox Imaging Library, Camellia Library, Open eVision, HALCON, VXL, libCVD, IVT, LTI, AForge.NET и некоторые другие. В данном случае рассмотрим библиотеки AForge.NET и Accord.NET более подробно.
Библиотека AForge.NET
AForge.NET — это библиотека с открытым исходным кодом, разработанная на языке C#, которая используется разработчиками и исследователями при решении задач, связанных с компьютерным зрением. А также в библиотеке AForge.NET есть возможности для решения задач в области искусственного интеллекта. Диапазон средств, применяемых библиотекой достаточно разнообразен: обработка изображений, нейронные сети, генетические алгоритмы, нечеткая логика, машинное обучение, робототехника и многое другое.
Основные компоненты библиотеки AForge.NET представлены ниже:
‒ AForge.Imaging — библиотека, предназначенная для работы с изображениями и фильтрами;
‒ AForge.Vision — библиотека, применяющая методы компьютерного зрения;
‒ AForge.Video — пакет библиотек для выполнения работ, связанных с видеоданными;
‒ AForge.Neuro — библиотека, в которой используются возможности нейронных сетей;
‒ AForge.Genetic — библиотека, предназначенная для решения разнообразных задач с применением генетических алгоритмов;
‒ AForge.Fuzzy — библиотека работает с нечеткой логикой;
‒ AForge.Robotics — библиотека поддерживает методы, используемые в области робототехники;
‒ AForge.MachineLearning — библиотека, в которой применяются элементы машинного обучения.
Библиотека AForge.NET находится в процессе постоянного улучшения и развития. По данной библиотеке существует много примеров, показывающих ее работу, а также есть html-документация, которая может понадобиться начинающим разработчикам, которые захотят использовать данную библиотеку в своих проектах.
Accord.NET Framework
Accord.NET Framework — сравнительно новая программная платформа для AForge.NET, известного пакета библиотек в области компьютерного зрения и искусственного интеллекта, целиком созданная на языке С#. Библиотека Accord.NET использует средства и возможности, которых раньше не было в AForge.NET: применение векторных машин на уровне ядра; дискриминантный и проективный анализ; поддерживает скрытые марковские модели; применение новых методов обучения нейронных сетей; новые фильтры изображений, а также другие возможности.
Библиотека Accord.NET разработана на языке объектно-ориентированного программирования C#. Предназначена для создания программ, применяющих возможности компьютерного зрения, компьютерной обработки звука, обработки сигналов и различных статистических методов.
Accord.NET Framework может использоваться в приложениях семейства Microsoft Windows, Xamarin, Unity3D, Windows Store, Linux, а также в мобильных устройствах.
После слияния с проектом AForge.NET, в настоящее время платформа предлагает унифицированный API, для обучения машинным моделям, который является простым в использовании и расширяемым.
Проект Accord.NET Framework изначально создавался для расширения возможностей AForge.NET Framework, но с тех пор включил AForge.NET в себя. Новые версии объединили оба фреймворка под именем Accord.NET.
Accord.NET содержит набор библиотек, доступных в исходном коде, а также с помощью исполняемых инсталляторов и пакетов NuGet. Исходный код проекта доступен на условиях Gnu Lesser Public License, версия 2.1. в репозитории на GitHub.
Возможности Accord.NET Framework
Возможности библиотеки Accord.NET Framework можно разделить на несколько основных групп:
‒ классификация (а именно, метод опорных векторов, логистическая регрессия, нейронные сети);
‒ регрессия (особенно, линейная регрессия с множеством параметров; регрессия, использующая метод опорных векторов; логистическая регрессия);
‒ кластеризация (в частности, методом k-средних);
‒ распределения (более 40 видов);
‒ проверка гипотез;
‒ ядерные методы;
‒ обработка изображений;
‒ обработка звука и сигналов;
‒ алгоритмы компьютерного зрения.
Полный набор примеров приложений позволяет легко и быстро начать разрабатывать программы, а обширная документация и вики помогает заполнить все детали.
Accord.Vision — обнаружение и отслеживание лица в режиме реального времени, а также общие методы для обнаружения, отслеживания и преобразования объектов в потоки изображений. Содержит определения каскада, трекеры Camshift и Dynamic Template Matching. Включает предварительно созданные классификаторы для человеческих лиц и некоторые черты лица, например, такие как носы.
Accord.Imaging — содержит детекторы точек интереса (например, Harris, SURF, FAST и FREAK), фильтры изображений, методы сопоставления изображений и стыковки изображений, а также экстракторы функций, такие как гистограммы ориентированных градиентов и описательные функции Haralick.
Accord.Controls.Vision — компоненты Windows Forms и элементы управления для отслеживания движений головы, лица и рук и других задач, связанных с компьютерным зрением.
Accord.Controls.Imaging — элементы управления Windows Forms для отображения и обработки изображений. Содержит удобный элемент управления ImageBox, который имитирует традиционный MessageBox для быстрого отображения или проверки изображений.
Accord.MachineLearning — применение метода опорных векторов, деревьев принятия решений, наивных байесовских моделей, моделей Gaussian Mixture и общих алгоритмов, таких как Ransac, перекрестная проверка и Grid-Search для приложений где используется машинное обучение.
Accord.Math — содержит библиотеку расширений матрицы, наряду с набором численных матричных методов декомпозиции, численных алгоритмов оптимизации для ограниченных и неограниченных задач, специальных функций и других инструментов для научных приложений.
Accord.Statistics — содержит распределения вероятностей, тестирование гипотез, статистические модели и такие методы, как линейная и логистическая регрессия, скрытые марковские модели, метод случайных полей, метод главных компонент, регрессия методом дробных наименьших квадратов, линейный дискриминантный анализ и многие другие.
Accord.Vision.Detection — содержит детекторы объектов, такие как метод Виолы-Джонса (метод Хаара). Каскады Хаара полностью совместимы с определениями, генерируемыми OpenCV, а сборка поставляется с прямой поддержкой связанных шаблонов лица и носа.
Accord.Vision.Detection.Cascades — встроенные каскады Хаара для использования с детектором объектов Хаара. Эти каскады можно вызывать непосредственно из кода без необходимости загрузки файлов XML.
Применение AForge.Net иAccord.NET Framework в задачах распознавания лиц
Захват изображения
Для захвата видео с устройства видео ввода используют класс AForge.Video.DirectShow.VideoCaptureDevice. Этому классу требуется указать маркер устройства с которого будет осуществляться захват. Так же нужно назначить обработчик события NewFrame. Это событие появляется в то время, когда с камеры отправлен новый кадр. Затем данный кадр отправляется в виде объекта Bitmap в обработчик события, где уже происходит его обработка [5]:
private void VideoSourceNewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{ var img = (Image) eventArgs.Frame;
using (var ms=new MemoryStream())
{ img.Save(ms,ImageFormat.Jpeg);
//Картинку сохраняют в массив байт, для того чтобы потом сформировать mjpeg
_bufImage = ms.ToArray(); }}
Открытие видеоустройства
В данном случае применяются классы Accord.Video.IVideoSource и Accord.Controls.VideoSourcePlayer. Их используют для открытия видео источника и его запуска.
private void OpenVideoSource(IVideoSource source)
{ this.Cursor = Cursors.WaitCursor;
CloseVideoSource(); videoSourcePlayer.VideoSource = source;
videoSourcePlayer.Start(); statIndex = statReady = 0;
timer.Start(); videoSource = source; this.Cursor = Cursors.Default; }
Выборвидеоустройства
Для выбора камеры используется класс Accord.Video.DirectShow.VideoCaptureDeviceForm. Для этого нужно задать обработчик события btn_Con_Cam_Device. Это событие идет на обработку при нажатии на кнопку «Выбор камеры».
private void btn_Con_Cam_Device_Click(object sender, EventArgs e)
{ if (!DeviceStarStop)
{ VideoCaptureDeviceForm form = new VideoCaptureDeviceForm();
if (form.ShowDialog(this) == DialogResult.OK)
{ VideoCaptureDevice videoSource = form.VideoDevice;
OpenVideoSource(videoSource); }
btn_Con_Cam_Device.BackgroundImage = Properties.Resources.Video_Camera_record; DeviceStarStop = true;
} else { CloseVideoSource(); btn_Con_Cam_Device.BackgroundImage = Properties.Resources.Video_Camera; DeviceStarStop = false; } }
Настройка параметров видео устройства
Для настройки параметров видео устройства применяется класс
Accord.Video.DirectShow.VideoCaptureDevice. Необходимо прописать обработчик события btn_SettingsCamera. Это событие запускается всегда, когда с формы программного обеспечения нажимают на кнопку «Параметра камеры».
private void btn_SettingsCamera_Click(object sender, EventArgs e)
{ if ((videoSource != null) && (videoSource is VideoCaptureDevice))
{ try
{ ((VideoCaptureDevice)videoSource).DisplayPropertyPage(this.Handle); }
catch (NotSupportedException)
{ MessageBox.Show("Источник видео не поддерживает данные свойства конфигурации.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
Выводы
- Описаны библиотеки AForge.NET и Accord.NET Framework, а также их компоненты, предназначенные для решения задач в области компьютерного зрения.
- Представлены возможности реализации библиотек для распознавания лиц в режиме реального времени на видеопоследовательностях на языке объектно-ориентированного программирования C#.
Литература:
- Accord.Net [Электронный ресурс]. Режим доступа: https://en.wikipedia.org/wiki/ Accord.NET, свободный
- Accord.Net Framework [Электронный ресурс]. Режим доступа: http://accord-framework.net/index.html, свободный
- AForge.NET motion detection [Электронный ресурс]. Режим доступа: https://social.msdn.microsoft.com/Forums/ru-RU/9c3414e1-e540–40aa-a8c1-e5eac25030a9/aforgenet-motion-detection?forum=fordesktopru, свободный
- Haar-feature Object Detection in C# [Электронный ресурс]. Режим доступа: https://www.codeproject.com/Articles/441226/Haar-feature-Object-Detection-in-Csharp, свободный
- Захват видео с камеры и передача его по сети [Электронный ресурс]. Режим доступа: https://habrahabr.ru/post/177793/, свободный