Przegląd sekcji

      • W module przedstawione zostały podstawowe zagadnienia dotyczące otrzymywania obrazu cyfrowego. Przedstawione zostały pojęcia dotyczące obrazu cyfrowego jak próbkowanie przestrzenne, czyli podział powierzchni na siatkę pikseli, kwantyzacja wartości pikseli (głębia bitowa). Przedstawione zostały metody reprezentacji obrazu cyfrowego w pamięci komputera jako macierz liczb (wielowymiarowa tablica). Przedstawione zostały przestrzenie kolorów (RGB,CMY/CMYK, HSV/HSL0 oraz sposoby ich zamiany. W części praktycznej przedstawione zostaną podstawowe operacje umożliwiające programowe przetwarzanie obrazów z językiem Python: wczytanie obrazu do pamięci, odczyt podstawowych informacji oraz manipulacja pikselami obrazu jako wielowymiarową tablicą liczb. Przestawiana jest również biblioteka pytorch, jako jedno z narzędzi do projektowania i wykorzystywania technik głębokiego uczenia. Przedstawione zostaną podstawowe operacje na obrazach z wykorzystaniem biblioteki pytorch.

      • Przedstawiona została operacja splotu (konwolucji) z towarzyszącymi im pojęciami jak: jądro filtru (ang. kernel), obramowanie (ang. padding), krok przesuwania jądra (ang. stride).
        Przedstawione zostały klasyczne filtry splotowe umożliwiające np. wykrywanie krawędzi na obrazie. Przedstawione zostały również inne operacje oparte o obliczanie drugiej pochodnej obrazu oraz filtry gaussowskie służące do usuwania szumu. W operacjach praktycznych przedstawione zostały metody definicji jądra filtru w Pythonie oraz biblioteka Albumentations umożliwiająca wykonanie różnych operacji na obrazie, wykorzystywana często do rozszerzania zbioru obrazów w zastosowaniach uczenia głębokiego. Przedstawione zostaną metody wykonywania podstawowych operacji na obrazie z wykorzystaniem biblioteki PyTorch.

      • W module przedstawiono podstawowe pojęcia dotyczące sieci neuronowych: architektura, funkcja aktywacja, funkcja straty. Przedstawione zostaną podstawowe pojęcia wykorzystywane w sieciach neuronowych, szczególnie z uwzględnieniem biblioteki PyTorch, takie jak tensor oraz mechanizm gradientu zejścia. Omówiony zostanie cykl życia modelu, ze szczególnym uwzględnieniem przygotowywania danych oraz procesu optymalizacji na przykładzie implementacji biblioteki PyTorch. Przedstawione zostaną różne funkcje aktywacji jak ReLU, Sigmodi i Softmax ora ich wpływ na problem zanikania gradientu. W części praktycznej modułu przeanalizowany zostanie przykład prostego zbioru danych (takiego jak MNIST lub FashionMNIST) z wykorzystaniem warstw w pełni połączonych oraz analiza ograniczeń warstw liniowych w kontekście przetwarzania obrazów.

      • W ramach modułu przedstawiona zostanie architektura sieci konwolucyjnych. Omówione zostaną warstwy składowe sieci: czyli warstwy konwolucyjne, warstwy łączenia (ang. pooling) oraz warstwy w pełni połączone. W części praktycznej przedstawiony zostanie przykład sieci konwolucyjnej umożliwiającej klasyfikację obrazów. W części eksperymentalnej zostanie zbadany wpływ architektury sieci na otrzymywane wyniki.

      • W ramach modułu wyjaśnione zostanie zagadnienie uczenia transferowego czyli wykorzystania wiedzy zgromadzonej w modelach wytrenowanych na ogromnych zbiorach danych. Przedstawione zostanie kilka różnych architektur sieci takich jak ResNet, EfficientNet i/lub MobileNest ze szczegółowym omówieniem techniki zamrażania warstw (ang. freezing). Przedstawione zostaną portale (PyTorch Hub, HuggingFace) umożliwiające pobieranie i wykorzystywanie wytrenowanych modeli. Omówione zostaną metody dostrajania bloków sieci w celu osiągnięcia lepszych wyników. W części praktycznej przedstawiony zostanie sposób utworzenia klasyfikatora "Pies vs Kot" przy wykorzystaniu wstępnej wytrenowanej sieci w modelu ResNet18. Przedstawiona zostanie metoda utworzenia klasyfikatora osiągającego wysoką dokładność bez konieczności wykorzystania dużej bazy danych treningowych.

      • W module przedstawione zostanie zagadnienie wykrywania obiektów przedstawionych na obrazie. Drugim omówionym zagadnieniem jest segmentacja obrazów. W module przedstawione zostanie zagadnienie detekcji obiektów wraz z towarzyszącymi mu pojęciami jak przecięcie przez sumę (ang. IoU Intersection over Union) czy tłumienia wartości niemaksymalnych (ang. NMS Non-Maximum Suppression). Przedstawione zostaną architektury sieci umożliwiające detekcję obiektów w tym jednoetapowe modele jak YOLO, które znane są ze swojej szybkości i efektywności oraz dwuetapowe takie jak Faster R-CNN, które oferują większą dokładność kosztem większej złożoności obliczeniowej. W kolejnej części modułu przedstwwone zostanie zagadnienie segmentacji obrazu. Omówione zostaną architektury takie jak U-Net pozwalająca na segmentację semantyczną i/lub Mask R-CNN. W części praktycznej modułu przedstawiony zostanie sposób uruchomienia modelu YOLO lub Faster R-CNN w celu weryfikacji jakości działania detekcji obiektów.

      • W module przedstawione zostaną podstawowe pojęcia zwiazane z modelami generatywnymi do tworzenia obrazów. Wprowadzona i omówiona zostanie architekura sieci enkoder-dekoder oraz koncepcja przestrzeni ukrytej (latentnej) w autoenkodearach. Przedstawiona zostanie funkcja straty stosowana w generatywnych sieciach przeciwstawnych (ang. GAN generative adversarial network) oraz techniki transferu stylu. W części praktycznej przedstawiony zostanie przykład sieci generatywnej z wykorzystaniem biblioteki PyTorch.

      • W module przedstawione zostaną czysto praktyczne aspekty wykorzystania modeli sieci neuronowych. Przedstawione zostaną formaty służące do zapisu i przenoszenia modeli między środowiskami wykonania. Przedstawiony zostanie TorchScript umożliwiający serializację modeli utworzonych z wykorzystaniem biblioteki PyTorch. Przedstawione zostaną podstawy formatu ONNX, będący otwartym standardem reprezentacji modelu uczenia maszynowego, który zapewnia interoperacyjność między różnymi środowiskami. Przedstawione zostaną sposoby eksportu modelu do obu formatów. Przedstawiony zostanie problem optymalizacji modelu pod kątem wydajności wnioskowania. Omówiona zostanie kwantyzacja, czyli technika redukcji precyzji liczb z typowego 32-bitowego formatu zmiennoprzecinkowego do mniejszych formatów, takich jak 8-bitowe liczby całkowite. W części praktycznej pokazany zostanie proces konwersji modelu do formatu TorchScript oraz ONNX. Przeprowadzone zostanie badanie czasu ładowania poszczególnych reprezentacji. Pokazane zostaną techniki kwantyzacji współczynników sieci po jej wytrenowaniu oraz jej wpływ na dokładność oraz czas wnioskowania modelu.