Konwolucyjne sieci neuronowe (CNN): wprowadzenie

Splotowe sieci neuronowe oferują bardziej skalowalny sposób rozpoznawania obiektów i zadań klasyfikacji obrazów.

W świecie technologii dzieje się wiele postępów. Sztuczna inteligencja i uczenie maszynowe to jedne z typowych kwestii, które możesz często słyszeć.

Obecnie technologie te są wykorzystywane w niemal każdej dziedzinie, od marketingu, handlu elektronicznego i tworzenia oprogramowania po bankowość, finanse i medycynę.

Sztuczna inteligencja i ML to rozległe dziedziny, a podejmowane są wysiłki, aby poszerzyć ich zastosowania w celu rozwiązania wielu rzeczywistych problemów. To dlatego można było zobaczyć wiele gałęzi wewnątrz tych technologii; ML jest podzbiorem samej sztucznej inteligencji.

Jedną z gałęzi sztucznej inteligencji, która staje się popularna w dzisiejszych czasach, są splotowe sieci neuronowe.

W tym artykule omówię, czym są CNN, jak działają i jaka jest ich przydatność we współczesnym świecie.

Zanurzmy się od razu!

Co to jest splotowa sieć neuronowa?

Splotowa sieć neuronowa (ConvNet lub CNN) to sztuczna sieć neuronowa (ANN), która wykorzystuje algorytmy głębokiego uczenia do analizowania obrazów, klasyfikowania elementów wizualnych i wykonywania zadań widzenia komputerowego.

CNN wykorzystuje zasady algebry liniowej, takie jak mnożenie macierzy, do wykrywania wzorów na obrazie. Ponieważ procesy te wymagają złożonych obliczeń, wymagają one procesorów graficznych (GPU) do uczenia modeli.

Mówiąc prościej, CNN wykorzystuje algorytmy Deep Learning do zbierania danych wejściowych, takich jak obrazy, i przypisywania ważności w postaci błędów systematycznych i możliwych do nauczenia wag różnym aspektom tego obrazu. W ten sposób CNN może rozróżniać obrazy lub je klasyfikować.

CNN: Krótka historia

Ponieważ splotowa sieć neuronowa jest sztuczną siecią neuronową, ważne jest, aby powtórzyć sieci neuronowe.

W obliczeniach sieć neuronowa jest częścią uczenia maszynowego (ML) z wykorzystaniem algorytmów głębokiego uczenia. Jest to analogiczne do wzorców łączności, za którymi podążają neurony w ludzkim mózgu. Sztuczne sieci neuronowe również czerpią inspirację ze sposobu ułożenia kory wzrokowej.

Tak więc różne typy sieci neuronowych lub sztuczne sieci neuronowe (SSN) są wykorzystywane do różnych celów. Jednym z nich jest CNN używany do wykrywania i klasyfikacji obrazów i nie tylko. Został wprowadzony przez badacza z tytułem doktora, Yanna LeCuna, w latach 80. XX wieku.

Wczesna wersja CNN – LeNet, nazwana na cześć LeCuna, była w stanie rozpoznawać odręczne cyfry. Następnie był używany w usługach bankowych i pocztowych do odczytywania cyfr na czekach i kodów pocztowych zapisanych na kopertach.

Jednak tej wczesnej wersji brakowało skalowania; stąd CNN nie były często wykorzystywane w sztucznej inteligencji i wizji komputerowej. Ponadto wymagało to znacznych zasobów obliczeniowych i danych, aby pracować wydajniej z większymi obrazami.

Co więcej, w 2012 r. AlexNet zrewidował głębokie uczenie, które wykorzystuje 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 duże zasoby obliczeniowe, aby umożliwić tworzenie złożonych sieci CNN zdolnych do wydajnego wykonywania czynności związanych z widzeniem komputerowym.

Warstwy w CNN

Rozumiemy różne warstwy w CNN. Zwiększanie warstw w CNN zwiększy jej złożoność i umożliwi wykrywanie większej liczby aspektów lub obszarów obrazu. Zaczynając od prostej funkcji, staje się w stanie wykryć złożone cechy, takie jak kształt obiektu i większe elementy, aż w końcu może wykryć obraz.

Warstwa splotowa

Pierwsza warstwa CNN to warstwa splotowa. To główny budulec CNN, w którym odbywa się większość obliczeń. Potrzebuje mniej komponentów, takich jak dane wejściowe, mapa funkcji i filtr.

CNN może mieć również dodatkowe warstwy splotowe. To sprawia, że ​​struktura CNN jest hierarchiczna, ponieważ kolejne warstwy mogą wizualizować piksele w polach receptywnych poprzednich warstw. Następnie warstwy splotowe przekształcają dany obraz na wartości liczbowe i pozwalają sieci zrozumieć i wyodrębnić cenne wzorce.

Łączenie warstw

Warstwy puli są używane do zmniejszania wymiarów i są nazywane próbkowaniem w dół. Zmniejsza parametry używane na wejściu. Operacja łączenia może przenieść filtr na całe dane wejściowe, takie jak warstwa splotowa, ale nie ma wag. W tym przypadku filtr stosuje funkcję łączenia do wartości liczbowych w polu przyjmującym w celu wypełnienia tablicy wyników.

Pooling ma dwa rodzaje:

  • Pula średnia: Średnia wartość jest obliczana w polu przyjmującym, które filtr przeszukuje przez dane wejściowe, aby przesłać je do macierzy wyjściowej.
  • Max pooling: Wybiera piksel o maksymalnej wartości i wysyła go do tablicy wyjściowej, gdy filtr przeszukuje dane wejściowe. Maksymalna pula jest używana częściej niż przeciętne łączenie.

Chociaż łączenie danych powoduje utratę znacznych ilości danych, nadal oferuje wiele korzyści dla CNN. Pomaga zredukować ryzyko nadmiernego dopasowania i złożoność, jednocześnie poprawiając wydajność. Poprawia również stabilność CNN.

W pełni połączona (FC) warstwa

Jak sama nazwa wskazuje, wszystkie węzły w warstwie wyjściowej są bezpośrednio połączone z węzłem poprzedniej warstwy w warstwie w pełni połączonej. Klasyfikuje obraz na podstawie wyodrębnionych elementów za pomocą poprzednich warstw wraz z ich filtrami.

Co więcej, warstwy FC zazwyczaj używają funkcji aktywacji softmax do poprawnej klasyfikacji wejść zamiast funkcji ReLu (jak w przypadku puli i warstw splotowych). Pomaga to uzyskać prawdopodobieństwo 0 lub 1.

Jak działają CNN?

Splotowa sieć neuronowa składa się z wielu warstw, a nawet setek. Warstwy te uczą się rozpoznawać różne cechy danego obrazu.

Chociaż CNN to sieci neuronowe, ich architektura różni się od zwykłej sieci ANN.

Ten ostatni wprowadza dane wejściowe przez wiele ukrytych warstw, aby je przekształcić, gdzie każda warstwa jest tworzona z zestawem sztucznych neuronów i jest w pełni połączona z każdym neuronem w tej samej warstwie. W końcu jest w pełni połączona warstwa lub warstwa wyjściowa, aby wyświetlić wynik.

Z drugiej strony CNN organizuje warstwy w trzech wymiarach – szerokości, głębokości i wysokości. Tutaj warstwa z neuronu łączy się z neuronami tylko w małym obszarze, zamiast odnosić się do każdego z nich w następnej warstwie. W końcu wynik końcowy jest reprezentowany przez pojedynczy wektor z wynikiem prawdopodobieństwa i ma tylko wymiar głębokości.

Teraz możesz zapytać, czym jest „splot” w CNN.

Cóż, konwolucja odnosi się do operacji matematycznej łączącej dwa zestawy danych. W CNN koncepcja splotu jest stosowana do danych wejściowych w celu uzyskania mapy cech poprzez filtrowanie informacji.

To prowadzi nas do niektórych ważnych pojęć i terminologii używanych w CNN.

  • Filtr: Znany również jako detektor funkcji lub jądro, filtr może mieć określony wymiar, na przykład 3×3. Przechodzi przez obraz wejściowy, aby wykonać mnożenie macierzy dla każdego elementu w celu zastosowania splotu. Zastosowanie filtrów do każdego obrazu treningowego w różnych rozdzielczościach oraz wyjście ze zwiniętego obrazu będzie działać jako dane wejściowe dla kolejnej warstwy.
  • Padding: służy do rozszerzenia matrycy wejściowej do granic matrycy poprzez wstawienie fałszywych pikseli. Ma to na celu przeciwdziałanie faktowi, że konwolucja zmniejsza rozmiar macierzy. Na przykład macierz 9×9 może zamienić się po przefiltrowaniu w macierz 3×3.
  • Kroczenie: Jeśli chcesz, aby wynik był mniejszy niż dane wejściowe, możesz wykonać kroczenie. Umożliwia pomijanie niektórych obszarów, gdy filtr przesuwa się po obrazie. Pomijając dwa lub trzy piksele, możesz stworzyć bardziej wydajną sieć, zmniejszając rozdzielczość przestrzenną.
  • Wagi i odchylenia: CNN mają wagi i odchylenia w swoich neuronach. Model może nauczyć się tych wartości podczas uczenia, a wartości pozostają takie same w całej danej warstwie dla wszystkich neuronów. Oznacza to, że każdy ukryty neuron wykrywa te same cechy w różnych obszarach obrazu. W efekcie sieć staje się bardziej tolerancyjna przy tłumaczeniu obiektów na dany obraz.
  • ReLU: to skrót od Rectified Linear Unit (ReLu) i służy do bardziej efektywnego i szybszego treningu. Odwzorowuje wartości ujemne na 0 i utrzymuje wartości dodatnie. Nazywa się to również aktywacją, ponieważ sieć przenosi tylko aktywowane cechy obrazu do kolejnej warstwy.
  • Pole receptywne: W sieci neuronowej każdy neuron otrzymuje dane wejściowe z różnych lokalizacji z poprzedniej warstwy. A w warstwach splotowych każdy neuron otrzymuje dane wejściowe z ograniczonego obszaru tylko warstwy poprzedniej, zwanej polem receptywnym neuronu. W przypadku warstwy FC polem odbiorczym jest cała poprzednia warstwa.

W rzeczywistych zadaniach obliczeniowych zwykle splot jest wykonywany na obrazie 3D wymagającym filtra 3D.

Wracając do CNN, składa się z różnych części lub 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 tej sieci.

Te warstwy mogą wykonywać operacje w celu zmiany danych w celu poznania odpowiednich funkcji. Ponadto te operacje powtarzają setki różnych warstw, które uczą się wykrywać inne cechy obrazu.

Części CNN to:

  • Warstwa wejściowa: jest to miejsce, w którym pobierane są dane wejściowe, takie jak obraz. Będzie to obiekt 3D o określonej wysokości, szerokości i głębokości.
  • Jedna/wiele ukrytych warstw lub faza wyodrębniania cech: warstwy te mogą być warstwą splotową, warstwą puli i warstwą w pełni połączoną.
  • Warstwa wyjściowa: Tutaj zostanie wyświetlony wynik.

Przejście obrazu przez warstwę splotu jest przekształcane w mapę cech lub mapę aktywacji. Po splataniu danych wejściowych warstwy splatają obraz i przekazują wynik do kolejnej warstwy.

CNN wykona wiele technik konwolucji i łączenia w celu wykrycia cech w fazie ekstrakcji cech. Na przykład, jeśli wprowadzisz obraz kota, CNN rozpozna jego cztery nogi, kolor, dwoje oczu itp.

Następnie w pełni połączone warstwy w sieci CNN będą działać jako klasyfikator wyodrębnionych obiektów. W oparciu o przewidywania algorytmu uczenia głębokiego dotyczące obrazu warstwy dadzą wynik.

Zalety CNN

Wyższa dokładność

CNN oferują wyższą dokładność niż zwykłe sieci neuronowe, które nie używają konwolucji. CNN są pomocne, zwłaszcza gdy zadanie obejmuje wiele danych, rozpoznawanie wideo i obrazów itp. Dają bardzo precyzyjne wyniki i przewidywania; dlatego ich wykorzystanie wzrasta w różnych sektorach.

Wydajność obliczeniowa

CNN oferują wyższy poziom wydajności obliczeniowej niż inne zwykłe sieci neuronowe. Dzieje się tak z powodu użycia procesu splotu. Wykorzystują również redukcję wymiarów i udostępnianie parametrów, aby modele były szybsze i łatwiejsze do wdrożenia. Techniki te można również zoptymalizować do pracy na różnych urządzeniach, czy to smartfonie czy laptopie.

Ekstrakcja funkcji

CNN może łatwo nauczyć się funkcji obrazu bez konieczności ręcznej inżynierii. Możesz wykorzystać przeszkolone CNN i zarządzać wagami, dostarczając im dane podczas pracy nad nowym zadaniem, a CNN bezproblemowo się do niego dostosuje.

Zastosowania CNN

CNN są używane w różnych branżach w wielu przypadkach użycia. Niektóre z rzeczywistych zastosowań CNN obejmują:

Klasyfikacja obrazu

CNN są szeroko stosowane w klasyfikacji obrazów. Potrafią rozpoznać cenne cechy i zidentyfikować obiekty na danym obrazie. Dlatego jest stosowany w sektorach takich jak opieka zdrowotna, zwłaszcza MRI. Ponadto technologia ta jest wykorzystywana do rozpoznawania odręcznych cyfr, co jest jednym z najwcześniejszych przypadków użycia CNN w wizji komputerowej.

Wykrywanie obiektów

CNN może wykrywać obiekty na obrazach w czasie rzeczywistym, a także oznaczać je i klasyfikować. Dlatego ta technika jest szeroko stosowana w pojazdach zautomatyzowanych. Umożliwia także inteligentnym domom i pieszym rozpoznanie twarzy właściciela pojazdu. Jest również używany w systemach nadzoru wykorzystujących sztuczną inteligencję do wykrywania i oznaczania obiektów.

Dopasowanie audiowizualne

Pomoc CNN w dopasowaniu audiowizualnym pomaga ulepszyć platformy strumieniowego przesyłania wideo, takie jak Netflix, YouTube itp. Pomaga również spełnić prośby użytkowników, takie jak „piosenki miłosne Eltona Johna”.

Rozpoznawanie mowy

Oprócz obrazów, CNN są pomocne w przetwarzaniu języka naturalnego (NLP) i rozpoznawaniu mowy. Przykładem tego może być Google używający CNN w swoim systemie rozpoznawania mowy.

Rekonstrukcja obiektu

Sieci CNN mogą być wykorzystywane w modelowaniu 3D rzeczywistego obiektu w środowisku cyfrowym. Modele CNN mogą również tworzyć model twarzy 3D za pomocą obrazu. Ponadto CNN jest przydatne w konstruowaniu cyfrowych bliźniaków w biotechnologii, produkcji, biotechnologii i architekturze.

Wykorzystanie CNN w różnych sektorach obejmuje:

  • Opieka zdrowotna: Widzenie komputerowe może być wykorzystywane w radiologii, aby pomóc lekarzom w wykrywaniu guzów nowotworowych z lepszą skutecznością u danej osoby.
  • Rolnictwo: Sieci mogą wykorzystywać obrazy ze sztucznych satelitów, takich jak LSAT, i wykorzystywać te dane do klasyfikowania żyznych ziem. Pomaga to również przewidzieć poziom żyzności gleby i opracować skuteczną strategię maksymalizacji plonów.
  • Marketing: aplikacje społecznościowe mogą sugerować osobę na zdjęciu zamieszczonym na czyimś profilu. Pomaga to oznaczać osoby w albumach ze zdjęciami.
  • Handel detaliczny: Platformy e-commerce mogą korzystać z wyszukiwania wizualnego, aby pomóc markom polecać odpowiednie produkty, które docelowi klienci chcą kupić.
  • Motoryzacja: CNN znajduje zastosowanie w samochodach, aby poprawić bezpieczeństwo pasażerów i kierowców. Dzieje się to za pomocą takich funkcji, jak wykrywanie linii pasa ruchu, wykrywanie obiektów, klasyfikacja obrazu itp. Pomaga to również bardziej ewoluować światowi autonomicznych samochodów.

Zasoby do nauki CNN

Coursera:

Coursera ma ten kurs w CNN, który możesz wziąć pod uwagę. Ten kurs nauczy Cię, jak wizja komputerowa ewoluowała przez lata i niektóre zastosowania CNN we współczesnym świecie.

Amazonka:

Możesz przeczytać te książki i wykłady, aby dowiedzieć się więcej o CNN:

  • Sieci neuronowe i głębokie uczenie: Obejmuje modele, algorytmy oraz teorię głębokiego uczenia i sieci neuronowych.
  • Przewodnik po splotowych sieciach neuronowych dla widzenia komputerowego: Ta książka nauczy Cię zastosowań sieci CNN i ich koncepcji.
  • Praktyczne splotowe sieci neuronowe z Tensorflow: Za pomocą tej książki możesz rozwiązać różne problemy związane z widzeniem komputerowym za pomocą Pythona i TensorFlow.
  • Advanced Applied Deep Learning: Ta książka pomoże Ci zrozumieć CNN, głębokie uczenie i ich zaawansowane zastosowania, w tym wykrywanie obiektów.
  • Splotowe sieci neuronowe i rekurencyjne sieci neuronowe: Ta książka nauczy Cię o CNN i RNN oraz o tym, jak budować te sieci.

Wniosek

Konwolucyjne sieci neuronowe to jedna z rozwijających się dziedzin sztucznej inteligencji, uczenia maszynowego i uczenia głębokiego. Ma różne zastosowania w dzisiejszym świecie w prawie każdym sektorze. Patrząc na jego rosnące wykorzystanie, oczekuje się, że będzie się on coraz bardziej rozszerzać i być bardziej użytecznym w rozwiązywaniu problemów w świecie rzeczywistym.