/blean

Repositório para a plataforma "Blean", desenvolvida para a 1ª Global Solution na FIAP, com o tema "Blue Future".

Primary LanguageHTMLCreative Commons Zero v1.0 UniversalCC0-1.0

BLEAN: Sistema de Detecção de Microplásticos na Água

AUTORES:

  • Diogo Leles Franciulli RM558487
  • Felipe Sousa de Oliveira RM559085
  • Ryan Brito Pereira Ramos RM554497

Contexto e Motivação

O aumento da contaminação por microplásticos em peixes e humanos representa uma ameaça significativa para a biodiversidade e pode ter consequências adversas para a saúde humana quando os microplásticos entram na cadeia alimentar. Este projeto oferece uma solução inovadora e de baixo custo para monitorar a presença de microplásticos na água, permitindo uma ação rápida para mitigar os efeitos nocivos desses poluentes.

Nosso projeto

O sistema baseia-se na utilização do Google Teachable Machine para o treinamento de um modelo capaz de identificar microplásticos em imagens capturadas por uma câmera. O Google Teachable Machine é uma ferramenta desenvolvida pelo Google que simplifica o processo de treinamento de modelos de machine learning, especialmente para tarefas de classificação de imagens. Além disso, usamos uma API em NodeJS (criada por nós), para que ocorra o trânsito das informações adquiridas após o processo do Arduino + IA para localizar e quantificar os microplásticos (a API pode ser encontrada no diretório /backend, considerando o caminho root), esses dados são salvos em um banco NoSQL (MongoDB), e assim tanto o Website (Front-End), quanto o Arduino (com o Python) conseguem usar a API para salvar e resgatar os dados.


Imagem de Microplásticos na Água Imagem de Microplásticos na Água

O treinamento do modelo no Google Teachable Machine envolve os seguintes componentes:

  • Keras: O treinamento do modelo é realizado usando Keras, uma biblioteca open source para redes neurais em Python. Ela fornece uma interface amigável e intuitiva para construir e treinar modelos de aprendizado de máquina, incluindo redes neurais convolucionais (CNNs), que são particularmente úteis para tarefas de processamento de imagens.

  • Python: O código em Python é usado para interagir com o modelo treinado e processar os dados de entrada. Isso pode incluir o pré-processamento de imagens antes de passá-las para o modelo para classificação, bem como o tratamento dos resultados de saída do modelo.

  • TensorFlow: TensorFlow é usado como o backend para o Keras, fornecendo as funcionalidades de baixo nível necessárias para executar operações numéricas eficientes em tensores, que são estruturas de dados fundamentais para representar dados em aprendizado de máquina.


Logo Keras Logo Python Logo Tensorflow

O Google Teachable Machine simplifica todo esse processo, permitindo que usuários com pouca ou nenhuma experiência em aprendizado de máquina criem e treinem modelos de classificação de imagem de forma rápida e intuitiva. A detecção é realizada em tempo real, permitindo a análise rápida e eficiente da presença de microplásticos nas amostras de água.

Funcionamento do Sistema

O sistema de detecção de microplásticos na água se baseia em alguns componentes principais:

  • Software:
    • Modelo de Visão Computacional: Modelo no formato .h5 (Hierarchical Data Format) treinado com o Google Teachable Machine para identificar microplásticos em imagens capturadas por uma câmera.
  • Hardware:
    • Computador: Processa as imagens capturadas pela câmera e executa o modelo de detecção de microplásticos.
    • Microcontrolador Arduino Uno R3: Controla LEDs e display LCD com base nos resultados da detecção.
    • Display LCD: Exibe o resultado da análise.
    • LEDs: Indicam a presença de microplásticos (verde, amarelo, vermelho).
Arduino

Implementação do nosso Projeto (Passo a Passo)

É necessário fazer algo em relação a API?

  • A API está hospedada e funcionando, os caminhos da aplicação estão conectadas na API hospedada, logo, o trabalho máximo em relação a isso seria esperar a API ligar (50 segundos), em caso de standby do server em que ela está hospedada
  • Porém, caso queira rodar a API localmente:
    • Entre na pasta /backend e rode o comando "npm install" para instalar os pacotes do package.json (para rodar o comando, tenha o npm instalado em seu computador, faça o download pelo site do Node);
    • Após instalar os pacotes, use "npm run dev" para deixar a API rodando localmente na porta 3001, agora já é possível usar a API localmente, testando com Postman, ou colocando a URL local onde você quiser testar (frontend ou arduino/python).

Passo a Passo para Instalar o TensorFlow com Suporte a GPU no Windows (em 2024)

Pré-requisitos:

  • GPU compatível: Sua placa gráfica deve ter uma capacidade de computação superior a 3.5 e suportar CUDA 11.2. Você pode verificar isso usando o comando nvidia-smi no prompt de comando. Verifique se a capacidade de computação é superior a 3.5 e se a versão do CUDA é compatível.
  • Sistema operacional: Windows 11
  • Python: Versão 3.7.1 a 3.9.1
Logo NVIDIA

Instale os drivers NVIDIA:

  • Baixe os drivers mais recentes para sua placa gráfica no site da NVIDIA e siga as seguintes instruções:
  • Baixe o CUDA Toolkit 11.2 para Windows no site da NVIDIA
  • Baixe o TensorRT 8.2 GA Update 1 no site da NVIDIA
  • Baixe e instale o C++ Redistributable para Visual Studio 2019 no site da Microsoft
  • Baixe e instale o Python 3.9.1 no site do Python

Configure as variáveis de ambiente:

  • Adicione os diretórios do CUDA, TensorRT e Python ao %path% do seu sistema.
  • Consulte a documentação do CUDA e do TensorRT para obter instruções sobre como configurar as variáveis de ambiente.

Criando um ambiente virtual:

  • Crie um ambiente virtual usando o comando virtualenv no prompt de comando.
  • Ative o ambiente virtual usando o comando activate.
  • Instale o TensorFlow com suporte a GPU usando o comando pip install tensorflow-gpu==2.10
Logo NVIDIA

Referências:

1. Treinamento do Modelo com Teachable Machine

1.1 Acessando o Teachable Machine

  • Acesse o Google Teachable Machine através do link.

1.2 Criando um Modelo de Imagem

  • Definição de Classes: Identifique as diferentes categorias de microplásticos que deseja reconhecer no seu sistema.
  • Adição de Imagens: Carregue imagens de cada classe criada.

Logo NVIDIA

1.3 Treinamento do Modelo

  • Clique no botão "Treinar modelo".

1.4 Exportação do Modelo

  • Exporte o modelo em formato .h5 e copie o código utilizando a biblioteca do TensorFlow.

2. Configuração do Software

2.1 Modificação do Código Python

  • Realize as seguintes alterações no arquivo "TeachableMachineaArduino.py":
    • Definição da Porta COM.
    • Substituição dos Nomes das Classes (labels.txt).
    • Ajuste da Precisão (opcional).

3. Execução do Sistema

3.1 Conexão do Arduino

  • Conecte o Arduino Uno R3 ao seu computador através de um cabo USB.

3.2 Execução do Código Python

  • Execute o programa "TeachableMachineaArduino.py".

4. Programação do Arduino

4.1 Abertura do IDE do Arduino

  • Instale e abra o Arduino IDE, a interface de desenvolvimento.
Logo NVIDIA

4.2 Carregamento do Código

  • Abra o arquivo "ArduinoProgram.ino" no Arduino IDE e carregue-o na placa Arduino conectada.

5. Funcionamento Completo do Sistema

  • Captura de Imagens: O sistema captura imagens da amostra de água através da câmera conectada ao computador.
  • Processamento de Imagens: O programa Python em execução no computador processa as imagens capturadas.
  • Detecção de Microplásticos: O modelo de visão computacional identifica a presença de microplásticos.
  • Envio de Resultados: O programa Python envia os resultados da detecção para o Arduino.
  • Controle de LEDs e Display LCD: O Arduino interpreta os resultados e controla LEDs e o display LCD.
  • Exibição no Display LCD: O resultado da análise é exibido no display LCD.

Impacto Ambiental e Considerações Futuras

O sistema de detecção de microplásticos na água demonstra o potencial da tecnologia para solucionar desafios ambientais urgentes. A implementação deste sistema pode contribuir para:

  • Monitoramento de ecossistemas aquáticos.
  • Avaliação da qualidade da água.
  • Desenvolvimento de estratégias de mitigação da poluição por microplásticos.

Além da detecção de microplásticos, o sistema pode ser adaptado para identificar outros tipos de poluentes ou objetos em diferentes contextos ambientais

Acesse o website Blean e a simulação do nosso protótipo em feito com Arduino:

Referências

Conclusão

Este guia fornece uma visão geral do sistema de detecção de microplásticos na água utilizando visão computacional e Arduino. A implementação deste sistema requer conhecimentos básicos de programação em Python e Arduino. O uso de componentes relativamente simples e acessíveis torna este projeto uma ferramenta viável para o monitoramento ambiental participativo e o desenvolvimento de soluções inovadoras para a preservação dos recursos hídricos.

Observação: Este guia foi criado com base em informações disponíveis e pode ser adaptado às suas necessidades específicas.

README.md feito paras as matérias de Edge Computing & Computer Systems e Computational Thinking with Python para Global Solution - Blue Future (FIAP 2024)

(Já que ambos estão entrelaçados neste projeto)