Overføring av læring i datamaskinsyn
Overføringslæring gjør det mulig å gjenbruke modeller trent på store datasett for nye oppgaver med begrenset datamengde. I stedet for å bygge et nevralt nettverk fra bunnen av, utnytter vi forhåndstrente modeller for å øke effektivitet og ytelse. Gjennom dette kurset har du allerede møtt lignende tilnærminger i tidligere seksjoner, som har lagt grunnlaget for å anvende overføringslæring på en effektiv måte.
Hva er overføringslæring?
Overføringslæring er en teknikk der en modell trent på én oppgave tilpasses til en annen, relatert oppgave. Innen datamaskinsyn kan modeller forhåndstrent på store datasett som ImageNet finjusteres for spesifikke anvendelser som medisinsk bildediagnostikk eller autonom kjøring.

Hvorfor er overføringslæring viktig?
- Reduserer treningstid: siden modellen allerede har lært generelle trekk, trengs kun små justeringer;
- Krever mindre data: nyttig i tilfeller der det er kostbart å skaffe merkede data;
- Øker ytelsen: forhåndstrente modeller gir robust trekkuttrekking, noe som forbedrer nøyaktigheten.
Arbeidsflyt for overføringslæring
Den typiske arbeidsflyten for overføringslæring innebærer flere sentrale trinn:
-
Valg av forhåndstrent modell:
- Velg en modell trent på et stort datasett (f.eks. ResNet, VGG, YOLO);
- Disse modellene har lært nyttige representasjoner som kan tilpasses nye oppgaver.
-
Modifisering av den forhåndstrente modellen:
- Trekkuttrekking: frys de tidlige lagene og tren kun de senere lagene for den nye oppgaven;
- Finjustering: frys opp noen eller alle lagene og tren dem på det nye datasettet.
-
Trening på det nye datasettet:
- Tren den modifiserte modellen med et mindre datasett spesifikt for måloppgaven;
- Optimaliser ved bruk av teknikker som backpropagation og tap-funksjoner.
-
Evaluering og iterasjon:
- Vurder ytelsen ved hjelp av måleverdier som nøyaktighet, presisjon, tilbakekalling og mAP;
- Finjuster ytterligere om nødvendig for å forbedre resultatene.
Populære forhåndstrente modeller
Noen av de mest brukte forhåndstrente modellene for datamaskinsyn inkluderer:
- ResNet: dype residualnettverk som muliggjør trening av svært dype arkitekturer;
- VGG: en enkel arkitektur med ensartede konvolusjonslag;
- EfficientNet: optimalisert for høy nøyaktighet med færre parametere;
- YOLO: toppmoderne (SOTA) sanntidsobjektdeteksjon.
Finjustering vs. funksjonsekstraksjon
Funksjonsekstraksjon innebærer å bruke lagene i en forhåndstrent modell som faste funksjonsekstraktorer. I denne tilnærmingen fjernes vanligvis modellens opprinnelige klassifiseringslag og erstattes med et nytt, spesifikt for måloppgaven. De forhåndstrente lagene forblir låst, noe som betyr at vektene deres ikke oppdateres under trening. Dette gir raskere trening og krever mindre data.
from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Flatten
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
for layer in base_model.layers:
layer.trainable = False # Freeze base model layers
x = Flatten()(base_model.output)
x = Dense(256, activation='relu')(x)
x = Dense(10, activation='softmax')(x) # Task-specific output
model = Model(inputs=base_model.input, outputs=x)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Finjustering, derimot, går et steg videre ved å låse opp noen eller alle de forhåndstrente lagene og trene dem på nytt datasett. Dette gjør det mulig for modellen å tilpasse de lærte funksjonene tettere til de spesifikke egenskapene ved den nye oppgaven, noe som ofte gir bedre ytelse—spesielt når det nye datasettet er tilstrekkelig stort eller skiller seg betydelig fra det opprinnelige treningsdatasettet.
for layer in base_model.layers[-10:]: # Unfreeze last 10 layers
layer.trainable = True
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Bruksområder for overføringslæring

1. Bildeklassifisering
Bildeklassifisering innebærer å tilordne etiketter til bilder basert på deres visuelle innhold. Ferdigtrente modeller som ResNet og EfficientNet kan tilpasses for spesifikke oppgaver som medisinsk bildebehandling eller klassifisering av dyreliv.
Eksempel:
- Velg en ferdigtrent modell (f.eks. ResNet);
- Endre klassifiseringslaget for å matche målkategoriene;
- Finjuster med en lavere læringsrate.
2. Objektgjenkjenning
Objektgjenkjenning innebærer både å identifisere objekter og lokalisere dem i et bilde. Overføringslæring gjør det mulig for modeller som Faster R-CNN, SSD og YOLO å oppdage spesifikke objekter i nye datasett på en effektiv måte.
Eksempel:
- Bruk en ferdigtrent objektgjenkjenningsmodell (f.eks. YOLOv8);
- Finjuster på et egendefinert datasett med nye objektklasser;
- Evaluer ytelsen og optimaliser deretter.
3. Semantisk segmentering
Semantisk segmentering klassifiserer hver piksel i et bilde i forhåndsdefinerte kategorier. Modeller som U-Net og DeepLab er mye brukt i applikasjoner som autonom kjøring og medisinsk bildebehandling.
Eksempel:
- Bruk en ferdigtrent segmenteringsmodell (f.eks. U-Net);
- Tren på et domenespesifikt datasett;
- Juster hyperparametere for bedre nøyaktighet.
4. Stiloverføring
Stiloverføring anvender den visuelle stilen fra ett bilde til et annet, samtidig som det opprinnelige innholdet bevares. Denne teknikken brukes ofte i digital kunst og bildeforbedring, ved å benytte ferdigtrente modeller som VGG.
Eksempel:
- Velg en stiloverføringsmodell (f.eks. VGG);
- Legg inn innholds- og stilbilder;
- Optimaliser for visuelt tiltalende resultater.
1. Hva er den viktigste fordelen med å bruke overføringslæring i datamaskinsyn?
2. Hvilken tilnærming brukes i overføringslæring når kun det siste laget i en forhåndstrent modell endres, mens de tidligere lagene holdes faste?
3. Hvilken av følgende modeller brukes ofte til overføringslæring i objektdeteksjon?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain the difference between fine-tuning and feature extraction in more detail?
What are some real-world examples where transfer learning is especially useful?
How do I choose which pre-trained model to use for my specific task?
Awesome!
Completion rate improved to 3.45
Overføring av læring i datamaskinsyn
Sveip for å vise menyen
Overføringslæring gjør det mulig å gjenbruke modeller trent på store datasett for nye oppgaver med begrenset datamengde. I stedet for å bygge et nevralt nettverk fra bunnen av, utnytter vi forhåndstrente modeller for å øke effektivitet og ytelse. Gjennom dette kurset har du allerede møtt lignende tilnærminger i tidligere seksjoner, som har lagt grunnlaget for å anvende overføringslæring på en effektiv måte.
Hva er overføringslæring?
Overføringslæring er en teknikk der en modell trent på én oppgave tilpasses til en annen, relatert oppgave. Innen datamaskinsyn kan modeller forhåndstrent på store datasett som ImageNet finjusteres for spesifikke anvendelser som medisinsk bildediagnostikk eller autonom kjøring.

Hvorfor er overføringslæring viktig?
- Reduserer treningstid: siden modellen allerede har lært generelle trekk, trengs kun små justeringer;
- Krever mindre data: nyttig i tilfeller der det er kostbart å skaffe merkede data;
- Øker ytelsen: forhåndstrente modeller gir robust trekkuttrekking, noe som forbedrer nøyaktigheten.
Arbeidsflyt for overføringslæring
Den typiske arbeidsflyten for overføringslæring innebærer flere sentrale trinn:
-
Valg av forhåndstrent modell:
- Velg en modell trent på et stort datasett (f.eks. ResNet, VGG, YOLO);
- Disse modellene har lært nyttige representasjoner som kan tilpasses nye oppgaver.
-
Modifisering av den forhåndstrente modellen:
- Trekkuttrekking: frys de tidlige lagene og tren kun de senere lagene for den nye oppgaven;
- Finjustering: frys opp noen eller alle lagene og tren dem på det nye datasettet.
-
Trening på det nye datasettet:
- Tren den modifiserte modellen med et mindre datasett spesifikt for måloppgaven;
- Optimaliser ved bruk av teknikker som backpropagation og tap-funksjoner.
-
Evaluering og iterasjon:
- Vurder ytelsen ved hjelp av måleverdier som nøyaktighet, presisjon, tilbakekalling og mAP;
- Finjuster ytterligere om nødvendig for å forbedre resultatene.
Populære forhåndstrente modeller
Noen av de mest brukte forhåndstrente modellene for datamaskinsyn inkluderer:
- ResNet: dype residualnettverk som muliggjør trening av svært dype arkitekturer;
- VGG: en enkel arkitektur med ensartede konvolusjonslag;
- EfficientNet: optimalisert for høy nøyaktighet med færre parametere;
- YOLO: toppmoderne (SOTA) sanntidsobjektdeteksjon.
Finjustering vs. funksjonsekstraksjon
Funksjonsekstraksjon innebærer å bruke lagene i en forhåndstrent modell som faste funksjonsekstraktorer. I denne tilnærmingen fjernes vanligvis modellens opprinnelige klassifiseringslag og erstattes med et nytt, spesifikt for måloppgaven. De forhåndstrente lagene forblir låst, noe som betyr at vektene deres ikke oppdateres under trening. Dette gir raskere trening og krever mindre data.
from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Flatten
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
for layer in base_model.layers:
layer.trainable = False # Freeze base model layers
x = Flatten()(base_model.output)
x = Dense(256, activation='relu')(x)
x = Dense(10, activation='softmax')(x) # Task-specific output
model = Model(inputs=base_model.input, outputs=x)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Finjustering, derimot, går et steg videre ved å låse opp noen eller alle de forhåndstrente lagene og trene dem på nytt datasett. Dette gjør det mulig for modellen å tilpasse de lærte funksjonene tettere til de spesifikke egenskapene ved den nye oppgaven, noe som ofte gir bedre ytelse—spesielt når det nye datasettet er tilstrekkelig stort eller skiller seg betydelig fra det opprinnelige treningsdatasettet.
for layer in base_model.layers[-10:]: # Unfreeze last 10 layers
layer.trainable = True
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Bruksområder for overføringslæring

1. Bildeklassifisering
Bildeklassifisering innebærer å tilordne etiketter til bilder basert på deres visuelle innhold. Ferdigtrente modeller som ResNet og EfficientNet kan tilpasses for spesifikke oppgaver som medisinsk bildebehandling eller klassifisering av dyreliv.
Eksempel:
- Velg en ferdigtrent modell (f.eks. ResNet);
- Endre klassifiseringslaget for å matche målkategoriene;
- Finjuster med en lavere læringsrate.
2. Objektgjenkjenning
Objektgjenkjenning innebærer både å identifisere objekter og lokalisere dem i et bilde. Overføringslæring gjør det mulig for modeller som Faster R-CNN, SSD og YOLO å oppdage spesifikke objekter i nye datasett på en effektiv måte.
Eksempel:
- Bruk en ferdigtrent objektgjenkjenningsmodell (f.eks. YOLOv8);
- Finjuster på et egendefinert datasett med nye objektklasser;
- Evaluer ytelsen og optimaliser deretter.
3. Semantisk segmentering
Semantisk segmentering klassifiserer hver piksel i et bilde i forhåndsdefinerte kategorier. Modeller som U-Net og DeepLab er mye brukt i applikasjoner som autonom kjøring og medisinsk bildebehandling.
Eksempel:
- Bruk en ferdigtrent segmenteringsmodell (f.eks. U-Net);
- Tren på et domenespesifikt datasett;
- Juster hyperparametere for bedre nøyaktighet.
4. Stiloverføring
Stiloverføring anvender den visuelle stilen fra ett bilde til et annet, samtidig som det opprinnelige innholdet bevares. Denne teknikken brukes ofte i digital kunst og bildeforbedring, ved å benytte ferdigtrente modeller som VGG.
Eksempel:
- Velg en stiloverføringsmodell (f.eks. VGG);
- Legg inn innholds- og stilbilder;
- Optimaliser for visuelt tiltalende resultater.
1. Hva er den viktigste fordelen med å bruke overføringslæring i datamaskinsyn?
2. Hvilken tilnærming brukes i overføringslæring når kun det siste laget i en forhåndstrent modell endres, mens de tidligere lagene holdes faste?
3. Hvilken av følgende modeller brukes ofte til overføringslæring i objektdeteksjon?
Takk for tilbakemeldingene dine!