Sieci neuronowe oparte na splotach to zaawansowana metoda identyfikacji obiektów i kategoryzacji obrazów, charakteryzująca się dużą skalowalnością.
Świat technologii nieustannie ewoluuje, a sztuczna inteligencja (AI) i uczenie maszynowe (ML) są tematami często poruszanymi w dyskusjach.
Obecnie te technologie znajdują zastosowanie w niemal każdej dziedzinie, począwszy od marketingu, e-commerce i tworzenia oprogramowania, aż po bankowość, finanse i medycynę.
Sztuczna inteligencja i ML to rozległe obszary, a trwają intensywne prace nad rozszerzeniem ich zastosowań w celu rozwiązania różnorodnych problemów. Z tego powodu w obrębie tych technologii wyodrębniło się wiele gałęzi; ML jest podzbiorem sztucznej inteligencji.
Jedną z prężnie rozwijających się gałęzi sztucznej inteligencji są splotowe sieci neuronowe.
W niniejszym artykule przyjrzymy się bliżej temu, czym są CNN, jak działają i jakie mają zastosowanie w dzisiejszym świecie.
Zacznijmy!
Czym jest splotowa sieć neuronowa?
Splotowa sieć neuronowa (ConvNet lub CNN) to specjalny rodzaj sztucznej sieci neuronowej (ANN), która wykorzystuje algorytmy głębokiego uczenia do analizy obrazów, klasyfikacji elementów wizualnych i realizacji zadań z zakresu widzenia komputerowego.
CNN bazują na zasadach algebry liniowej, w tym na mnożeniu macierzy, aby wykrywać wzorce na obrazach. Ze względu na złożoność obliczeń, proces uczenia modeli wymaga procesorów graficznych (GPU).
Ujmując to prościej, CNN wykorzystują algorytmy głębokiego uczenia do przetwarzania danych wejściowych, takich jak obrazy, i przypisywania im wag w postaci błędów systematycznych i parametrów podlegających uczeniu. Dzięki temu CNN potrafią odróżniać obrazy lub dokonywać ich klasyfikacji.
CNN: Rys historyczny
Jako że splotowa sieć neuronowa jest typem sztucznej sieci neuronowej, warto przypomnieć sobie, czym są te sieci.
W informatyce sieć neuronowa stanowi element uczenia maszynowego (ML), wykorzystującego algorytmy głębokiego uczenia. Działa na zasadzie analogii do struktury połączeń neuronów w ludzkim mózgu. Wzorce funkcjonowania kory wzrokowej również stanowią inspirację dla sztucznych sieci neuronowych.
Różne typy sieci neuronowych, czyli sztuczne sieci neuronowe (SSN), wykorzystuje się do odmiennych celów. Jednym z nich jest CNN, stosowany między innymi do wykrywania i klasyfikacji obrazów. Został on opracowany w latach 80. XX wieku przez badacza, dr. Yanna LeCuna.
Wczesna wersja CNN, LeNet (nazwana tak na cześć LeCuna), potrafiła rozpoznawać odręcznie pisane cyfry. Była ona wykorzystywana w sektorze bankowym i pocztowym do odczytywania cyfr na czekach i kodów pocztowych na kopertach.
Jednak ta pierwotna wersja miała ograniczenia w kwestii skalowalności. Z tego powodu CNN nie były powszechnie stosowane w sztucznej inteligencji i widzeniu komputerowym. Co więcej, wymagały one znacznych zasobów obliczeniowych i danych, aby efektywniej pracować z większymi obrazami.
W 2012 roku AlexNet zrewolucjonizował głębokie uczenie, wykorzystując sieci neuronowe składające się z wielu warstw. Mniej więcej w tym czasie udoskonalono technologię i udostępniono duże zbiory danych oraz moce obliczeniowe, co umożliwiło tworzenie złożonych sieci CNN zdolnych do efektywnego wykonywania zadań z zakresu widzenia komputerowego.
Struktura CNN: Warstwy
Zrozumienie struktury CNN wymaga przyjrzenia się jej poszczególnym warstwom. Dodawanie kolejnych warstw zwiększa złożoność sieci i pozwala na wykrywanie większej liczby cech na obrazie. Począwszy od identyfikacji prostych elementów, sieć staje się zdolna do rozpoznawania złożonych cech, takich jak kształt obiektu i jego większe fragmenty, aż do rozpoznania całego obrazu.
Warstwa splotowa
Pierwszą warstwą CNN jest warstwa splotowa. Stanowi ona podstawowy element konstrukcyjny sieci, gdzie wykonywana jest większość obliczeń. Do jej działania potrzebne są jedynie dane wejściowe, mapa cech oraz filtr.
CNN mogą zawierać wiele warstw splotowych. Takie rozwiązanie sprawia, że struktura sieci jest hierarchiczna, gdyż kolejne warstwy analizują piksele w polach recepcyjnych warstw poprzednich. W efekcie warstwy splotowe przekształcają obraz na wartości liczbowe, co pozwala sieci na zrozumienie i wyodrębnienie istotnych wzorców.
Warstwy łączenia
Warstwy łączenia służą do zmniejszania wymiarów, nazywa się to również próbkowaniem w dół. Powodują one redukcję parametrów używanych na wejściu. Operacja łączenia polega na przesuwaniu filtra po danych wejściowych, analogicznie jak w warstwie splotowej, z tym, że w tym przypadku nie ma wag. Filtr stosuje funkcję łączenia do wartości liczbowych w polu recepcyjnym, uzyskując w efekcie tablicę wyników.
Wyróżniamy dwa rodzaje łączenia:
- Uśrednianie (Average Pooling): Oblicza średnią wartość w polu recepcyjnym, które filtr przeszukuje po danych wejściowych, a następnie wysyła ją do macierzy wyjściowej.
- Maksymalizacja (Max Pooling): Wybiera piksel o największej wartości i wysyła go do macierzy wyjściowej, w miarę jak filtr przeszukuje dane wejściowe. Maksymalizacja jest stosowana częściej niż uśrednianie.
Choć łączenie danych skutkuje utratą pewnej ilości informacji, niesie ze sobą wiele korzyści dla CNN. Pomaga zmniejszyć ryzyko nadmiernego dopasowania, upraszcza strukturę sieci, a jednocześnie poprawia jej efektywność. Wpływa również na stabilność działania CNN.
W pełni połączona warstwa (FC)
Zgodnie z nazwą, w warstwie w pełni połączonej wszystkie węzły warstwy wyjściowej są bezpośrednio połączone z węzłami poprzedniej warstwy. Warstwa ta klasyfikuje obraz na podstawie wyodrębnionych cech, z wykorzystaniem wyników z poprzednich warstw i ich filtrów.
Co więcej, warstwy FC zazwyczaj korzystają z funkcji aktywacji softmax, aby precyzyjnie sklasyfikować dane wejściowe, zamiast funkcji ReLu (jak ma to miejsce w warstwach łączenia i splotowych). Dzięki temu uzyskuje się prawdopodobieństwo w zakresie od 0 do 1.
Jak działają sieci CNN?
Splotowa sieć neuronowa składa się z wielu, a nawet setek warstw. Warstwy te uczą się rozpoznawania różnych cech danego obrazu.
Chociaż CNN są sieciami neuronowymi, ich architektura różni się od zwykłych sieci ANN.
Sieć ANN przetwarza dane wejściowe poprzez wiele warstw ukrytych, przy czym każda warstwa składa się ze zbioru sztucznych neuronów i jest w pełni połączona z każdym neuronem w tej samej warstwie. Na końcu znajduje się warstwa w pełni połączona lub wyjściowa, która prezentuje wynik.
Z kolei w CNN warstwy są zorganizowane w trzech wymiarach: szerokości, głębokości i wysokości. W tym przypadku neuron w danej warstwie łączy się tylko z neuronami w małym obszarze, zamiast z każdym neuronem w warstwie następnej. Ostatecznie wynik końcowy jest reprezentowany przez pojedynczy wektor z wartością prawdopodobieństwa, mający tylko wymiar głębokości.
Można w tym miejscu zadać pytanie: czym jest „splot” w kontekście CNN?
Otóż splot odnosi się do operacji matematycznej, która łączy dwa zestawy danych. W sieciach CNN koncepcja splotu jest wykorzystywana do danych wejściowych w celu uzyskania mapy cech poprzez filtrowanie informacji.
To prowadzi nas do kilku ważnych pojęć i terminów używanych w CNN.
- Filtr: znany również jako detektor cech lub jądro, filtr może mieć określony rozmiar, np. 3×3. Przesuwa się po obrazie wejściowym, aby dokonać mnożenia macierzy dla każdego elementu, co stanowi proces splotu. Filtry stosuje się do każdego obrazu treningowego w różnych rozdzielczościach, a wyjście z przefiltrowanego obrazu staje się danymi wejściowymi dla kolejnej warstwy.
- Padding: służy do rozszerzenia macierzy wejściowej do granic za pomocą dodawania fikcyjnych pikseli. Celem tego zabiegu jest przeciwdziałanie zmniejszaniu się rozmiaru macierzy po operacji splotu. Na przykład macierz 9×9 może zmienić się w macierz 3×3 po przefiltrowaniu.
- Krok (stride): Jeśli chcemy, aby wynik miał mniejszy rozmiar niż dane wejściowe, możemy zastosować krok. Polega to na pomijaniu niektórych obszarów, gdy filtr przesuwa się po obrazie. Pomijając co drugi lub co trzeci piksel, można stworzyć wydajniejszą sieć, redukując rozdzielczość przestrzenną.
- Wagi i odchylenia: W neuronach CNN znajdują się wagi i odchylenia. Model uczy się tych wartości podczas procesu uczenia, przy czym są one stałe dla wszystkich neuronów w danej warstwie. Oznacza to, że każdy ukryty neuron wykrywa te same cechy w różnych obszarach obrazu. W efekcie sieć staje się bardziej odporna na przesunięcia obiektów na danym obrazie.
- ReLU: to skrót od Rectified Linear Unit (ReLu) – liniowej jednostki rektyfikowanej – i służy do bardziej efektywnego i szybszego procesu uczenia. Odwzorowuje wartości ujemne na 0 i zachowuje wartości dodatnie. Nazywa się to również aktywacją, gdyż sieć przenosi do kolejnej warstwy tylko aktywowane cechy obrazu.
- Pole recepcyjne: W sieci neuronowej każdy neuron otrzymuje dane wejściowe z różnych lokalizacji z poprzedniej warstwy. W warstwach splotowych każdy neuron otrzymuje dane wejściowe z ograniczonego obszaru tylko z warstwy poprzedniej, nazywanego polem recepcyjnym neuronu. Dla warstwy FC polem recepcyjnym jest cała poprzednia warstwa.
W rzeczywistych zadaniach obliczeniowych operacja splotu jest najczęściej wykonywana na obrazie 3D, co wymaga zastosowania filtra 3D.
Wracając do CNN, sieć ta składa się z różnych części, czyli warstw węzłów. Każda warstwa węzłów ma próg i wagę i jest połączona z inną. Po przekroczeniu progu dane są przesyłane do kolejnej warstwy w sieci.
Warstwy te wykonują operacje modyfikujące dane w celu nauczenia się istotnych cech. Te operacje powtarzają się w setkach różnych warstw, które uczą się wykrywania odmiennych cech obrazu.
Struktura CNN obejmuje:
- Warstwę wejściową: to miejsce, w którym wprowadzane są dane wejściowe, na przykład obraz. Jest to obiekt 3D o określonej wysokości, szerokości i głębokości.
- Jedną lub więcej warstw ukrytych, czyli fazę ekstrakcji cech: warstwy te mogą być warstwami splotowymi, warstwami łączenia i warstwami w pełni połączonymi.
- Warstwę wyjściową: tu prezentowany jest wynik.
W wyniku przejścia obrazu przez warstwę splotu powstaje mapa cech lub mapa aktywacji. Po przetworzeniu danych wejściowych warstwy splotowe przekazują wynik do kolejnej warstwy.
CNN wykonuje szereg operacji splotu i łączenia w celu wyodrębnienia cech w fazie ekstrakcji. Na przykład, jeśli wprowadzimy obraz kota, CNN rozpozna jego cztery łapy, kolor, dwoje oczu itd.
Następnie warstwy w pełni połączone w CNN działają jak klasyfikator wyodrębnionych obiektów. Na podstawie przewidywań algorytmu głębokiego uczenia co do obrazu, warstwy generują wynik.
Zalety sieci CNN
Wyższa dokładność
CNN oferują wyższą dokładność w porównaniu ze zwykłymi sieciami neuronowymi, które nie wykorzystują splotu. CNN są szczególnie przydatne w zadaniach obejmujących duże zbiory danych, rozpoznawanie obrazów i wideo itp. Zapewniają bardzo precyzyjne wyniki i prognozy, dlatego ich wykorzystanie wzrasta w różnych sektorach.
Wydajność obliczeniowa
CNN oferują wyższy poziom wydajności obliczeniowej niż standardowe sieci neuronowe. Jest to zasługą procesu splotu. Sieci te wykorzystują również redukcję wymiarów i dzielenie parametrów, dzięki czemu modele są szybsze i łatwiejsze we wdrożeniu. Techniki te można zoptymalizować do pracy na różnych urządzeniach, zarówno na smartfonie, jak i laptopie.
Ekstrakcja cech
CNN potrafią automatycznie nauczyć się cech obrazu bez konieczności ręcznego projektowania cech. Można wykorzystać wytrenowane sieci CNN i zarządzać ich wagami, podając im nowe dane do analizy. Sieci CNN bez problemu dostosowują się do nowego zadania.
Zastosowania CNN
CNN znajdują zastosowanie w wielu branżach, w różnorodnych przypadkach użycia. Niektóre z rzeczywistych zastosowań sieci CNN obejmują:
Klasyfikacja obrazów
CNN są szeroko stosowane w klasyfikacji obrazów. Potrafią rozpoznawać ważne cechy i identyfikować obiekty na obrazie. Dlatego są wykorzystywane m.in. w sektorze opieki zdrowotnej, szczególnie w badaniach MRI. Technologia ta służy również do rozpoznawania odręcznie pisanych cyfr, co było jednym z pierwszych zastosowań CNN w widzeniu komputerowym.
Wykrywanie obiektów
CNN umożliwiają wykrywanie obiektów na obrazach w czasie rzeczywistym, a także ich oznaczanie i klasyfikację. Z tego powodu technika ta jest powszechnie stosowana w pojazdach zautomatyzowanych. Umożliwia także inteligentnym domom i pojazdom rozpoznawanie twarzy właściciela. Jest również wykorzystywana w systemach nadzoru z wykorzystaniem sztucznej inteligencji do wykrywania i oznaczania obiektów.
Dopasowanie audiowizualne
Dzięki wsparciu CNN w dopasowaniu audiowizualnym ulepszane są platformy strumieniowego przesyłania wideo, takie jak Netflix czy YouTube. Pomaga to również spełniać zapytania użytkowników, np. o wyszukanie „piosenek miłosnych Eltona Johna”.
Rozpoznawanie mowy
Oprócz obrazów, sieci CNN znajdują zastosowanie w przetwarzaniu języka naturalnego (NLP) i rozpoznawaniu mowy. Przykładem może być wykorzystanie CNN przez Google w jego systemie rozpoznawania mowy.
Rekonstrukcja obiektów
Sieci CNN mogą być wykorzystywane w modelowaniu 3D rzeczywistych obiektów w środowisku cyfrowym. Modele CNN mogą tworzyć trójwymiarowy model twarzy na podstawie obrazu. Dodatkowo CNN są przydatne w tworzeniu cyfrowych bliźniaków w biotechnologii, produkcji, inżynierii i architekturze.
Przykłady zastosowań CNN w różnych sektorach:
- Opieka zdrowotna: Widzenie komputerowe może być wykorzystywane w radiologii, aby wspomagać lekarzy w wykrywaniu guzów nowotworowych z większą skutecznością.
- Rolnictwo: Sieci mogą wykorzystywać obrazy z satelitów, np. LSAT, i na podstawie tych danych klasyfikować żyzne tereny. Pomaga to również w przewidywaniu poziomu żyzności gleby i opracowywaniu skutecznych strategii maksymalizacji plonów.
- Marketing: aplikacje społecznościowe mogą sugerować osoby na zdjęciu zamieszczonym na profilu użytkownika. Pomaga to w oznaczaniu osób na zdjęciach w albumach.
- Handel detaliczny: Platformy e-commerce mogą korzystać z wyszukiwania wizualnego, aby polecać klientom produkty, które chcą kupić.
- Motoryzacja: CNN znajdują zastosowanie w samochodach, poprawiając bezpieczeństwo pasażerów i kierowców. Służą m.in. do wykrywania linii pasa ruchu, rozpoznawania obiektów czy klasyfikacji obrazu. W rezultacie przyczyniają się do rozwoju autonomicznych pojazdów.
Materiały do nauki CNN
Coursera:
Na platformie Coursera dostępny jest kurs poświęcony CNN. Uczestnicy kursu dowiadują się, jak ewoluowało widzenie komputerowe na przestrzeni lat i jakie zastosowania mają sieci CNN w dzisiejszym świecie.
Amazon:
Polecane książki i wykłady, które pomogą zgłębić wiedzę na temat CNN:
- Sieci neuronowe i głębokie uczenie: Obejmuje modele, algorytmy i teorię głębokiego uczenia i sieci neuronowych.
- Przewodnik po splotowych sieciach neuronowych dla widzenia komputerowego: Ta książka przybliży koncepcje sieci CNN i ich zastosowania.
- Praktyczne splotowe sieci neuronowe z Tensorflow: Ta książka uczy, jak rozwiązywać różne problemy z zakresu widzenia komputerowego, wykorzystując Pythona i TensorFlow.
- Zaawansowane zastosowania głębokiego uczenia: Z tej książki można dowiedzieć się więcej o sieciach CNN, głębokim uczeniu i ich zaawansowanych zastosowaniach, w tym o wykrywaniu obiektów.
- Splotowe sieci neuronowe i rekurencyjne sieci neuronowe: Z książki można nauczyć się, jak budować sieci CNN i RNN.
Podsumowanie
Splotowe sieci neuronowe to prężnie rozwijająca się dziedzina sztucznej inteligencji, uczenia maszynowego i głębokiego uczenia. Mają szerokie zastosowanie w dzisiejszym świecie, w prawie każdym sektorze. Biorąc pod uwagę ich coraz większe wykorzystanie, przewiduje się, że w przyszłości będą się one dalej rozwijać i znajdą jeszcze więcej zastosowań w rozwiązywaniu problemów ze świata rzeczywistego.
newsblog.pl