Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Visão computacional: Hand Tracking com OpenCV

Visão computacional: Hand Tracking com OpenCV

Conhecendo o MediaPipe - Apresentação

Boas-vindas ao curso de Visão Computacional: Hand Tracking com OpenCV. Eu sou o João Miranda e te acompanharei nessa caminhada.

João é um homem branco, de cabelos pretos e curtos e barba rente ao rosto. Está vestindo uma camiseta azul marinho com desenhos geométricos em tom de cinza claro.

Neste curso, utilizaremos o framework MediaPipe para a detecção de mãos em imagens e vídeos. A partir disso, criaremos três projetos interativos que serão controlados pela movimentação das nossas mãos.

Para um melhor aproveitamento do curso, é necessário que você conheça a linguagem de programação Python. Vamos começar?

Conhecendo o MediaPipe - Contextualização do MediaPipe

Você provavelmente já ouviu falar na Alexa, uma assistente virtual capaz de controlar diversas aplicações através de comandos simples por voz. E se você tem um smartphone, já deve ter utilizado uma ferramenta similar, seja para criar um alarme ou para fazer uma pesquisa no Google.

Atualmente, estamos familiarizados com a ideia de que não precisamos necessariamente tocar em um objeto para interagirmos com ele. Podemos utilizar a nossa voz. Já parou para pensar que existem outras formas de interação com esses aparelhos?

O que vamos fazer?

Nesse curso, vamos interagir com o computador através de gestos de mãos. Utilizaremos a visão computacional para construir três projetos simples:

  1. Abrir e fechar programas no computador utilizando gestos de mão;

  2. Criar um teclado virtual controlado por movimento de mão;

  3. Criar uma ferramenta de desenho controlada pelas suas mãos.

Reconhecimento de gestos de mãos: A História

O reconhecimento de gestos de mãos por computadores começou a ser desenvolvido no final da década de sessenta. Na época, usavam-se luvas com sensores especiais capazes de mapear pontos específicos da mão. Com isso, era possível criar projetos que controlavam determinadas atividades no computador.

Com o passar do tempo, a tecnologia foi se desenvolvendo e, hoje, já não precisamos das luvas para detectar a posição da mão. Podemos simplesmente utilizar uma câmera e um algoritmo de inteligência artificial.

Framework Mediapipe

Estamos no site do MediaPipe. O MediaPipe é um framework criado pela Google e de código totalmente aberto, capaz de detectar elementos em imagens e vídeos. Ele oferece diversas soluções. Uma delas, é a detecção das mãos em imagens e vídeos e ela está disponível para a linguagem Python.

Vamos abrir o site Hands que mostra as informações dessa solução de detecção das mãos. Agora estamos com o MediaPipe Hands aberto. Ele começa apresentando um breve Overview (Visão Geral) de como a ferramenta funciona. Logo abaixo, mostra o funcionamento do pipeline de Machine Learning.

Basicamente, essa solução para a detecção das mãos utiliza dois algoritmos de Machine Learning por trás dos panos. O primeiro deles detecta a palma da mão, isto é, a localização da mão na imagem, faz um recorte dessa região e essa imagem será utilizada no segundo algoritmo.

O segundo algoritmo mapeia 21 pontos localizados nas mãos, considerando cada um dos dedos e também a palma da mão. Mas, Como foi treinado esse algoritmo? Basicamente, os pesquisadores usaram cerca de 30 mil imagens e desenharam, manualmente, em cada uma delas, os 21 pontos.

Assim, o modelo foi treinado a partir das imagens e agora é possível identificar a posição da mão e de cada uma dessas coordenadas na imagem. Essa solução oferece uma API que pode ser utilizada através de uma biblioteca na linguagem Python e retorna três resultados:

  1. Coordenada das mãos de acordo com o tamanho da imagem;

  2. Coordenadas de acordo com o mundo real;

  3. Informação se a mão é direita ou esquerda e a probabilidade de acerto.

O nosso próximo passo é utilizar a API na construção dos nossos projetos. Começaremos instalando as bibliotecas. Mas, isso vai ficar para o próximo vídeo! Vamos conferir?!

Conhecendo o MediaPipe - Preparação do ambiente

Para construir o nosso projeto, vamos acessar a câmera do nosso computador para detectar a posição da mão nas imagens geradas por essa câmera. Por conta disso, utilizaremos um ambiente local com Visual Studio Code (VSCode), mas, você pode usar qualquer outra IDE de sua preferência.

Passo 1: criar o diretório

Primeiro, vamos criar o diretório, a pasta em que o arquivo do nosso projeto ficará. No VSCode, localizaremos o menu superior e selecionaremos "File > Open Folder". Com isso, abriremos uma nova janela para criar uma nova pasta e essa pasta pode ser criada no local que desejarmos.

Então, apertaremos "Nova pasta" e vamos nomeá-la como "projeto_mediapipe". Agora, vamos selecionar essa pasta e apertar o botão "Selecionar pasta". Com a pasta criada, podemos instalar as bibliotecas necessárias para o nosso projeto. Mas, antes, vamos criar um ambiente virtual.

Passo 2: criar um ambiente virtual

O ambiente virtual nos permitirá criar um ambiente livre de qualquer outra biblioteca instalada no ambiente Python para não termos problemas de versão entre as bibliotecas se tivermos outras bibliotecas instaladas em outro ambiente.

No menu superior, vamos selecionar "Terminal > New Terminal" (Terminal > Novo Terminal). O atalho é "Ctrl + Shift + aspas". No Terminal, escreveremos python -m venv, sendo que venv se refere à "Virtual Environment" ou "Ambiente Virtual". Em seguida, vamos dar espaço e colocar o nome do ambiente: projeto_hand_tracking. Por fim, apertaremos "Enter".

python -m venv projeto_hand_tracking

O Python vai criar uma pasta dentro do diretório do projeto com o ambiente virtual. Ele vai começar a fazer a instalação do ambiente livre de qualquer outra biblioteca. Com essa pasta criada, precisamos entrar no ambiente virtual para instalar as bibliotecas.

Passo 3: entrar no ambiente virtual

Então, para entrar no ambiente virtual e instalar as bibliotecas, caso você esteja no Windows, precisa escrever:

.\projeto_hand_tracking\Scripts\activate

(projeto_hand_tracking)

Com isso, acessamos o ambiente e virtual e agora conseguimos controlar tudo dentro dele.

Se você estiver utilizando Mac ou Linux, o comando não será esse, mas, sim:

source projeto_hand_tracking/bin/activate

Passo 4: instalar as bibliotecas necessárias

Agora, vamos instalar as duas bibliotecas. A primeira delas é a OpenCV e a segunda é a MediaPipe. No ambiente virtual, dentro do Terminal, escreveremos:

pip install opencv-python

Ele vai começar a baixar a biblioteca e instalá-la no ambiente virtual. Terminado o processo de instalação, podemos passar para o MediaPipe:

pip install mediapipe

Assim como aconteceu na OpenCV, ele vai começar a baixar a biblioteca MediaPipe e instalá-la dentro do ambiente virtual. O tempo de instalação depende da conexão de internet e do computador, isso porque algumas dependências são instaladas.

Prosseguindo, vamos verificar a versão dessas bibliotecas, evitando inconsistências. Para isso, utilizaremos o comando pip freeze. Todas as bibliotecas utilizadas no ambiente virtual aparecerão na tela, sendo elas de dependências ou não que instalamos.

A partir dessa lista, é possível perceber que o OpenCV está na versão 4.6 e o MediaPipe está versão 0.8. Nós já instalamos as bibliotecas e podemos começar a construção do nosso projeto. Mas isso ficará para o próximo vídeo!!

Sobre o curso Visão computacional: Hand Tracking com OpenCV

O curso Visão computacional: Hand Tracking com OpenCV possui 174 minutos de vídeos, em um total de 53 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas