FIAP VisionGuard Logo

VisionGuard - Detector

FIAP Postech IA - Hackathon Fase 5 - Grupo 19

Grupo 19

Humberto Maia
Leonardo Miyagi
Luiz Fernando Vilas Fonseca
Luiz Henriques Gonçalves Carneiro de Albuquerque
Rafael Pivetta Balbuena

Código Fonte

O código fonte do projeto está disponível no repositório do Github

Estratégia

  • Desenvolver uma rede neural que reconhece objetos cortantes
  • Treinar o modelo com datasets específicos
  • Disponibilizar o modelo em uma interface amigável
  • Implementar um sistema de notificações

Desenvolvimento do Modelo

A ideia inicial era a de desenvolver uma CNN (Convolutional Neural Network) que reconhecesse objetos cortantes.

O primeiro passo foi a seleção de datasets específicos para treinamento do modelo. Optamos por utilizar os datasets Knife Dataset e Dangerous Objects disponíveis no Roboflow.

Ao longo do processo inicial, tentamos utilizar o Keras como base e algum modelo já existente como MobileNetV2 ou EfficientNet, mas os resultados não foram muito bons. O modelo considerava muitos objetos como cortantes sendo que não eram, e também perdia alguns que eram óbvios.

Decidimos então utilizar como base o modelo YoloV11, que é um modelo já treinado para reconhecimento de objetos. A partir dele, treinamos o modelo com os datasets selecionados.

O Jupyter Notebook contendo o código de treinamento do modelo está no repositório em train_yolo.ipynb

Os videos de teste do Hackathon foram processados pelo modelo e também disponibilizados no repositório:
Video 1
Video 2

Desenvolvimento do Aplicativo

Uma vez que o modelo estava treinado e pronto para uso, partimos para o desenvolvimento da interface.

O objetivo era disponibilizar uma ferramenta capaz de obter como entrada uma imagem, video ou webcam e detectar objetos cortantes utilizando o modelo treinado

Optamos por utilizar Python com Flask para o desenvolvimento do backend e HTML / Javascript com Bootstrap para o frontend.

Uma imagem Docker do aplicativo é gerado e então publicado na Digital Ocean

Sistema de Notificações

O sistema primário de notificação é um Alerta Visual na própria ferramenta, quando um objeto cortante é identificado

Além disso, implementamos um sistema de Notificação por Email onde a imagem do objeto identificado é enviado para o email informado
Para isso, utilizamos a biblioteca smtplib do Python

Adicionalmente, implementamos o envio de Notificações por SMS utilizando o Twilio como plataforma