Como treinar um modelo de IA no navegador sem instalar nada
A primeira vez que usei o Google Teachable Machine foi numa oficina de educação tecnológica em São Paulo, em 2021. Eu precisava que os alunos entendessem o conceito de classificação de imagens sem escrever uma linha de Python. O professor pediu para eu mostrar algo que funcionasse na hora, e eu apontei para o notebook dele que já estava aberto no Chrome. O problema é que o nome oficial do produto é "Teachable Machine", mas o Google costuma indexar páginas com variações como google me ensina a ler quando usuários buscam por erros de digitação ou associações informais. Isso significa que se você pesquisar esse termo, provavelmente cairá em tutoriais sobre como ensinar crianças a ler com recursos do Google, e não no que realmente interessa.
google me ensina a ler: por que essa busca não funciona para o que você quer
Eu caí nessa armadilha várias vezes. Quando escrevi meu primeiro tutorial sobre o Teachable Machine para um blog, passei dois dias tentando rankear para variações de busca porque o Google entende "ensina a ler" como algo educacional para alfabetização, não para machine learning. A lição que levei: o Teachable Machine é uma ferramenta para criar modelos de classificação de imagens, áudio e poses corporais diretamente no navegador, sem backend, sem TensorFlow instalado, sem GPU. O fluxo real é simples mas tem detalhes que ninguém conta nos vídeos de YouTube. Você vai em teachablemachine.withgoogle.com, escolhe o tipo de projeto, coleta amostras dando exemplos positivos e negativos, clica em Train Model, e depois testa em tempo real usando a webcam ou um arquivo de áudio. O modelo é exportado como TensorFlow Lite para mobile ou como formato keras para uso em projetos maiores.
O que as pessoas não entendem é que o Teachable Machine usa transfer learning com MobileNetV2 como backbone para classificação de imagens. Isso significa que o modelo já veio pré-treinado com 1.4 milhões de imagens do ImageNet, e você só ajusta as camadas finais com seus próprios dados. Em prática, isso funciona bem quando você tem entre 20 e 200 exemplos por classe, mas começa a falhar de forma silenciosa quando vai para mais de 500 classes com poucos exemplos cada. Eu aprendi isso na prática quando tentei classificar 12 tipos diferentes de folhas de plantas com apenas 15 fotos de cada — o modelo dava 97% de accuracy no teste interno e 43% num arquivo que eu mesmo tirara no dia seguinte com iluminação diferente. O workaround que eu uso hoje é criar grupos de classes com pelo menos 50 exemplos cada, fazer augmentation básica manualmente girando e ajustando brilho das imagens antes de subir, e depois rodar um threshold de confiança de 0.7 em vez de confiar cegamente no predicted class que o modelo mostra. O próprio Teachable Machine não expõe o confidence score na interface padrão, então você precisa exportar o modelo e rodar o teste via API customizada ou no TensorFlow.js diretamente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Limitações reais que ninguém fala
O maior problema do Teachable Machine é que ele não processa dados sequenciais bem. Para classificação de áudio, o modelo converte o arquivo para spectrogram e trata como imagem, o que funciona para sons curtos como palmas e batidas de porta mas falha completamente para reconhecer palavras ou frases. Eu tentei usar para um projeto de detecção de comandos de voz em português e o modelo confundia "liga" com "desliga" porque ambos têm energia similar no spectrogram — a diferença está na transição entre formantes que o MobileNetV2 não foi treinado para capturar. Outro problema é o tempo de inferência. Modelos exportados do Teachable Machine rodam em cerca de 80-120ms por frame na CPU de um laptop comum, mas se você coloca mais de 5 classes com 100+ exemplos cada, o tempo sobe para 200-400ms e a interface começa a travar. Para produção real, eu recomendo exportar o modelo e rodar com TFLite Optimization no Edge TPU ou em um servidor com GPU dedicada, ou então usar o TensorFlow Hub diretamente com um pipeline customizado que faça batching de 8-16 samples por vez.
O Teachable Machine também não suporta fine-tuning de todo o modelo, só das camadas finais. Se você precisa de accuracy acima de 95% em um domínio específico como diagnóstico médico ou classificação de defeitos industriais, vai precisar treinar do zero com um dataset maior ou usar um modelo pré-treinado do TensorFlow Hub e ajustar todo o backbone, não só o classificador final. Eu perdi uma semana tentando ajustar o Teachable Machine para classificar trincas em concreto e cheguei à conclusão de que o modelo não tinha capacidade representacional suficiente para capturar padrões sutis de textura — migrei para um ResNet50 finetuned com 10.000 imagens e a accuracy subiu de 78% para 94% em duas horas de treinamento em GPU.
Como exportar e usar em produção
Depois de treinar, você tem quatro formatos de exportação: TensorFlow SavedModel para Python, TensorFlow Lite para mobile, TensorFlow.js para browser, e Keras model para uso em frameworks que suportam o formato. O SavedModel é o mais completo mas o arquivo fica em torno de 80-120MB dependendo do número de classes. O TFLite é o mais enxuto, cerca de 15-30MB, e roda em 10-30ms por inferência em dispositivos Android modernos. Eu uso o TensorFlow.js quando preciso de inferência no browser do usuário sem enviar dados para um servidor — isso é útil para aplicações de privacidade onde você não pode enviar imagens da webcam para um backend. O código é simples: carrega o modelo com tf.loadLayersModel(), passa o frame da webcam via tf.browser.fromPixels(), e roda model.predict() com um shape de entrada de [1, 224, 224, 3] para classificação de imagens. O tempo total de pipeline é cerca de 150-250ms no Chrome de um notebook comum, o que é aceitável para aplicações interativas mas lento demais para streaming de vídeo em tempo real.
Se você quer usar o modelo em um aplicativo React Native ou Flutter, o caminho mais prático é exportar como TFLite e rodar com o plugin tflite_flutter no Flutter ou com o TensorFlow Lite Android SDK no React Native. O modelo roda em 20-50ms por frame na CPU do dispositivo, e você pode adicionar quantização de int8 para reduzir o tamanho para 4-8MB e ganhar mais 10-20ms de velocidade, embora a accuracy caia em torno de 2-5% dependendo do dataset. O que eu mais recomendo para quem está começando é usar o Teachable Machine como protótipo rápido para validar uma ideia antes de investir em treinamento customizado. Eu gasto cerca de 15-30 minutos criando um modelo básico que já dá uma noção se a abordagem de classificação é viável, e só depois migro para um pipeline profissional quando a validação é positiva. Isso corta o tempo de experimentação de dias para horas e evita que você gaste semanas treinando um modelo que nunca ia funcionar bem no domínio real.