La visión por computadora está cada vez más integrada en nuestras vidas. Al mismo tiempo, ni siquiera notamos toda esta observación de nosotros. Hoy hablaremos de un sistema que ayuda a analizar las emociones de los visitantes en las conferencias, en el proceso educativo, en los cines y mucho más. Por cierto, mostraremos el código y hablaremos sobre casos prácticos. ¡Mira debajo del gato!
Doy la palabra al autor.¿Siempre quieres conocer en persona a la audiencia en el salón, el aula, la oficina y administrarla? La pregunta no está en absoluto inactiva. Se trata de una audiencia fuera de línea. Para mejorar el rendimiento del negocio, tener información sobre el comportamiento de su cliente, sus reacciones y deseos es una necesidad vital. ¿Cómo recopilar estas estadísticas?
Con una audiencia en línea, todo es más fácil. Si el negocio está en Internet, entonces el marketing se simplifica enormemente y la recopilación de datos en el perfil de sus clientes, y luego también "ponerse al día" por un tiempo ilimitado, es bastante simple. Muchas herramientas: toma y usa, el costo es elevado.
En el modo fuera de línea, se aplican los mismos métodos que hace 50 años: cuestionarios, cuestionarios, observadores externos con un cuaderno, etc. La calidad de estos enfoques es pobre. La fiabilidad es dudosa. Sobre la conveniencia, generalmente puede guardar silencio.
En este artículo queremos hablar sobre la nueva solución de CVizi, que recopila estadísticas interesantes y únicas y ayuda a analizar la información sobre sus clientes / visitantes utilizando la visión por computadora.
Análisis de video y cines
Inicialmente, el producto fue desarrollado como una herramienta para contar espectadores de cine y comparar su número con boletos comprados para el control disciplinario del personal de servicio y la prevención de violaciones. Pero como dicen, el apetito viene con comer.
La tecnología desarrollada permitió ampliar las capacidades de la solución. Se hizo posible determinar las características de edad y género de los visitantes del cine, así como determinar el trasfondo emocional de cada persona durante la sesión.
La información se actualiza rápidamente y el usuario solo necesita ingresar a su cuenta personal y ver estadísticas sobre la sesión de interés o un informe analítico sobre la audiencia.

Por ejemplo, abrimos una sesión con la película "Hielo" y vemos en el realograma de la sala el dominio evidente de las espectadoras (en principio, previsiblemente). Y luego miramos esas emociones que las personas experimentaron (todos pueden ver).


Estos fueron datos para una sesión específica. Ahora veamos los mismos datos en general para todo el período de alquiler de la película (en un cine) y obtengamos una imagen más relevante.

En términos de asistencia, existe un claro dominio de las espectadoras de 25 a 34 años. Los hombres son 2.5-3 veces menos. Es decir La publicidad en un nuevo SUV en un bloque de anuncios no es tan inteligente como poner una nueva máscara de pestañas. Aunque este es un punto discutible. Pero en cualquier caso, después de solo un par de días de alquiler, puede garantizar de forma segura al anunciante el público objetivo, e incluso en términos cuantitativos.
Desde el punto de vista del trasfondo emocional, la imagen será de interés principalmente para distribuidores y distribuidores. ¿A quién le gusta la película y a quién molesta? ¿Debo filmar una secuela? ¿Cree en las revisiones de los bots u obtenga estadísticas confiables? En este caso (la película "Hielo"), la película es bastante brillante en las emociones. La suma de las emociones positivas y negativas es 18.5 de cada 100 loros, el resto es neutral. Este es un muy buen indicador. En comparación, el fondo emocional en otras películas puede no ser tan optimista (en promedio en un hospital para todas las edades y géneros).

Por ejemplo, la frontera del Pacífico, con un número comparable de espectadores durante el mismo período, tiene dos veces menos emociones positivas. Y la película "Hola, Oksana Sokolova" es un descubrimiento para las mujeres "50+".

Todos estos son algunos ejemplos de análisis que pueden usarse en redes de películas. Simplemente no tenían esta información, y pocas personas saben que se puede obtener en absoluto, y aún más para su propio uso.
Para las redes de películas, se abren grandes oportunidades para un análisis más profundo de lo que está sucediendo en la sala de acuerdo con la composición de la audiencia y su reacción a las películas en varias localidades.
Puede resaltar inmediatamente lo siguiente :
- La capacidad de probar cualquier hipótesis de marketing es recibir comentarios en tiempo real y evaluar objetivamente los cambios de audiencia y el efecto de las actividades de marketing.
- La capacidad de proporcionar a los anunciantes información precisa sobre el público que vio el anuncio. Incluso más que eso, es posible que el anunciante garantice la visualización de anuncios por parte de ciertos grupos de audiencia.
- La capacidad de crear ofertas de marketing únicas en el mercado (descuentos) para visitantes de cierta edad y sexo, sin romper el esquema de trabajo existente y sin reducir los indicadores financieros actuales.
Estas y muchas otras oportunidades que han surgido gracias a esta decisión son capaces de convertir el mercado de la red de cine, aumentar los ingresos y mejorar la eficiencia de los cines individuales y de toda la red.
Teniendo en cuenta que la solución es "fácil" (sin servidores, sin transmisión a Internet), utiliza activamente la nube de Microsoft Azure y tiene precios asequibles para el mercado (en forma de suscripciones periódicas al servicio), las redes de cine en Rusia y en el extranjero la están implementando activamente.
Además, la tecnología creada se refleja en otras soluciones en áreas paralelas.
Video analytics y eventos
Eventos, eventos, foros, cumbres, conferencias, simposios ... ¿Qué saben los organizadores sobre la nueva audiencia? X personas se registraron, Y vino, Z llenó los cuestionarios, eso es casi todo.
El cuestionamiento es un dolor separado: "Entonces, conozco bien a este compañero, le daré 5 puntos, aunque el informe fue aburrido". Estamos conduciendo al hecho de que la confiabilidad de los cuestionarios es baja.
Para comprender la efectividad de la conferencia, la retroalimentación de los participantes al organizador y los patrocinadores es simplemente necesaria.
El servicio para analizar la audiencia en los cines se transfiere perfectamente al lugar de la conferencia. CVizi también probó este caso realizando dos experimentos: en el salón Matrex en Skolkovo en una de las conferencias y en el salón Digital October durante la final rusa de la competencia de proyectos de tecnología estudiantil Imagine Cup 2018.
Experimento 1. Sala Matrex en Skolkovo
En Matrex, la cámara no estaba instalada encima de la pantalla, como en una sala de cine, sino en un soporte telescópico detrás de los altavoces. Por lo tanto, la solución resultó ser móvil. Solo se requieren unas pocas horas antes del inicio para instalar una cámara, configurar un planograma de la sala e ingresar un horario de altavoces. Entonces el sistema hace todo por sí mismo.


Ahora el organizador puede recopilar datos sobre la calidad de los informes a través del número de participantes en la sala y sus emociones en cada sesión / informe. Y la próxima vez que pueda planificar un evento basado en hechos objetivos. Hay informes, después de los cuales los participantes simplemente salen de la sala, y el siguiente orador trabaja con aquellos que se quedaron o no tuvieron tiempo de irse. Esto está mal, y tal pronóstico simplemente podría cambiar drásticamente el efecto al reorganizar los informes.
Experimento 2. Final de la Copa Imagine de Rusia
Aquí el objetivo era algo diferente, pero el enfoque es el mismo. Una de las nominaciones de la competencia es el premio del público. Son los espectadores los que están sentados en el pasillo, no los espectadores en línea. Y por primera vez en la Imagine Cup, el premio de elección del público fue otorgado a un equipo elegido por inteligencia artificial. El equipo ganó, a cuya actuación la audiencia reaccionó de manera más positiva mientras los chicos estaban en el escenario. Para esto, ya se utilizaron dos cámaras, cada una de las cuales controlaba continuamente su propio sector de la sala y recopilaba las características emocionales de cada espectador.
En este caso, las cámaras podrían colgarse de un mástil de iluminación sobre el escenario, lo que garantizaba su estabilidad e inmovilidad garantizadas. Y también una vez más estábamos convencidos de que Internet 4G es suficiente para que el servicio funcione. El sistema resultó ser lo más autónomo posible. De los organizadores solo se necesitaban 220 V. Esto es realmente importante porque En los eventos de esta escala, los canales de comunicación son siempre un cuello de botella, y la calidad del servicio depende directamente de la estabilidad del canal de Internet.
Como resultado, el premio de la audiencia se otorgó al equipo que obtuvo el máximo número de emociones positivas por su desempeño: Desarrollo del último día de NNSU im. Lobachevsky.

Analítica de video y aprendizaje
La esfera de la educación en términos de automatización de sus procesos todavía está muy por detrás del resto de las industrias. Por ejemplo, el control de asistencia en forma de un controlador externo con un diario todavía se practica en muchas universidades: una persona entró, contó a los estudiantes en las conferencias, ingresó algún número en el diario (¿qué pregunta?) Y continuó.
La tecnología de análisis de la audiencia mediante métodos de visión por computadora se adapta perfectamente al campo de la educación y abre un gran campo para la experimentación y el análisis. Posibles tareas a resolver:
- Monitoreo de asistencia a clase
- Identificación del estudiante
- Evaluación de la calidad docente
- Identificación de las emociones negativas del alumno y la adopción de medidas preventivas.
- Evaluación de la participación de un alumno o alumno en la escuela.
Planificación adecuada del proceso educativo, incluido el horario, la elección de los profesores: esta es la base para el éxito de la educación. Pero, de hecho, si nos transferimos al campo económico, este es el costo de la educación en el contexto de cada estudiante.
Analítica de video en otras industrias.
La tecnología CVizi no se limita a las soluciones presentadas, hay soluciones para venta minorista y producción.
Por ejemplo, una solución interesante es obtener información sobre la conversión externa e interna de la tienda. Estos dos indicadores le permiten crear un embudo de ventas fuera de línea:
- ¿Cuántas personas caminan cerca de su tienda?
- ¿Cuántas personas entraron?
- Cuántas personas llegaron a la caja registradora.
Aquí hay un ejemplo de una conversión externa para una tienda típica ubicada en un centro comercial en Moscú:

Con estos indicadores, una empresa puede gastar dinero de manera más efectiva en atraer clientes, probar hipótesis de marketing y en la calidad del servicio.
Como funciona
Ahora quiero hablar un poco sobre tecnología. ¿Por qué decimos que la solución es "fácil"? Se trata de arquitectura. Siempre es una carga para cualquier cliente comprar una solución costosa y, además, una flota de equipos en forma de varios servidores, registradores y otras cosas. Y luego configurarlo todo, emparejarlo y acompañarlo. Si se le ofrece al cliente una caja en forma de microcomputadora del tamaño de un teléfono móvil, cualquier persona que esté al menos familiarizada con la técnica puede instalarla en su red local y colgar una cámara de video IP. La analogía con el enrutador Wi-Fi en casa se sugiere a sí misma: la conecté a una toma de corriente, conecté Internet, hice las configuraciones más simples. Eso es todo. No se necesita servicio postventa. Todo se hace muy fácilmente de forma independiente.

Y luego, en la cuenta del usuario, el usuario ve todo el sistema y puede recibir datos en forma de informes y registros de estadísticas y, utilizando la API, llevar estos datos a su sistema de TI corporativo.
Por lo tanto, el usuario no necesita pensar y preocuparse por la infraestructura. Conectar dispositivos informáticos S-Box es muy fácil. También es fácil replicar la solución a otros puntos: colgó las cámaras, conectó el número requerido de S-Box e inmediatamente vio el objeto en el portal en su cuenta.
Debajo del portal y la cuenta personal hay un sistema completo de análisis, almacenamiento de bases de datos, monitoreo y notificación de equipos, implementado en nubes de Azure. El sistema es flexible y todos los recursos informáticos necesarios se asignan automáticamente al usuario. Por lo tanto, todo el dolor de cabeza en el equipo y su soporte se elimina del usuario. Él solo compra un servicio de análisis de video. Muy comodo
¿Qué cámaras se pueden usar para el análisis de video de la audiencia?
Dado que al final necesita que la cara del espectador tenga una calidad aceptable, la cámara debe ser, en primer lugar, con buena óptica y zoom, y, en segundo lugar, controlada - PTZ.
Probamos más de una docena de cámaras de diferentes marcas. No nombraremos modelos de cámara específicos, pero las características se pueden expresar.
Para salas de hasta 150-200 personas, una cámara de 20x con una matriz de 2MP es suficiente. Para salas de más de 200 personas, es mejor usar cámaras de 25x y superiores. Ciertamente son más caros, pero esta es la forma correcta. Aunque, por supuesto, también puede jugar con el tamaño de la matriz, pero debe comprender que en el espectro IR la matriz hará ruido y el zoom óptico siempre será preferible al digital.
Exactitud de reconocimiento
Cuanto más cerca nos ubiquemos en la cara, más claro será. Todo parece estar claro, y el niño entiende. Pero si todo es bueno con el reconocimiento de género, entonces la precisión para determinar la edad puede ser fácilmente de ± 5 años o incluso más, independientemente de la proximidad de la cámara. Y el punto aquí no está en la calidad de los algoritmos y las redes neuronales, sino en el hecho de que cada adulto trata de mirar tanto como ha invertido en su apariencia.
Por lo tanto, la cámara indicará la edad a la que una persona mira o intenta mirar. Es decir edad biológica y edad según la foto: estas pueden ser dos grandes diferencias. Después de todo, cada uno de nosotros puede recordar casos en los que se equivocó en la calificación de edad del interlocutor. Al mismo tiempo, el cerebro humano es una red neuronal muy poderosa y bien entrenada.
Azure y sus servicios
En el corazón de todo esto está el servicio cognitivo API de Microsoft Face. Este es un servicio muy conveniente y se puede acceder a la API desde casi cualquier entorno de desarrollo común. Usamos la mayoría de nuestros servicios usando Python, esto está en el lado de la nube.
La secuencia general se ve así:1) S-Box transfiere imágenes a la nube
2) El servicio en la nube los acumula, los ordena y los alimenta en los servicios cognitivos de detección de rostros. Para cargar imágenes recopiladas a la nube, use Python:
def upload_file(file_path, upload_file_type):
""" Uploading file """
...
if authData == '' or authData == 'undefined':
...
try:
r = requests.post(param_web_service_url_auth, headers={'authentication': base64string})
if r.status_code == 200:
authData = json.loads(r.text)['token']
result = upload_file(file_path, upload_file_type)
return result
logging.error("Upload_file(%s) - UNEXPECTED AUTH RESULT CODE %d", file_path, r.status_code)
except Exception as e:
logging.error('Upload_file(%s) error', file_path)
logging.exception('Upload exception ' + str(e))
return False
try:
base_name = os.path.basename(file_path)
txt_part, file_extension = os.path.splitext(base_name)
files = {'file': open(file_path, 'rb')}
...
if upload_file_type == 1: # for upload full view
...
payload = {'camid': cam_id, 'dt': dt, 'mac': mac}
z = requests.post(uploaddatalinkhall, headers={'authentication': authData}, files=files, data=payload)
if z.status_code == 200:
return True
logging.debug('post result -> %d', int(repr(z.status_code)))
if upload_file_type == 0:
...
payload = {'camid': cam_id, 'dt': dt, 'json_str': json_str, 'mac': mac}
...
z = requests.post(param_web_service_url, headers={'authentication': authData}, files=files, data=payload)
myfile.close()
if z.status_code == 200:
...
if len(debug_path) > 0:
# move
fnn = debug_path + os.sep + json_file
shutil.move(upload_folder + os.sep + json_file, fnn)
else:
# delete
os.remove(upload_folder + os.sep + json_file)
return True
result = "UNEXPECTED STATUS CODE " + repr(z.status_code)
logging.error('upload_file(%s) - ERROR. Res=%s, text: %s',
json_file, result, z.text)
...
except Exception, e:
...
logging.exception('Upload exception: ' + str(e))
return False
3) Python
CF.face.detect , , MS Face detection Cognitive Service API, :
def faceapi_face_detect(url):
…
# API call
image_url = url
need_face_id = False
need_landmarks = False
attributes = 'age,gender,smile,facialHair,headPose,glasses,emotion,hair,makeup,accessory,occlusion,blur,exposure,noise'
watcher = elapser_mod.Elapser()
try:
api_res = CF.face.detect(image_url, need_face_id, need_landmarks, attributes)
# callback(url, need_face_id, need_landmarks, attributes, e.elapsed(), api_res)
text = 'CF.face.detect image_url {}, need_face_id {}, need_landmarks {}, attributes {}, completed in {} s.'. \
format(image_url, need_face_id, need_landmarks, attributes, watcher.elapsed())
printlog(text)
text2 = 'Detected {} faces.'.format(len(api_res))
printlog(text2)
text3 = '{}'.format(api_res)
printlog(text3)
except CF.CognitiveFaceException as exp:
text = '[Error] CF.face.detect image_url {}, need_face_id {}, need_landmarks {}, attributes {}, failed in {} s.'. \
format(image_url, need_face_id, need_landmarks, attributes, watcher.elapsed())
printlog(text)
text2 = 'Code: {}, Message: {}'.format(exp.code, exp.msg)
printlog(text2)
message = exp.msg
…
return api_res, message
. () . . , . . – .
? ! . API. – , , . , () .., «» . . .
.

— CVizi. : 'aosipov @ cvizi.com'.
FB .