Pré-processar imagens e áudio para treino

Treinamento Eficiente de Modelos de IA com PyTorch

Dennis Lee

Data Engineer, Amazon

Preparando imagens e áudio

Aplicação de imagem

  • Classificação de imagens para identificar objetos
  • Fragmentação de dados

 

Foto de um app de detecção de objetos mostrando carros na rua. O app roda num celular segurado em frente à cena.

Aplicação de áudio

  • Enviar comandos de voz
  • Ex.: "Diminua o volume"

 

Imagem de tecnologia assistiva por áudio para pessoas com deficiência visual usarem comandos de voz no celular.

Treinamento Eficiente de Modelos de IA com PyTorch

Manipulando um dataset de imagem de exemplo

print(dataset)
Dataset({
    features: ['img', 'label'],
    num_rows: 1000
})
print(dataset[0]["img"])
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=720x480>
Treinamento Eficiente de Modelos de IA com PyTorch

Padronizar o formato da imagem

  • Formatar imagens: largura, altura
  • Padronizar pixels: média, desvio padrão
  • AutoImageProcessor carrega todo o pré-processamento
from transformers import AutoImageProcessor
model = "microsoft/swin-tiny-patch4-window7-224"

image_processor = AutoImageProcessor.from_pretrained(model)
Treinamento Eficiente de Modelos de IA com PyTorch

Padronizar o formato da imagem

dataset = dataset.map(
    lambda examples: {

"pixel_values": [
image_processor(image, return_tensors="pt").pixel_values for image in examples["img"] ]}, batched=True)
print(dataset)
Dataset({
    features: ['img', 'label', 'pixel_values'],
    num_rows: 1000
})
Treinamento Eficiente de Modelos de IA com PyTorch

Manipulando um dataset de áudio de exemplo

print(dataset)
DatasetDict({
    train: Dataset({

features: ['file', 'audio',
'label'], num_rows: 1000 }), ... })
Treinamento Eficiente de Modelos de IA com PyTorch

Padronizar o formato do áudio

  • Padronizar número de amostras
  • Taxa de amostragem: amostras por segundo
  • Duração máx.: segundos de áudio
sampling_rate = 16000  # 16 kHz

max_duration = 1 # 1 second
max_length = sampling_rate * max_duration
print(f"max_length = {max_length:,} samples")
max_length = 16,000 samples
Treinamento Eficiente de Modelos de IA com PyTorch

Padronizar o formato do áudio

from transformers import AutoFeatureExtractor

model = "facebook/wav2vec2-base"
feature_extractor = AutoFeatureExtractor.from_pretrained(model)


def preprocess_function(split_data):
audio_arrays = [x["array"] for x in split_data["audio"]]
inputs = feature_extractor(audio_arrays,
sampling_rate=feature_extractor.sampling_rate, max_length=int(feature_extractor.sampling_rate * max_duration),
truncation=True) return inputs
Treinamento Eficiente de Modelos de IA com PyTorch

Aplicar a função de pré-processamento

  • Mapear preprocess_function no dataset
  • remove_columns: remove colunas audio e file
  • batched: processa exemplos do dataset em lotes
dataset = dataset["train"].map(preprocess_function,

remove_columns=["audio", "file"],
batched=True)
Treinamento Eficiente de Modelos de IA com PyTorch

Aplicar a função de pré-processamento

print(dataset)
DatasetDict({
    train: Dataset({
        features: ['label', 'input_values'],
        num_rows: 1000
    })
Treinamento Eficiente de Modelos de IA com PyTorch

Preparar dados para treino distribuído

  • DataLoader: prepara dados para carregar e iterar no treino
  • accelerator.prepare(): coloca dados em CPUs ou GPUs conforme disponível
  • Fragmentação de dados: cada GPU processa um subconjunto, como dividir fatias de pizza
  • accelerator.prepare() funciona com DataLoaders do PyTorch (torch.utils.data.DataLoader)
from accelerate import Accelerator
from torch.utils.data import DataLoader

dataloader = DataLoader(dataset, batch_size=32, shuffle=True)


accelerator = Accelerator() dataloader = accelerator.prepare(dataloader)
Treinamento Eficiente de Modelos de IA com PyTorch

Vamos praticar!

Treinamento Eficiente de Modelos de IA com PyTorch

Preparing Video For Download...