EFC - Ear Fuzzy Classifier to klasyfikator rozmyty małżowin usznych będący projektem na zaliczenie modułu zbiory i systemy rozmyte. Za pośrednictwem prostego interfejsu, pozwala użytkownikowi na wgranie obrazu małżowiny usznej, a następnie przeprowadzenie klasyfikacji z użyciem rozmytego klasyfikatora k-NN, wskazując tym samym z pewną dozą niepewności właściciela ucha przedstawionego na fotografii.
Przed użyciem samego programu należy wykonać poniższe trzy kroki przygotowawcze.
Pierwszy etap to podział zbioru 700 obrazów na zbiory treningowy (500 obrazów) i testowy (200 obrazów) oraz normalizacja do rozmiaru 128x128 i skali szarości. Podział jest zapisywany jawnie w katalogach photos/train i photos/test.
Drugi etap obejmuje ekstrakcję cech z obrazów po preprocessingu. Wykorzystano deskryptory HOG, opisujące lokalny układ krawędzi i kierunków gradientu, oraz przestrzenne LBP, opisujące lokalną teksturę obrazu w siatce fragmentów obrazu. Zbiór treningowy jest dodatkowo augmentowany niewielkimi obrotami -8 i +8 stopni, aby klasyfikator był mniej wrażliwy na drobne różnice ustawienia ucha. Wynikiem tego etapu są numeryczne wektory cech zapisane w plikach features_train.npy, features_train_augmented.npy oraz features_test.npy.
Trzeci etap obejmuje implementację klasyfikatora rozmytego Fuzzy k-NN. Przed klasyfikacją cechy są standaryzowane oraz przekształcane przez PCA i LDA, aby ograniczyć wymiarowość i wzmocnić separację osób. Sam Fuzzy k-NN nie zwraca wyłącznie twardej decyzji klasowej: każda próbka treningowa ma wektor rozmytych przynależności do klas, a przynależność badanego obrazu jest ważoną odległością średnią przynależności jego sąsiadów. Wynikiem klasyfikacji jest identyfikator osoby o najwyższym stopniu przynależności oraz lista najbardziej prawdopodobnych klas.
Do trenowania i testowania modelu użyto bazy danych AMI Ear Database dostępnej publicznie pod tym linkiem.
Aby uruchomić projekt lokalnie, należy wykonać poniższe kroki.
-
Stworzenie środowiska wirtualnego
python -m venv .venv
-
Uruchomienie środowiska wirtualnego
source .venv/bin/activate -
Zainstalowanie wymaganych bibliotek, których lista znajduje się w pliku
requirements.txtpip install -r requirements.txt
-
Uruchomienie wybranego skryptu
python <nazwa_pliku>.py
-
Uruchomienie GUI - części front-endowej.
streamlit run app/frontend.py