Arquitetura do Processo
Aqui está o roteiro técnico para realizar a classificação:
1. Preparação do Ambiente
import numpy as np
from tensorflow.keras.applications import mobilenet_v2
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
2. Execução dos PassosPasso 1:
Carregar e preparar a imagemO modelo exige um formato específico. Além do tamanho $224 \times 224$, precisamos transformar a imagem em um "array" numérico.
# Supondo que sua imagem se chame 'objeto.jpg'
img_path = 'objeto.jpg'
img = image.load_img(img_path, target_size=(224, 224))
# Convertendo a imagem para um array de números
x = image.img_to_array(img)
# Adicionando uma dimensão extra (o modelo espera um 'batch' de imagens)
x = np.expand_dims(x, axis=0)
Passo 2 e 3: Carregar o Modelo e Pré-processamento
O MobileNetV2 espera que os pixels (que variam de 0 a 255) sejam normalizados (geralmente entre -1 e 1). A função preprocess_input faz isso automaticamente.
# Carregando o modelo com pesos do ImageNet
model = mobilenet_v2.MobileNetV2(weights='imagenet')
# Pré-processamento específico do MobileNetV2
x = preprocess_input(x)
# Fazendo a previsão
predictions = model.predict(x)
3. Exibição do Resultado
O modelo retorna uma lista de probabilidades. Usamos decode_predictions para transformar esses números em nomes de classes compreensíveis.
# Decodificando os resultados para as 3 categorias mais prováveis
results = decode_predictions(predictions, top=3)[0]
print("Resultados da Classificação:")
for i, (imagenet_id, label, score) in enumerate(results):
print(f"{i + 1}: {label} ({score * 100:.2f}%)")
Código para Upload e Carregamento
from google.colab import files
from tensorflow.keras.preprocessing import image
import matplotlib.pyplot as plt
import numpy as np
# 1. Faz o upload do arquivo
uploaded = files.upload()
for filename in uploaded.keys():
# 2. Carrega a imagem redimensionando para 224x224
img = image.load_img(filename, target_size=(224, 224))
# 3. Exibe a imagem para conferência
plt.imshow(img)
plt.axis('off')
plt.show()
# 4. Converte para array e prepara a dimensão (Batch size)
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
print(f"Imagem '{filename}' carregada com sucesso e convertida para o formato {x.shape}!")
Ao carregar a imagem, estamos transformando uma percepção visual em uma estrutura de dados matemática que a rede neural consegue processar:
Redimensionamento: O MobileNetV2 foi treinado com entradas fixas. Se você enviar uma foto 4K, o passo target_size=(224, 224) vai "esmagá-la" para o tamanho correto.
Canais de Cor (RGB): A imagem é lida como uma matriz de três camadas (Vermelho, Verde e Azul).
Expansão de Dimensão (expand_dims): Modelos de Deep Learning esperam receber um "lote" (batch) de imagens. Mesmo que você envie apenas uma, o modelo espera o formato (1, 224, 224, 3). O número 1 indica que há uma imagem no pacote.