Construa um Reconhecedor de Dígitos no Raspberry Pi com TensorFlow e OpenCV
Descubra como treinar uma rede neural convolucional profunda para transcrever dígitos manuscritos e implantá-la em um Raspberry Pi usando a Pi Camera, OpenCV e TensorFlow.
Visão Geral
Neste projeto, percorreremos todo o pipeline de IA: desde a preparação dos dados e treinamento do modelo em um laptop, até o reconhecimento de dígitos em tempo real na câmera do Pi. A solução utiliza Scikit-Learn e OpenCV 3.3 para manipulação de imagens, e Keras (com backend TensorFlow) para o componente de aprendizado profundo.
Usamos o dataset MNIST — 60.000 imagens de treino e 10.000 de teste de dígitos em escala de cinza 28×28 pixels. Imagens capturadas pela câmera do Pi são pré-processadas para corresponder a esse formato antes de serem alimentadas na rede treinada.
A arquitetura da rede é uma pilha convolucional padrão seguida por uma camada totalmente conectada de saída com dez neurônios, cada um representando um dígito (0–9).
Uma vez treinado o modelo, os pesos são transferidos para o Raspberry Pi. Um script Python leve captura um quadro, aplica conversão para escala de cinza, limiarização, redimensionamento, inversão e, em seguida, realiza a inferência.
Configuração de Hardware
Para a demonstração, montei a Pi Camera em um suporte improvisado — um simples suporte de mão que mantinha a câmera focada em um único dígito. Na prática, um suporte fixo ou um pequeno gabinete pode melhorar a estabilidade.
Instalação de Software
Crie um ambiente virtual Python no Pi e instale as bibliotecas necessárias. Os comandos abaixo assumem que você tem um Raspberry Pi OS funcional e Python 3.7+.
source ~/.profile workon cv python PiCameraApp.py --picamera 1
Instalar TensorFlow
pip install tensorflow
Instalar Keras
pip install keras
Instalar OpenCV 3.3
O OpenCV deve ser compilado a partir do fonte para habilitar otimizações completas no Pi. Um guia passo a passo está disponível no PyImageSearch.
https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/
Por fim, instale a biblioteca PiCamera com otimizações NumPy:
pip install "picamera[array]"
Treinamento do Modelo
Execute o script de treinamento em um laptop (preferencialmente com GPU). O script define a CNN no Keras, compila, treina nos dados MNIST, valida o desempenho e salva os pesos em model_weights.h5.
python Train_MNIST.py
Se você tiver uma GPU NVIDIA, instale o TensorFlow com suporte a GPU e drivers CUDA para acelerar o treinamento. Sem GPU, o processo ainda será concluído, embora leve mais tempo.
Após o treinamento, transfira model_weights.h5 para o Pi via scp ou WinSCP.
Reconhecimento de Dígitos em Tempo Real
Inicie o script de reconhecimento no Pi. O programa captura um quadro quando você pressiona t e encerra com q. A precisão depende principalmente da iluminação, ângulo e clareza da escrita. Resultados típicos alcançam >95% de precisão em dígitos limpos e de alto contraste.
Pipeline de Pré-processamento de Imagem
- Capture quadro RGB como array NumPy.
- Converta para escala de cinza (descarte dois canais de cor).
- Escale valores de pixel para inteiros de 8 bits (0–255).
- Aplique limiarização de Otsu para obter imagem preto-e-branco limpa.
- Redimensione para 28×28 pixels — a forma de entrada do MNIST.
- Inverta cores para que dígitos fiquem brancos sobre fundo preto, correspondendo aos dados de treino.
- Aplane a imagem e alimente no modelo carregado.
O modelo produz um vetor de probabilidade de comprimento dez. O índice com a maior probabilidade é o dígito previsto.
Principais Conclusões
Este exemplo demonstra um fluxo de trabalho completo de ponta a ponta: preparação de dados, treinamento de modelo, implantação e inferência em um computador de placa única. O código está disponível no GitHub para quem quiser experimentar ou estender o sistema.
Referências
Fonte: AI Digit Recognition with PiCamera
Processo de manufatura
- Acceed IGS‑9822DGP: Switch Gigabit de 12 Portas com 4 Portas SFP – Solução de Rede Industrial de Alto Desempenho
- AAEON e Intel Entregam FWS-8600: Appliance de Rede 2U de 40 Núcleos com Vazão de 400 Gbps
- Lanner Aprimora Appliances de Rede com Processadores Intel Xeon Scalable de 2ª Geração
- Como Ler Temperatura com DS18B20 no Raspberry Pi 2
- Medição de Temperatura no Raspberry Pi com Sensores Maxim 1‑Wire e Bridge I2C DS2482
- Monitoramento Preciso de Temperatura em Closet de Servidores com Raspberry Pi
- Posture Pal com Walabot – Monitoramento de Distância em Tempo Real para Evitar Dor no Pescoço e Costas
- Primeiros Passos com TJBot: Construa, Configure e Controle por Voz seu Próprio Robô de IA
- Construa um Segway Auto-Equilibrado com Raspberry Pi
- Estendendo GoPiGo v2 no Windows 10 IoT Core para Raspberry Pi 3