Автор: Приянка Сонаван

URL-адрес Linkedin: https://www.linkedin.com/in/priyanka-sonawane-240126157

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

Обработка изображений

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

Распознавание эмоций

Этот тип технологии искусственного интеллекта позволяет считывать и интерпретировать эмоции, выражаемые людьми, с помощью расширенной обработки изображений или обработки аудиоданных. Правоохранители часто используют эту технологию во время допросов. Некоторые компании, которые используют распознавание эмоций, — это Beyond Verbal, nViso и Affectiva.

Согласно отчету об исследовании рынка, проведенному Markets , прогнозируется, что объем рынка распознавания эмоций вырастет с 19,5 млрд долларов США в 2020 году до 37,1 млрд долларов США к 2026 году при совокупном годовом темпе роста (CAGR) на уровне 11,3%.

"Источник"

Преимущества распознавания выражения лица:

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

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

разве это не любопытно, так что давайте начнем ……..

Мы знаем, что есть так много эмоций, которые человек может выразить.

Мы будем обучать модель на размеченных данных, чтобы увидеть результаты на данных в реальном времени.

Давайте посмотрим библиотеки, используемые в этом проекте,

  1. Opencv — OpenCV предоставляет оптимизированную для работы в режиме реального времени библиотеку, инструменты и оборудование компьютерного зрения. Он также поддерживает выполнение модели для машинного обучения (ML). библиотека содержит более 250 оптимизированных алгоритмов
  2. Numpy — — NumPy — это библиотека Python, используемая для работы с массивами. Он также имеет функции для работы в области линейной алгебры, преобразования Фурье и матриц. NumPy был создан в 2005 году Трэвисом Олифантом. Это проект с открытым исходным кодом, и вы можете использовать его свободно.
  3. Pandas — Pandas в основном используется для анализа данных и связанных с ними манипуляций с табличными данными в кадрах данных. Pandas позволяет импортировать данные из различных форматов файлов, таких как значения, разделенные запятыми, JSON, Parquet, таблицы или запросы базы данных SQL и Microsoft Excel.
  4. Keras — это программная библиотека с открытым исходным кодом, которая предоставляет интерфейс Python для искусственных нейронных сетей.
  5. Matplotlib — это библиотека построения графиков для языка программирования Python и его расширения для числовой математики Numpy.

Что нужно сделать

  1. Набор дат

Загрузите набор данных здесь или вы можете создать свой собственный набор данных.

2.Реализация

Перейдите к блокноту Jupyter и импортируйте все соответствующие библиотеки.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from keras.layers import Flatten, Dense
from keras.models import Model
from keras.preprocessing.image import ImageDataGenerator , img_to_array, load_img
from keras.applications.mobilenet import MobileNet, preprocess_input 
from keras.losses import categorical_crossentropy

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

base_model = MobileNet( input_shape=(224,224,3), include_top= False )
for layer in base_model.layers:
  layer.trainable = False
x = Flatten()(base_model.output)
x = Dense(units=7 , activation='softmax' )(x)
# creating our model.
model = Model(base_model.input, x)
model.compile(optimizer='adam', loss= categorical_crossentropy , metrics=['accuracy']  )

подготовка наших данных с помощью генератора данных

train_datagen = ImageDataGenerator(
     zoom_range = 0.2, 
     shear_range = 0.2, 
     horizontal_flip=True, 
     rescale = 1./255
)
train_data = train_datagen.flow_from_directory(directory= "/content/train",target_size=(224,224),batch_size=32,)
train_data.class_indices
val_datagen = ImageDataGenerator(rescale = 1./255 )
val_data = val_datagen.flow_from_directory(directory= "/content/test", 
                                           target_size=(224,224), 
                                           batch_size=32,
                                  )

Найдено 7178 изображений, принадлежащих к 7 классам.

соответствовать модели,

hist = model.fit_generator(train_data, 
                           steps_per_epoch= 10, 
                           epochs= 30, 
                           validation_data= val_data, 
                           validation_steps= 8, 
                           callbacks=[es,mc])
hist.save('best_model.h5')
# Loading the best fit model 
from keras.models import load_model
model = load_model("/content/best_model.h5")

Ну, наконец-то у нас есть модель сборки, нам нужна точность, и похоже,

plt.plot(h['accuracy'])
plt.plot(h['val_accuracy'] , c = "red")
plt.title("acc vs v-acc")
plt.show()

Чем меньше разница между точностью проверки и точностью, тем стабильнее будет модель.

Прогноз

#sample image to check results
path = "/content/test/sample.jpg"
img = load_img(path, target_size=(224,224) )
i = img_to_array(img)/255
input_arr = np.array([i])
input_arr.shape
pred = np.argmax(model.predict(input_arr))
print(f" the image is of {op[pred]}")
# to display the image  
plt.imshow(input_arr[0])
plt.title("input image")
plt.show()

Вывод — -› изображение нейтральное

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

import os
import cv2
import numpy as np
from keras.preprocessing import image
import warnings
warnings.filterwarnings("ignore")
#from keras.preprocessing.image import img_to_array 
#from tensorflow.keras.utils import img_to_array
#from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.utils import load_img, img_to_array 
#from tensorflow.keras.utils import load_img, img_to_array
from keras.models import  load_model
import matplotlib.pyplot as plt
import numpy as np
# load model
model = load_model("best_model.h5")
face_haar_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
    ret, test_img = cap.read()  # captures frame and returns boolean value and captured image
    if not ret:
        continue
    gray_img = cv2.cvtColor(test_img, cv2.COLOR_BGR2RGB)
faces_detected = face_haar_cascade.detectMultiScale(gray_img, 1.32, 5)
for (x, y, w, h) in faces_detected:
        cv2.rectangle(test_img, (x, y), (x + w, y + h), (255, 0, 0), thickness=7)
        roi_gray = gray_img[y:y + w, x:x + h]  # cropping region of interest i.e. face area from  image
        roi_gray = cv2.resize(roi_gray, (224, 224))
        img_pixels = image.img_to_array(roi_gray)
        img_pixels = np.expand_dims(img_pixels, axis=0)
        img_pixels /= 255
predictions = model.predict(img_pixels)
# find max indexed array
        max_index = np.argmax(predictions[0])
emotions = ('angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral')
        predicted_emotion = emotions[max_index]
cv2.putText(test_img, predicted_emotion, (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
resized_img = cv2.resize(test_img, (1000, 700))
    cv2.imshow('Facial emotion analysis ', resized_img)
if cv2.waitKey(10) == ord('q'):  # wait until 'q' key is pressed
        break
cap.release()
cv2.destroyAllWindows

мы можем запечатлеть эмоции человека в реальном времени.

Ух ты!!!!! мы сделали это…..

Случаи использования в реальном времени

  • Исследования рынка. Компании, занимающиеся исследованиями рынка, используют словесные методы, такие как опросы, чтобы понять желания и потребности клиентов. Эта технология удобна компаниям, занимающимся исследованиями рынка, для автоматического измерения выражения лица и эмоций в момент времени (кодирование лица).
  • Безопасные и персонализированные автомобили. Используя распознавание эмоций по лицу, умные автомобили могут предупредить водителя, когда он чувствует сонливость. Обнаружение эмоций лица может фиксировать микровыражения лица, что приводит к предупреждению водителя и предложению остановиться на перерыв на кофе, сменить музыку или температуру.
  • Виртуальные помощники. Различные виртуальные помощники, такие как Siri и Alexa, лучше оснащены возможностями распознавания эмоций. Теперь они могут менять язык и тон в зависимости от эмоций пользователя.
  • Тестирование видеоигр. Видеоигры вызывают у игроков различные эмоции, однако запоминая и выражая точное чувство и то, какой этап вызвал, какую реакцию обычно трудно собрать и точно определить. Для тестирования и улучшения эта обратная связь имеет решающее значение, и, следовательно, обнаружение эмоций по лицу может помочь в анализе эмоций игрока в режиме реального времени во время игры.
  • Здравоохранение. Отрасль, которая использует преимущества этой технологии, — это здравоохранение. Программное обеспечение для распознавания на основе искусственного интеллекта помогает решать, когда пациентам нужны лекарства, оценивать их эмоциональную реакцию в клинических испытаниях или помогать врачам в принятии решений. лучше всего сортировать своих пациентов.
  • Автомобильная промышленность и анализ эмоций. Автомобильная промышленность также применяет технологию распознавания эмоций, поскольку производители автомобилей во всем мире все больше внимания уделяют тому, чтобы сделать автомобили более персонализированными и безопасными для людей. В стремлении создать умные автомобильные функции производители автомобилей используют искусственный интеллект, чтобы понимать человеческие эмоции. Использование смарт-автомобилей с функцией распознавания эмоций по лицу может предупредить водителя, когда он чувствует сонливость, и, в свою очередь, помочь уменьшить количество дорожно-транспортных происшествий.

Заключение

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

Надеюсь, вам понравилось читать.

Продолжай читать!!!!

Ссылка:

  1. https://towardsdatascience.com/the-ultimate-guide-to-emotion-recognition-from-facial-expressions-using-python-64e58d4324ff
  2. https://www.asmag.com/showpost/23883.aspx
  3. https://medium.com/r?url=https%3A%2F%2Findiaai.gov.in%2Farticle%2Freal-time-emotion-recognition-potential-use-cases-and-challenges
  4. https://www.gartner.com/smarterwithgartner/13-surprising-uses-for-emotion-ai-technology