Исходный код и объяснение видео: https://www.udemy.com/course/build-face-recognition-app-using-machine-learning-in-flask/?referralCode=E4241D27BEFE8D5E6C4D

Это руководство поможет создать любой комплексный проект искусственного интеллекта с нуля. В этом проекте мы рассматриваем возможность создания приложения Gender Face Recognition во Flask. Процессы, которым мы следуем, одинаковы для любого проекта по науке о данных. Чтобы создать это приложение, нам нужно следовать плану проекта, как описано ниже.

1. Понимание данных

2. Анализ данных изображения и предварительная обработка

3. Обучение модели прогнозирования

4. Модель оценки и настройки машины для обучения

5. Создайте REST API в Flask и разверните

Понимание данных:

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

Например, для таких данных, как изображение, нам нужно понять, как создаются цифровые изображения, представленные в многомерных массивах. Также необходимо изучить основные модули в OpenCV, которые необходимы для распознавания лиц: 1. Фильтрация изображений, 2. Преобразование изображений, 3. Гистограммы, 4. Обнаружение признаков и 5. Обнаружение объектов.

Цель этого модуля — понять значения обработки изображений, шаблонов и массивов с помощью OpenCV для эффективной обработки лиц для построения конвейерных моделей машинного обучения. Данные, используемые для обучения и предварительной обработки, загружаются с этого URL.

Анализ данных изображения и предварительная обработка:

Существует четыре вида анализа, которые необходимо выполнить в образе для лучшего принятия решений, и они перечислены ниже:

Определение трансформации. Первый вид анализа, который необходимо выполнить, — это определение формы изображений. Мы можем найти оптимальный размер по гистограмме и диаграмме.

Удаление дымки (удаление шума). Дымка — это процесс удаления шума с изображения путем регулировки интенсивности света, оценки карты пропускания и уточнения изображения. Для получения дополнительной информации об удалении дымки посетите наш сайт www.freeai.space

Сегментация изображения. Сегментация изображения — это процесс разделения цифрового изображения на несколько сегментов (наборов пикселей, также известных как объекты изображения). Цель сегментации состоит в том, чтобы упростить и/или изменить представление изображения во что-то более осмысленное и легко анализируемое. Сегментация изображения обычно используется для поиска объектов и границ (линий, кривых и т. д.) на изображениях. Точнее, сегментация изображения — это процесс присвоения метки каждому пикселю изображения таким образом, чтобы пиксели с одной и той же меткой имели общие характеристики.

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

OpenCV и каскадный классификатор Хаара. Вы можете найти код для использования каскадного классификатора Хаара по следующей ссылке.

Извлечение признаков

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

Собственное лицо

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

Прогнозирующая модель:

Как только мы вычислим собственное изображение с помощью анализа основных компонентов, теперь мы будем обучать модель машинного обучения с данными собственного изображения. Существует много моделей машинного обучения, но для изображения рекомендуется использовать нелинейные модели, такие как SVM, Gradient Boosting и т. д.

Оценка модели:

Чтобы выбрать лучшую модель машинного обучения для прогнозирования, используются следующие показатели, которые перечислены ниже:

  1. Матрица путаницы

Матрица путаницы - это наиболее распространенный способ анализа производительности модели с данными. В этой матрице будут определены следующие показатели:

- Переоснащение (точность с тестовыми данными меньше, чем с данными поезда)

- Чувствительность и специфичность модели (отзыв)

- Точность

2. Оценка Коэна-Каппы

Показатель каппа Коэна — это статистика, которая используется для измерения надежности между экспертами. Как правило, это более надежный способ определить производительность модели, а не точность (точность модели не работает с несбалансированными данными, а также с данными с несколькими классификациями).

3. Кривая рабочих характеристик приемника (кривая ROC)

Кривая рабочих характеристик приемника, или кривая ROC, представляет собой графический график, который иллюстрирует диагностические возможности системы двоичного классификатора при изменении ее порога различения.

Кривая ROC создается путем построения графика истинно положительных показателей (TPR) в сравнении с ложноположительными показателями (FPR) при различных пороговых значениях. Частота истинно положительных результатов также известна как чувствительность, отзыв или вероятность обнаружения [6] в машинном обучении. Частота ложноположительных результатов также известна как вероятность ложной тревоги[6] и может быть рассчитана как (1 − специфичность). Его также можно рассматривать как график зависимости мощности от ошибки типа I решающего правила (когда производительность рассчитывается только на основе выборки генеральной совокупности, ее можно рассматривать как оценку эти количества). Таким образом, кривая ROC представляет собой чувствительность или отзыв как функцию выпадения. В общем случае, если известны распределения вероятностей как для обнаружения, так и для ложной тревоги, ROC-кривую можно построить путем построения кумулятивной функции распределения (площади под распределением вероятностей от отрицательной бесконечности до порога различения) вероятности обнаружения в ось ординат против кумулятивной функции распределения вероятности ложной тревоги на оси абсцисс.

4. Оценка перекрестной проверки

В реальном мире данные часто распределяются несколько неравномерно, а это означает, что подобранная модель, вероятно, будет работать лучше на одних участках данных, чем на других. Перекрестная проверка начинается с перетасовки данных (чтобы предотвратить любые непреднамеренные ошибки упорядочения) и разделения их на k раз. Затем k моделей подбираются для k − 1 данных (называемых обучающим разделением) и оцениваются на 1k данных (называемых тестовым разделением). Результаты каждой оценки усредняются для получения окончательной оценки, после чего окончательная модель подгоняется ко всему набору данных для операционализации.

Настройка гиперпараметров

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

Для лучшей модели, которая оценивается и работает лучше, определяются оптимальные гиперпараметры для лучшего принятия решений.

Создание REST API в Flask

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

В этом уроке мы обсуждаем создание веб-приложения. Чтобы создать веб-приложение, все, что мы построили, и все, что мы создали, и соединение, сделанное для обработки ввода-вывода, все объединяется и составляет одну единую модель, называемую конвейерной моделью.

Бэкэнд-технологии

Существует множество серверных веб-технологий, и вот лучшие из них.

Phoenix, Django, ASP.NET, Spring MVC, Express.js, Ruby, Flask, Pyramid, PHP и многие другие…

Основные технологии внешнего интерфейса – это HTML, CSS и JavaScript.

Это основные библиотеки javascript, которые вы должны знать для современных технологий внешнего интерфейса: Angular, React, Vue.js, Backbone.js, Polymer, ember, Knockout, d3.js, Jquery,

Здесь мы использовали Flask, который представляет собой интерфейс шлюза веб-сервера (WSGI), написанный на python. Где мы интегрируем нашу модель конвейера во внешний интерфейс (HTML, CSS, JavaScript).

так что мы можем создать пользовательский интерфейс для пользователей, и пользователи могут использовать это приложение со стороны внешнего интерфейса.

Развертывать

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

Чтобы создать свой собственный веб-сервер на рабочем столе, это основные веб-серверы, которые обрабатывают запросы через HTTP-запрос.

HTTP-сервер Apache, NGINX, Apache Tomcat, Nodejs, Lighttpd, Lightspeed и т. д.

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

Amazon Web Service, Microsoft Azure, Google Cloud Platform, IBM Cloud Services, Adobe Creative Cloud, Kamatera, OpenShift, Oracle Cloud, Heroku, VMware Cloud, Dropbox, Digital Ocean, стоечное пространство и многие другие…

В конце концов

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

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

Ссылка: