Автор: Приянка Сонаван
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, которая помогает нам распознавать эмоции по выражению лица.
разве это не любопытно, так что давайте начнем ……..
Мы знаем, что есть так много эмоций, которые человек может выразить.
Мы будем обучать модель на размеченных данных, чтобы увидеть результаты на данных в реальном времени.
Давайте посмотрим библиотеки, используемые в этом проекте,
- Opencv — OpenCV предоставляет оптимизированную для работы в режиме реального времени библиотеку, инструменты и оборудование компьютерного зрения. Он также поддерживает выполнение модели для машинного обучения (ML). библиотека содержит более 250 оптимизированных алгоритмов
- Numpy — — NumPy — это библиотека Python, используемая для работы с массивами. Он также имеет функции для работы в области линейной алгебры, преобразования Фурье и матриц. NumPy был создан в 2005 году Трэвисом Олифантом. Это проект с открытым исходным кодом, и вы можете использовать его свободно.
- Pandas — Pandas в основном используется для анализа данных и связанных с ними манипуляций с табличными данными в кадрах данных. Pandas позволяет импортировать данные из различных форматов файлов, таких как значения, разделенные запятыми, JSON, Parquet, таблицы или запросы базы данных SQL и Microsoft Excel.
- Keras — это программная библиотека с открытым исходным кодом, которая предоставляет интерфейс Python для искусственных нейронных сетей.
- Matplotlib — это библиотека построения графиков для языка программирования Python и его расширения для числовой математики Numpy.
Что нужно сделать
- Набор дат
Загрузите набор данных здесь или вы можете создать свой собственный набор данных.
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, лучше оснащены возможностями распознавания эмоций. Теперь они могут менять язык и тон в зависимости от эмоций пользователя.
- Тестирование видеоигр. Видеоигры вызывают у игроков различные эмоции, однако запоминая и выражая точное чувство и то, какой этап вызвал, какую реакцию обычно трудно собрать и точно определить. Для тестирования и улучшения эта обратная связь имеет решающее значение, и, следовательно, обнаружение эмоций по лицу может помочь в анализе эмоций игрока в режиме реального времени во время игры.
- Здравоохранение. Отрасль, которая использует преимущества этой технологии, — это здравоохранение. Программное обеспечение для распознавания на основе искусственного интеллекта помогает решать, когда пациентам нужны лекарства, оценивать их эмоциональную реакцию в клинических испытаниях или помогать врачам в принятии решений. лучше всего сортировать своих пациентов.
- Автомобильная промышленность и анализ эмоций. Автомобильная промышленность также применяет технологию распознавания эмоций, поскольку производители автомобилей во всем мире все больше внимания уделяют тому, чтобы сделать автомобили более персонализированными и безопасными для людей. В стремлении создать умные автомобильные функции производители автомобилей используют искусственный интеллект, чтобы понимать человеческие эмоции. Использование смарт-автомобилей с функцией распознавания эмоций по лицу может предупредить водителя, когда он чувствует сонливость, и, в свою очередь, помочь уменьшить количество дорожно-транспортных происшествий.
Заключение
ИИ может копировать человека с помощью алгоритмов, одним из методов которых является обнаружение эмоций. Технология распознавания эмоций — это тип искусственного интеллекта, связанный с распознаванием лиц, который пытается определить, как человек себя чувствует, основываясь на его выражении лица и телесных сигналах, включая частоту сердечных сокращений и активность мозга. Примеры в реальном времени: Правоохранительные органы, наблюдение и мониторинг. В таких странах, как Китай, технология распознавания эмоций ИИ использовалась во многих секторах, включая полицейские допросы и мониторинг поведения в школе.
Надеюсь, вам понравилось читать.
Продолжай читать!!!!
Ссылка:
- https://towardsdatascience.com/the-ultimate-guide-to-emotion-recognition-from-facial-expressions-using-python-64e58d4324ff
- https://www.asmag.com/showpost/23883.aspx
- https://medium.com/r?url=https%3A%2F%2Findiaai.gov.in%2Farticle%2Freal-time-emotion-recognition-potential-use-cases-and-challenges
- https://www.gartner.com/smarterwithgartner/13-surprising-uses-for-emotion-ai-technology