SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Autoenkodery
czyli zalety funkcji f(X) ≈ X
Krzysztof Kotowski i Wojciech Malara
AI?
Komórka nerwowa (neuron)
Dieters, 1863
Perceptron (model matematyczny neuronu)
McCulloch & Pitts, 1943 - Rosenblatt, 1957
y = 𝑓(
𝑖=0
𝑛
𝑥𝑖 𝑤𝑖)
Sztuczne sieci neuronowe
Konwolucyjne sieci neuronowe
- 65’536 pikseli na wejściu sieci
- 65’536 neuronów wyjściowych
Zwykła sieć neuronowa:
- 65’536² ≈ 4 miliardy połączeń!!!
Konwolucyjna sieć neuronowa:
- lokalny kernel 3x3
- 9*65’536 ≈ 600k połączeń
Konwolucja:
Sieć klasyfikacyjna
Sieć klasyfikacyjna
Autoenkoder
f(x) = D(E(x)) ≈ x
“Wąskie gardło”
Autoenkoder
f(x) = D(E(x)) ≈ x
“Wąskie gardło”
Autoenkoder – „stratna kompresja”
Autoenkodery odszumiające (denoisers)
Autoenkodery - wykrywanie anomalii
Autoenkodery - wykrywanie anomalii
Deep Learning Add-on
Autoenkodery – uzupełnianie danych (inpainting)
Autoenkodery - DeepRecommender
„Training Deep AutoEncoders for Collaborative Filtering”, Kuchaiev, Ginsburg, 2017,
https://arxiv.org/pdf/1708.01715
Autoenkodery – redukcja liczby wymiarów
Cecha 1
Cecha2
Klasa
Autoenkodery – semantyczne haszowanie
Enkoder
Kot Kod
binarnyFunkcja
semantycznie
haszująca
Przestrzeń
adresowa
Semantycznie
podobne
obrazy
Obraz
wejściowy
Problem autoenkoderów: nieregularna przestrzeń cech
Cecha 1
Cecha2
Klasa
?
Autoenkodery wariacyjne (VAE)
Rozwiązanie: wymuszamy rozkład normalny wartości w
wektorach cech
*KL divergence: mierzy
jak daleko jesteśmy od
rozkładu normalnego
Autoenkodery wariacyjne: regularna przestrzeń cech
Cecha 1
Cecha2
Klasa
Regularna przestrzeń cech: generacja nowych próbek
Cecha 1
Cecha2
Regularna przestrzeń cech: generacja nowych próbek
Cecha 1
Cecha2
Odkrywanie nowych leków
“Automatic Chemical Design Using a Data-
Driven Continuous Representation of
Molecules”, Gómez-Bombarelli et al., 2018
Przestrzeń cech leków
Potencjalnie nowy lek
Funkcja skuteczności leku
Generacja muzyki - MusicVAE
“A Hierarchical Latent Vector Model for Learning Long-Term Structure in
Music”, Roberts et al., 2018
experiments.withgoogle.com/melody-mixer
…….
?
Autoenkodery wariacyjne (VAE)
Operacje na przestrzeni cech
Deepfake
Deepfake - trening
Enkoder
Dekoder A
(Trump)
Enkoder
Dekoder B
(Cage)
Deepfake - wykonanie
Enkoder
Dekoder B
(Cage)
Abstrakcja twarzy
(mimika, położenie itp.)
Transfer stylu
„StyleBank: An Explicit Representation for Neural Image Style Transfer”, Chen et al.,
2017, arxiv.org/pdf/1703.09210
Transfer stylu - StyleBank
„StyleBank: An Explicit Representation for Neural Image Style Transfer”, Chen et al.,
2017, arxiv.org/pdf/1703.09210
Transfer stylu - StyleBank
„StyleBank: An Explicit Representation for Neural Image Style Transfer”, Chen et al.,
2017, arxiv.org/pdf/1703.09210
Jak oceniać jakość rekonstrukcji autoenkodera?
- Błąd średniokwadratowy (MSE)
- Indeks podobieństwa strukturalnego (SSIM)
- … inna sieć!
Walczące sieci (Adversarial networks)
GENERATOR
DYSKRYMINATOR
Wyjście (0,1) – prawdopodobieństwo, że
obraz pochodzi z rzeczywistych danych0.98
Walka sieci – gra turowa
Ruch generatora – uczy się oszukiwać aktualny dyskryminator
Ruch dyskryminatora – uczy się rozróżniać próbki
GAN – Generative Adversarial Network
„Everybody Dance Now”, Chan et al., 2018,
arxiv.org/pdf/1808.07371.pdf
GAN - Poprawa jakości zdjęć
Narzędzia online:
- letsenhance.io
- waifu2x.udp.jp
- bigjpg.com
492 984
984
492
“Photo-Realistic Single Image Super-Resolution Using a
Generative Adversarial Network”, Ledig et al., 2017,
arxiv.org/pdf/1609.04802.pdf
Chcesz zacząć już dzisiaj?
https://youtu.be/ftxOyTNiMhQ
DOŁĄCZ DO NAS!
https://www.adaptive-vision.com/pl/firma/oferty-pracy/
DOŁĄCZ DO NAS!
Wojciech Malara i Krzysztof Kotowski
Autoenkodery
czyli zalety funkcji f(X) ≈ X
prototypeteam@future-processing.com

Contenu connexe

Plus de Future Processing

[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)Future Processing
 
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minutFuture Processing
 
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...Future Processing
 
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...Future Processing
 
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...Future Processing
 
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczneFuture Processing
 
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDDFuture Processing
 
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...Future Processing
 
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończeniaFuture Processing
 

Plus de Future Processing (20)

[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
 
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
 
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
 
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
 
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
 
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
 
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
 
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
 
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
 

[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X

Notes de l'éditeur

  1. TU SIĘ PRZEŁĄCZAMY (bez zmiany slajdu) KK: a o tym jak inaczej można wykorzystać te najważniejsze cechy opowie nam Wojtek WM:  Skoro na końcu takiej przyciętej sieci mamy wektor najważniejszych cech obrazu wejściowego, to zastanówmy się, czy dałoby się z nich odtworzyć nasz obraz wejściowy. Moglibyśmy dołożyć drugą sieć, która przyjmowałaby ten wektor jako wejście i na wyjściu dawałaby oryginalny obraz. Innymi słowy, ta druga sieć próbowałaby odkodować to co zostało zakodowane w tym wektorze.
  2. Idąc krok dalej, można z tych dwóch sieci zrobić jedną sieć i trenować tak, by na wyjściu było to samo co na wejściu, bez żadnych dodatkowych informacji, czyli w tzw. sposób nienadzorowany. Taka sieć, to właśnie AUTOENKODER. Autoenkoder składa się z dwóch częsci: enkodera, który odpowiada ekstraktorowi cech ze zwykłej sieci klasyfikującej oraz dekodera, który z tych cech odtwarza dane wejściowe. Czyli tak naprawdę, nasza tytułowa funkcja f(x)=x to funkcja złożona z dwóch: funkcji kodującej i dekodującej. Ale zaraz, ktoś mógłby powiedzieć, taka sieć mogłaby po prostu w każdej kolejnej warstwie przekazywać dane z wejścia na wyjście. Spełniałaby wymagania, ale byłaby bezużyteczna. Więc teraz kluczowa informacja: ten środkowy wektor najważniejszych cech zwykle ma dużo mniejszy wymiar niż dane wejściowe i nazywany jest wąskim gardłem.
  3. W związku z tym, AE zwykle przedstawiany jest jako taka przewrócona na bok klepsydra. W enkoderze liczba wymiarów w kolejnych warstwach maleje, pośrodku mamy wąskie gardło i w dekoderze liczba wymiarów rośnie tak, by na końcu rozmiar był taki sam jak w danych wejsciowych. Ograniczenie “przepustowości” w przekazywaniu informacji znacznie utrudnia AE dokładne odtworzenie danych wejściowych i wymusza na AE nauczenie się istotnych informacji o danych treningowych.
  4. Intuicyjnie, ideę AE można porównać do stratnej kompresji. Na obrazku widzimy przykładową sieć, która sprowadza obraz wejściowy z 784 wymiarów do dwóch i następnie odtwarza obraz wejściowy.  No dobrze, ale jakie są praktyczne zastosowania AE? Reszta naszej prezentacji będzie właśnie na ten temat.
  5. Jednym z wariantów AE są AE odszumiające. Ich trening polega na podawaniu na wejście danych, np. obrazów sztucznie zaszumionych / zniekształconych i wymaganiu, aby na wyjściu były dane odszumione. Dzięki temu, że AE uczy się najważniejszych cech danych treningowych, działa on jak filtr, który nie przepuszcza nieistotnych informacji, w tym szumu. Patrząc na to z innej perspektywy, można uznać, że AE w miejsce wadliwych lub brakujących danych generuje dane potencjalnie prawidłowe.
  6. Ciekawym przykładem produktu wykorzystującego odszumianie jest Nvidia Optix, który przyspiesza renderowanie grafiki z wykorzystaniem bardzo kosztownego obliczeniowo Ray-tracingu. Przyspieszenie polega na tym, że ray-tracing przeprowadzany jest tylko dla części pikseli, a piksele z brakującymi danymi są traktowane jako szum, który jest usuwany.
  7. Ciekawym przykładem produktu wykorzystującego odszumianie jest Nvidia Optix, który przyspiesza renderowanie grafiki z wykorzystaniem bardzo kosztownego obliczeniowo Ray-tracingu. Przyspieszenie polega na tym, że ray-tracing przeprowadzany jest tylko dla części pikseli, a piksele z brakującymi danymi są traktowane jako szum, który jest usuwany.
  8. Inny praktyczny przykład wykorzystania AE pochodzi z projektu, w którym pracujemy. Jednym z narzędzi, które rozwijamy w ramach AVS DLAo jest narzędzie do detekcji anomalii za pomocą systemów wizyjnych. Zastanówmy się, jak można podejść do problemu wykrywania wadliwych produktów na linii produkcyjnej, np. w fabryce produkującej kapsułki do zmywarek. To co się nasuwa jako pierwsza myśl, to zgromadzenie zdjęć kapsułek prawdiłowych i wadliwych, a następnie klasyfikowanie obrazów z linii prod. Jednak tutaj pojawiają się pewne problemy: po pierwsze: musimy mieć dużo zdjęć wadliwych kapsułek, a po drugie: defekty mogą być różne i mieć nieprzewidywalne kształty. W takiej sytuacji, bardzo dobrze sprawdza się wykrywanie anomalii. W narzędziu tym, AE trenowany jest na wielu zdjęciach prawidłowych kapsułek starając się je rekonstruować.
  9. Następnie, taki wytrenowany model używany jest do analizowania zdjęć na linii produkcyjnej. Gdy autoenkoder otrzymuje na wejściu zdjęcie kapsułki z defektem, ze względu na ograniczone wąskie gardło, nie potrafi zrekonstruować defektu. Rekonstruuje za to prawidłową kapsułkę. Następnie zdjęcia takie możemy porównać i jeżeli różnica między nimi jest znacząca, uznajemy taki produkt za wadliwy.
  10. Tutaj pozwolę sobie na małą kryptoreklamę, narzędzie o którym mówię jest jednym z wielu narzędzi dostępnych w ramach AVS DL Ao. Jest ono proste w użyciu i użytkownik by je wykorzystać tak naprawdę nie musi praktycznie nic wiedzieć o deep learningu.
  11. Wracając do odszumiania obrazów. Gdyby tak pójść krok dalej i nie tylko dodawać do obrazu szum, ale wręcz usuwać z niego fragmenty, a następnie trenować sieć tak, by była w stanie je odtworzyć. To zadanie nazywamy inpaintingiem i jest on używany np. z Photoshopie do usuwania obiektów. Filmik pokazuje jak to może wyglądać w praktyce.
  12. Kolejnym bardzo ciekawym pomysłem na wykorzystanie faktu, iż AE potrafią generować brakujące dane jest pomysł na system rekomendacyjny DeepRecommender autorstwa ludzi z NVidii. System taki mógłby działać np. na platformie Netflix do rekomendacji filmów dla użytkowników.  Wiadomo, że każdy użytkownik ocenia tylko bardzo niewielką część wszystkich filmów i seriali dostępnych na platformie. W związku z tym taka macierz gdzie w wierszach mamy poszczególne filmy a w kolumnach uzytkowników jest bardzo rzadka, tzn. zawiera więcej braków danych niż danych. DeepRecommender, wykorzystując AE jest w stanie wygenerować brakujące oceny i na tej podstawie sugerować użytkownikom filmy, które potencjalnie trafiają w ich gusta.
  13. Warto dodać, że siła AE to nie tylko to, co produkują na wyjściu, ale także wektor wartości ukrytych w wąskim gardle. Dzięki temu AE można traktować jako metodę redukcji liczby wymiarów, co jest zastosowaniem istotnym z punktu widzenia innych metod maszynowego uczenia oraz wizualizacji danych. Tutaj widzimy przykład redukcji obrazków 28x28, czyli 784 wymiarów do 2 na potrzeby wizualizacji danych w 2D.
  14. Kolejny ciekawy pomysł na wykorzystanie AE to semantyczne haszowanie. Metoda ta wykorzystuje dane z wąskiego gardła, które są binaryzowane i traktowane jako adresy w pewnej przestrzeni adresowej. Enkoder traktowany jest tu jako funkcja semantycznie haszująca, która dla danych semantycznie podobnych zwraca nieznacznie różniące się adresy. Dzięki temu, jeśli np. podamy na wejście zdjęcie kota i chcemy otrzymać w wyniku wyszukiwania inne zdjęcia kotów, możemy zmieniać pojedyncze bity w otrzymanym kodzie i w ten sposób otrzymywać obrazy semantycznie podobne.  WM: Analogicznie, semantyczne haszowanie można wykorzystać do wyszukiwania dokumentów tekstowych o podobnej tematyce. KK: Jednak kiedy przechodzimy do wykorzystania w ten sposób wektora cech często standardowy autoenkoder może być niewystarczający...
  15. Jaki jest problem standardowego ae? Rozkład wektorów w przestrzeni cech może być bardzo nieregularny, nie narzucamy na to żadnych ograniczeń, przez co przejście z jednej do drugiej klasy może prowadzić przez nieznane rejony ukrytej przestrzeni cech generując nieprzewidywalne rezultaty
  16. Jak możemy temu zaradzić? Możemy nałożyć pewne ograniczenie na wektory cech, np. zapewnić żeby ich wartości miały rozkład normalny. W tym celu modyfikujemy funkcję straty sieci dodając do niej miarę normalności rozkładu. Tak żeby oprócz poprawnej rekonstrukcji, liczył się też poprawny rozkład wektorów.
  17. ... WM: A propos manipulowania twarzami...
  18. Zapewne wielu z was słyszało o czymś takim jak deepfakes. Czyli sieci, która pozwala podmieniać twarze z zachowaniem mimiki i położenia. Deepfakes zasłynęły z tego, że twarze aktorek z filmów tradycyjnych były umieszczane w filmach nieco mniej tradycyjnych… oraz z tego, że pozwalają wkładać politykom w usta... dowolne słowa.  W związku z tym pojawiły się spore kontrowersje i wątpliwości etyczne dotyczące wykorzystania tzw. AI. Pomińmy jednak te problemy i powiedzmy sobie jak działają deepfakes z technicznego punktu widzenia.
  19. DF to nic innego jak ciekawe wykorzystanie AE, który ma jeden enkoder i dwa osobne dekodery dla osób, między którymi chcemy zrobić przeszczep twarzy. W tym przypadku Trumpa i Cage’a. Sieć taką trenujemy podając na zmianę zdjęcia obu osób, z tym, że dla danej osoby trenowany jest tylko jej dekoder. Oczywiście trening wymaga wielu zdjęć każdej z osób.
  20. Następnie, chcąc podmienić np. twarz Trumpa na Cage’a, podpinamy do enkodera dekoder Cage’a a na wejście podajemy zdjęcie Trumpa. Można to tak rozumieć, że enkoder wyciąga abstrakcyjne cechy twarzy, które następnie dekoder wpisuje w twarz osoby, na której był trenowany.
  21. Kolejnym, bardzo efektownym wykorzystaniem DL jest transfer stylu, który pozwala np. na przerobienie zwykłego zdjęcia tak, by wyglądało jakby je namalował Picasso. Oryginalna sieć, która do tego służyła nie wykorzystywała AE, ale od tych dawnych czasów (2015), powstało wiele alternatywnych architektur do transferu stylu, w tym oparte na AE. Ogólnie rzecz biorąc, sieci do transferu stylu bazują na podziale na styl i zawartość obrazu.
  22. Przykładem sieci do transferu stylu opartej na AE jest StyleBank. Sieć ta ma dwa wąskie gardła: jedno odpowiada za zawartość a drugie za styl obrazu.  Styl jest aplikowany za pomocą dodatkowych warstw konwolucyjnych, które działają na ukrytej reprezentacji obrazu.
  23. Ciekawą cechą StyleBanku jest to, że jak sama nazwa wskazuje, pozwala na utworzenie banku wielu styli, które można nakładać na obraz niezależnie lub też tworzyć ich kombinacje