Experimentos em Visão Computacional e IA

Publicado em por Maiara Araújo

Olá, tudo bem?

Neste artigo irei mostrar meus primeiros testes com Machine Learning e Visão Computacional. Desde que comecei minhas aulas como aluna especial no mestrado em Ciência da Computação, tenho aprendido muito sobre esses tópicos e compartilho aqui meus achados. Todos usei Python.

Artigo em construção.

Mediapipe e OpenCV

Este teste que fiz usa a biblioteca MediaPipe para rastrear mãos em tempo real pela webcam, ele identifica a proximidade dos dedos e verifica se o polegar e o indicador estão em um gesto de "pinça". Essa detecção é usada para criar o desenho do retângulo que aparece na tela, dentro apliquei o filtro Canny na área selecionada (mas pode ser qualquer outro filtro). Junto também usei o OpenCV.

Mediapipe e Arduíno

Em construção.

Mediapipe e Unity Game Engine

Em construção.

Sistema de Visão Computacional para Contagem de Caixas com YOLO e Roboflow

Desenvolvi um sistema de Visão Computacional que utiliza o YOLO (You Only Look Once) para detectar e rastrear caixas de diferentes cores do vídeo de exemplo. Para criar o dataset, utilizei o Roboflow, uma plataforma que acabei de tomar conhecimento que falicitou muito o processo de etiquetagem de objetos, antes eu usava o Make sense.

Primeiro, etiquetei as caixas nas imagens usando o Roboflow Annotate, converti o vídeo em uma sequencia de imagens JPG e importei para a plataforma, como era somente para fins didáticos, de 300 imagens etiquetei 87 delas.

Importei para minha máquina e fiz o treinamento no YOLO localmente. Em Python usando bibliotecas como OpenCV, implementei o vídeo e com o BotSort rastreei os objetos para garantir a detecção contínua do mesmo objeto e somente contar 1 caixa.

A contagem das caixas é feita através de uma linha definida no vídeo, onde cada caixa que a atravessa tem sua contagem.

E pronto! O resultado está no pequeno GIF que fiz do resultado. Esse é meu primeiro teste EVER!

Abaixo, sem a necessidade de treinamento, pois usei puramente o COCO Dataset (Common Objects in Context), utilizei o método "cross-line counting" para resolver o problema de oclusão quando os IDs são perdidos devido ao movimento ou sobreposição de objetos. O algoritmo faz uso do modelo também do tracker BotSort, para realizar a detecção e rastreamento de objetos no vídeo, especialmente focando em pessoas e meios de transporte, como carros. O sistema é capaz de identificar e contar objetos que cruzam linhas imaginárias no quadro, sendo capaz de contar entradas e saídas em regiões específicas, como a linha de entrada e saída de veículos e a linha de cruzamento para pessoas.

Caso o objeto cruze a linha, um contador é incrementado, e a detecção é marcada para evitar contagens repetidas.

Ainda há erros, como, por exemplo, o fato de que, devido à baixa resolução do vídeo, a oclusão das pessoas é constante, principalmente por causa dos guarda-sóis. Além disso, eu precisaria de mais linhas para contar as pessoas na calçada também.