Сквозной проект машинного обучения

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

Язык жестов - это язык общения, как и любой другой язык, который используется в сообществе глухих. Этот набор данных представляет собой полный набор жестов, которые используются в языке жестов и могут использоваться другими нормальными людьми для лучшего понимания жестов языка жестов. Набор данных собирается с веб-сайта Kaggle. Эти данные в целом состоят из 37 классов, в которых есть все символы английского алфавита, а также все 10 цифр и нижняя оценка (для пробела). Подробности объяснены в следующих разделах. Модель построена на языке Python, который часто используется для задач ML и DL.

Pytorch, будучи гибкой библиотекой и функциями, используется в этом проекте. Более подробная информация о моделях и прочем указана ниже. Модель обучается на графическом процессоре, который был доступен через ядра Kaggle.

Жизненный цикл машинного обучения состоит из 4 основных частей.

  • Получение данных
  • Предварительная обработка и извлечение функций из данных
  • Подготовка модели
  • Развертывание модели

Получение набора данных

Набор данных состоит из 37 различных жестов рук, включая жесты алфавита AZ, числовые жесты 0–9, а также жест для пробела, который означает, как глухие или немые люди представляют собой промежуток между двумя буквами или двумя словами при общении. Набор данных состоит из двух частей, то есть двух

папки (1) - Gesture Image Data - состоящие из цветных изображений рук для различных жестов. Каждое изображение жеста имеет размер 50 x 50 и находится в указанной папке, то есть папки AZ содержат изображения жестов AZ, а папки 0–9 состоят из жестов 0–9 соответственно, папка '_' состоит из изображений жеста для пространства. Некоторые образцы набора данных приведены здесь.

Предварительная обработка и извлечение функций

Как показано на изображении, это изображение RGB (красный, зеленый, синий), что означает, что оно имеет размер 3 x 50 x 50, где 50 x 50 - это размер изображения. Учитывая реальные ситуации и вычислительные затраты, модель может быть построена только по шкале серого, как и в черно-белых изображениях. Таким образом, здесь выполняется предварительная обработка изображений, чтобы преобразовать их в изображения BW.

Это делается путем регулировки яркости, порога бинаризации по Гауссу. Некоторые изображения показаны здесь. Изображения теперь конвертируются в BW и более низкий размер, то есть 50 x 50 (поскольку только 0 или 255). Ожидается, что вычислительные затраты уменьшатся. Двоичное изображение - одна из важных функций любого изображения, поэтому на этом часть извлечения функций завершается.

Подготовка модели

Подготовка модели также является одной из важных частей жизненного цикла. Выбрать модель можно несколькими способами. Поскольку постановка задачи касается решения изображений, наилучшими подходящими алгоритмами машинного обучения являются SVM, Trees. Но из-за того, что после того, как определенные данные передаются в традиционные алгоритмы машинного обучения, модель не получает дальнейшего обучения. Таким образом, в наши дни стали популярными алгоритмы глубокого обучения, такие как нейронные сети и CNN.

class net(nn.Module):
def __init__(self,input_size,hidden_layers,num_classes):
super(net,self).__init__()
    self.input = nn.Linear(in_features=50*50*3,out_features=1024)
    self.relu_1 = nn.ReLU()
    self.hidden1 = nn.Linear(in_features=1024,out_features=2048)
    self.relu_2 = nn.ReLU()
    self.hidden2 = nn.Linear(in_features=2048,out_features=2048)
    self.relu_3 = nn.ReLU()
    self.hidden3 = nn.Linear(in_features=2048,out_features=2048)
    self.relu_4 = nn.ReLU()
    self.hidden4 = nn.Linear(in_features=2048,out_features=1024)
    self.relu_5 = nn.ReLU()
    self.hidden5 = nn.Linear(in_features=1024,out_features=512)
    self.relu_6 = nn.ReLU()
    self.output = nn.Linear(in_features=512,out_features=num_classes)
def forward(self,X):
    model = self.input(X)
    model = self.relu_1(model)
    model = self.hidden1(model)
    model = self.relu_2(model)
    model = self.hidden2(model)
    model = self.relu_3(model)
    model = self.hidden3(model)
    model = self.relu_4(model)
    model = self.hidden4(model)
    model = self.relu_5(model)
    model = self.hidden5(model)
    model = self.relu_6(model)
    model = self.output(model)
return model

Сводка модели

Хотя существует вероятность того, что эти модели переоснащены, поскольку в некоторых областях, таких как медицинская диагностика редких заболеваний, имеется меньше данных, такие алгоритмы не подходят для таких ситуаций. Поскольку в постановке задачи есть эти огромные данные (55 500 изображений, равномерно распределенных между классами), в этом случае будут работать алгоритмы глубокого обучения.

Алгоритм искусственной нейронной сети (ИНС) выбран в качестве базового алгоритма.

Модель построена под библиотекой Pytorch, которая является гибкой в ​​использовании. Категорическая потеря используется оптимизатором в качестве убытка. Оптимизатор Адама предназначен для оптимизации функции потерь с скоростью обучения 0,001. Ниже приведены графики полученных результатов. Итак, наконец, рассматриваемые метрики - это потери, точность, оценка F1. Поскольку потери и точность не имеют большого значения для рабочих характеристик модели, используется оценка F1 (которая является HM как для точности, так и для отзыва). В таблице ниже представлена ​​информация о метрических характеристиках этой модели.

Развертывание модели

Хотя предыдущие этапы важны, развертывание модели играет ключевую роль в решении реальной проблемы. Любой, у кого есть данные, может построить простую модель или сложную модель, но без ее развертывания в реальном мире мы не сможем воспользоваться преимуществами этой технологии. Модель развертывается через веб-фреймворк Flask. Это приложение в основном принимает изображение в качестве входных данных, а затем преобразует его в текст. Хотя это базовое приложение, его можно улучшить, применив эти алгоритмы к видео. Полный цикл выполнен, и полный код для обучения доступен здесь, а код для развертывания доступен в этом репозитории G ithub, за исключением предварительно обученного, который в основном предоставляется через drive.

Перспективы на будущее

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

Спасибо…

Удачного обучения… !!!