E· Universitetdatahantering· ca 60 min· utvecklande· verifierad 2026-09-20
Bildförbehandling och augmentering
Kunna ladda, skala, normalisera och augmentera bilder.
Förkunskaper
Intuition
Innan en bild når modellen ska den genom fyra steg, i denna ordning:
- Ladda och avkoda (JPEG → array). Kontrollera färgordningen: OpenCV ger BGR, PIL ger RGB. Det är en klassisk och tyst bugg.
- Skala till modellens förväntade storlek. Bevara proportionerna om formen betyder något — annars blir objekt utsträckta.
- Normalisera med samma medelvärde och standardavvikelse som förträningen använde.
- Augmentera — men bara på träningsdata.
Steg 3 är det som oftast glöms vid transfer learning, och det kostar flera procentenheter utan att synas som ett fel.
Kod
import numpy as np
from PIL import Image
from torchvision import transforms
IMAGENET = dict(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
train_tf = transforms.Compose([
transforms.RandomResizedCrop(224, scale=(0.7, 1.0)),
transforms.RandomHorizontalFlip(),
transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),
transforms.ToTensor(),
transforms.Normalize(**IMAGENET),
])
eval_tf = transforms.Compose([ # deterministisk — ingen slump
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(**IMAGENET),
])
bild = Image.open("katt.jpg").convert("RGB") # convert hanterar gråskala och RGBA
print(np.array(bild).shape, np.array(bild).dtype) # (512, 640, 3) uint8
x = eval_tf(bild)
print(x.shape, round(float(x.mean()), 3)) # torch.Size([3, 224, 224]) -0.021
Augmenteringar som bevarar etiketten — och de som inte gör det:
| Augmentering | Säker? |
|---|---|
| Horisontell spegling | ja, utom för text, siffror och asymmetriska objekt |
| Rotation ±15° | ja, utom för röntgen och kartor där uppåt betyder något |
| Färgjitter | ja, utom när färgen är klassen (mogen frukt, varningsskyltar) |
| Beskärning | ja, om objektet är centralt — annars kan det klippas bort |
| Vertikal spegling | sällan; bara för satellitbilder och liknande |
Regeln: om en människa skulle byta etikett på den augmenterade bilden är augmenteringen fel.
Behärskning innebär
- Laddar, skalar och normaliserar bilder korrekt
- Väljer augmenteringar som bevarar etiketten
- Undviker vanliga fel i pipelinen
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- PyTorch — torchvision transforms (BSD-3) — BSD-3-Clause
- Albumentations (MIT) — MIT