2021L-ZZSN - projekty

Zaawansowane zagadnienia sieci neuronowych - projekty

Prowadzone grupy

  • grupa 101

  • grupa 102

  • grupa 103

  • grupa 104

Organizacja zajęć

Część projektowa zajęć z Zaawansowanych zagadnień sieci neuronowych polega na implementacji zaawansowanych modeli sieci neuronowych nawiązujących do tematów omawianych na wykładzie.

Projekty realizowane są w zespołach dwuosobowych. Celem projektu jest rozwiązanie problemu o charakterze użytkowym lub badawczym i jednoczesne zrozumienie danego zagadnienia przez zespół. Oznacza to, że przy realizacji można się posiłkować publicznymi implementacjami, ale nie zwalnia to zespołu z przygotowania się do dokładnego wytłumaczenia zasady działania prezentowanego rozwiązania.

Projekty powinny być realizowane w języku Python 3.8+ z wykorzystaniem biblioteki PyTorch, ewentualnie TensorFlow. Sugerowanym podejściem do ustrukturyzowania kodu jest wykorzystanie biblioteki PyTorch Lightning. Szkielet takiego rozwiązania dostępny jest w repozytorium 2021L-ZZSN/template.

Dodatkowe informacje udostępniane będą na bieżąco w zespole MS Teams przedmiotu.

Zasady oceniania

Za część projektową można uzyskać łącznie 35 punktów:

  • dokumentacja wstępna - 5 punktów,

  • implementacja modelu - 15 punktów,

  • dokumentacja końcowa i prezentacja projektu - 15 punktów.

Dokumentacja wstępna powinna zawierać opis zadania, przewidywany sposób rozwiązania problemu i wyjaśnienie poczynionych założeń (typ modelu, wybrane zbiory danych, narzędzia, zakładana funkcjonalność itp.).

W ramach implementacji, poza zrealizowaną funkcjonalnością i zakresem eksperymentów, oceniana jest przede wszystkim jakość i czytelność wygenerowanego kodu. Kod powinien dać się uruchomić po postawieniu środowiska conda według pliku environment.yml z repozytorium (w wyjątkowych przypadkach obraz z Dockerfile). Mile widziane są adnotacje typowania statycznego i podstawowy zakres testów adekwatny do specyfiki testowania projektów machine learningowych, ale elementy te nie są wymagane do uzyskania maksymalnej liczby punktów, jeżeli nie ma żadnych innych zastrzeżeń.

W dokumentacji końcowej należy zawrzeć opis rozwiązania ze zwięzłym wyjaśnieniem kontekstu danego zagadnienia lub zasady działania modelu, wyniki eksperymentów i wnioski po realizacji projektu.

Dokumentację i kod źródłowy należy umieścić w repozytorium git dedykowanym dla zespołu (dokładne informacje na kanale MS Teams).

Niejasności można wyjaśniać poprzez MS Teams lub na konsultacjach (po zapisaniu się).

Harmonogram

Wyszczególnione daty oznaczają termin na koniec dnia (23:59). Przez dostarczenie materiałów rozumiany jest commit w udostępnionym przeze mnie repozytorium dedykowanym dla projektu.

Tematy projektów

Omówienie tematów

1. Zmiana pogody na zdjęciach za pomocą transferu stylu

Celem projektu jest stworzenie narzędzia do konwersji zdjęcia z pochmurną pogodą na zdjęcie ze słoneczną pogodą.

Schemat sugerowanego rozwiązania:

  • Pobranie obrazków z kamer internetowych (np. webcamgalore.com) z różnych momentów w czasie (timelapse).

  • Wykorzystanie gotowego klasyfikatora pogody do oznaczenia zdjęcia jako pochmurne/słoneczne (ewentualnie adnotacja ręczna).

  • Stworzenie sieci GAN do transferu stylu pochmurnie → słonecznie.

  • Porównanie z uczeniem na zdjęciach, które nie pochodzą z tego samego ujęcia (np. Two-Class Weather Classification).

2. Generowanie twarzy postaci z filmów animowanych za pomocą sieci GAN

Celem projektu jest stworzenie narzędzia do generowania twarzy postaci kreskówkowych przy wykorzystaniu sieci GAN.

Przykładowy zbiór danych: iCartoonFace, ewentualnie Cartoon Set

Minimalny zakres to generowanie bezwarunkowe (dowolna twarz), ciekawsze rozwiązanie powinno uwzględniać możliwość sterowania charakterem generowanego obrazu.

3. Detekcja maseczek ochronnych na zdjęciach z wykorzystaniem detektora YOLO

Celem projektu jest stworzenie detektora działającego w trybie real-time, który na zdjęciu z kamery oznaczy osoby z maseczkami ochronnymi i bez maseczek.

Przykładowe zbiory danych: Kaggle

W ramach podsumowania proszę przetestować działanie detektora na własnym filmie z kamery internetowej (ewentualnie zdjęciach z telefonu) albo na wybranym streamie dostępnym publicznie.

4. Usuwanie tła za pomocą sieci typu U-Net

Celem projektu jest stworzenie narzędzia do usuwania/podmiany tła na zdjęciu twarzy.

Przykładowy zbiór danych: Matting Human Datasets

W ramach podsumowania proszę przetestować działanie narzędzia na własnych zdjęciach z telefonu lub filmie z kamery internetowej i porównać np. z rozmyciem dostępnym w MS Teams, Google Meet.

Do rozwiązania można też wykorzystać inne podejście niż wykorzystanie sieci U-Net.

5. Segmentacja zdjęć lotniczych za pomocą sieci typu U-Net

Celem projektu jest stworzenie narzędzia do segmentacji zdjęć lotniczych wykorzystującego sieć typu U-Net.

Przykładowy zbiór danych: Aerial Semantic Segmentation Drone Dataset

W ramach podsumowania proszę przetestować działanie narzędzia na mapach lotniczych Warszawy.

6. Wykorzystanie sieci impulsowej do klasyfikacji dźwięku

Celem projektu jest implementacja kilku wariantów prostych architektur sieci impulsowej i porównanie ich działania na zbiorze wizyjnym MNIST oraz zbiorze dźwiękowym ESC-50/ESC-10.

Sugerowany framework do implementacji: BindsNET

Ze względu na eksperymentalny charakter zagadnienia osiągnięta dokładność klasyfikacji nie jest kryterium oceny jakości projektu, liczy się poprawność implementacji.

7. Przeciwstawne uczenie ciągłe klasyfikatorów dźwiękowych

Celem projektu jest implementacja metody uczenia ciągłego określanej jako adversarial continual learning i weryfikacja jej działania w kontekście klasyfikacji dźwięku (np. na ESC-50, UrbanSound8K lub FSD50K).

W ramach podsumowania proszę porównać efektywność tego podejścia z wybraną metodą typu regularyzacyjnego i metodą typu replay.

8. Rezydualne uczenie ciągłe klasyfikatorów obrazowych

Celem projektu jest implementacja metody uczenia ciągłego określanej jako residual continual learning i weryfikacja jej działania w kontekście klasyfikacji obrazów (np. na CIFAR-10/CIFAR-100).

W ramach podsumowania proszę porównać efektywność tego podejścia z wybraną metodą typu regularyzacyjnego i metodą typu replay.

9. Wyszukiwanie efektywnych podsieci w klasyfikatorze danych dźwiękowych

Celem projektu jest przebadanie działania metody early bird tickets do szybkiego wyszukiwania efektywnych podsieci w klasyfikatorach dźwiękowych (np. o architekturze zbliżonej do OpenL3).

W ramach podsumowania proszę zweryfikować dokładność działania modelu bazowego i podsieci typu lottery ticket na wybranych zbiorach z zakresu klasyfikacji dźwięku (np. ESC-50, UrbanSound8K, FSD50K lub innych).

10. Wykorzystanie sieci kapsułkowych do klasyfikacji chmur punktów

Celem projektu jest zastosowanie sieci kapsułkowych do klasyfikacji chmur punktów.

W ramach zadania wstępnego proszę sprawdzić działanie sieci kapsułkowej na zbiorze obrazowym (np. CIFAR-10).

W ramach podsumowania proszę porównać działanie sieci kapsułkowej z innym modelem (np. PointNet++) w zadaniu klasyfikacji chmur punktów (np. ShapeNetCore).

11. Predykcja liczby zachorowań na COVID-19 za pomocą grafowych sieci czasowo-przestrzennych

Celem projektu jest zastosowanie czasowo-przestrzennej grafowej splotowej sieci neuronowej do predykcji liczby zachorowań na COVID-19 dla danych ze Stanów Zjednoczonych (podział na hrabstwa).

W ramach podsumowania proszę porównać działanie modelu z predykcjami prostych lokalnych modeli autoregresyjnych oraz zweryfikować poprawność implementacji na zbiorze benchmarkowym zachorowań na ospę.

Do implementacji zalecane jest wykorzystanie biblioteki PyTorch Geometric Temporal.

W przypadku tego projektu bardzo pożądanym elementem jest wizualizacja predykcji na mapie, np. za pomocą Streamlit.

12. Analiza wydźwięku depesz giełdowych za pomocą modelu typu BERT

Celem projektu jest wykorzystanie polskiego modelu typu BERT (np. Herbert albo Polbert) do oceny wydźwięku (negatywny/neutralny/pozytywny) depesz na polskiej Giełdzie Papierów Wartościowych.

Schemat sugerowanego rozwiązania:

  • Wykorzystanie modelu wstępnie trenowanego na korpusie języka polskiego do zadania analizy wydźwięku, np. na zbiorze PolEmo2.0-IN. Porównanie działania modelu przy zmianie dziedziny (PolEmo2.0-OUT).

  • Stworzenie bazy danych z raportów systemu ESPI. Adnotacją wydźwięku generowaną syntetycznie może być następująca po komunikacie nadmiarowa zmiana kursu akcji spółki w stosunku do zmiany szerokiego rynku.

  • Weryfikacja działania modelu bez uczenia na danych z dziedziny finansowej i po wykorzystaniu raportów do dotrenowywania.

13. Wykorzystanie architektury typu Music Transformer do generowania dzwonków telefonicznych

Celem projektu jest stworzenie modelu o architekturze Music Transformer, którego zadaniem jest generowanie krótkich fragmentów muzycznych o charakterze dzwonka telefonicznego.

Schemat sugerowanego rozwiązania:

  • Przygotowanie zbioru plików MIDI o charakterze adekwatnym dla potencjalnego zastosowania.

  • Wyuczenie modelu na przygotowanym zbiorze danych pod kątem bezwarunkowego generowania sekwencji MIDI i warunkowanego krótkim fragmentem początkowym.

  • Przetworzenie wygenerowanych sekwencji do postaci dźwiękowej za pomocą syntezy offline (np. NSynth), wybranego odtwarzacza MIDI w JavaScript albo wykorzystania wybranego syntezatora VSTi (np. przez RenderMan).

14. Wykorzystanie uczenia samonadzorowanego do poprawy klasyfikacji dźwięku

Celem projektu jest wyuczenie modelu rozumienia dźwięku w sposób samonadzorowany na zbiorze danych nieetykietowanych, np. wzorując się na podejściu SimCLR lub MoCo. Tak wyuczony model należy następnie wykorzystać do klasyfikacji spektrogramów z mniejszego zbioru etykietowanego i porównać dokładność klasyfikacji z modelem uczonym w standardowy sposób (w pełni nadzorowany, tylko na zbiorze etykietowanym), ewentualnie przeanalizować odporność obydwu modeli na złośliwe modyfikacje typu adversarial attacks.

Przykładowe zbiory danych: ESC-US i ESC-50

Ze względu na większą złożoność obliczeniową technik samonadzorowanych wyniki podsumowania można oprzeć na modelu wyuczonym częściowo. Jeżeli sama implementacja i wytłumaczenie zespołu będzie bez zastrzeżeń, to nie wpływa to na końcową ocenę. W takim wypadku zalecałbym sprawdzenie implementacji na zbiorze CIFAR-10.

15. Uczenie klasyfikatorów dźwiękowych niewielką liczbą przykładów z wykorzystaniem sieci prototypowych

Celem projektu jest stworzenie modelu sieci protytypowej do uczenia klasyfikatorów dźwiękowych niewielką liczbą przykładów (few-shot learning).

Schemat sugerowanego rozwiązania:

  • Stworzenie standardowego klasyfikatora dźwiękowego (np. na podstawie architektury OpenL3) i wyuczenie go na zbiorze danych FSD50K.

  • Sprawdzenie dokładności klasyfikacji przy standardowym uczeniu (bez ograniczeń na liczbę przykładów per klasa).

Zalecenia zbiorcze

Poza raportem końcowym dobrze byłoby, gdyby w ramach rozwiązania można zrozumieć i sprawdzić działanie modelu na przykładach, najlepiej w sposób interaktywny.

Sugerowanym narzędziem do tego typu prostych podsumowań jest Streamlit, ewentualnie Dash lub inne rozwiązania tego typu.

Zasoby obliczeniowe

Do realizacji projektów można wykorzystać darmowe zasoby obliczeniowe:

Jeżeli uda się pozyskać grant edukacyjny na przedmiot, to dostępne będą dodatkowo kupony do wykorzystania w Google Cloud.

W szczególnych przypadkach (np. uczenie samonadzorowane) możliwe jest też przydzielenie zasobów z puli uczelnianej.

W zależności od wymagań projektu i dostępnych mocy obliczeniowych uczenie modeli może zająć dłuższy czas (liczony w dniach). Proszę uwzględnić ten fakt przy rozplanowywaniu harmonogramu prac.

Last updated