Olá, Ronaldo. Como vai?
Muito bacana você compartilhar o seu código da atividade no fórum! Isso ajuda bastante outros alunos que estão acompanhando o curso e podem querer um exemplo prático de como a implementação funciona no Google Colab.
O seu script está excelente e segue perfeitamente o fluxo de trabalho de visão computacional utilizando modelos pré-treinados no Keras. Para agregar um pouco mais ao seu tópico e detalhar para outros alunos o porquê de o seu código funcionar tão bem, vale destacar alguns pontos importantes da sua lógica:
- Redimensionamento: O uso da função cv2.resize ajustando a imagem para o tamanho (224, 224) é um passo obrigatório. A arquitetura da rede neural MobileNetV2 foi projetada e treinada no dataset ImageNet recebendo imagens com essas dimensões exatas.
- Expansão de Dimensões: A linha utilizando np.expand_dims resolve um erro muito comum. O modelo no TensorFlow não espera receber uma única imagem, mas sim um lote (batch) de imagens. Ao usar esse comando, você transforma a estrutura da imagem de (224, 224, 3) para (1, 224, 224, 3), simulando um lote de uma única imagem.
- Normalização: A função preprocess_input aplica as mesmas transformações matemáticas nos pixels da sua imagem que foram aplicadas nas imagens originais durante o treinamento do modelo, garantindo precisão na predição.
Como sugestão para expandir ainda mais esse seu código em projetos futuros, você pode listar as top 3 previsões do modelo em vez de apenas a principal. O método decode_predictions aceita um parâmetro chamado top. Veja como ficaria:
label = decode_predictions(predicoes, top=3)
print("Top 3 previsões:")
for previsao in label[0]:
print("Objeto:", previsao[1], "- Confiança:", previsao[2])
Dessa forma, o modelo exibe outras possibilidades caso a imagem tenha mais de um elemento ou seja ambígua. Parabéns pela dedicação e por compartilhar seu conhecimento.
Espero que possa ter lhe ajudado!