La vision par ordinateur est de plus en plus intégrée dans nos vies. En même temps, nous ne remarquons même pas toute cette observation de nous. Aujourd'hui, nous allons parler d'un système qui permet d'analyser les émotions des visiteurs lors de conférences, dans le processus éducatif, dans les cinémas, et bien plus encore. Soit dit en passant, nous allons montrer le code et parler de cas pratiques. Regardez sous le chat!
Je donne la parole à l'auteur.Voulez-vous toujours connaître en personne le public dans le hall, la salle de classe, le bureau et le gérer? La question n'est pas du tout vide. Il s'agit d'un public hors ligne. Pour améliorer les performances de votre entreprise, disposer d'informations sur le comportement de votre client, ses réactions et ses désirs est une nécessité vitale. Comment collecter ces statistiques?
Avec une audience en ligne, tout est plus facile. Si l'entreprise est située sur Internet, le marketing est grandement simplifié et la collecte de données sur le profil de vos clients, puis la «rattrapage» pour une durée illimitée - est assez simple. Beaucoup d'outils - prenez et utilisez, le coût augmente.
En mode hors ligne, les mêmes méthodes s'appliquent qu'il y a 50 ans: questionnaires, questionnaires, observateurs externes avec un cahier, etc. La qualité de ces approches est médiocre. La fiabilité est douteuse. À propos de la commodité, vous pouvez généralement rester silencieux.
Dans cet article, nous voulons parler de la nouvelle solution de CVizi, qui recueille des statistiques intéressantes et uniques et aide à analyser les informations sur vos clients / visiteurs à l'aide de la vision par ordinateur.
Analyses vidéo et cinémas
Initialement, le produit a été développé comme un outil pour compter les spectateurs de cinéma et comparer leur nombre avec les billets achetés pour le contrôle disciplinaire du personnel de service et la prévention des violations. Mais comme on dit, l'appétit vient avec l'alimentation.
La technologie développée a permis d'étendre les capacités de la solution. Il est devenu possible de déterminer l'âge et le sexe des visiteurs de cinéma, ainsi que de déterminer le contexte émotionnel de chaque personne pendant la session.
Les informations sont mises à jour rapidement et l'utilisateur n'a qu'à accéder à votre compte personnel et afficher des statistiques sur la session d'intérêt ou un rapport analytique sur le public.

Par exemple, nous ouvrons une session avec le film «Ice» et nous voyons sur le réalisme de la salle la dominance évidente des spectatrices (en principe, de façon prévisible). Et puis nous regardons ces émotions que les gens ont vécues (tout le monde peut voir).


Il s'agissait de données pour une session spécifique. Examinons maintenant les mêmes données en général pour toute la période de location du film (dans un cinéma) et obtenons une image plus pertinente.

En termes de fréquentation, il y a une nette prédominance des téléspectatrices âgées de 25 à 34 ans. Les hommes sont 2,5 à 3 fois moins. C'est-à-dire La publicité dans un nouveau SUV dans un bloc d'annonces n'est pas aussi intelligente que de mettre un nouveau mascara. Bien que ce soit un point discutable. Mais en tout cas, après seulement quelques jours de location, vous pouvez garantir en toute sécurité à l'annonceur le public cible, et même en termes quantitatifs.
Du point de vue de l'arrière-plan émotionnel, l'image intéressera principalement les distributeurs et les distributeurs. A qui le film plaît-il, et qui agace? Dois-je tourner une suite? Vous croyez aux critiques de robots ou obtenez des statistiques fiables? Dans ce cas (le film "Ice"), le film est assez brillant d'émotions. La somme des émotions positives et négatives est de 18,5 perroquets sur 100. Le reste est neutre. C'est un assez bon indicateur. À titre de comparaison, le fond émotionnel dans d'autres films peut ne pas être aussi rose (en moyenne dans un hôpital pour tous les âges et tous les genres).

Par exemple, la Pacific Frontier, avec un nombre comparable de téléspectateurs sur la même période, a 2 fois moins d'émotions positives. Et le film «Bonjour, Oksana Sokolova» est une telle découverte pour les femmes «50+».

Tous ces exemples sont des analyses qui peuvent être utilisées dans les réseaux de films. Ils ne disposaient tout simplement pas de ces informations, et peu de gens savent qu'elles peuvent être obtenues du tout, et encore plus pour leur propre usage.
Pour les réseaux cinématographiques, de grandes opportunités s'ouvrent pour une analyse plus approfondie de ce qui se passe dans la salle en fonction de la composition du public et de sa réaction aux films dans différentes localités.
Vous pouvez immédiatement mettre en évidence les éléments suivants :
- La capacité de tester toute hypothèse marketing est de recevoir des commentaires en temps réel et d'évaluer objectivement les changements d'audience et l'effet des activités marketing.
- La possibilité de fournir aux annonceurs des informations précises sur l'audience qui a vu l'annonce. Plus encore, il est possible pour l'annonceur de garantir la visualisation des publicités par certains groupes d'audience.
- La possibilité de créer des offres marketing uniques sur le marché (remises) pour les visiteurs d'un certain âge et sexe, sans rompre le schéma de travail existant et sans réduire les indicateurs financiers actuels.
Ces opportunités et bien d'autres qui se sont présentées grâce à cette décision sont en mesure de transformer le marché des réseaux de cinéma, d'augmenter les revenus et d'améliorer l'efficacité des cinémas individuels et de l'ensemble du réseau.
Considérant que la solution est «facile» (pas de serveurs, pas de streaming sur Internet), utilise activement le cloud Microsoft Azure et propose des prix abordables pour le marché (sous forme d'abonnements périodiques au service), les réseaux de cinéma en Russie et à l'étranger la mettent activement en œuvre.
De plus, la technologie créée se reflète dans d'autres solutions dans des domaines parallèles.
Analyses vidéo et événements
Événements, événements, forums, sommets, conférences, symposiums ... Que savent les organisateurs du nouveau public? X personnes se sont inscrites, Y est venu, Z a rempli les questionnaires, c'est presque tout.
Le questionnement est une douleur distincte: "Donc, je connais bien ce camarade, je lui donnerai 5 points, bien que le rapport soit ennuyeux." Nous aboutissons au fait que la fiabilité des questionnaires est faible.
Pour comprendre l'efficacité de la conférence, les commentaires des participants à l'organisateur et aux sponsors sont tout simplement nécessaires.
Le service d'analyse de l'audience dans les cinémas se transfère parfaitement au lieu de la conférence. CVizi a également testé ce cas en réalisant deux expériences: dans la salle Matrex à Skolkovo lors d'une des conférences et dans la salle Digital October lors de la finale russe du concours de projets technologiques étudiants Imagine Cup 2018.
Expérience 1. Salle Matrex à Skolkovo
À Matrex, la caméra n'était pas installée au-dessus de l'écran, comme dans une salle de cinéma, mais sur un support télescopique derrière les haut-parleurs. Ainsi, la solution s'est avérée mobile. Il suffit de quelques heures avant le démarrage pour installer une caméra, mettre en place un planogramme de la salle et saisir un calendrier des intervenants. Ensuite, le système fait tout lui-même.


L'organisateur peut désormais collecter des données sur la qualité des rapports à travers le nombre de participants dans la salle et leurs émotions à chaque session / rapport. Et la prochaine fois, vous pouvez planifier un événement basé sur des faits objectifs. Il y a des rapports, après quoi les participants quittent simplement la salle, et l'orateur suivant travaille avec ceux qui sont restés ou n'ont pas eu le temps de partir. C'est faux, et une telle prévision pourrait simplement changer radicalement l'effet en réorganisant les rapports.
Expérience 2. Finale russe Imagine Cup
Ici, l'objectif était quelque peu différent, mais l'approche est la même. L'une des nominations du concours est le prix du public. Ce sont ces téléspectateurs qui sont assis dans la salle, pas les téléspectateurs en ligne. Et pour la première fois à l'Imagine Cup, le prix du public a été attribué à une équipe choisie par l'intelligence artificielle. L'équipe a gagné, dont le public a réagi le plus positivement pendant que les gars étaient sur scène. Pour cela, deux caméras ont déjà été utilisées, chacune contrôlant en continu son propre secteur de la salle et recueillant les caractéristiques émotionnelles de chaque spectateur.
Dans ce cas, les caméras pouvaient être accrochées sur un mât d'éclairage au-dessus de la scène, ce qui garantissait leur stabilité et leur immobilité garanties. Et nous étions également une fois de plus convaincus que l'Internet 4G est suffisant pour que le service fonctionne. Le système s'est avéré aussi autonome que possible. Des organisateurs, 220 V seulement étaient nécessaires, ce qui est très important, car lors d'événements de cette ampleur, les canaux de communication sont toujours un goulot d'étranglement et la qualité du service dépend directement de la stabilité du canal Internet.
En conséquence, le prix du public a été décerné à l'équipe qui a marqué le nombre maximum d'émotions positives pour leur performance - Last Day Development de NNSU im. Lobachevsky.

Analyse vidéo et apprentissage
Le domaine de l'éducation en termes d'automatisation de ses processus est encore très en retard sur le reste des industries. Par exemple, le contrôle de la fréquentation sous la forme d'un contrôleur externe avec un journal est toujours pratiqué dans de nombreuses universités: une personne est entrée, a compté les étudiants lors des conférences, a entré un certain nombre dans le journal (quelle question?) Et a continué.
La technologie d'analyse du public par des méthodes de vision par ordinateur s'adapte parfaitement au domaine de l'éducation et ouvre un large champ d'expérimentation et d'analyse. Tâches possibles à résoudre:
- Suivi des présences aux cours
- Identification de l'élève
- Évaluation de la qualité de l'enseignement
- Identification des émotions négatives de l'élève et adoption de mesures préventives.
- Évaluation de l'implication d'un élève ou d'un élève à l'école.
Une bonne planification du processus éducatif, y compris le calendrier, le choix des enseignants - c'est la base du succès de l'éducation. Mais en fait, si on passe au domaine économique, c'est le coût de l'éducation dans le contexte de chaque élève.
Analyse vidéo dans d'autres secteurs
La technologie CVizi ne se limite pas aux solutions présentées, il existe des solutions pour la vente au détail et la production.
Par exemple, une solution intéressante consiste à obtenir des informations sur la conversion externe et interne du magasin. Ces deux indicateurs vous permettent de créer un entonnoir de vente hors ligne:
- Combien de personnes marchent près de votre magasin;
- Combien de personnes y sont entrées;
- Combien de personnes sont arrivées à la caisse enregistreuse.
Voici un exemple de conversion externe pour un magasin typique situé dans un centre commercial à Moscou:

Grâce à ces indicateurs, une entreprise peut dépenser plus efficacement de l'argent pour attirer des clients, tester des hypothèses marketing et améliorer la qualité de service.
Comment ça marche?
Maintenant, je veux parler un peu de la technologie. Pourquoi disons-nous que la solution est «facile»? Tout tourne autour de l'architecture. C'est toujours un fardeau pour tout client d'acheter une solution coûteuse, et en plus, une flotte d'équipements sous la forme de divers serveurs, bureaux d'enregistrement et autres. Et puis pour tout mettre en place, pour se jumeler et accompagner. Si le client se voit proposer un boîtier sous la forme d'un micro-ordinateur de la taille d'un téléphone mobile, toute personne au moins un peu familiarisée avec la technique peut l'installer sur son réseau local et accrocher une caméra vidéo IP. L'analogie avec le routeur Wi-Fi à la maison se suggère - je l'ai branché sur une prise de courant, connecté à Internet, effectué les réglages les plus simples. C’est tout. Aucun service après-vente n'est nécessaire. Tout se fait très facilement indépendamment.

Ensuite, dans le compte personnel, l'utilisateur voit l'ensemble du système et peut recevoir des données sous la forme de rapports et de journaux de statistiques et, à l'aide de l'API, intégrer ces données dans son système informatique d'entreprise.
Ainsi, l'utilisateur n'a pas besoin de penser et de se soucier de l'infrastructure. La connexion d'appareils informatiques S-Box est très simple. Il est également facile de reproduire la solution sur d'autres points: raccrochez les caméras, connectez le nombre requis de S-Box et voyez immédiatement l'objet sur le portail dans votre compte.
Sous le portail et le compte personnel se trouve un système complet d'analyse, de stockage de base de données, de surveillance et de notification des équipements, déployé dans les nuages Azure. Le système est flexible et toutes les ressources informatiques nécessaires sont automatiquement allouées à l'utilisateur. Par conséquent, tout le mal de tête sur l'équipement et son support est supprimé de l'utilisateur. Il achète uniquement un service d'analyse vidéo. Très confortable.
Quelles caméras peuvent être utilisées pour l'analyse vidéo du public?
Étant donné qu'en fin de compte, vous devez obtenir le visage du spectateur dans une qualité acceptable, la caméra doit être, d'une part, avec une bonne optique et un bon zoom, et, d'autre part, contrôlée - PTZ.
Nous avons testé plus d'une douzaine de caméras de différentes marques. Nous ne nommerons pas de modèles de caméras spécifiques, mais les caractéristiques peuvent être exprimées.
Pour les salles jusqu'à 150-200 personnes, une caméra 20x avec une matrice 2MP suffit. Pour les salles de plus de 200 personnes, il est préférable d'utiliser des caméras 25x et plus. Ils sont certainement plus chers, mais c'est la bonne façon. Bien sûr, vous pouvez également jouer avec la taille de la matrice, mais vous devez comprendre que dans le spectre IR, la matrice fera du bruit et le zoom optique sera toujours préférable au numérique.
Précision de reconnaissance
Plus nous nous positionnerons sur le visage, plus ce sera clair. Tout semble clair et l'enfant comprend. Mais si tout va bien avec la reconnaissance du sexe, la précision de la détermination de l'âge peut facilement être de ± 5 ans, voire plus, quelle que soit la proximité de la caméra. Et le point ici n'est pas dans la qualité des algorithmes et des réseaux de neurones, mais dans le fait que chaque adulte essaie de regarder autant qu'il a investi dans son apparence.
Par conséquent, l'appareil photo donnera l'âge auquel une personne regarde ou essaie de regarder. C'est-à-dire âge biologique et âge selon la photo - cela peut être deux grandes différences. Après tout, chacun de nous peut se souvenir des cas où il s'est trompé dans la classification par âge de l'interlocuteur. Dans le même temps, le cerveau humain est un réseau neuronal très puissant et bien formé.
Azure et ses services
Au cœur de tout cela se trouve le service cognitif Microsoft Face API. Il s'agit d'un service très pratique et l'API est accessible à partir de presque tous les environnements de développement courants. Nous utilisons la plupart de nos services en utilisant Python - c'est du côté cloud.
La séquence générale ressemble à ceci:1) La S-Box transfère les images vers le cloud
2) Le service cloud les accumule, les trie et les nourrit dans Face Detection Cognitive Services. Pour télécharger des images collectées dans le cloud, utilisez 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 .