Rastreamento de Contatos por Visão Computacional
Tags: deeplearning, computervision, python, datascience
Published: 2022-04-03 00:23:37

## Introdução
Devido a situação pandêmica vivenciada desde o inicio do ano de 2020, diversas estratégias surgiram para realizar o rastreamento de contatos de pessoas infectadas com o vírus SARS-CoV-2.

Aqui é apresentado um rascunho de rastreamento de contatos por visão computacional, onde considera-se um ambiente de trabalho fechado (um escritório, por exemplo), com um número limitado de pessoas e câmeras disponíveis em locais específicos para realizar a análise. Esse exemplo visa detectar as pessoas através de detecção de faces, e com base nas distâncias euclidianas (em pixels) entre as faces, avaliar e gerar um alerta informando que determinada pessoa esteve próxima/teve contato com uma pessoa que está com o vírus.

## Etapa 1
A primeira etapa da aplicação tem como objetivo detectar todos as faces em uma determinada cena/imagem. Para isso, é utilizado o algoritmo Viola-Jones para detectar as faces, onde utiliza-se um arquivo XML treinado com as características (_features_) Haar para detecção de faces frontais.

![Faces detectadas pelo algoritmo Viola-Jones.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gda6r1f8i2wilm0arjk0.png)

Através dos _bounding boxes_ gerados na detecção das faces, são calculados os pontos centrais destes, que são utilizados na obtenção da distância euclidiana entre as faces na imagem.

## Etapa 2
A segunda etapa visa classificar, através de uma rede neural convolucional, as faces detectadas na etapa anterior, cujo objetivo real seria identificar as pessoas (faces) na imagem, possibilitando assim o rastreamento de contatos. Utilizou-se o dataset VGGFace, que possui faces rotuladas de 8631 celebridades. Para a classificação, foi usado o modelo pré-treinado ResNet50.


![Imagem de entrada e mapas de características da ResNet50.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofsupqfb8owrkfuoc33y.png)
Os resultados da classificação são mostrados abaixo:

> **Detecção 1**
> Edinson Cavani: 98.043%, Juliano Cazarre: 0.075%, Tino Costa: 0.075%

> **Detecção 2**
> Anthony Ogogo: 99.913%, Brahim Asloum: 0.007%, Scott Quigg: 0.006%

> **Detecção 3**
> Sharon Stone: 97.929%, Noelle Reno: 0.985%, Tina Maze: 0.092

Os resultados mostram que todas as três pessoas foram classificadas corretamente, com distribuições de probabilidades superiores a 95%.

## Etapa 3
Por fim, a etapa final, que visa obter as distâncias euclidianas entre as combinações de pessoas (faces) detectadas na imagem. A Tabela abaixo mostra as distâncias euclidianas entre as pessoas na imagem.

![Distância euclidiana entre as pessoas na imagem.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7mrdd5ux966n1srpxy2h.png)
Ao considerar o limiar (_threshold_) da distância entre as pessoas como 500 pixels, e considerando Edinson Cavani com o vírus, a pessoa que teve um contato mais próximo dele é Sharon Stone, sendo necessário alertar essa pessoa para as medidas e precauções cabíveis.

---

O código com o rascunho do rastreamento de contatos por visão computacional pode ser encontrado em: https://github.com/rlrocha/pdi. Um melhor detalhamento do código desenvolvido encontra-se em: https://youtu.be/RJd7ufq_tZU. Siga o blog se o post for útil para você.