Classificação de Imagens com Rubix ML: No artigo anterior, abrimos os “olhos” do PHP ao aprender como transformar pixels em vetores matemáticos. Agora, vamos elevar o nível: vamos ensinar a sua aplicação não apenas a enxergar, mas a entender e categorizar o que está vendo.
Como desenvolvedor especialista em Rubix ML, preparei este décimo oitavo artigo para mergulharmos na Classificação de Imagens. Vamos construir um sistema capaz de distinguir entre diferentes tipos de arquivos e validar documentos automaticamente — uma funcionalidade que pode economizar centenas de horas de trabalho manual.
Visão Computacional 2: Classificação de Imagens e Validação Automática de Documentos
Classificação de Imagens com Rubix ML: A classificação de imagens é o processo onde um algoritmo atribui uma etiqueta (label) a uma imagem de entrada com base em seu conteúdo visual. Enquanto no artigo 17 focamos na extração (a matéria-prima), aqui focaremos no julgamento. Para um sistema de recrutamento e seleção, isso significa automação de ponta: o sistema pode saber, no momento do upload, se o candidato enviou um currículo, um RG ou uma foto de paisagem por engano.
1. O Pipeline de Classificação de Imagens
Para classificar imagens com sucesso no Rubix ML, seguimos um fluxo de trabalho rigoroso. A imagem passa por uma “esteira de produção” antes de chegar ao classificador final:
- Redimensionamento Estrito: Todas as imagens devem ter o mesmo tamanho (ex: 64×64 pixels).
- Conversão de Espaço de Cor: Dependendo do caso, converter para escala de cinza pode remover ruídos desnecessários.
- Vetorização: A transformação da matriz 2D de pixels em um vetor 1D.
- Treinamento do Classificador: Onde algoritmos como Random Forest, SVC ou Multi-Layer Perceptron aprendem os padrões.
2. Validação Automática de Documentos
Imagine que uma solução de recrutamento e seleção exija que candidatos a vagas de motorista enviem uma foto da CNH. Receber 1000 fotos e conferir uma a uma se são realmente CNHs é ineficiente. Com Rubix ML, podemos criar um validador automático.
O conceito de “Assinatura Visual”
Documentos oficiais possuem uma estrutura visual constante (cores específicas, posição de fotos, faixas de segurança). O modelo de Machine Learning aprende essa “assinatura”. Se o upload não corresponder ao padrão aprendido, o sistema rejeita o arquivo instantaneamente.
3. Mão na Massa: Classificando Documentos vs. Fotos de Perfil
Vamos criar um código que treina um modelo para diferenciar três categorias: foto_perfil, documento_cnh e arquivo_invalido.
Passo 1: Preparando o Dataset Labeled
Nesta fase, você precisaria de uma pasta com exemplos reais de cada categoria.
PHP
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\PersistentModel;
use Rubix\ML\Persisters\Filesystem;
use Rubix\ML\Pipeline;
use Rubix\ML\Transformers\ImageResizer;
use Rubix\ML\Transformers\ImageVectorizar;
use Rubix\ML\Transformers\ZScaleStandardizer;
use Rubix\ML\Classifiers\RandomForest;
// Supondo que você carregou as imagens usando GD ou ImageMagick
$samples = [
[imagecreatefromjpeg('exemplos/perfil1.jpg')],
[imagecreatefromjpeg('exemplos/cnh1.jpg')],
[imagecreatefromjpeg('exemplos/aleatorio1.jpg')],
];
$labels = ['foto_perfil', 'documento_cnh', 'invalido'];
$dataset = new Labeled($samples, $labels);
/**
* Pipeline de Visão Computacional Avançada
*/
$estimator = new Pipeline([
new ImageResizer(64, 64), // Padroniza o tamanho
new ImageVectorizar(), // Transforma em números
new ZScaleStandardizer(), // Normaliza a escala
], new RandomForest(100)); // O "Cérebro" que classifica
echo "Iniciando o treinamento visual..." . PHP_EOL;
$estimator->train($dataset);
// Persistindo para uso futuro (Artigo 11)
$model = new PersistentModel($estimator, new Filesystem('validador_documentos.rbx'));
$model->save();
4. Como Validar o Upload em Tempo Real
No seu sistema em PHP, no momento em que o arquivo chega ao servidor Hostinger, você invoca o modelo:
PHP
// Carrega o "olho treinado"
$model = PersistentModel::load(new Filesystem('validador_documentos.rbx'));
// Processa o upload atual
$upload = [imagecreatefromjpeg($_FILES['doc']['tmp_name'])];
$prediction = $model->predictSample($upload);
if ($prediction === 'documento_cnh') {
echo "✅ Documento validado com sucesso!";
} else {
echo "❌ O arquivo enviado não parece ser uma CNH válida.";
}
5. Superando Desafios: Iluminação e Rotação
Na vida real, os usuários enviam fotos ruins. Para tornar sua Classificação de Imagens de elite, você deve aplicar técnicas de Data Augmentation (Aumento de Dados):
- Distorções Leves: Treine o modelo com versões levemente rotacionadas ou escurecidas dos mesmos documentos.
- Filtros de Borda (Sobel): Às vezes, o formato das linhas de um documento é mais importante do que a cor. Usar filtros de detecção de bordas ajuda a IA a focar na estrutura.
- Redução de Ruído: Use o transformer
GaussianSmootherpara “limpar” fotos granuladas antes da classificação.
6. Escalabilidade e Performance na Hostinger
Classificar imagens é uma tarefa intensiva. Como especialista, recomendo:
- Thumbnail First: Nunca passe a imagem original (4K) para o Rubix ML. O
ImageResizerdeve ser seu melhor amigo. Trabalhar com 64×64 ou 128×128 é o “sweet spot” entre precisão e velocidade. - Fila de Processamento: Se o volume for alto, use o sistema de filas do CakePHP ou Laravel. O usuário faz o upload, e a resposta “Documento em análise” aparece enquanto o Worker processa a imagem em background.
- Extensão Tensor: Repito a importância: para vetores de imagem (que são grandes), a extensão
tensorpara PHP reduz o tempo de predição de segundos para milissegundos.
Conclusão: O PHP como Sentinela Visual
Classificação de Imagens com Rubix ML: A Classificação de Imagens com Rubix ML remove a última barreira entre o software web tradicional e a Inteligência Artificial moderna. Aprendemos que é possível — e prático — criar validadores automáticos de documentos e classificadores de fotos diretamente em PHP.
Para um processo de recrutamento e seleção, isso significa um processo de triagem muito mais limpo e profissional. Para um blog, significa a capacidade de organizar ativos visuais com inteligência. Você não está apenas desenvolvendo sites; está construindo sistemas que “entendem” o mundo físico através dos arquivos que recebem.
No próximo artigo, entraremos no nível mais profundo da nossa trilha: “Redes Neurais no PHP: Introdução ao Multi-Layer Perceptron (MLP) e camadas ocultas.” Prepare-se, porque o jogo vai ficar ainda mais sério!
Mas antes de dominar o Rubix ML, se este for o seu caso, entendemos que toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo esta poderosa biblioteca. Para iniciar seus estudos do Rubix ML, você precisará dominar as seguintes tecnologias e/ou framework:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados.
Dica de Especialista: Quer impressionar um cliente em Rio Preto? Crie um validador que detecta se o candidato está sorrindo na foto de perfil usando detecção de padrões de “curvatura de boca”. É simples de treinar e o impacto visual é enorme!









