RaspCam — Experimento de inspeção em bancada (smoke test)

Data 25/09/2026 (rodada 6 às 07h38)
Natureza Protótipo não funcional — prova de conceito / smoke test
Peça protetor térmico em chapa de aço polido, 250 mm na maior dimensão
Modelo modelos/v0.npz — 20 peças boas, quadro de 1280 px, treinado com fotos de 07/08/2026
Processamento estação de trabalho (laptop): alinhamento, modelo e veredito
Captura placa Raspberry Pi com câmera, usada apenas como interface de captura
Programa ferramentas/veredito.py, executado no laptop
Registro vídeo experimento.mp4 (79 s, 848 × 478, H.264)

⚠ Protótipo não funcional, usado como prova de conceito (smoke test). Este experimento não mede o desempenho do sistema. Ele só verifica se o ciclo completo, da captura ao laudo, roda de ponta a ponta sem intervenção manual. O ensaio foi feito em ambiente não controlado, com luz natural, sem gabarito e com um escritório em uso ao redor. Por isso, o modelo não é confiável e nenhum veredito deste documento deve ser usado para aprovar ou reprovar peça real.


1. Objetivo

Um smoke test responde a uma pergunta mais modesta do que "o sistema funciona bem?". A pergunta é: "as partes se conectam e o fluxo chega ao fim?". Neste caso, o fluxo verificado foi:

  1. o operador põe a peça sob a câmera e aperta ENTER no laptop;
  2. a placa Raspberry Pi captura a foto e a guarda no dataset (capturas/inspecao/);
  3. o laptop baixa a foto, alinha a peça na pose de referência e compara com o modelo;
  4. o terminal do laptop mostra o veredito — APROVADA, SUSPEITA ou INDETERMINADA;
  5. se houver suspeita, o laptop grava o mapa de calor em laudo/bancada/.

Em linguagem de teste: o que se avaliou foi integração, não acurácia.

1.1 Divisão de trabalho: laptop e placa

Todo o processamento do modelo acontece na estação de trabalho (laptop). A placa Raspberry Pi com a câmera é apenas a interface de captura: ela recebe o pedido, tira a foto, guarda e entrega a imagem pela rede. Ela não executa alinhamento, modelo nem veredito.

Placa Raspberry Pi + câmera Estação de trabalho (laptop)
Papel interface de captura processamento e decisão
Faz captura a foto (2592 × 1944), guarda no dataset, serve a imagem pela página web baixa a foto, segmenta, alinha, aplica o modelo v0, emite o veredito e grava o laudo
Não faz nenhum processamento de visão computacional —

A divisão foi imposta pelo hardware. A placa não tem OpenCV instalado e opera com cerca de 120 MB de RAM livres, o que não comporta o processamento. O laptop se comunica com ela pela API web, com login, pela rede local.


2. Vídeo do experimento

Vídeo: experimento.mp4 (na mesma pasta deste relatório).


3. Arranjo da bancada

Bancada: câmera no tripé (captura), monitor com a página de captura, laptop com o veredito (processamento)
Bancada: câmera no tripé (captura), monitor com a página de captura, laptop com o veredito (processamento)
Elemento Situação no ensaio
Captura (interface) Raspberry Pi com câmera CSI (2592 × 1944) num tripé, apontada para baixo
Processamento laptop rodando veredito.py: modelo, alinhamento, veredito e laudo
Acompanhamento monitor com a página web da placa mostrando a imagem ao vivo
Peça apoiada direto na mesa de madeira, sem gabarito de posição
Luz natural, de janela, sem difusor
Entorno escritório em uso, com móveis, objetos e pessoas no campo de reflexão da chapa
O entorno da bancada: escritório aberto, sem nenhum isolamento de luz
O entorno da bancada: escritório aberto, sem nenhum isolamento de luz

A chapa polida reflete o ambiente como um espelho. Tudo o que muda ao redor (luz da janela, uma pessoa passando, um objeto sobre a mesa) altera o brilho da peça na foto. É esse o sentido de "ambiente não controlado" neste relatório.


4. O que acontece no vídeo

Tempo Evento Saída no terminal do laptop
0–25 s panorama da bancada; o terminal mostra as rodadas 4 e 5, com a peça sem defeito APROVADA (IoU 0,910 e 0,908)
30–39 s uma tira de fita preta é colocada sobre a chapa, simulando um defeito —
42–55 s a peça volta para baixo da câmera; a fita aparece na imagem ao vivo —
58 s rodada 6 SUSPEITA — 1 região, 3,75% da peça, z = 13,9 → 006-suspeita.jpg
60–68 s o arquivo 006-suspeita.jpg (25/09/2026 07:38) é aberto no Explorador —
70–79 s mapa de calor exibido: a caixa vermelha cerca a fita —
Fita preta colocada sobre a chapa como defeito simulado
Fita preta colocada sobre a chapa como defeito simulado

As rodadas consideradas neste relatório:

Rodada Peça Veredito Detalhe
4 sem defeito APROVADA IoU 0,910
5 sem defeito APROVADA IoU 0,908
6 com fita preta SUSPEITA 1 região, 3,75% da peça, z = 13,9 → 006-suspeita.jpg

O IoU mede o quanto a silhueta da peça na foto se sobrepõe à do modelo depois do alinhamento. O corte é 0,80. As duas rodadas sem defeito ficaram acima dele e não tiveram nenhuma região acusada.

Terminal do laptop com o veredito da rodada 6
Terminal do laptop com o veredito da rodada 6

5. Resultado da última execução (rodada 6)

Mapa de calor da rodada 6: a caixa vermelha cerca a fita preta, z = 13,9
Mapa de calor da rodada 6: a caixa vermelha cerca a fita preta, z = 13,9

Arquivo: laudo/bancada/006-suspeita.jpg, gerado no laptop. A peça aparece já girada para a pose de referência. O mapa de calor mostra, pixel a pixel, quanto a foto se afasta do que o modelo aprendeu nas peças boas.

Na tela O que significa
1 região uma única mancha passou dos dois limiares ao mesmo tempo
3,75% da peça ~1.170 mm², estimados pela área da peça. É compatível com uma tira de fita de 19 mm por ~60 mm
z = 13,9 a região está 13,9 desvios-padrão fora do normal. O limiar é 4,0

Do ponto de vista do smoke test, este é o resultado que importa. O fluxo completo rodou: captura na placa, download para o laptop, alinhamento, comparação, veredito e laudo gravado. E a caixa vermelha caiu no lugar exato do objeto estranho, que o sistema nunca tinha visto. A detecção de anomalia se comportou como se espera: ela não reconhece "fita", só aponta o que não se parece com as peças boas.

Isso confirma o ensaio de 28/08, que teve 2,51% da peça e z = 8,6 com o mesmo tipo de defeito simulado.


6. Por que o modelo não é confiável

Três rodadas com o resultado esperado não tornam o modelo confiável. As manchas azuis e verdes espalhadas pela chapa no mapa de calor da rodada 6, fora da fita, são regiões onde o brilho já foge do padrão só porque a luz mudou. Nesta rodada elas ficaram abaixo dos limiares, mas estão lá.

Nas 10 peças boas de reserva do próprio modelo v0, fotografadas no dia do treino, 4 ficam abaixo do corte de IoU 0,80 e seriam recusadas por pose:

v0-reserva: 0,829  0,782  0,875  0,877  0,893  0,866  0,767  0,752  0,911  0,798
Fator Efeito
Ambiente não controlado (luz de janela, escritório ao redor) a chapa espelhada muda de brilho entre fotos da mesma peça
Modelo treinado em outro dia, com outra luz (07/08) o "normal" aprendido já não corresponde à cena de hoje
Sem gabarito de posição a pose varia a cada recolocação e o alinhamento por software nem sempre fecha
Amostra mínima: 3 rodadas, 1 defeito não há base estatística para taxa de acerto nenhuma
Defeito simulado (fita preta sobre a chapa) é um contraste forte e grande, muito mais fácil que uma trinca ou um risco reais

Resumindo: o sistema acha um objeto escuro grande sobre a chapa, mas não há como afirmar, com este ensaio, que ele acharia um defeito real ou que não acusaria reflexo como defeito. Serve para demonstrar a ideia, não para inspecionar.


7. Fase atual do projeto

O objetivo do RaspCam é montar um dataset de peças para visão computacional e, sobre ele, fazer inspeção automática de defeitos com detecção de anomalia. Esse método aprende só com peças boas, porque peça defeituosa é rara por definição.

Etapa Situação
Placa, câmera e sistema web de captura (login, arquivos, Wi-Fi pela página) concluída
Coleta do dataset (capturas/<classe>/) em uso
Recorte da peça no fundo validado: 40/40 com --polaridade clara
Alinhamento na pose canônica e modelo de anomalia (v0), no laptop implementado, com confiabilidade limitada (seção 6)
Veredito operacional na bancada (veredito.py, inspetor.py) implementado — objeto deste smoke test
Bancada controlada (gabarito, luz difusa, fundo) pendente — é o gargalo atual
Medição de falso positivo e falso negativo com peças de refugo pendente, depende da bancada

No portão de bancada de 28/08, o caixilho de pinus claro foi segmentado junto com a peça, e o IoU de 0,816 media o caixilho, não a repetibilidade da pose. Os próximos passos, nesta ordem:

  1. escurecer o gabarito (preto fosco) e difundir a luz, isolando a bancada da janela;
  2. refazer o portão de 10 fotos e exigir IoU ≥ 0,95 entre recolocações;
  3. recoletar as peças boas e treinar um novo modelo na bancada controlada, com duas iluminações (difusa e rasante) e quadro de 1280 px;
  4. medir falso positivo nas peças boas de reserva e falso negativo nas de refugo, antes de ajustar qualquer limiar.

8. Conclusão

O smoke test passou no que se propôs. O ciclo completo da bancada roda num ENTER: a placa captura e grava a foto no dataset, e o laptop processa e produz um laudo que aponta o lugar da anomalia. A arquitetura, com a placa como interface de captura e o processamento na estação de trabalho, está validada como caminho.

O experimento não valida o modelo. O protótipo é não funcional para uso real, o ensaio foi feito em ambiente não controlado e três rodadas não são base para medir acerto. A confiabilidade depende da bancada controlada da seção 7, não de ajuste de parâmetros.


9. Arquivos e reprodução

Arquivo Conteúdo
experimento.mp4 vídeo do ensaio
imagens/06-resultado-006-suspeita.jpg laudo da rodada 6 (cópia de laudo/bancada/006-suspeita.jpg, no laptop)
imagens/01 a 04 quadros extraídos do vídeo (47 s, 33 s, 36 s e 58 s)
placa: ~/raspcam/capturas/inspecao/20260925-*.jpg fotos originais de cada rodada (2592 × 1944)

Para repetir o ensaio, no laptop, na raiz do projeto e com a placa ligada:

python ferramentas\veredito.py modelos\v0.npz --usuario admin