Font size
  • A-
  • A
  • A+
Site color
  • R
  • A
  • A
  • A
Skip to main content
AI4VET AI4VET
  • Home
  • Calendar
  • More
You are currently using guest access
Log in
AI4VET
Home Calendar
Expand all Collapse all
  1. AI/ML Fundamentals
  2. AIML-PT
  3. 2. Machine Learning (PT)
  4. Exercício 2.B: Conjuntos de dados populares - ImageNet

Exercício 2.B: Conjuntos de dados populares - ImageNet

colab

Conjunto de dados ImageNet

O projeto ImageNet é um grande banco de dados visual para pesquisa de software de reconhecimento de objetos visuais. A ideia deste projeto foi concebida há mais de 15 anos pelo investigador de IA Fei-Fei Li. A equipa da ImageNet apresentou o seu conjunto de dados pela primeira vez em 2009.

Keras vem junto com muitos modelos de classificação pré-treinados. A partir da versão 2.11 do Keras, existem 19 modelos pré-treinados diferentes disponíveis, onde algumas versões também contêm muitas variantes. A lista de modelos pode ser encontrada aqui. Aqui usaremos os seguintes modelos pré-treinados para fazer previsões em várias imagens de teste de amostra.

- VGG16

- ResNet50

- InceptionV3

AI Image Recognition é o processo de usar inteligência artificial para identificar e categorizar objetos dentro de uma imagem, uma tarefa que, embora intuitiva para humanos, é complexa para máquinas devido ao poder de processamento significativo necessário.

Aqui está um exercício simples do Jupyter Notebook para que os alunos realizem a classificação de imagens usando um modelo pré-treinado no conjunto de dados do ImageNet. Este exercício irá guiá-los através do carregamento de um modelo pré-treinado, fazendo previsões e visualizando os resultados.

Exercício: Classificação de imagens com o ImageNet

Etapa 1: Configuração

%pip install torch torchvision matplotlib

Etapa 2: Importar bibliotecas

import torch
import torchvision.transforms as transforms
from torchvision import models
from PIL import Image
import matplotlib.pyplot as plt
import json

Etapa 3: Carregar modelo pré-treinado

Carregue um modelo pré-treinado (por exemplo, ResNet-18) e defina-o para o modo de avaliação:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

model = models.resnet18(pretrained=True)
model.eval()

Etapa 4: Carregar e pré-processar a imagem

Carregue uma imagem e aplique as transformações necessárias:

def preprocess_image(image_path):
    input_image = Image.open(image_path)
    preprocess = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])
    input_tensor = preprocess(input_image)
    input_batch = input_tensor.unsqueeze(0)
    return input_batch

import urllib.request

# Download a sample image
image_url = 'https://erasmus.tsp.edu.rs/wp-content/uploads/2024/12/rcd1024.jpg'  # Replace with a valid image URL
image_path = 'rcd1024.jpg'
urllib.request.urlretrieve(image_url, image_path)

input_batch = preprocess_image(image_path)

Etapa 5: Faça previsões

Passe a imagem pré-processada pelo modelo para obter previsões:

with torch.no_grad():
    output = model(input_batch)

Etapa 6: Decodificar previsões

Baixe os rótulos de classe do ImageNet e decodifice as previsões:

import urllib.request

# Download the labels file
labels_url = 'https://raw.githubusercontent.com/anishathalye/imagenet-simple-labels/master/imagenet-simple-labels.json'
labels_path = 'imagenet-simple-labels.json'
urllib.request.urlretrieve(labels_url, labels_path)

# Load the labels
with open(labels_path) as f:
    labels = json.load(f)

# Get the predicted label
_, predicted_idx = torch.max(output, 1)
predicted_label = labels[predicted_idx.item()]

print(f'Predicted label: {predicted_label}')

Rótulo previsto: furadeira elétrica

Etapa 7: Visualize a imagem e a previsão

Apresenta a imagem junto com o rótulo previsto:


def show_image(image_path, label):
    image = Image.open(image_path)
    plt.imshow(image)
    plt.title(f'Predicted: {label}')
    plt.axis('off')
    plt.show()

show_image(image_path, predicted_label)

Instruções para Estudantes

1. Siga os passos no bloco de notas para carregar e pré-processar uma imagem.

2. Use o modelo ResNet-18 pré-treinado para fazer previsões.

3. Decodifique as previsões e apresente a imagem com o rótulo previsto.

4. Experimente diferentes imagens e observe o desempenho do modelo.

 


Completion requirements:
  • Make a submission
Previous activity Exercício 2.A: Conjuntos de dados populares MNIST
Next activity Exercício 2.C: Conjuntos de dados populares - COCO
You are currently using guest access (Log in)
Data retention summary
Get the mobile app
Get the mobile app
Play Store App Store
Powered by Moodle

This theme was proudly developed by

Conecti.me