0
respostas

Classificação de Imagens com MobileNetV2

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.