E· Universitetdatorseende· ca 60 min· utvecklande· verifierad 2026-09-20
Datorseende — grunderna
Kunna träna en bildklassificerare, använda dataaugmentering och förklara transfer learning.
Förkunskaper
- DTräning, validering och testkrävs
- EFaltningsnät (CNN)krävs
Intuition
Receptet för bildklassificering i praktiken — nästan aldrig från grunden:
- Förtränad modell (ResNet, EfficientNet, ViT) som bas.
- Augmentering på träningsdata: slumpmässig beskärning, spegling, färgjitter, rotation. Aldrig på validering och test.
- Normalisering med förträningens statistik.
- Nytt huvud för dina klasser; frys eller finjustera efter datamängd.
- Utvärdera per klass med förväxlingsmatris, inte bara total träffsäkerhet.
- Felanalys: titta på 30 felklassade bilder. Det är alltid lärorikt och leder oftast till en dataåtgärd.
Augmentering är det billigaste sättet att få «mer data» — och ofta det som ger störst lyft vid små datamängder.
Kod
import torch, torch.nn as nn
from torchvision import models, transforms, datasets
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(0.2, 0.2, 0.2),
transforms.ToTensor(), transforms.Normalize(**IMAGENET),
])
eval_tf = transforms.Compose([ # ingen slump vid utvärdering
transforms.Resize(256), transforms.CenterCrop(224),
transforms.ToTensor(), transforms.Normalize(**IMAGENET),
])
m = models.resnet18(weights="IMAGENET1K_V1")
for p in m.parameters():
p.requires_grad = False
m.fc = nn.Linear(m.fc.in_features, antal_klasser)
# … träna huvudet, mät per klass:
from sklearn.metrics import classification_report, confusion_matrix
print(classification_report(y_true, y_pred, target_names=klassnamn))
print(confusion_matrix(y_true, y_pred))
Augmentering som skadar: horisontell spegling på text eller siffror (ett speglat «3» är inte ett «3»), kraftig färgjitter när färgen är klassen (mogen/omogen frukt), och rotation på bilder där uppåt betyder något (röntgen). Augmentera bara med transformationer som bevarar etiketten.
Behärskning innebär
- Tränar en bildklassificerare med transfer learning
- Använder dataaugmentering korrekt
- Utvärderar per klass och analyserar fel
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- PyTorch — torchvision (BSD-3) — BSD-3-Clause
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0