Como somos analisados ​​nos cinemas ... e não apenas

A visão computacional está cada vez mais integrada em nossas vidas. Ao mesmo tempo, nem percebemos toda essa observação sobre nós. Hoje falaremos sobre um sistema que ajuda a analisar as emoções dos visitantes em conferências, no processo educacional, nos cinemas e muito mais. A propósito, mostraremos o código e falaremos sobre casos práticos. Olhe embaixo do gato!



Dou a palavra ao autor.

Você sempre quer conhecer pessoalmente o público na sala, sala de aula, escritório e gerenciá-lo? A questão não é de todo ociosa. É sobre uma audiência offline. Para melhorar o desempenho dos negócios, ter informações sobre o comportamento do cliente, suas reações e desejos é uma necessidade vital. Como coletar essas estatísticas?

Com uma audiência on-line, tudo é mais fácil. Se o negócio está na Internet, o marketing é bastante simplificado e a coleta de dados no perfil de seus clientes e, em seguida, também é possível "acompanhá-lo" por um tempo ilimitado. Muitas ferramentas - pegue e use, o custo está aumentando.

No modo offline, os mesmos métodos se aplicam como há 50 anos: questionários, questionários, observadores externos com um notebook, etc. A qualidade dessas abordagens é ruim. A confiabilidade é duvidosa. Sobre a conveniência, você geralmente pode ficar em silêncio.

Neste artigo, queremos falar sobre a nova solução do CVizi, que coleta estatísticas interessantes e exclusivas e ajuda a analisar informações sobre seus clientes / visitantes usando a visão computacional.

Análise de vídeo e cinemas


Inicialmente, o produto foi desenvolvido como uma ferramenta para contar os espectadores de cinema e comparar seu número com os ingressos comprados para controle disciplinar do pessoal de serviço e prevenção de violações. Mas como se costuma dizer, o apetite vem com a comida.

A tecnologia desenvolvida permitiu expandir os recursos da solução. Tornou-se possível determinar as características de idade e sexo dos visitantes do cinema, bem como determinar o contexto emocional de cada pessoa durante a sessão.

As informações são atualizadas prontamente e o usuário precisa apenas acessar sua conta pessoal e visualizar estatísticas da sessão de seu interesse ou um relatório analítico sobre o público.



Por exemplo, abrimos uma sessão com o filme “Ice” e vemos no realograma do salão o domínio óbvio das espectadoras (em princípio, previsivelmente). E então olhamos para as emoções que as pessoas experimentaram (todos podem ver).





Foram dados para uma sessão específica. Agora, vamos analisar os mesmos dados em geral para todo o período de locação do filme (em um cinema) e obter uma imagem mais relevante.



Em termos de participação, há uma clara dominância de telespectadoras com idades entre 25 e 34 anos. Homens são 2,5-3 vezes menos. I.e. Anunciar em um novo SUV em um bloco de anúncios não é tão inteligente quanto colocar um novo rímel. Embora este seja um ponto discutível. De qualquer forma, após alguns dias de locação, você pode garantir com segurança ao anunciante o público-alvo e até em termos quantitativos.

Do ponto de vista do contexto emocional, a imagem será de interesse principalmente para distribuidores e distribuidores. Quem o filme agrada, e quem irrita? Devo filmar uma sequência? Acredita em análises de bots ou obtém estatísticas confiáveis? Neste caso (o filme "Ice"), o filme é bastante brilhante em emoções. A soma de emoções positivas e negativas é de 18,5 em 100 papagaios e o restante é neutro. Este é um bom indicador. Para comparação, o contexto emocional de outros filmes pode não ser tão otimista (em média, em um hospital para todas as idades e sexos).



Por exemplo, a fronteira do Pacífico, com um número comparável de espectadores no mesmo período, tem 2 vezes menos emoções positivas. E o filme "Olá, Oksana Sokolova" é exatamente uma descoberta para mulheres com mais de 50 anos.



Todos estes são alguns exemplos de análise que podem ser usados ​​em redes de filmes. Eles simplesmente não possuíam essas informações e poucas pessoas sabem que elas podem ser obtidas, e ainda mais para seu próprio uso.

Para as redes de cinema, grandes oportunidades se abrem para uma análise mais profunda do que está acontecendo no salão, de acordo com a composição do público e sua reação aos filmes em várias localidades.

Você pode destacar imediatamente o seguinte :

  1. A capacidade de testar qualquer hipótese de marketing é receber feedback em tempo real e avaliar objetivamente as mudanças do público e o efeito das atividades de marketing.
  2. A capacidade de fornecer aos anunciantes informações precisas sobre o público que visualizou o anúncio. Mais do que isso, é possível ao anunciante garantir a exibição de anúncios por determinados grupos de público-alvo.
  3. A capacidade de criar ofertas exclusivas de marketing no mercado (descontos) para visitantes de uma certa idade e sexo, sem violar o esquema de trabalho existente e sem reduzir os indicadores financeiros atuais.

Essas e muitas outras oportunidades que surgiram graças a essa decisão são capazes de transformar o mercado de redes de cinema, aumentar a receita e melhorar a eficiência de ambos os cinemas individuais e de toda a rede.

Considerando que a solução é "fácil" (sem servidores, sem streaming na Internet), usa ativamente a nuvem do Microsoft Azure e tem preços acessíveis para o mercado (na forma de assinaturas periódicas do serviço), redes de cinema na Rússia e no exterior estão implementando-a ativamente.

Além disso, a tecnologia criada se reflete em outras soluções em áreas paralelas.

Análise de vídeo e eventos


Eventos, eventos, fóruns, cúpulas, conferências, simpósios ... O que os organizadores sabem sobre o novo público? X pessoas registradas, Y veio, Z preencheu os questionários, isso é quase tudo.

Questionar é uma dor à parte: “Então, eu conheço bem esse camarada, darei a ele cinco pontos, embora o relatório tenha sido entediante.” Estamos levando ao fato de que a confiabilidade dos questionários é baixa.
Para entender a eficácia da conferência, é simplesmente necessário o feedback dos participantes para o organizador e os patrocinadores.

O serviço para analisar o público nos cinemas é transferido perfeitamente para o local da conferência. A CVizi também testou esse caso, realizando dois experimentos: no salão Matrex em Skolkovo em uma das conferências e no salão Digital October durante a final russa do concurso de projetos de tecnologia para estudantes Imagine Cup 2018.

Experiência 1. Matrex Hall em Skolkovo


Em Matrex, a câmera não foi instalada acima da tela, como em um cinema, mas em um suporte telescópico atrás dos alto-falantes. Assim, a solução acabou sendo móvel. É necessário apenas algumas horas antes do início para instalar uma câmera, configurar um planograma da sala e inserir um cronograma de alto-falantes. Então o sistema faz tudo sozinho.





Agora o organizador pode coletar dados sobre a qualidade dos relatórios através do número de participantes no salão e suas emoções em cada sessão / relatório. E da próxima vez você pode planejar um evento com base em fatos objetivos. Existem relatos, após os quais os participantes simplesmente saem da sala e o próximo palestrante trabalha com aqueles que ficaram ou não tiveram tempo de sair. Isso está errado, e essa previsão poderia simplesmente mudar drasticamente o efeito, reorganizando os relatórios.

Experiência 2. Final da Rússia Imagine Cup


Aqui o objetivo era um pouco diferente, mas a abordagem é a mesma. Uma das indicações da competição é o prêmio do público. São os telespectadores que estão sentados no corredor, não os telespectadores on-line. E pela primeira vez na Imagine Cup, o prêmio de escolha do público foi concedido a um time escolhido por inteligência artificial. A equipe venceu, a cujo desempenho o público reagiu mais positivamente enquanto os caras estavam no palco. Para isso, duas câmeras já foram usadas, cada uma controlando continuamente seu próprio setor do salão e coletando as características emocionais de cada espectador.

Nesse caso, as câmeras podem ser penduradas em um mastro de iluminação acima do palco, o que garante sua estabilidade e imobilidade garantidas. E também estávamos mais uma vez convencidos de que a Internet 4G é suficiente para o serviço funcionar. O sistema acabou sendo o mais autônomo possível. Dos organizadores, eram necessários apenas 220 V. Isso é realmente importante, porque em eventos dessa escala, os canais de comunicação são sempre um gargalo e a qualidade do serviço depende diretamente da estabilidade do canal da Internet.

Como resultado, o prêmio do público foi concedido à equipe que marcou o número máximo de emoções positivas por seu desempenho - Desenvolvimento do último dia da NNSU im. Lobachevsky.



Análise de vídeo e aprendizado


A esfera da educação em termos de automação de seus processos ainda está muito atrás do restante das indústrias. Por exemplo, o controle de presença na forma de um controlador externo com um diário ainda é praticado em muitas universidades: uma pessoa entrou, contou alunos em palestras, inseriu algum número no diário (que pergunta?) E continuou.

A tecnologia de análise do público por métodos de visão computacional se encaixa perfeitamente no campo da educação e abre um amplo campo para experimentos e análises. Possíveis tarefas a serem resolvidas:

  1. Monitoramento de presença nas aulas
  2. Identificação do aluno
  3. Avaliação da Qualidade do Ensino
  4. Identificação de emoções negativas do aluno e adoção de medidas preventivas.
  5. Avaliação do envolvimento de um aluno ou aluno na escola.

Planejamento adequado do processo educacional, incluindo o horário, a escolha dos palestrantes - esta é a base para o sucesso da educação. Mas, de fato, se nos transferirmos para o campo econômico, esse é o custo da educação no contexto de cada aluno.

Análise de vídeo em outros setores


A tecnologia CVizi não se limita às soluções apresentadas, existem soluções para varejo e produção.

Por exemplo, uma solução interessante é obter informações sobre a conversão externa e interna da loja. Esses dois indicadores permitem criar um funil de vendas offline:

  • Quantas pessoas andam perto da sua loja;
  • Quantas pessoas entraram;
  • Quantas pessoas chegaram à caixa registradora.

Aqui está um exemplo de conversão externa para uma loja típica localizada em um shopping center em Moscou:



Com esses indicadores, uma empresa pode gastar dinheiro com mais eficiência na atração de clientes, no teste de hipóteses de marketing e na qualidade do serviço.

Como isso funciona?


Agora eu quero falar um pouco sobre tecnologia. Por que dizemos que a solução é "fácil"? É tudo sobre arquitetura. É sempre um fardo para qualquer cliente comprar uma solução cara e, além disso, uma frota de equipamentos na forma de vários servidores, registradores e outras coisas. E então, para montar tudo, parear e acompanhar. Se for oferecida ao cliente uma caixa na forma de um microcomputador do tamanho de um telefone celular, qualquer pessoa que esteja pelo menos um pouco familiarizada com a técnica poderá instalá-la em sua rede local e pendurar uma câmera de vídeo IP. A analogia com o roteador Wi-Fi em casa sugere-se - liguei-o a uma tomada, conectei a Internet e fiz as configurações mais simples. Só isso. Nenhum serviço pós-venda é necessário. Tudo é muito facilmente feito de forma independente.



E então, na conta pessoal, o usuário vê todo o sistema e pode receber dados na forma de relatórios e registros estatísticos e, usando a API, leva esses dados para o sistema de TI corporativo.

Assim, o usuário não precisa pensar e se preocupar com a infraestrutura. Conectar dispositivos de computação S-Box é muito fácil. Também é fácil replicar a solução para outros pontos - desligue as câmeras, conecte o número necessário de S-Box e veja imediatamente o objeto no portal da sua conta.

Sob o portal e a conta pessoal, há todo um sistema de análise, armazenamento de banco de dados, monitoramento e notificação de equipamentos, implantado nas nuvens do Azure. O sistema é flexível e todos os recursos computacionais necessários são alocados automaticamente ao usuário. Portanto, toda a dor de cabeça no equipamento e seu suporte são removidos do usuário. Ele compra apenas um serviço de análise de vídeo. Muito confortável

Quais câmeras podem ser usadas para análise de vídeo da audiência?


Dado que, no final, você precisa obter o rosto do espectador em qualidade aceitável, a câmera deve ser, em primeiro lugar, com boa ótica e zoom e, em segundo lugar, controlada - PTZ.
Testamos mais de uma dúzia de câmeras de diferentes marcas. Não nomearemos modelos de câmera específicos, mas as características podem ser expressas.

Para salas de até 150-200 pessoas, uma câmera de 20x com uma matriz de 2MP é suficiente. Para salas de mais de 200 pessoas, é melhor usar câmeras de 25x e acima. Eles certamente são mais caros, mas este é o caminho certo. Embora, é claro, você também possa brincar com o tamanho da matriz, mas você deve entender que no espectro IV a matriz gera ruído e o zoom óptico sempre será preferível ao digital.

Precisão do reconhecimento


Quanto mais nos posicionarmos no rosto, mais claro será. Tudo parece estar claro, e a criança entende. Mas se tudo estiver bem com o reconhecimento de gênero, a precisão de determinar a idade pode ser facilmente de ± 5 anos ou mais, independentemente da proximidade da câmera. E o ponto aqui não está na qualidade de algoritmos e redes neurais, mas no fato de que todo adulto tenta parecer tanto quanto investiu em sua aparência.

Portanto, a câmera indica a idade em que uma pessoa olha ou tenta olhar. I.e. idade biológica e idade de acordo com a foto - estas podem ser duas grandes diferenças. Afinal, cada um de nós pode se lembrar de casos em que ele se enganou na classificação etária do interlocutor. Ao mesmo tempo, o cérebro humano é uma rede neural muito poderosa e bem treinada.

Azure e seus serviços


No centro de tudo isso está o serviço cognitivo da API da Microsoft Face. Este é um serviço muito conveniente e a API pode ser acessada a partir de praticamente qualquer ambiente de desenvolvimento comum. Usamos a maioria dos nossos serviços usando Python - isso é do lado da nuvem.

A sequência geral é assim:

1) S-Box transfere fotos para a nuvem

2) O serviço de nuvem os acumula, os classifica e os alimenta nos Serviços Cognitivos de detecção de rosto. Para fazer upload de imagens coletadas para a nuvem, 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 .

Source: https://habr.com/ru/post/pt413015/


All Articles