Close
Klasyfikacja odpadów na ulegające organicznemu i materiałowemu recyklingowi za pomocą metody k-najbliższych sąsiadów (ang. k-nearest neighbors)

Klasyfikacja odpadów na ulegające organicznemu i materiałowemu recyklingowi za pomocą metody k-najbliższych sąsiadów (ang. k-nearest neighbors)

W grudniu 2005 Komisja Europejska opublikowała komunikat (COM(2005) 666) dotyczący strategii tematycznej w sprawie zapobiegania powstawaniu odpadów i ich recyklingu. W moim odczuciu był to przełomowy dokument. Po raz pierwszy wyznaczono cel długoterminowy dla krajów UE w zakresie gospodarki odpadami. Wspólnota UE miała stać się społeczeństwem powszechnie stosującym recykling przy jednoczesnym ograniczeniu wytwarzania odpadów. W opracowanej strategii określono szereg działań mających na celu aktualizację istniejących ram prawnych. W ich wyniku poprawiono, zaktualizowano czy wdrożono nowe dyrektywy odpadowe przyczyniając się do uproszczenia dorobku prawnego w zakresie odpadów. Wykorzystując podejście oparte na cyklu życia produktu na pierwszym miejscu w hierarchii postępowania z odpadami postawiono na zapobieganie powstawaniu odpadów, następnie ponowne wykorzystywanie, recykling i odzysk odpadów, a w ostateczności unieszkodliwianie odpadów. Słowo „recykling” w tym kontekście jest niezwykle istotne. Działanie to miało nam zapewnić nowe, świetlane możliwości w gospodarowaniu odpadami. Z puntu widzenia dnia dzisiejszego nie wszystko się udało, nie wszystko poszło tak jak trzeba i ciągle do stanu, w którym recyklingowi poddawać będziemy znaczące ilości odpadów jeszcze wiele brakuje. Ale nie o tym będzie w tym wpisie.

Klasyfikacja odpadów ze pomocą metody
k-najbliższych sąsiadów

Pomysłem na wpis jest wykorzystanie uczenia maszynowego, a dokładniej metody k-najbliższych sąsiadów (ang. kNN k-Nearest Neighbors) do określenia czy dany odpad należeć będzie do grupy odpadów zdatnych do recyklingu organicznego czy materiałowego. Źródłem danych do sprawdzenia tego algorytmu będą zdjęcia dostępne na kaggle.

Przykładowe zdjęcia ze zbioru uczącego z sekcji – recykling organiczny.

Przykładowe zdjęcia ze zbioru uczącego z sekcji – recykling materiałowy.

Zdjęcia w ilości 25077 sztuk podzielone są na zbiór uczący i testowy z podziałem na grupę materiałów organicznych oraz tych do recyklingu materiałowego. Dociekliwi znajdą też tam rozwiązanie z zastosowaniem konwolucyjnych sieci neuronowych, co oczywiście wydaje się naturalną drogą do rozwiązania tego zagadnienia. Ja postawię jednak na kNN, choćby celem weryfikacji jak ten algorytm sprawdzi się w klasyfikacji naszych materiałów ze zdjęć.

Dla tych co nie wiedzą jak działa metoda k-najbliższych sąsiadów odsyłam do załączonej prezentacji prof. Adriana Horzyka – Sztuczna inteligencja, inteligencja obliczeniowa i metody inżynierii wiedzy.

Nadmienię tylko, że zadaniem zaklasyfikowania nowego obiektu pośród już istniejących jest przypisanie go do grupy tych, z którymi najbliżej sąsiaduje. Pojęcie „najbliżej” wprowadza nam konieczność wprowadzenia miary bliskości punktów, czyli miary odległości pomiędzy dwoma przypadkami danych. Najszerzej stosowaną miarą jest miara Euklidesowa, dana równaniem:

Żeby to wyjaśnić, wyobraźmy sobie, że mamy obraz o rozmiarze 3×3, co oczywiście możemy przedstawić jako tabelę o trzech wierszach i trzech kolumnach. W każdej komórce takiej tabeli zapisana jest określona wartość. Jeżeli obraz jest czarno-biały to tą wartością jest 0 lub 1. Jeżeli obraz jest przedstawiony w odcieniach szarości to tymi wartościami są liczby z zakresu 0..255, a jak kolorowy to takich tabel mamy co najmniej trzy, reprezentujące odpowiednio kanał czerwony, zielony i niebieski RGB. Przyjmijmy że mamy obraz szary, wówczas tabela ta mogłaby wyglądać następująco:

i jeżeli będziemy poszukiwać odległości euklidesowej między dwoma obrazami to najpierw odszukamy kwadrat różnicy liczb w odpowiadających sobie komórkach,

a następnie dodamy je i z sumy wyciągniemy pierwiastek. Dla tego przykładu odległość między obrazami wyniesie d = 17,88. Także po tym jak model zostanie określony na podstawie zbioru uczącego z wprost określoną kategorią odpadu, dla obrazu testowego obliczana będzie odległość do każdego z obrazu w zbiorze uczącym i szukana ta najmniejsza odległość w przypadku gdy k=1, czyli jeden sąsiad, lub k>1 dla większej grupy sąsiadów. W rezultacie obrazowi testowemu przypiszemy kategorię charakterystyczną dla większości sąsiadów w ramach danej odległości między obrazami.

Kodujemy

Po tym wyjaśnieniu w końcu możemy przejść do kodu. Na początek importujemy potrzebne biblioteki, tworzymy ramkę danych ze ścieżkami dostępu do zbioru obrazów i przekodujemy kategorię odpady organiczne nadając im wartość 0, a przeznaczonym do recyklingu przypisujemy wartość 1.

Teraz konieczne jest popracowanie trochę na naszych obrazach. Aby nam się łatwo odejmowało jeden obraz od drugiego powinny mieć one ten sam wymiar. Jak się jednak okazuje tak nie jest. Rozmiary obrazów są różne. Trzeba je będzie przeskalować. W tym celu zmienię ich wymiar przekształcając je za pomocą tajemniczej interpolacji INTER_AREA do wymiaru 81×81 pikseli. Na temat metod interpolacji przy zmianie rozmiarów obrazu znaleźć można w następującym artykule:

What is OpenCV’s INTER_AREA Actually Doing? | by Wenru Dong | Medium

Dalej aby pozbyć się obrazow o zbyt prostokątnym kształcie wybiorę tylko te, gdzie współczynnik wysokości do szerokości obrazu jest większy od 0.6. Na koniec przeprowadzę normalizację wartości pikseli do zakresu liczb z przedziału 0..1, dzieląc każdą przez 255.

W rezultacie w zbiorze uczącym jest 18666 zdjęć o rozmiarze 81×81, a w zbiorze testowym 2049 zdjęć o tym samym wymiarze.

Łącznie 20715 obrazów, co oznacza że 4362 zostały pominięte. Przed skorzystaniem z algorytmu k-najbliższych sąsiadów dokonam jeszcze zmiany przekształcając każdą z tablic reprezentujacą obraz do postaci pojedynczego wiersza.

Do wyznaczenia odległości euklidesowej pomiędzy obrazami metodą k-najbliższych sąsiadów skorzystam z gotowego algorytmu z kursu  Stanford CS231n 2017 CNN definiującego klasę KNearestNeighbor następująco:

Sprawdźmy zatem jaką dostaniemy dokładność modelu identyfikacji nowego obrazu ze zbioru testowych przy pojedynczym sąsiedzie (k=1)

Na 2049 obrazów testowych poprawnie zostało zinterpretowane 1341, co oznacza że dokładność naszego moedlu predykcyjnego wynosi 65,44%. Z pewnością wartość ta nie jest zachwycająca. Stąd też zmodyfikujemy liczbę najbliższych sąsiadów i korzystając z klasyfikatora metody k-najbliższych sąsiadów biblioteki scikit-learn sprawdzimy dla jakiej wartości k model uzyskuje najlepszą dokladność.

Rezultat jest następujący:

k-najbliższych sąsiadów

Najlepszą dokładność wynoszącą 73,3% uzyskano dla k=76 sąsiadów. To jeszcze zweryfikujemy jak bardzo różni się dokładność modelu z biblioteki scikit-learn a zaproponowanego w ramach Stanford CS231n 2017 CNN. Różnica jest nieznaczna bowiem w tym ostatnim przypadku dla k=76 dokładność została oszacowana na 73,20%. Przy k =76 w zbiorze 2049 obrazów testowych poprawnie zostało zweryfikowanych 1500.

I nadal nie będziemy zadowoleni z uzyskanego rezultatu. Jednak to i tak lepiej niż na chybił trafił, bo jak wiadomo tu szansa poprawnego wyniku to tylko 50%. Jeżeli ktoś zajrzy do zbioru na kaggle znajdzie tam rozwiązanie z wykorzystaniem konwolucyjnej sieci neuronej. Dokładność modelu w tym przypadku wzrosła do 86%. W ramach ćwiczenia można daną sieć modyfikować. A na koniec sprawdzimy jak sprawdzi się nasz model k-najbliższych sąsiadów do interpretacji zdjęcia wprost z sieci internet.

Określenie kategorii zdjęcia

Zdjęcia do identyfikacji to:

W tym przypadku model przeprowadził klasyfikację z pełnym sukcesem. Odpady zostały prawidłowo rozpoznane, jako te co nadają się do recyklingu organicznego i te, które nadają się do recyklingu materiałowego.

Good job!!!

Odnośniki

  1. Dane źródłowe – https://www.kaggle.com/datasets/techsash/waste-classification-data
  2. Dorobek naukowy prof. Adriana Horzyka – https://home.agh.edu.pl/~horzyk/ahpublikacje.php
  3. What is OpenCV’s INTER_AREA Actually Doing? | by Wenru Dong | Medium
  4. CS231n: Convolutional Neural Networks for Visual Recognition
  5. Nearest Neighbors Classification

Jurand Bień

dr hab. inż., prof. Politechniki Częstochowskiej; zainteresowania: aspekty środowiskowe, gospodarowanie odpadami (praktyczne), danologia (hobbystycznie)

dr hab. inż., prof. Politechniki Częstochowskiej; zainteresowania: aspekty środowiskowe, gospodarowanie odpadami (praktyczne), danologia (hobbystycznie)

Leave a Reply

Your email address will not be published. Required fields are marked *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.