5.1 KiB
Sztuczna Inteligencja
Temat projektu: Inteligenta Śmieciarka
Zespół: Kacper Borkowski, Adam Borowski, Adam Osiowy
Podprojekt: Adam Osiowy - segregator śmieci
Opis podprojektu:
- w projekcie wykorzystane zostały drzewa decyzyjne jako metoda uczenia
- projekt podzielony jest na 4 pliki
- plik tworzenie_danych_AO.py jest odpowiedzialny za wydobycie z każdego zdjęcia własności i zapis ich do pliku
- w pliku uczenie_adamO.py znajdują się funkcje odpowiedzialne za uczenie i testowanie modelu
- plik parametry_zdjec.h5 zawiera własności wszystkich zdjęć wykorzystanych w projekcie
- plik etykiety.h5 zawiera odpowiedni typ każdego ze zdjęć (glass,paper,plastic,metal)
Ogólne działanie:
- na początku zbierane są informacje o każdym zdjęciu
momenty = wyznaczHuMomenty(zdj)
haralick = wyznaczHaralick(zdj)
histogram = wyznaczHistogram(zdj)
-
wybrane własności to:
-
Histogram kolorów okreslający rozkład jasności pixeli w każdej komórce na zdjęciu w skali szarości
zdjęcie jest przekształcane do przestrzeni barw hsv po czym wyliczany jest histogram podając do funkcji zdjęcie, kanały (hsv), maskę, podział zdjęcia na 512 przedziałów (8x8x8), zakres każdego kanału -
Momenty obrazu (Hu Moments) określające kształt obiektu na zdjęciu
są średnią ważoną intensywności pikseli obrazu.
Są liczone ze wzoru:
gdzie I(x,y) to intensywność pixela w danym punkcie
Momenty surowe - informują o intensywności pikseli i ich położeniu na obrazie
Momenty centralne - otrzymujemy po odjęciu od momentów surowych środka ciężkości danego kształtu
momenty te są niezmienne w wyliczaniu to znaczy że jeśli kształt jest ten sam to nie ważne jest jego położenie na zdjęciu
Momenty Hu - to zbiór 7 liczb obliczonych na podstawie momentów centralnych. Pierwsze 6 momentów są niezmienne dla translacji, skali i rotacji. Podczas gdy znak siódmej liczby zmienia się wraz z odbiciem kształu (względem osi).
-
Tekstura Haralicka określająca nasycenie ilości pixeli w skali szarości
"Haralick zasugerował zastosowanie macierzy współwystępowania poziomu szarości (GLCM). Ta metoda opiera się na połączonych rozkładach prawdopodobieństwa par pikseli. GLCM pokazuje, jak często każdy poziom szarości występuje w pikselach umieszczonych w ustalonym położeniu geometrycznym względem siebie, w zależności od poziomu szarości."
-
-
własności sa zapisywane jako macierze, ustawiane w szereg jako wiersz i zapisywane do pliku z danymi .h5
wiersz = np.hstack([momenty, histogram, haralick])
- dane dzielone są losowo na 2 pary, jedna testowa druga treningowa
(uczenieDane, testowanieDane, uczenieEtykiety, testowanieEtykiety) =
train_test_split(np.array(dane), np.array(etykiety), test_size=rozmiar_zbioru_testowego)
gdzie rozmiar zbioru testowego określony wcześniej na 20%
- tworzony jest estymator
rfc = RandomForestClassifier(max_depth=15, n_jobs=4, random_state=1)
gdzie n_jobs to ilość wątków, random_state pilnuje aby zbiór był zawsze dzielony tak samo,
a max_depth to maksymalna głebokość każdego drzewa
estymator domyślnie korzysta ze strategii opierającej się o indeks Giniego
'indeks Giniego jest to miara która określa jak często losowo wybrany element zostanie błędnie zidentyfikowany'
indeks jest obliczany ze wzoru:
przykład
- estymator rozpoczyna uczenie korzystając ze zbiorów treningowych
rfc.fit(uczenieDane, uczenieEtykiety)
- następnie wyliczana jest skuteczność na zbiorach testowych
rfc.score(testowanieDane, testowanieEtykiety)
Integracja z projektem zespołowym:
- Przy starcie programu estymator rozpoczyna nauke
rfc = adamO.rozpocznijUczenie()
- Śmieciarka porusza się po domach zbierając z nich śmieci
- Po zebraniu wszystkich śmieci kieruje się na wysypisko
- Każde zdjęcie śmieci jest segregowane z wykorzystaniem funkcji przewidującej typ
rodzaj = adamO.przewidz(smiec, rfc)
- Zdjęcia posegregowanych śmieci umieszczane są w odpowiednich folderach:
- Na koniec wyświetlane są losowo wybrane zdjęcia śmieci z kontenerów wraz z informacją o typie ustalonym przez estymator
- górny napis to typ zwrócony przez estymator
- drugi napis to wartości prawpopodobieństwa z jakim estymator ocenił typ
- trzeci napis to nazwa zdjęcia