Python implementa soporte basado en aprendizaje profundo para reconocimiento facial y clasificación de emociones

Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88358853
Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88358853

1 Introducción al proyecto

1.1 Antecedentes

La visión permite a los humanos percibir y comprender el mundo que los rodea. Aproximadamente el 70% de la actividad en la corteza cerebral humana procesa información relacionada con la visión. La visión por computadora utiliza métodos electrónicos para percibir y comprender imágenes para lograr o incluso superar la inteligencia visual humana.

Desde la creación de la disciplina en 1966 (MIT: The Summer Vision Project) hasta la actualidad, aunque la visión por computadora todavía tiene una gran cantidad de problemas inexplorados y difíciles de resolver en la dirección de la percepción y la inteligencia cognitiva, se ha beneficiado de aplicación madura de algoritmos de aprendizaje profundo (en 2012, el uso de algoritmos de aprendizaje profundo El modelo AlexNet con arquitectura de aprendizaje ganó la competencia ImageNet con una puntuación 10 puntos porcentuales más que el segundo lugar) La tecnología de clasificación de imágenes centrada en la inteligencia perceptiva se ha dado cuenta gradualmente valor comercial en la industria, ayudando a finanzas, seguridad, Internet, teléfonos móviles, medicina, actualizaciones inteligentes en la industria y otros campos.

A partir de la segunda mitad de 2016, las tecnologías relacionadas con la visión por computadora, como el reconocimiento facial y la estructuración de video, han traspasado la línea roja de la industrialización en escenarios de combate reales en el campo de la seguridad, marcando el preludio de una explosión a gran escala en la visión por computadora. mercado de la industria. Se espera que el tamaño del mercado de la industria de visión por computadora de China marque el comienzo de un crecimiento significativo en los próximos tres años.

Con la mejora de la precisión de los algoritmos de clasificación y segmentación, como el reconocimiento facial y el reconocimiento de objetos, además de los campos de la seguridad, la publicidad en vídeo, las finanzas, los teléfonos móviles y el entretenimiento en Internet, que representaron una proporción relativamente alta en 2017, las imágenes médicas, la industria fabricación, venta mayorista y minorista y otros campos actuales. Las áreas de innovación en esta etapa también se desbloquearán gradualmente y se convertirán en un apoyo importante para el rápido desarrollo de la industria en su conjunto.

Actualmente, existen muchas empresas de tecnología de visión por computadora en el mercado, como se muestra en la siguiente figura:

  • En general, la tecnología de SenseTime tiene la cobertura más amplia y Yitu la menor, pero las tecnologías centrales: reconocimiento facial, reconocimiento de texto, reconocimiento de imágenes, reconocimiento de vehículos, monitoreo de peatones y otras tecnologías son compartidas por las tres empresas.

  • Desde una perspectiva desglosada, solo SenseTime tiene tecnología de edición de imágenes y videos y un marco de aprendizaje profundo; la tecnología facial de Megvii es la más completa entre las tres compañías, tiene tecnología de reconocimiento del cuerpo humano y puede reconocer gestos; viceversa; TuZe tiene seguimiento de objetivos. tecnología

  • SenseTime, Megvii y Yitu se centran en los campos financiero y de seguridad; en el campo financiero, Megvii y SenseTime tienen un diseño más profundo y más amplio; mientras que Yitu y Megvii trabajan estrechamente con la seguridad pública en el campo de la seguridad, y Megvii también tiene una profunda participación en la seguridad inmobiliaria.

  • SenseTime trabaja en estrecha colaboración con fabricantes y operadores de teléfonos móviles. En el futuro, SenseTime utilizará teléfonos inteligentes para popularizar su tecnología de reconocimiento facial, convertirse en el mayor proveedor de tecnología, construir la reputación de los usuarios y establecer ventajas de marca para abrir vacantes en el lado C en el futuro.

En resumen, todos los gigantes de la visión por computadora se centran en la cadena comercial de las grandes empresas. Para las pequeñas y medianas empresas, el reconocimiento facial y la clasificación de emociones de los turistas comunes son insuficientes.

1.2 Importancia del proyecto

Solo porque los gigantes no han hecho suficientes esfuerzos en el negocio de clasificación de emociones para usuarios comunes y pequeñas y medianas empresas, decidí comenzar el proyecto de comunidad de emociones aquí.

Por un lado, el tráfico de videovigilancia de las pequeñas y medianas empresas y los centros comerciales es enorme, y el procesamiento manual es muy ineficiente y consume mano de obra, materiales y recursos financieros. Por otro lado, los enormes vídeos de los usuarios comunes pueden ser clasificado y procesado, estimulando el deseo de los usuarios comunes de compartir, y puede construir Una comunidad desarrolla la diversión de compartir de los usuarios comunes y tiene la función de comentar y compartir en forma de comunidad.

En resumen, la importancia de nuestro proyecto se puede explicar desde las siguientes perspectivas:

  • Desde las pequeñas y medianas empresas, los centros comerciales y los lugares públicos, existe una necesidad urgente de reconocimiento facial y clasificación de emociones;

  • Para algunos desarrolladores, existe una gran demanda de interfaces API de clasificación de emociones adecuadas y económicas.

  • Para los usuarios comunes, el reconocimiento de emociones y el intercambio de videos (antes y después del reconocimiento) son muy divertidos y existen muchos escenarios de implementación.

1.3 Objetivos del proyecto

Con respecto al proyecto "Comunidad Emocional", esperamos convertirlo eventualmente en una plataforma en línea que pueda estar abierta para su uso en diversas formas para brindar servicios, incluidas, entre otras, aplicaciones para dispositivos móviles, aplicaciones de software para computadoras personales, plataformas de sitios web y cuentas públicas. , subprogramas de WeChat. Para brindar servicios de manera conveniente y rápida, las formas de uso diversas y completas también son un punto destacado de este producto.

Eventualmente se convertirá en una aplicación de marco B/S y una aplicación de reconocimiento de emociones faciales de subprograma WeChat, las cuales tendrán funciones de foro comunitario. Al mismo tiempo, el modelo de reconocimiento y clasificación se implementa en el servidor y se puede proporcionar a las API de pequeñas y medianas empresas.

Según el plan inicial, los efectos que esperamos lograr (servicios disponibles) incluyen principalmente:

  • Para pequeñas y medianas empresas, centros comerciales y lugares públicos, proporcionamos soporte técnico y interfaces API modelo CNN.

  • Para algunos desarrolladores, proporcionamos una interfaz API para procesar videos, imágenes y devolver los resultados procesados ​​en formato json.

  • Para los usuarios comunes, proporcionamos el lado web y el lado del subprograma WeChat de esta aplicación. Los usuarios pueden navegar por la aplicación a través de teléfonos móviles o PC, cargar videos, devolver resultados de reconocimiento de emociones y compartirlos en la comunidad BBS de la aplicación, y también pueden publicar comentarios y publicaciones.

2 Descripción de los requisitos funcionales

2.1 Roles del sistema

  • Administrador: revisión de información de video, revisión de calificación de usuario, revisión de datos del foro

  • Usuario: Registro e inicio de sesión de usuario subir video foro foro para compartir comunidad foro de comentarios de la comunidad foro de publicación de la comunidad sección de administración de la comunidad modificar información personal

2.2 Obtención y mantenimiento de información del usuario

2.2.1 Descripción de la función

Durante el registro inicial, el sistema requiere que los usuarios completen información relevante y la registren en el sistema.

2.2.2 Secuencia de estímulo/respuesta

  • Estímulo: Registro de usuario o primer inicio de sesión

    Respuesta: Proporcionar requisitos de llenado de información.

  • Estímulo: el usuario elige la respuesta

    Respuesta: Registre la edad del usuario y otra información y proporcione una lista de selección de las secciones correspondientes del foro.

2.3 Análisis de vídeo

2.3.1 Descripción de la función

Los usuarios pueden subir videos y obtener resultados de comentarios.

2.3.2 Secuencia de estímulo/respuesta

  • Estímulo: El usuario elige subir la función de vídeo

    Respuesta: Ingrese a la página de carga de video

  • Estimulación: El usuario presiona el botón de subir para subir el vídeo.

    Respuesta: Alertar al usuario y generar resultados.

  • Estímulo: El usuario presiona otro botón.

    Respuesta: Ingrese a otras páginas

2.4 Foro comunitario

2.4.1 Descripción de la función

Los usuarios pueden navegar por la comunidad del foro o compartir videos, publicar y comentar.

2.4.2 Secuencia de estímulo/respuesta

  • Estímulo: el usuario ingresa al foro de la comunidad

    Respuesta: Enumere las secciones y publicaciones relacionadas en un orden determinado

  • Estímulo: búsqueda de palabras clave del usuario

    Respuesta: proporcione resultados de búsqueda que contengan la palabra clave en la sección o publicación.

  • Estímulo: los usuarios escriben publicaciones o comentarios.

    Respuesta: El sistema le pregunta si desea enviar, actualizar la página y los datos relacionados.

2.5 Diagrama de casos de uso

2.6 diagrama ER

2.7 Diagrama de flujo del sistema

2.8 Diagrama de interacción del sistema

2.9 Diagrama de clases conceptuales y diagrama de flujo de datos

2.10 Diagrama de flujo de datos

3 Diseño general

3.1 Objetivos generales

3.1.1 Necesidades cubiertas

Las necesidades principales satisfechas son: los usuarios pueden cargar videos a través de la plataforma para obtener resultados de análisis del sistema y, al mismo tiempo, pueden compartir comentarios y publicar necesidades en la comunidad del foro.

3.1.2 Base técnica y entorno operativo

  • Sistema operativo web: Win95 y superior

  • Subprograma de WeChat: wechat 6.6.7 y superior

  • Base de datos: base de datos MySQL

  • Marco web: Django

  • Lenguaje de escritura del sistema: Python

  • Plataforma de aprendizaje profundo: Keras, tensorflow

3.2 Estructura general del sistema

Para los usuarios, existen las siguientes funciones del sistema: incluido el módulo de gestión de usuarios, el módulo de análisis de emociones de vídeo del usuario y el módulo de comunidad del foro de usuarios; para los administradores, participan principalmente en la gestión y el mantenimiento del sistema y revisan la información relevante. Según estos criterios, todo el sistema se divide en varios módulos como se muestra en la siguiente figura.

3.3 Descripción de cada módulo funcional

3.3.1 Módulo de gestión de usuarios

Después de que el usuario se registra e inicia sesión, el sistema registrará información relevante y la información personal se puede modificar al mismo tiempo. Cada vez que se utilizan el archivo de video y la comunidad, se actualizará la información de administración de datos del archivo del usuario en el módulo de administración del usuario. , y también se conservarán los permisos de eliminación por parte del administrador de la información del usuario, si el usuario ha violado las leyes y regulaciones.

3.3.2 Módulo de análisis de emociones de vídeo del usuario

  • Carga de video del usuario: después de que el usuario hace clic en el botón cargar video, el video seleccionado se abre desde la carpeta y se carga en el sistema. Al mismo tiempo, se verificará el formato, el tamaño, la resolución y la duración del video. Para los videos que no no cumple con el formato, aparecerá información relevante.

  • Análisis del modelo de algoritmo: llame al modelo CNN entrenado, corte el video cargado por el usuario en una imagen cuadro por cuadro, luego use el modelo para recortar primero la cara, luego use el modelo para clasificar las expresiones faciales y luego divida los resultados según el número de fotogramas Imprímalo como un diagrama de secuencia, escríbalo en código js e incrústelo en la página html.

  • Comentarios sobre los resultados del usuario: envíe el html con el diagrama de secuencia de resultados incrustado al usuario, y el usuario obtendrá los resultados del análisis de video.

3.3.3 Módulo de comunidad de usuarios

  • Gestión de secciones: los usuarios pueden configurar algunas secciones, enviar informes o eliminarlos, completar el formulario de solicitud del sistema y se publicará en el sistema después de ser revisado por el backend.

  • Publicación de publicaciones: los usuarios pueden solicitar publicar publicaciones en la sección correspondiente, completar el formulario de acuerdo con el formato del sistema y enviarlo para revisión por parte del administrador.

  • Publicaciones y comentarios: los usuarios pueden seleccionar "Responder" debajo de las publicaciones de otras personas para seguirlas o comentarlas. Hay un botón de reenvío en la parte inferior de la publicación para permitir el reenvío.

4 Diseño de datos

tabla de usuarios

mesa de vídeo

Tabla de información de publicaciones

Tabla de información de sección

5 algoritmos

Principalmente algoritmo de aprendizaje profundo de CNN. Consulte el código fuente para conocer otros algoritmos.

El modelo básico de este proyecto está diseñado con referencia al marco Xception del proyecto de código abierto. Proponemos un marco general de construcción de redes neuronales convolucionales para diseñar CNN en tiempo real. Validamos nuestro modelo creando un sistema de visión en tiempo real que utiliza nuestra arquitectura CNN propuesta para realizar simultáneamente tareas como detección de rostros, clasificación de género y clasificación de emociones en un solo paso híbrido. Después de presentar los detalles de la configuración del programa de formación, pasamos a la evaluación del grupo de referencia estándar. Reportamos una precisión del 96 % en el conjunto de datos de género de IMDB y del 66 % en el conjunto de datos de emociones de FER2013. Además de esto, también presentamos la tecnología de visualización de retropropagación que recientemente se habilitó en tiempo real. La retropropagación guiada revela la dinámica de los cambios de peso y evalúa las características aprendidas. Creemos que para reducir la brecha entre el rendimiento lento y las arquitecturas en tiempo real, es necesaria una implementación cuidadosa de las arquitecturas CNN modernas, el uso de métodos de regularización actuales y la visualización de características previamente ocultas. Nuestro sistema ha sido validado mediante la implementación de un robot Care-O-bot 3 utilizado durante la competición RoboCup@Home. Todo nuestro código, demostraciones y arquitecturas previamente entrenadas se publican bajo una licencia de código abierto en nuestro repositorio público.

Proponemos dos modelos, que evaluamos en función de la precisión de sus pruebas y la cantidad de parámetros. La idea de diseño de ambos modelos es crear la mejor precisión en la proporción del número de parámetros. Reducir el número de parámetros nos ayuda a superar dos problemas importantes:

  • En primer lugar, el uso de CNN pequeñas puede aliviar nuestro lento rendimiento en sistemas con restricciones de hardware, como las plataformas robóticas.

  • En segundo lugar, la reducción de parámetros proporciona una mejor generalización bajo la arquitectura de la navaja de Occam.

Nuestro primer modelo se basa en la eliminación de capas completamente conectadas. La segunda arquitectura combina la eliminación de capas completamente conectadas con convolución separable en profundidad y módulos residuales. Ambas arquitecturas se entrenan utilizando el optimizador ADAM.

Siguiendo patrones arquitectónicos anteriores, nuestra arquitectura inicial utiliza una agrupación promedio global para eliminar por completo cualquier capa completamente conectada. Esto se hace teniendo la misma cantidad de mapas de características que la cantidad de clases en la última capa convolucional y aplicando una función de activación softmax a cada mapa de características reducido.

Nuestra arquitectura propuesta inicialmente es una red neuronal estándar totalmente convolucional, que consta de 9 capas convolucionales de ReLU, normalización por lotes y agrupación promedio global. El modelo contiene aproximadamente 600.000 parámetros. Se entrenó en el conjunto de datos de género de IMDB, que contiene 460.723 imágenes RGB, donde cada imagen pertenece a la clase "mujer" u "hombre", y logró una precisión del 96% en este conjunto de datos. También validamos el modelo en el conjunto de datos FER-2013. El conjunto de datos contiene 35.887 imágenes en escala de grises, donde cada imagen pertenece a una de las siguientes categorías {"enojado", "disgustado", "miedo", "feliz", "triste", "sorprendido", "neutral"}.

Nuestro modelo inicial logró una precisión del 66 % en este conjunto de datos, al que nos referimos como una "CNN secuencial completa".

Nuestro segundo modelo está inspirado en la arquitectura Xception. Esta arquitectura combina el uso de módulos residuales y convoluciones separables de inteligencia profunda. El módulo restante modifica el mapeo deseado entre las dos capas posteriores para que las características aprendidas se conviertan en la diferencia entre el mapa de características original y la característica deseada. Por lo tanto, para resolver el problema de aprendizaje más fácil F(x), las características deseadas H(x) se modifican de manera que:

H(x) = F(x) + x

El modelo basado en Xeception que diseñamos es el siguiente:

El mapa de calor de los resultados de nuestra predicción se muestra a continuación:

6 Diseño de interacción persona-computadora

6.1 interfaz de inicio de sesión web

El usuario primero ingresa a la interfaz de inicio de sesión. Si el usuario no se ha registrado antes, saltará a la interfaz de registro. Si el usuario normal se ha registrado, saltará a la interfaz principal. El administrador saltará a la interfaz de administración en segundo plano.

6.2 interfaz de registro web

La interfaz de registro verificará la entrada y mostrará una ventana emergente.

6.3 Interfaz principal

La interfaz principal tiene múltiples interfaces de salto, que pueden saltar a cualquier ubicación. Al mismo tiempo, la interfaz principal mostrará publicaciones recientes y publicaciones populares. Haga clic en el enlace de la publicación para saltar al texto html de la publicación. Al mismo tiempo, hay un motor de búsqueda en la página, que puede admitir la búsqueda de publicaciones y palabras clave relacionadas en todo el sitio.

6.4 Interfaz de publicaciones populares

Muestra las publicaciones con más Me gusta. Haga clic en el archivo Léame para ir a la página específica.

6.5 Interfaz de publicación

6.6 Interfaz de clasificación de emociones

El primero es el botón cargar archivo. Después de seleccionar el archivo a cargar, haga clic en Cargar para cargar el archivo al servidor. Luego, el servidor ejecuta un modelo de algoritmo para analizar la clasificación de rostros y emociones de cada cuadro de imagen y sintetiza un nuevo video. archivo, que se muestra en esta página. Al mismo tiempo, admite mensajes emergentes y el mensaje no se puede pasar vacío.

Mostrar resultados del análisis

6.7 Interfaz de preguntas y respuestas

6.8 Interfaz de contacto

6.9 Interfaz de base de datos

7 Resumen

Este proyecto lo completé yo mismo. La idea de elegir el tema surgió de un artículo de CNN que leí durante las vacaciones de invierno, por lo que quería crear un sistema de clasificación de emociones equipado con comunidades de foros este semestre.

En general, seguí los pasos del libro de ingeniería de software y anoté cada paso y cada documento paso a paso, escribí varios PPT y siete u ocho documentos, aunque fue muy difícil, también obtuve una buena comprensión de los conocimientos de ingeniería de software. Más profundo.

Primero, permítanme hablar sobre mi comprensión de la ingeniería de software. En mi opinión, la ingeniería de software es cómo utilizar la tecnología de gestión de ingeniería para crear software. ¿Por qué nació la ingeniería de software? A medida que aumenta la cantidad de código, la capacidad de las personas para controlar el código se vuelve cada vez más débil, y la lógica, el progreso y el costo del código se vuelven cada vez más difíciles de controlar, ¡lo que resulta en una crisis de software! Para resolver la crisis del software, surgió la ingeniería de software.

En cuanto al código, lo que aprendí en ingeniería de software está en los detalles:

  • Primero, debe cumplir con las especificaciones del código, la ventaja es que es fácil de modificar y mantener. Deja que otros vean tu código claramente

  • En segundo lugar, la separación de datos y lógica empresarial. Necesitamos modularizar el código para mantenerlo y reutilizarlo mejor.

  • En tercer lugar, saber diseñar la interfaz de forma razonable, no debe ser ni exhaustiva ni demasiado general, sólo lo suficiente para que resulte útil. Por ejemplo: el diseño de la interfaz de la lista vinculada es diferente del diseño de la interfaz del menú. Las listas vinculadas requieren interfaces para agregar, eliminar y modificar, mientras que las interfaces de menú no necesitan ser tan detalladas.

  • Cuarto, requisitos no funcionales, como la seguridad. De lo que hay que hablar aquí en particular es de la seguridad de los subprocesos, de cómo utilizar el mecanismo de bloqueo para construir y escribir código seguro.

  • Quinto, ideas de diseño. Aquí debemos aplicar algunos patrones de diseño resumidos por los predecesores, como el modo de fábrica, el modo de observador, el modo de adaptador, etc. La aplicación de estos patrones puede aumentar en gran medida la escalabilidad del código, tolerar mejor los cambios y reutilizar mejor el código. Por supuesto, para ampliar sus horizontes, el profesor también mencionó la programación utilizando métodos funcionales y formales.

Entonces, en general, creo que es muy interesante y desafiante completar un proyecto de ingeniería de software de forma independiente a nivel universitario y debería ser de gran ayuda para futuros empleos.

Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88358853
Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88358853

Supongo que te gusta

Origin blog.csdn.net/newlw/article/details/133064936
Recomendado
Clasificación