학습을 위한 이미지 및 오디오 전처리

PyTorch로 AI 모델 효율적으로 학습시키기

Dennis Lee

Data Engineer, Amazon

이미지 및 오디오 준비

이미지 애플리케이션

  • 객체 인식을 위한 이미지 분류
  • 데이터 샤딩

 

도로 위 자동차를 감지하는 객체 탐지 애플리케이션 화면. 거리 장면 앞에서 손으로 폰을 들고 앱을 실행 중인 모습.

오디오 애플리케이션

  • 음성 명령 제공
  • 예: "볼륨을 낮춰줘"

 

시각 장애인이 음성 명령으로 폰을 사용할 수 있도록 돕는 오디오 기반 보조 기술 화면.

PyTorch로 AI 모델 효율적으로 학습시키기

샘플 이미지 데이터셋 다루기

print(dataset)
Dataset({
    features: ['img', 'label'],
    num_rows: 1000
})
print(dataset[0]["img"])
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=720x480>
PyTorch로 AI 모델 효율적으로 학습시키기

이미지 형식 표준화

  • 이미지 형식: 너비, 높이
  • 픽셀 값 표준화: 평균, 표준편차
  • AutoImageProcessor로 모든 전처리 단계 로드
from transformers import AutoImageProcessor
model = "microsoft/swin-tiny-patch4-window7-224"

image_processor = AutoImageProcessor.from_pretrained(model)
PyTorch로 AI 모델 효율적으로 학습시키기

이미지 형식 표준화

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
})
PyTorch로 AI 모델 효율적으로 학습시키기

샘플 오디오 데이터셋 다루기

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

features: ['file', 'audio',
'label'], num_rows: 1000 }), ... })
PyTorch로 AI 모델 효율적으로 학습시키기

오디오 형식 표준화

  • 샘플 수 표준화
  • 샘플링 레이트: 초당 샘플 수
  • 최대 길이: 오디오 시간(초)
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
PyTorch로 AI 모델 효율적으로 학습시키기

오디오 형식 표준화

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
PyTorch로 AI 모델 효율적으로 학습시키기

전처리 함수 적용

  • preprocess_functiondataset에 매핑
  • remove_columns: audiofile 열 제거
  • batched: dataset 예제를 배치 단위로 처리
dataset = dataset["train"].map(preprocess_function,

remove_columns=["audio", "file"],
batched=True)
PyTorch로 AI 모델 효율적으로 학습시키기

전처리 함수 적용

print(dataset)
DatasetDict({
    train: Dataset({
        features: ['label', 'input_values'],
        num_rows: 1000
    })
PyTorch로 AI 모델 효율적으로 학습시키기

분산 학습을 위한 데이터 준비

  • DataLoader: 학습 중 데이터 로딩 및 반복을 위한 준비
  • accelerator.prepare(): 가용 자원에 따라 CPU 또는 GPU에 데이터 배치
  • 데이터 샤딩: 피자 조각처럼 각 GPU가 학습 데이터의 일부를 처리
  • accelerator.prepare()는 PyTorch DataLoader(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)
PyTorch로 AI 모델 효율적으로 학습시키기

연습해 봅시다!

PyTorch로 AI 모델 효율적으로 학습시키기

Preparing Video For Download...