Disclaimer
Este texto foi inicialmente concebido pela IA Generativa em função da transcrição de um vídeo do canal de Daniel Romero (a pessoa que lidera nossa especialização em Engenharia de IA). Se preferir acompanhar por vídeo, é só dar o play.
Introdução
Detecção de anomalias é uma técnica de Machine Learning usada para encontrar padrões em dados que não estão de acordo com o comportamento esperado. Empresas de cartão de crédito e fintechs usam esse tipo de abordagem no combate a fraudes, mas a aplicação vai muito além do mundo financeiro. Neste post, vamos construir um sistema completo de detecção de anomalias para monitorar vibração em maquinário industrial, passando por coleta de dados com sensor, treinamento de modelo e inferência em tempo real.
A inspiração vem de empresas reais que fornecem sistemas de monitoramento preditivo para indústria, usando sensores que coletam dados de vibração e modelos de Machine Learning que analisam esses dados para prever problemas antes que eles aconteçam.
O plano geral do projeto
O projeto percorre toda a cadeia de um sistema de detecção de anomalias:
- Montar um protótipo com sensor acelerômetro conectado a um microcontrolador ESP32
- Coletar dados de vibração de um ar-condicionado em operação normal e com anomalia simulada
- Analisar os dados coletados e extrair features relevantes
- Treinar um modelo de Machine Learning para classificar operação normal versus anomalia
- Criar uma API para inferência em tempo real
- Construir um dashboard para monitorar o estado do sistema
Coleta de dados com acelerômetro e ESP32
Para coletar dados de vibração, o projeto usa um acelerômetro de 3 eixos (MPU6050) conectado a um ESP32 via protocolo I2C.
Como funciona um acelerômetro
Um acelerômetro detecta aceleração linear ao longo de um eixo. O sensor utilizado é uma IMU (unidade de medição inercial), que combina acelerômetros, giroscópios e magnetômetros em um chip microscópico, usando tecnologia MEMS (sistemas microeletromecânicos).
Internamente, o sensor possui uma massa sísmica em forma de H com extremidades sensoriais. Essa massa fica presa ao substrato nas extremidades, permitindo um movimento de vai e vem. Durante a movimentação, os dedos sensoriais se aproximam dos eletrodos, gerando detecção capacitiva. A mudança na capacitância entre os eletrodos fixos e a massa sísmica é usada para determinar a aceleração. Em termos práticos, o sensor detecta tanto forças estáticas como a gravidade quanto forças dinâmicas como vibrações.
Configuração do microcontrolador
O ESP32 conecta-se ao Wi-Fi e envia os dados do acelerômetro para uma API Python via requisições HTTP POST. O fluxo funciona assim:
- O ESP32 faz uma requisição GET para verificar se o servidor está pronto
- Se recebe resposta positiva, coleta 200 amostras por segundo (uma amostra a cada 5 milissegundos)
- Os valores X, Y e Z da aceleração são organizados em JSON e enviados via POST
- O servidor Python recebe os dados e salva em arquivos CSV
Na configuração do sensor, o range do acelerômetro fica em mais ou menos 4G (podendo medir até 16G) e a largura de banda do filtro em 260 Hz. O range define o tamanho da força que o sensor pode medir, enquanto a largura de banda determina o quão rápido ele consegue registrar mudanças de movimento. A combinação dos dois funciona quase como um ajuste de sensibilidade.
Introduzindo a anomalia
Para simular uma falha mecânica, um imã é fixado no cilindro metálico que faz o ar circular no ar-condicionado. Isso causa uma descalibragem proposital, fazendo o cilindro trepidar. Os dados são coletados em diferentes condições: operação normal em várias velocidades e operação com a anomalia inserida.
Análise exploratória dos dados
Com os dados coletados, a análise revela diferenças claras entre operação normal e anomalia.
Dados brutos
Na operação normal, o eixo Z mantém um nível constante em torno de 10g, enquanto os eixos X e Y ficam próximos de zero com linhas suaves. Na operação com anomalia, aparecem oscilações mais intensas em todos os eixos, com um padrão mais irregular.
Features estatísticas
Três características se destacam na separação entre normal e anomalia:
- Média: mostra o valor central das medições ao longo do tempo. Há uma separação clara, indicando que o nível médio de vibração durante anomalias é consistentemente diferente
- Variância: mede como os dados se dispersam em relação à média. As anomalias apresentam valores muito maiores, indicando vibrações mais intensas e irregulares
- Curtose: indica o quanto os dados se concentram em torno da média. Valores mais altos sugerem picos de vibração mais intensos e frequentes
Cada feature fornece uma perspectiva diferente. A média entrega uma visão geral de vibração, a variância revela a intensidade das oscilações e a curtose indica a presença de eventos extremos.
Transformada rápida de Fourier (FFT)
A FFT decompõe um sinal em suas frequências constituintes. Diferentes problemas mecânicos geram padrões de vibração em frequências específicas. Um rolamento com defeito pode gerar vibrações em uma frequência, enquanto um desbalanceamento pode gerar outra.
Nos dados coletados, a operação normal mostra um perfil de frequência suave e com baixa magnitude. A anomalia mostra picos em certas frequências, especialmente no eixo Z, onde a magnitude chega a 16 vezes o valor normal.
Treinamento do modelo
Preparação dos dados
O processo de preparação inclui:
- Carregar os CSVs de cada tipo de operação (normal e anomalia)
- Remover o DC (valor médio do sinal) para centralizar os dados em torno de zero, eliminando viés constante e efeitos da gravidade
- Adicionar ruído aleatório para aumentar a robustez durante o treino
Extração de features
Para cada eixo, cinco features são extraídas:
- Desvio padrão: variabilidade do sinal
- Curtose: formato da distribuição
- Amplitude máxima absoluta: maior valor registrado
- RMS (média quadrática): medida de energia do sinal
- Range: diferença entre valores máximos e mínimos
Distância de Mahalanobis e threshold
O algoritmo escolhido usa a distância de Mahalanobis para calcular o quão distante um ponto está da distribuição normal dos dados. Essa distância produz uma medida de quão estranho é um ponto em relação ao comportamento esperado.
Uma função complementar encontra o melhor limiar (threshold) para separar normal de anomalia usando validação cruzada. A abordagem é conservadora: falsos positivos são penalizados 5 vezes mais que falsos negativos, priorizando evitar alarmes falsos.
Resultados do modelo
A distribuição das distâncias de Mahalanobis mostra:
- Casos normais concentrados entre 2 e 6, com pico próximo a 3,5
- Anomalias concentradas entre 8,5 e 14, com pico em torno de 10
- Threshold definido em 5,71
Na matriz de confusão, o modelo acertou 86 de 100 predições: 47 verdadeiros normais, 39 verdadeiras anomalias, 3 falsos positivos e 11 falsos negativos. O modelo tende a ser mais conservador, preferindo classificar como normal os casos duvidosos.
No relatório de classificação:
- Normal: precisão de 81%, recall de 94%, F1 de 87%
- Anomalia: precisão de 93%, recall de 78%, F1 de 85%
- Acurácia geral: 86%
- AUC Score: 0,87
Inferência em tempo real
Atualização do sensor
Para a fase de inferência, o software do ESP32 é atualizado. A coleta passa para 100 amostras, organizadas como uma matriz 2D que corresponde ao formato de input esperado pelo modelo. Os dados são enviados para uma API de detecção de anomalias.
API com FastAPI
A API recebe os dados do acelerômetro, carrega o modelo treinado (contendo média, covariância e threshold) e executa o pipeline:
- Pré-processamento dos novos dados e remoção do DC
- Cálculo das features estatísticas por eixo
- Cálculo da distância de Mahalanobis para a nova amostra
- Cálculo de confiança considerando histórico recente
- Classificação como normal ou anomalia
Vale destacar que a distância de Mahalanobis aparece tanto no treino quanto na inferência, mas com propósitos diferentes. No treino, ela é usada para definir o threshold com dados rotulados. Na inferência, é calculada para cada nova amostra e comparada com o threshold já definido. No treino se calibra o sistema; na inferência se usa essa calibração para classificar.
Dashboard de monitoramento
Uma aplicação em React exibe o status da classificação em tempo real, com três métricas:
- Confidence: confiança do modelo na classificação atual
- Distância de Mahalanobis: calculada para os dados recebidos
- Threshold: limite constante que define quando algo é considerado anomalia
O gráfico mostra a evolução temporal dessas métricas, permitindo acompanhar o comportamento do sistema.
Possibilidades de evolução
O projeto demonstra um fluxo completo, mas várias evoluções são possíveis:
- Treinar uma rede neural com mais dados para maior sofisticação
- Mapear peças internas do equipamento para identificar a origem da anomalia
- Combinar dados do acelerômetro com giroscópio para aumentar a precisão
- Projetar hardware dedicado com PCB customizada
- Separar os componentes da API de forma mais organizada
Conclusão
Um projeto assim não garante uma vaga de trabalho, mas funciona como treino e pode chamar a atenção em meio a milhares de candidaturas. O diferencial está em cobrir toda a cadeia do problema: desde o entendimento do hardware e coleta de dados, passando pela análise exploratória e treinamento do modelo, até a inferência em tempo real com dashboard de monitoramento.
Dev + Eficiente
Desenvolva software de alta qualidade e domine Engenharia de IA com o Dev + Eficiente. Cursos práticos, acesso vitalício, comunidade ativa e acesso a vagas remotas exclusivas em diversas empresas de tecnologia. Sua jornada para se tornar um dev mais eficiente pode começar agora.
Top comments (0)