Dobrze wiedzieć, że udało nam się nasycić roboty naszymi wrodzonymi zdolnościami uczenia się przez przykład i postrzegania otoczenia. Podstawowym wyzwaniem jest uczenie komputerów, aby „widzieć”, tak jak ludzie, potrzebowaliby znacznie więcej czasu i wysiłku.
Jeśli jednak weźmiemy pod uwagę praktyczną wartość, jaką ta umiejętność obecnie zapewnia organizacjom i przedsiębiorstwom, wysiłek ten jest wart zachodu. W tym artykule poznasz klasyfikację obrazów, sposób jej działania i jej praktyczną implementację. Zaczynajmy.
Co to jest klasyfikacja obrazów?
Zadanie podawania obrazu do sieci neuronowe a wyprowadzanie jakiejś formy etykiety dla tego obrazu jest znane jako rozpoznawanie obrazu. Etykieta wyjściowa sieci będzie odpowiadać wstępnie zdefiniowanej klasie.
Do obrazka może być przypisanych wiele klas lub po prostu jedna. Gdy istnieje tylko jedna klasa, często używa się terminu „uznanie”, natomiast w przypadku wielu klas często używa się terminu „klasyfikacja”.
Wykrywanie obiektów to podzbiór klasyfikacji obrazów, w którym wykrywane są określone wystąpienia obiektów jako należące do danej klasy, takie jak zwierzęta, pojazdy lub ludzie.
Jak działa klasyfikacja obrazów?
Obraz w postaci pikseli jest analizowany przez komputer. Dokonuje tego, traktując obraz jako zbiór matryc, których wielkość determinowana jest rozdzielczością obrazu. Mówiąc najprościej, klasyfikacja obrazu to badanie danych statystycznych wykorzystujących algorytmy z perspektywy komputera.
Klasyfikacji obrazu dokonuje się w cyfrowym przetwarzaniu obrazu poprzez grupowanie pikseli w z góry określone grupy lub „klasy”. Algorytmy dzielą obraz na ciąg godnych uwagi cech, co zmniejsza obciążenie końcowego klasyfikatora.
Te cechy informują klasyfikatora o znaczeniu obrazu i potencjalnej klasyfikacji. Ponieważ pozostałe procesy klasyfikacji obrazu są od niego zależne, najbardziej krytyczną fazą jest metoda ekstrakcji charakterystycznej.
Połączenia podane dane do algorytmu ma również kluczowe znaczenie w klasyfikacji obrazów, zwłaszcza w klasyfikacji nadzorowanej. W porównaniu do okropnego zestawu danych z brakiem równowagi danych w oparciu o klasę i niską jakość obrazu i adnotacji, dobrze zoptymalizowany zestaw danych klasyfikacji działa znakomicie.
Klasyfikacja obrazów za pomocą Tensorflow i Keras w Pythonie
Będziemy używać CIFAR-10 zestaw danych (który obejmuje samoloty, samoloty, ptaki i inne 7 rzeczy).
1. Wymagania dotyczące instalacji
Poniższy kod zainstaluje wszystkie wymagania wstępne.
2. Importowanie zależności
Utwórz plik train.py w Pythonie. Poniższy kod zaimportuje zależności Tensorflow i Keras.
3. Parametry inicjujące
CIFAR-10 zawiera tylko 10 kategorii obrazów, stąd liczba klas odnosi się po prostu do liczby kategorii do sklasyfikowania.
4. Ładowanie zbioru danych
Funkcja wykorzystuje moduł Tensorflow Datasets do załadowania zestawu danych, a my ustawiamy z info na True, aby uzyskać pewne informacje na jego temat. Możesz go wydrukować, aby zobaczyć, jakie są pola i ich wartości, a my użyjemy tych informacji, aby pobrać liczbę próbek w zestawie uczącym i testowym.
5. Tworzenie modelu
Teraz zbudujemy trzy warstwy, z których każda składa się z dwóch ConvNet z funkcją max-pooling i aktywacji ReLU, a następnie w pełni połączonym systemem 1024 jednostek. W porównaniu do ResNet50 lub Xception, które są najnowocześniejszymi modelami, może to być stosunkowo mały model.
6. Trening modelki
Użyłem Tensorboard do pomiaru dokładności i strat w każdej epoce i zapewniłem nam piękny wyświetlacz po zaimportowaniu danych i wygenerowaniu modelu. Uruchom następujący kod; w zależności od procesora/GPU trening zajmie kilka minut.
Aby użyć tensorboard, po prostu wpisz następujące polecenie w terminalu lub wierszu poleceń w bieżącym katalogu:
Zobaczysz, że zmniejsza się utrata walidacji, a dokładność wzrasta do około 81%. To fantastycznie!
Testowanie modelu
Po zakończeniu szkolenia ostateczny model i wagi są zapisywane w folderze wyników, co pozwala nam trenować raz i dokonywać prognoz, kiedy tylko zechcemy. Postępuj zgodnie z kodem w nowym pliku Pythona o nazwie test.py.
7. Importowanie narzędzi do testów
8. Tworzenie katalogu Pythona
Utwórz słownik Pythona, który tłumaczy każdą wartość całkowitą na odpowiednią etykietę zestawu danych:
9. Ładowanie danych testowych i modelu
Poniższy kod załaduje dane testowe i model.
10. Ocena i przewidywanie
Poniższy kod oceni i dokona prognoz na obrazach żab.
11. Wyniki
Model przewidział żabę z dokładnością 80.62%.
Wnioski
Dobra, skończyliśmy z tą lekcją. Chociaż 80.62% nie jest dobre dla małego CNN, zdecydowanie radzę zmienić model lub spojrzeć na ResNet50, Xception lub inne nowatorskie modele, aby uzyskać lepsze wyniki.
Teraz, gdy zbudowałeś już swoją pierwszą sieć rozpoznawania obrazów w Keras, powinieneś poeksperymentować z modelem, aby odkryć, jak różne parametry wpływają na jego wydajność.
Dodaj komentarz