---
title: "Reconhecimento de poses humanas em tempo real com visão computacional"
date: 2019-12-01
language: pt
topics: ["art", "data", "experiment", "game", "people", "sensors", "work"]
source_url: https://willem.com/pt/2019-12-01_reconhecimento-de-poses-humanas-em-tempo-real-com-visao-computacional/
---
# Reconhecimento de poses humanas em tempo real com visão computacional

*TensorFlow e PoseNet numa transmissão de vídeo*

> Para um projeto novo e emocionante, tenho andado a experimentar visão computacional com o TensorFlow. Queria conseguir detetar poses humanas em tempo real, para comandar projeções de vídeo interativas e jogos. Chegou a altura de mergulhar no mundo da aprendizagem automática, dos tensores e da visão computacional!

## Visão computacional

O que me entusiasma a sério é o campo científico interdisciplinar da visão computacional, que estuda como é que os computadores podem chegar a uma compreensão de alto nível a partir de imagens digitais e transmissões de vídeo. Inclui desafios como adquirir, processar e analisar imagens digitais. No fim, o que queres é que o computador tome decisões com base na compreensão que tem do (complexo) mundo à sua volta.

## TensorFlow

O TensorFlow é uma plataforma de código aberto, de ponta a ponta, para aprendizagem automática, desenvolvida originalmente pela Google. Assenta no trabalho científico de vários investigadores e tornou-se entretanto um ecossistema estável e robusto de ferramentas, bibliotecas e recursos da comunidade.

O nome «TensorFlow» vem da ideia de um «fluxo de tensores». Um tensor descreve-se melhor como uma «coisa», algo que o computador reconheceu ou tenta analisar. Tecnicamente, um tensor é uma matriz multidimensional de valores numéricos. Isto permite ao computador comparar «coisas» diferentes e ver até que ponto as suas características se parecem (ou não).

O grande desafio do processamento de imagem em tempo real é reduzir a complexidade da imagem a pedaços processáveis, que se possam exprimir como tensores. Normalmente isto implica muitos passos no algoritmo de visão computacional. Passos como reconhecer uma forma, recortar essa forma, redimensioná-la, tirar-lhe a cor, comparar os contornos, etc. Os tensores fluem por estes passos, de «não analisado» a «reconhecido», daí o nome TensorFlow.

## Poder de processamento

O melhor da aprendizagem automática moderna com o TensorFlow é que, em geral, não precisas de hardware (muito) caro para obter resultados. Isto acontece porque o «trabalho pesado» é feito ao treinar os modelos de aprendizagem automática, que podes imaginar mais ou menos como «tabelas de referência». Estes modelos são criados a partir da análise de conjuntos de dados conhecidos, em que o computador recebe a «resposta» e determina as características do objeto. Treinar modelos exige tempo, poder de processamento e dados de treino.

## Dados de treino

A Google fez algo verdadeiramente inteligente: distribuiu o treino dos seus modelos de aprendizagem automática por todos nós. Sim, incluindo-te a ti!

### Recaptcha

É bem possível que já tenhas encontrado o «reCAPTCHA» ou «Recaptcha». Um desafio visual que tens de completar quando compras algo online ou tentas registar-te nalgum sítio. Este desafio protege os donos de lojas online e de sites contra (spam)bots. O objetivo é distinguir humanos de robôs. Fá-lo ao mostrar aos humanos imagens (complexas) e ao pedir-lhes que identifiquem objetos nelas. Como sinais de trânsito, passadeiras, carros, etc. A_Google_usa_este_feedback_humano (https://www.techradar.com/news/captcha-if-you-can-how-youve-been-training-ai-for-years-without-realising-it) para treinar os seus modelos.

![ReCaptcha: há anos que andas a treinar a IA da Google!](https://willem.com/global/images/50568e89a5e8.webp)

O melhor é que muitas das descobertas da Google são tornadas públicas, e há imensos projetos de código aberto interessantes que nos permitem, a nós, programadores simples, fazer coisas incríveis com aprendizagem automática.

## Reconhecimento de poses humanas com o PoseNet

Um dos modelos de aprendizagem automática disponíveis é o PoseNet (https://www.tensorflow.org/lite/models/pose_estimation/overview). É um modelo de visão que serve para estimar a pose de uma pessoa numa imagem ou num vídeo. Fá-lo ao determinar onde estão as articulações principais do corpo, como os cotovelos, as mãos, as ancas, os joelhos, os tornozelos, etc.

![Eu e o mini-eu a ser reconhecidos pelo modelo PoseNet](https://willem.com/global/images/7953a7232386.webp)

### Algoritmo Single Shot MultiBox Detector (SSD)

O Single Shot MultiBox Detector é um algoritmo popular para detetar objetos em imagens e transmissões de vídeo. É popular por causa da sua velocidade. O princípio é relativamente simples de perceber: o algoritmo tenta reduzir a complexidade da imagem o mais depressa possível e só faz análises profundas em mapas de características encolhidos e simplificados.

Esta abordagem funciona melhor quando queres detetar objetos grandes, porque se destacam depressa: geram características de alto nível suficientes para fazer previsões logo no início do algoritmo. Isto é ótimo para a deteção de corpos, que é um dos primeiros passos quando queres determinar poses humanas (primeiro vês *onde* está uma pessoa, depois *qual* é a pose dela).

![Algoritmo MobileNet-SSD (imagem: hey-yahei.cn)](https://willem.com/global/images/567b618c7f65.webp)

O reconhecimento de imagens e de pessoas é uma área em que o pessoal da China (https://hey-yahei.cn/2018/08/08/MobileNets-SSD/index.html) é muito bom, por várias razões. Os algoritmos deles funcionam bem em hardware relativamente fraco. Isto permite que a visão computacional funcione bem em todo o tipo de dispositivos, em tempo real!

## Casos de utilização fixes

Poder detetar poses em tempo real abre a porta a todo o tipo de coisas fixes. Tu podes, literalmente, tornar-te o comando do jogo ou o input de uma instalação de arte interativa!

### Espelho PomPom

Com 928 pompons esféricos de pelo sintético, esta instalação_de_arte_de_Daniel_Rozin (https://vimeo.com/128375543) é fantástica. A escultura é controlada por centenas de motores que formam silhuetas de quem a observa, através de visão computacional.

![Espelho de pompons sintéticos PomPom, de Daniel Rozin](https://willem.com/global/images/34fceca59e7a.webp)

### Transformar-te num pássaro: The Treachery of Sanctuary

Permitir que as pessoas se percam por um momento só foi possível juntando disciplinas diferentes. Esta incrível instalação_de_arte_interativa_dirigida_por_Chris_Milk (https://www.youtube.com/watch?v=I5__9hq-yas&feature=youtu.be) é um tríptico gigante que leva os visitantes por várias fases do voo, com recurso à visão computacional.

![Transformar pessoas em pássaros com visão computacional](https://willem.com/global/images/e4956ea74e75.webp)

## Conclusão

Trabalhar em projetos criativos e experimentais é um privilégio incrível, e é isso que torna o meu trabalho tão entusiasmante.

Com montanhas de dados cada vez maiores, dar sentido a tudo isto de forma digital e autónoma é um grande desafio para o futuro: e é um desafio no qual tenho muita vontade de trabalhar!
