AI-For-Beginners/translations/sv/lessons/4-ComputerVision/08-TransferLearning
leestott 68b3c9c9e7 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
AdversarialCat_TF.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
Dropout.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
TrainingTricks.md 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
TransferLearningPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
TransferLearningTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00

README.md

FörtrÀnade nÀtverk och transferinlÀrning

Att trÀna CNNs kan ta mycket tid, och det krÀvs en stor mÀngd data för den uppgiften. Dock spenderas mycket av tiden pÄ att lÀra sig de bÀsta lÄg-nivÄ filtren som ett nÀtverk kan anvÀnda för att extrahera mönster frÄn bilder. En naturlig frÄga uppstÄr - kan vi anvÀnda ett neuralt nÀtverk som trÀnats pÄ ett dataset och anpassa det för att klassificera andra bilder utan att behöva genomföra en fullstÀndig trÀningsprocess?

Pre-lecture quiz

Denna metod kallas transferinlÀrning, eftersom vi överför viss kunskap frÄn en neuralt nÀtverksmodell till en annan. Vid transferinlÀrning börjar vi vanligtvis med en förtrÀnad modell, som har trÀnats pÄ ett stort bilddataset, sÄsom ImageNet. Dessa modeller kan redan göra ett bra jobb med att extrahera olika funktioner frÄn generiska bilder, och i mÄnga fall kan man bygga en klassificerare ovanpÄ dessa extraherade funktioner för att uppnÄ ett bra resultat.

✅ TransferinlĂ€rning Ă€r ett begrepp som du Ă€ven hittar inom andra akademiska omrĂ„den, sĂ„som utbildning. Det hĂ€nvisar till processen att ta kunskap frĂ„n ett omrĂ„de och tillĂ€mpa det pĂ„ ett annat.

FörtrÀnade modeller som funktionsutvinnare

De konvolutionella nÀtverk som vi har pratat om i föregÄende avsnitt innehÄller ett antal lager, dÀr varje lager Àr avsett att extrahera vissa funktioner frÄn bilden, frÄn lÄg-nivÄ pixelkombinationer (sÄsom horisontella/vertikala linjer eller streck) till högre nivÄ kombinationer av funktioner, som motsvarar saker som ett öga eller en flamma. Om vi trÀnar CNN pÄ ett tillrÀckligt stort dataset med generiska och varierande bilder, bör nÀtverket lÀra sig att extrahera dessa vanliga funktioner.

BÄde Keras och PyTorch innehÄller funktioner för att enkelt ladda förtrÀnade neurala nÀtverksvikter för vissa vanliga arkitekturer, varav de flesta har trÀnats pÄ ImageNet-bilder. De mest anvÀnda beskrivs pÄ sidan CNN Architectures frÄn föregÄende lektion. I synnerhet kan du övervÀga att anvÀnda en av följande:

  • VGG-16/VGG-19 som Ă€r relativt enkla modeller som fortfarande ger bra noggrannhet. Att anvĂ€nda VGG som ett första försök Ă€r ofta ett bra val för att se hur transferinlĂ€rning fungerar.
  • ResNet Ă€r en familj av modeller som föreslogs av Microsoft Research 2015. De har fler lager och krĂ€ver dĂ€rför mer resurser.
  • MobileNet Ă€r en familj av modeller med reducerad storlek, lĂ€mpliga för mobila enheter. AnvĂ€nd dem om du har begrĂ€nsade resurser och kan offra lite noggrannhet.

HÀr Àr exempel pÄ funktioner som extraherats frÄn en bild av en katt med VGG-16-nÀtverket:

Features extracted by VGG-16

Dataset för katter och hundar

I detta exempel kommer vi att anvÀnda ett dataset med Katter och Hundar, vilket Àr mycket nÀra ett verkligt scenario för bildklassificering.

✍ Övning: TransferinlĂ€rning

LÄt oss se transferinlÀrning i praktiken i motsvarande notebooks:

Visualisera en "idealkatt"

Ett förtrÀnat neuralt nÀtverk innehÄller olika mönster i sitt "hjÀrna", inklusive förestÀllningar om idealkatt (samt idealhund, idealzebra, etc.). Det skulle vara intressant att pÄ nÄgot sÀtt visualisera denna bild. Dock Àr det inte enkelt, eftersom mönstren Àr spridda över nÀtverkets vikter och dessutom organiserade i en hierarkisk struktur.

En metod vi kan anvÀnda Àr att börja med en slumpmÀssig bild och sedan försöka anvÀnda gradientnedstigningsoptimering för att justera den bilden pÄ ett sÄdant sÀtt att nÀtverket börjar tro att det Àr en katt.

Image Optimization Loop

Men om vi gör detta kommer vi att fĂ„ nĂ„got som liknar slumpmĂ€ssigt brus. Detta beror pĂ„ att det finns mĂ„nga sĂ€tt att fĂ„ nĂ€tverket att tro att inmatningsbilden Ă€r en katt, inklusive nĂ„gra som inte Ă€r visuellt meningsfulla. Även om dessa bilder innehĂ„ller mĂ„nga mönster som Ă€r typiska för en katt, finns det inget som begrĂ€nsar dem till att vara visuellt distinkta.

För att förbÀttra resultatet kan vi lÀgga till en annan term i förlustfunktionen, som kallas variationsförlust. Det Àr ett mÄtt som visar hur lika angrÀnsande pixlar i bilden Àr. Genom att minimera variationsförlusten görs bilden mjukare och bruset tas bort - vilket avslöjar mer visuellt tilltalande mönster. HÀr Àr ett exempel pÄ sÄdana "ideala" bilder, som klassificeras som katt och zebra med hög sannolikhet:

Ideal Cat Ideal Zebra
Idealkatt Idealzebra

En liknande metod kan anvÀndas för att utföra sÄ kallade adversariala attacker pÄ ett neuralt nÀtverk. Anta att vi vill lura ett neuralt nÀtverk och fÄ en hund att se ut som en katt. Om vi tar en hundbild, som nÀtverket kÀnner igen som en hund, kan vi sedan justera den lite med hjÀlp av gradientnedstigningsoptimering tills nÀtverket börjar klassificera den som en katt:

Picture of a Dog Picture of a dog classified as a cat
Originalbild av en hund Bild av en hund klassificerad som en katt

Se koden för att reproducera resultaten ovan i följande notebook:

Slutsats

Med hjÀlp av transferinlÀrning kan du snabbt sÀtta ihop en klassificerare för en anpassad objektklassificeringsuppgift och uppnÄ hög noggrannhet. Du kan se att mer komplexa uppgifter som vi löser nu krÀver högre berÀkningskraft och inte enkelt kan lösas pÄ en CPU. I nÀsta enhet kommer vi att försöka anvÀnda en mer lÀttviktig implementation för att trÀna samma modell med lÀgre berÀkningsresurser, vilket resulterar i bara nÄgot lÀgre noggrannhet.

🚀 Utmaning

I de medföljande notebooks finns det anteckningar lÀngst ner om hur transferkunskap fungerar bÀst med nÄgot liknande trÀningsdata (en ny typ av djur, kanske). Gör lite experiment med helt nya typer av bilder för att se hur bra eller dÄligt dina transferkunskapsmodeller presterar.

Post-lecture quiz

Granskning & SjÀlvstudier

LÀs igenom TrainingTricks.md för att fördjupa din kunskap om andra sÀtt att trÀna dina modeller.

Uppgift

I detta labb kommer vi att anvÀnda det verkliga Oxford-IIIT husdjursdatasetet med 35 raser av katter och hundar, och vi kommer att bygga en transferinlÀrningsklassificerare.


Ansvarsfriskrivning:
Detta dokument har översatts med hjĂ€lp av AI-översĂ€ttningstjĂ€nsten Co-op Translator. Även om vi strĂ€var efter noggrannhet, bör det noteras att automatiserade översĂ€ttningar kan innehĂ„lla fel eller brister. Det ursprungliga dokumentet pĂ„ dess originalsprĂ„k bör betraktas som den auktoritativa kĂ€llan. För kritisk information rekommenderas professionell mĂ€nsklig översĂ€ttning. Vi ansvarar inte för eventuella missförstĂ„nd eller feltolkningar som uppstĂ„r vid anvĂ€ndning av denna översĂ€ttning.