Como ampliar os gestos da HoloLens com IA Deep Learning?

Guia Prático

O AIR TAP

No príncípio, apenas alguns gestos estavam disponíveis para os desenvolvedores da HoloLens, sobretudo o Air Tap. Uma API de alto desempenho é responsável pela entrega do Air Tap ao desenvolvedor. Este se assemelha muito a um clique em um PC ou a um toque no celular. Essas limitações interativas levaram a diversas interfaces contextuais que surgiam durante a utilização da HoloLens e, muitas vezes, faziam com que fosse necessário realizar mudanças para permanecer no campo de visão do usuário. Essas interfaces podem causar problemas de visibilidade, além de estarem sujeitas a outros tipos de problemas e abrigar um número limitado de opções.

Para evitar essa limitação interativa, é possível criar um sistema de interação de gestos para a HoloLens usando a Estrutura de Machine Learning do Custom Vision Cognitive Services da Microsoft. Quando um usuário inicia um Air Tap, o sistema de gestos começa a colorir em pixels, contornando a localização na imagem correspondente à posição da mão. Quando você levanta o dedo e conclui o Air Tap, a imagem gerada é enviada para o Custom Vision endpoint, que classifica a imagem como um dos cinco gestos e retorna essa informação como uma resposta JSON (JavaScript Object Notation).

COMO TREINAR O SISTEMA

A primeira preocupação que surgiu foi que o Azure Custom Vision não conseguisse classificar os gestos de maneira confiável. Para treinar isso, é possível criar um conjunto de dados falso de imagens de gestos usando o Microsoft Paint. Graças a diferentes desenhos, como círculos, triângulos e quadrados, é possível treinar e testar o modelo do Azure Computer Vision. Na verdade, ele foi capaz de classificar corretamente novas imagens em 95% do tempo, comprovando a capacidade do Azure de classificar com precisão o reconhecimento de formas básicas em imagens de baixa resolução.

Os próximos desafios foram fazer com que os gestos de imagem gerados fossem carregados com meta-dados formatados de maneira adequada. Isso porque é difícil encontrar exemplos básicos de upload de um arquivo de imagem para o endpoint com bibliotecas de rede do Unity. Além disso, no final, é necessário codificar a textura para PNG, salvar esse PNG em disco, carregá-lo de volta em um array de bytes e convertê-lo em uma série.

UMA EXPERIÊNCIA CONDUZIDA PELO USUÁRIO

Assim que o sistema é executado na HoloLens, os usuários podem testá-lo. O primeiro passo é ensinar as pessoas a fazer os gestos. . Além disso, um dos problemas mais comuns que os usuários enfrentavam ao tentar fazer os gestos era ter suas mãos fora dos limites/parâmetros de rastreamento da mão. Devido ao atraso entre fazer um gesto e receber do Azure um retorno desse gesto, os usuários tinham dificuldade em saber quando ou qual era o erro que cometeram na utilização. Para deixar isso mais claro, é possível incluir um barulho, como um estalo, e fazer com que o gesto visual desapareça instantaneamente assim que o usuário levantar o dedo.

Isso faz com que o usuário saiba quando o gesto é concluído, mesmo antes de sua classificação ser retornada do serviço Azure Deep Learning, tornando a experiência muito mais tátil e funcional. Se a resposta ao gesto voltar com sucesso, um som de estalo mais profundo será reproduzido e uma imagem do tipo de gesto será mostrada no canto inferior esquerdo. Embora o sistema nem sempre antecipe corretamente o gesto pretendido pelo usuário, a execução do gesto, de certa maneira, pode melhorar muito a chance de reconhecimento. Adicionando os ruídos e removendo rapidamente as classificações de rastreamento de gestos em perspectiva e de gestos previstos, o usuário recebe um feedback claro e instantâneo quando o reconhecimento de gestos falha e pode ajustar sua técnica de acordo.

Embora ainda seja possível realizar muitas melhorias, a capacidade de aumentar as opções de gestos foi fundamental para os desenvolvedores 3D, que foram obrigados a se contentar por muito tempo com as limitações. Outro aspecto interessante que pode ser explorado é o uso de uma exportação do ONNX em conjunto com a inferência no dispositivo WinML, que foi introduzida com a atualização RS4 do Windows. Isso ajudará a melhorar a latência e também contribuirá com a superação de possíveis problemas com conectividade de back-end e limitações de rede.