|
|
||
|---|---|---|
| .. | ||
| lab | ||
| AdversarialCat_TF.ipynb | ||
| Dropout.ipynb | ||
| README.md | ||
| TrainingTricks.md | ||
| TransferLearningPyTorch.ipynb | ||
| TransferLearningTF.ipynb | ||
README.md
FörtrÀnade nÀtverk och transfer learning
Att trÀna CNNs kan ta mycket tid, och det krÀvs en stor mÀngd data för att utföra uppgiften. Mycket av tiden gÄr Ät till att lÀra nÀtverket de bÀsta lÄg-nivÄfiltren för att kunna 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?
Quiz före förelÀsningen
Denna metod kallas transfer learning, eftersom vi överför viss kunskap frÄn en neuralt nÀtverksmodell till en annan. Vid transfer learning 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 uppnÄ bra resultat genom att bygga en klassificerare ovanpÄ de extraherade funktionerna.
â Transfer learning Ă€r ett begrepp som Ă€ven förekommer inom andra akademiska omrĂ„den, sĂ„som utbildning. Det syftar pĂ„ processen att ta kunskap frĂ„n ett omrĂ„de och tillĂ€mpa det pĂ„ ett annat.
FörtrÀnade modeller som feature-extraktorer
De konvolutionella nÀtverk vi diskuterade i föregÄende avsnitt innehÄller flera lager, dÀr varje lager Àr avsett att extrahera funktioner frÄn bilden, frÄn lÄg-nivÄ pixelkombinationer (som horisontella/vertikala linjer eller streck) till högre nivÄkombinationer av funktioner, som exempelvis ett öga eller en flamma. Om vi trÀnar ett 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 nÄgra 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 nÄgon av följande:
- VGG-16/VGG-19 Àr relativt enkla modeller som ÀndÄ ger bra noggrannhet. Att anvÀnda VGG som ett första försök Àr ofta ett bra val för att se hur transfer learning 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 kompromissa lite med noggrannheten.
HÀr Àr exempel pÄ funktioner som extraherats frÄn en bild av en katt med VGG-16-nÀtverket:
Dataset för katter och hundar
I detta exempel kommer vi att anvÀnda ett dataset med katter och hundar, vilket ligger nÀra ett verkligt scenario för bildklassificering.
âïž Ăvning: Transfer learning
LÄt oss se transfer learning i praktiken i motsvarande notebooks:
Visualisering av en "idealkatt"
Ett förtrÀnat neuralt nÀtverk innehÄller olika mönster i sitt "hjÀrna", inklusive förestÀllningar om en ideal katt (liksom ideal hund, ideal zebra, etc.). Det vore intressant att pÄ nÄgot sÀtt visualisera denna bild. Men det Àr 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 gradient descent-optimering för att justera bilden sÄ att nÀtverket börjar tro att det Àr en katt.
Om vi gör detta kommer vi dock 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 sĂ„dana 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, kallad variation loss. Det Àr en metrik som visar hur lika angrÀnsande pixlar i bilden Àr. Genom att minimera variation loss blir bilden mjukare och bruset försvinner - vilket avslöjar mer visuellt tilltalande mönster. HÀr Àr exempel pÄ sÄdana "ideala" bilder som klassificeras som katt och zebra med hög sannolikhet:
![]() |
![]() |
|---|---|
| Ideal katt | Ideal zebra |
En liknande metod kan anvÀndas för att utföra sÄ kallade adversarial attacks 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 bild av en hund som nÀtverket kÀnner igen som en hund, kan vi sedan justera den lite med gradient descent-optimering tills nÀtverket börjar klassificera den som en katt:
![]() |
![]() |
|---|---|
| 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 transfer learning 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 anteckningar lÀngst ner om hur transfer knowledge fungerar bÀst med nÄgot liknande trÀningsdata (en ny typ av djur, kanske). Gör nÄgra experiment med helt nya typer av bilder för att se hur bra eller dÄligt dina transfer knowledge-modeller presterar.
Quiz efter förelÀsningen
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 pets-datasetet med 35 raser av katter och hundar, och vi kommer att bygga en transfer learning-klassificerare.





