Wykorzystanie splotowych sieci neuronowych do klasyfikacji obrazów

Opublikowany: 2020-08-14

Zmiana klasyfikacji obrazów. Dzięki CNN.

Splotowe sieci neuronowe (CNN) są podstawą klasyfikacji obrazów, zjawiskiem głębokiego uczenia, które bierze obraz i przypisuje mu klasę oraz etykietę, która czyni go wyjątkowym. Klasyfikacja obrazów przy użyciu CNN stanowi istotną część eksperymentów z uczeniem maszynowym.

Wraz z wykorzystaniem CNN i jej indukowanych możliwości, jest obecnie szeroko stosowany w wielu zastosowaniach – od tagowania zdjęć na Facebooku, przez rekomendacje produktów Amazon i zdjęcia medyczne, po automatyczne samochody. Powodem, dla którego CNN jest tak popularny, jest to, że wymaga bardzo niewielkiego przetwarzania wstępnego, co oznacza, że ​​może odczytywać obrazy 2D, stosując filtry, których nie potrafią inne konwencjonalne algorytmy. Zagłębimy się w proces klasyfikacji obrazów za pomocą CNN .

Spis treści

Jak działa CNN?

CNN są wyposażone w warstwę wejściową, warstwę wyjściową i warstwy ukryte, z których wszystkie pomagają przetwarzać i klasyfikować obrazy. Warstwy ukryte obejmują warstwy splotowe, warstwy ReLU, warstwy puli i warstwy w pełni połączone, z których wszystkie odgrywają kluczową rolę. Dowiedz się więcej o splotowej sieci neuronowej.

Przyjrzyjmy się, jak działa klasyfikacja obrazów za pomocą CNN :

Wyobraź sobie, że obraz wejściowy przedstawia słonia. Ten obraz z pikselami jest najpierw wprowadzany do warstw splotowych. Jeśli jest to obraz czarno-biały, obraz jest interpretowany jako warstwa 2D, przy czym każdemu pikselowi przypisywana jest wartość od „0” do „255”, przy czym „0” jest całkowicie czarny, a „255” całkowicie biały. Z drugiej strony, jeśli jest to obraz kolorowy, staje się on tablicą 3D z warstwą niebieską, zieloną i czerwoną, z wartościami każdego koloru od 0 do 255.

Następnie rozpoczyna się odczytywanie macierzy, dla którego oprogramowanie wybiera mniejszy obraz, znany jako „filtr” (lub jądro). Głębokość filtra jest taka sama jak głębokość wejścia. Filtr następnie wytwarza ruch konwolucyjny wraz z obrazem wejściowym, przesuwając się wzdłuż obrazu o 1 jednostkę.

Następnie mnoży wartości przez oryginalne wartości obrazu. Wszystkie pomnożone liczby są sumowane i generowana jest jedna liczba. Proces jest powtarzany wraz z całym obrazem i uzyskuje się macierz mniejszą niż oryginalny obraz wejściowy.

Ostatnia tablica nazywana jest mapą funkcji mapy aktywacji. Splot obrazu ułatwia wykonywanie operacji, takich jak wykrywanie krawędzi, wyostrzanie i rozmycie, dzięki zastosowaniu różnych filtrów. Wystarczy określić takie aspekty, jak rozmiar filtra, liczba filtrów i/lub architektura sieci.

Z ludzkiego punktu widzenia działanie to jest podobne do identyfikowania prostych kolorów i granic obrazu. Jednak, aby sklasyfikować obraz i rozpoznać cechy, które sprawiają, że jest to, powiedzmy, słonia, a nie kota, należy zidentyfikować unikalne cechy, takie jak duże uszy i trąba słonia. Tutaj wkraczają warstwy nieliniowe i puli.

Warstwa nieliniowa (ReLU) podąża za warstwą splotu, w której funkcja aktywacji jest stosowana do map cech w celu zwiększenia nieliniowości obrazu. Warstwa ReLU usuwa wszystkie wartości ujemne i zwiększa dokładność obrazu. Chociaż istnieją inne operacje, takie jak tanh lub sigmoid, ReLU jest najbardziej popularny, ponieważ może znacznie szybciej trenować sieć.

Następnym krokiem jest utworzenie kilku obrazów tego samego obiektu, tak aby sieć zawsze mogła rozpoznać ten obraz, niezależnie od jego rozmiaru lub lokalizacji. Na przykład na obrazie słonia sieć musi rozpoznać słonia, niezależnie od tego, czy idzie, stoi nieruchomo czy biegnie. Musi być elastyczność obrazu i tu właśnie pojawia się warstwa łączenia.

Współpracuje z pomiarami obrazu (wysokość i szerokość), aby stopniowo zmniejszać rozmiar obrazu wejściowego, aby można było dostrzec i zidentyfikować obiekty na obrazie w dowolnym miejscu.

Łączenie w pulę pomaga również kontrolować „przesadne dopasowanie”, w przypadku gdy jest za dużo informacji, bez możliwości na nowe. Być może najczęstszym przykładem poolingu jest max pooling, w którym obraz jest podzielony na szereg nienakładających się obszarów.

Max pooling polega na określeniu maksymalnej wartości w każdym obszarze, tak aby wszystkie dodatkowe informacje zostały wykluczone, a obraz stał się mniejszy. Ta czynność pomaga również uwzględnić zniekształcenia obrazu.

Teraz pojawia się w pełni połączona warstwa, która dodaje sztuczną sieć neuronową do korzystania z CNN. Ta sztuczna sieć łączy różne funkcje i pomaga przewidywać klasy obrazów z większą dokładnością. Na tym etapie obliczany jest gradient funkcji błędu w odniesieniu do wagi sieci neuronowej. Wagi i detektory cech są dostosowywane w celu optymalizacji wydajności, a proces ten jest powtarzany wielokrotnie.

Oto jak wygląda architektura CNN:

Źródło

Wykorzystanie zbiorów danych dla aplikacji CNN-MNIST

Do skutecznego zastosowania CNN można wykorzystać kilka zbiorów danych. Trzy najpopularniejsze z nich kluczowe w klasyfikacji obrazów przy użyciu CNN to MNIST, CIFAR-10 i ImageNet. Spójrzmy najpierw na MNIST.

1. MNIST

MNIST jest akronimem zbioru danych Zmodyfikowanego Narodowego Instytutu Standardów i Technologii i zawiera 60 000 małych, kwadratowych obrazów 28×28 w skali szarości pojedynczych, odręcznych cyfr od 0 do 9. MNIST jest popularnym i dobrze zrozumiałym zbiorem danych, który jest część, „rozwiązany”. Może być stosowany w wizji komputerowej i głębokim uczeniu się, aby ćwiczyć, rozwijać i oceniać klasyfikację obrazów za pomocą CNN . Obejmuje to między innymi kroki w celu oceny wydajności modelu, zbadania możliwych ulepszeń i wykorzystania go do przewidywania nowych danych.

Jego USP polega na tym, że ma już dobrze zdefiniowany zestaw danych dotyczących pociągów i testów, z których możemy korzystać. Ten zestaw treningowy można dalej podzielić na pociąg i sprawdzić poprawność zestawu danych, jeśli trzeba ocenić wydajność modelu przebiegu szkolenia. Jego wydajność w zestawie pociągu i walidacji w każdym przebiegu można rejestrować jako krzywe uczenia się, aby uzyskać lepszy wgląd w to, jak dobrze model uczy się problemu.

Keras, jeden z wiodących interfejsów API sieci neuronowych, wspiera to, określając w modelu argument „validation_data . Funkcja Fit () podczas trenowania modelu, która ostatecznie zwraca obiekt, który wspomina o wydajności modelu dla utraty i metryk w każdym przebiegu szkolenia. Na szczęście MNIST jest domyślnie wyposażony w Keras, a pliki szkoleniowe i testowe można załadować za pomocą zaledwie kilku linijek kodu.

Co ciekawe, artykuł Yanna LeCuna, profesora w The Courant Institute of Mathematical Sciences na Uniwersytecie Nowojorskim i Corinny Cortes, naukowca w Google Labs w Nowym Jorku, wskazuje, że specjalna baza danych MNIST 3 (SD-3) została pierwotnie przypisana jako zestaw treningowy. Specjalna baza danych 1 (SD-1) została wyznaczona jako zestaw testowy.

Uważają jednak, że SD-3 jest znacznie łatwiejszy do zidentyfikowania i rozpoznania niż SD-1, ponieważ SD-3 została pobrana od pracowników Biura Spisu Ludności, a SD-1 od uczniów szkół średnich. Ponieważ dokładne wnioski z eksperymentów uczenia się wskazują, że wynik musi być niezależny od zestawu uczącego i testu, uznano za konieczne opracowanie nowej bazy danych z pominięciem zestawów danych.

Podczas korzystania z zestawu danych zaleca się podzielenie go na minipartie, przechowywanie go w zmiennych współdzielonych i dostęp do niego na podstawie indeksu minipartii. Możesz się zastanawiać nad potrzebą wspólnych zmiennych, ale wiąże się to z wykorzystaniem GPU. Dzieje się tak, że podczas kopiowania danych do pamięci GPU, jeśli skopiujesz każdą minipartię osobno w razie potrzeby, kod GPU zwolni i nie będzie znacznie szybszy niż kod procesora. Jeśli masz swoje dane we wspólnych zmiennych Theano, istnieje duża szansa na skopiowanie całych danych na GPU za jednym razem, gdy zostaną zbudowane wspólne zmienne.

Później GPU może korzystać z miniwsadu, uzyskując dostęp do tych współdzielonych zmiennych bez konieczności kopiowania informacji z pamięci procesora. Ponadto, ponieważ punkty danych są zwykle liczbami rzeczywistymi i liczbami całkowitymi etykiet, dobrze byłoby użyć dla nich różnych zmiennych, a także dla zestawu walidacyjnego, zestawu szkoleniowego i zestawu testowego, aby kod był łatwiejszy do odczytania.

Poniższy kod pokazuje, jak przechowywać dane i uzyskać dostęp do minipartii:

Źródło

2. Zbiór danych CIFAR-10

CIFAR oznacza Kanadyjski Instytut Badań Zaawansowanych, a zestaw danych CIFAR-10 został opracowany przez naukowców z instytutu CIFAR wraz z zestawem danych CIFAR-100. Zbiór danych CIFAR-10 składa się z 60 000 kolorowych obrazów o wymiarach 32×32 piksele obiektów należących do dziesięciu klas, takich jak koty, statki, ptaki, żaby itp. Obrazy te są znacznie mniejsze niż przeciętne zdjęcie i są przeznaczone do celów widzenia komputerowego.

CIFAR to dobrze zrozumiały, prosty zestaw danych, który jest w 80% dokładny w klasyfikacji obrazów przy użyciu procesu CNN i w 90% w zestawie danych testowych. Ponadto w jednej partii testowej i pięciu partiach treningowych znajduje się aż 1000 obrazów.

Zbiór danych CIFAR-10 składa się z 1000 losowo wybranych obrazów z każdej klasy, ale niektóre partie mogą zawierać więcej obrazów z jednej klasy niż z innej. Jednak partie szkoleniowe zawierają dokładnie 5000 obrazów z każdej klasy. Zestaw danych CIFAR-10 jest preferowany ze względu na łatwość użycia jako punkt wyjścia do rozwiązywania problemów z klasyfikacją obrazów CNN za pomocą problemów.

Projekt zestawu testowego jest modułowy i może być opracowany z pięcioma elementami, które obejmują ładowanie zestawu danych, definicję modelu, przygotowanie zestawu danych oraz ocenę i prezentację wyników. Poniższy przykład przedstawia zestaw danych CIFAR-10 przy użyciu interfejsu API Keras z pierwszymi dziewięcioma obrazami w zestawie danych treningowych:

Źródło

Uruchomienie przykładu ładuje zestaw danych CIFAR-10 i drukuje ich kształt.

3. Sieć obrazów

ImageNet ma na celu kategoryzowanie i etykietowanie obrazów na blisko 22 000 kategorii na podstawie predefiniowanych słów i fraz. Aby to zrobić, podąża za hierarchią WordNet, gdzie każde słowo lub fraza jest synonimem lub synsetem (w skrócie). W ImageNet wszystkie obrazy są zorganizowane zgodnie z tymi synsetami, aby mieć ponad tysiąc obrazów na synset.

Jednak gdy mowa o ImageNet w wizji komputerowej i głębokim uczeniu się, w rzeczywistości oznacza to ImageNet Large Scale Recognition Challenge lub ILSVRC. Celem jest podzielenie obrazu na 1000 różnych kategorii przy użyciu ponad 100 000 obrazów testowych, ponieważ zestaw danych szkoleniowych zawiera około 1,2 miliona obrazów.

Być może największym wyzwaniem jest to, że obrazy w ImageNet mierzą 224×224, a więc przetwarzanie tak dużej ilości danych wymaga ogromnej mocy procesora, karty graficznej i pamięci RAM. Może się to okazać niemożliwe dla przeciętnego laptopa, więc jak rozwiązać ten problem?

Jednym ze sposobów na to jest użycie Imagenette, zestawu danych wyodrębnionego z ImageNet, który nie wymaga zbyt wielu zasobów. Ten zestaw danych zawiera dwa foldery o nazwach „train” (szkolenie) i „Val” (walidacja) z osobnymi folderami dla każdej klasy. Wszystkie te klasy mają ten sam identyfikator, co oryginalny zestaw danych, a każda z klas ma około 1000 obrazów, więc cała konfiguracja jest dość zrównoważona.

Inną opcją jest użycie uczenia transferu, metody, która wykorzystuje wstępnie wytrenowane wagi na dużych zbiorach danych. Jest to bardzo skuteczny sposób klasyfikacji obrazów za pomocą CNN , ponieważ możemy go wykorzystać do stworzenia modeli, które dobrze dla nas działają. Jedynym aspektem, który powinna umożliwiać klasyfikacja obrazów przy użyciu modelu CNN , jest klasyfikowanie obrazów należących do tej samej klasy i rozróżnianie między różnymi. Tutaj możemy skorzystać z wytrenowanych wcześniej ciężarów. Zaletą jest to, że możemy używać różnych metod w zależności od rodzaju zestawu danych, z którym pracujemy.

Przeczytaj także: 7 rodzajów sztucznych sieci neuronowych, które inżynierowie ML powinni wiedzieć

Podsumowując

Podsumowując, klasyfikacja obrazów za pomocą CNN sprawiła, że ​​proces jest łatwiejszy, dokładniejszy i mniej uciążliwy. Jeśli chcesz zagłębić się w uczenie maszynowe, upGrad oferuje szereg kursów, które pomogą Ci opanować je jak profesjonalista!

upGrad oferuje różne kursy online z szeroką gamą podkategorii; odwiedź oficjalną stronę, aby uzyskać więcej informacji.

Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, sprawdź dyplom PG IIIT-B i upGrad w uczeniu maszynowym i sztucznej inteligencji, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznego szkolenia, ponad 30 studiów przypadków i zadań, IIIT- Status absolwenta B, ponad 5 praktycznych, praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Czym są splotowe sieci neuronowe?

Konwolucyjne sieci neuronowe (CNN) lub convnets to kategoria głębokich, sprzężonych do przodu sztucznych sieci neuronowych, najczęściej stosowanych do analizy obrazów wizualnych. Konstrukcja CNN jest luźno inspirowana organizacją kory wzrokowej ssaków, chociaż zostały one również zastosowane do audio, mowy i innych dziedzin. Sieci CNN wykorzystują odmianę wielowarstwowych perceptronów zaprojektowanych tak, aby wymagały minimalnego przetwarzania wstępnego. To sprawia, że ​​są mniej podatne na błędy i bardziej podatne na różnorodne problemy, ale poświęcają możliwość wykonywania nieliniowych przekształceń na swoich wejściach.

Dlaczego splotowe sieci neuronowe są dobre do klasyfikacji obrazów?

Dużym ograniczeniem CNN jest to, że nie jest w stanie uchwycić kontekstu obrazu. Nie potrafi też robić twarzy i kolorować. Więcej ograniczeń CNN: Techniki uczenia się stosowane w sieciach neuronowych nie są wystarczające do odtworzenia wyższych funkcji poznawczych, takich jak rozpoznawanie obiektów, uczenie się, świadomość przestrzenna i zdolność do przekazywania doświadczeń. Architektura sieci neuronowych nie jest wystarczająco elastyczna, aby przezwyciężyć te ograniczenia.

Dlaczego CNN najlepiej nadaje się do klasyfikacji obrazów?