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:
- o operador põe a peça sob a câmera e aperta ENTER no laptop;
- a placa Raspberry Pi captura a foto e a guarda no dataset (
capturas/inspecao/); - o laptop baixa a foto, alinha a peça na pose de referência e compara com o modelo;
- o terminal do laptop mostra o veredito — APROVADA, SUSPEITA ou INDETERMINADA;
- 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

| 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 |

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 | — |

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.

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

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:
- escurecer o gabarito (preto fosco) e difundir a luz, isolando a bancada da janela;
- refazer o portão de 10 fotos e exigir IoU ≥ 0,95 entre recolocações;
- 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;
- 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