AI-For-Beginners/translations/sk/lessons/4-ComputerVision/08-TransferLearning
leestott ce1e136ac3 🌐 Update translations via Co-op Translator 2025-09-23 15:51:48 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
AdversarialCat_TF.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
Dropout.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-09-23 15:51:48 +00:00
TrainingTricks.md 🌐 Update translations via Co-op Translator 2025-08-26 01:51:51 +00:00
TransferLearningPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
TransferLearningTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00

README.md

Predtrénované siete a transferové učenie

Trénovanie CNN môže zabrať veľa času a vyžaduje si veľké množstvo dát. Avšak veľká časť času sa venuje učeniu najlepších nízkoúrovňových filtrov, ktoré sieť môže použiť na extrahovanie vzorov z obrázkov. Prirodzene sa vynára otázka - môžeme použiť neurónovú sieť trénovanú na jednom datasete a prispôsobiť ju na klasifikáciu iných obrázkov bez potreby kompletného procesu trénovania?

Kvíz pred prednáškou

Tento prístup sa nazýva transferové učenie, pretože prenášame určitú znalosť z jedného modelu neurónovej siete na druhý. Pri transferovom učení zvyčajne začíname s predtrénovaným modelom, ktorý bol trénovaný na veľkom datasete obrázkov, ako je napríklad ImageNet. Tieto modely už dokážu dobre extrahovať rôzne črty z generických obrázkov, a v mnohých prípadoch stačí postaviť klasifikátor na vrchole týchto extrahovaných čŕt, aby sme dosiahli dobrý výsledok.

Transferové učenie je termín, ktorý nájdete aj v iných akademických oblastiach, ako je vzdelávanie. Označuje proces prenášania znalostí z jednej oblasti do druhej.

Predtrénované modely ako extraktory čŕt

Konvolučné siete, o ktorých sme hovorili v predchádzajúcej sekcii, obsahovali množstvo vrstiev, z ktorých každá mala za úlohu extrahovať určité črty z obrázku, od nízkoúrovňových kombinácií pixelov (ako horizontálna/vertikálna línia alebo ťah) až po vyššie úrovne kombinácií čŕt, ktoré zodpovedajú veciam ako oko alebo plameň. Ak trénujeme CNN na dostatočne veľkom datasete generických a rôznorodých obrázkov, sieť by sa mala naučiť extrahovať tieto spoločné črty.

Keras aj PyTorch obsahujú funkcie na jednoduché načítanie predtrénovaných váh neurónových sietí pre niektoré bežné architektúry, z ktorých väčšina bola trénovaná na obrázkoch z ImageNet. Najčastejšie používané sú popísané na stránke Architektúry CNN z predchádzajúcej lekcie. Konkrétne môžete zvážiť použitie jednej z nasledujúcich:

  • VGG-16/VGG-19, ktoré sú relatívne jednoduché modely, ale stále poskytujú dobrú presnosť. Použitie VGG ako prvý pokus je často dobrá voľba na zistenie, ako transferové učenie funguje.
  • ResNet je rodina modelov navrhnutých Microsoft Research v roku 2015. Majú viac vrstiev, a teda vyžadujú viac zdrojov.
  • MobileNet je rodina modelov so zmenšenou veľkosťou, vhodná pre mobilné zariadenia. Použite ich, ak máte obmedzené zdroje a môžete obetovať trochu presnosti.

Tu sú ukážkové črty extrahované z obrázku mačky pomocou siete VGG-16:

Črty extrahované VGG-16

Dataset Mačky vs. Psy

V tomto príklade použijeme dataset Mačky a Psy, ktorý je veľmi blízky reálnemu scenáru klasifikácie obrázkov.

✍️ Cvičenie: Transferové učenie

Pozrime sa na transferové učenie v praxi v príslušných notebookoch:

Vizualizácia ideálnej mačky

Predtrénovaná neurónová sieť obsahuje rôzne vzory vo svojej pamäti, vrátane predstáv o ideálnej mačke (ako aj ideálnom psovi, ideálnej zebre, atď.). Bolo by zaujímavé nejako vizualizovať tento obrázok. Avšak nie je to jednoduché, pretože vzory sú rozptýlené po celých váhach siete a tiež organizované v hierarchickej štruktúre.

Jeden prístup, ktorý môžeme použiť, je začať s náhodným obrázkom a potom sa pokúsiť použiť techniku optimalizácie pomocou gradientného zostupu, aby sme upravili tento obrázok tak, že sieť začne myslieť, že je to mačka.

Optimalizačný cyklus obrázku

Ak to však urobíme, dostaneme niečo veľmi podobné náhodnému šumu. Je to preto, že existuje mnoho spôsobov, ako presvedčiť sieť, že vstupný obrázok je mačka, vrátane niektorých, ktoré vizuálne nedávajú zmysel. Hoci tieto obrázky obsahujú veľa vzorov typických pre mačku, nič ich neobmedzuje, aby boli vizuálne zreteľné.

Na zlepšenie výsledku môžeme do funkcie straty pridať ďalší člen, ktorý sa nazýva variácia straty. Je to metrika, ktorá ukazuje, ako podobné sú susedné pixely obrázku. Minimalizácia variácie straty robí obrázok hladším a zbavuje sa šumu - čím odhaľuje vizuálne príťažlivejšie vzory. Tu je príklad takýchto "ideálnych" obrázkov, ktoré sú klasifikované ako mačka a zebra s vysokou pravdepodobnosťou:

Ideálna mačka Ideálna zebra
Ideálna mačka Ideálna zebra

Podobný prístup môže byť použitý na vykonanie tzv. adversariálnych útokov na neurónovú sieť. Predpokladajme, že chceme oklamať neurónovú sieť a urobiť z psa mačku. Ak vezmeme obrázok psa, ktorý je sieťou rozpoznaný ako pes, môžeme ho trochu upraviť pomocou optimalizácie gradientného zostupu, až kým sieť nezačne klasifikovať obrázok ako mačku:

Obrázok psa Obrázok psa klasifikovaný ako mačka
Pôvodný obrázok psa Obrázok psa klasifikovaný ako mačka

Pozrite si kód na reprodukciu vyššie uvedených výsledkov v nasledujúcom notebooku:

Záver

Pomocou transferového učenia môžete rýchlo zostaviť klasifikátor pre úlohu klasifikácie vlastných objektov a dosiahnuť vysokú presnosť. Vidíte, že zložitejšie úlohy, ktoré teraz riešime, vyžadujú vyšší výpočtový výkon a nemôžu byť ľahko vyriešené na CPU. V ďalšej jednotke sa pokúsime použiť ľahšiu implementáciu na trénovanie rovnakého modelu s nižšími výpočtovými zdrojmi, čo vedie len k mierne nižšej presnosti.

🚀 Výzva

V sprievodných notebookoch sú poznámky na konci o tom, ako transferové učenie najlepšie funguje s podobnými trénovacími dátami (napríklad nový typ zvieraťa). Urobte experimenty s úplne novými typmi obrázkov, aby ste zistili, ako dobre alebo zle vaše modely transferového učenia fungujú.

Kvíz po prednáške

Prehľad a samostatné štúdium

Prečítajte si TrainingTricks.md, aby ste si prehĺbili znalosti o ďalších spôsoboch trénovania modelov.

Úloha

V tomto laboratóriu použijeme reálny dataset Oxford-IIIT domácich miláčikov s 35 plemenami mačiek a psov a vytvoríme klasifikátor pomocou transferového učenia.