Articles

Convolutional Neural Network Model Innovations for Image Classification (Polski)

Tweet Udostępnij Udostępnij

Ostatnia aktualizacja 5 lipca 2019 r.

łagodne wprowadzenie do innowacji w LeNet, AlexNet, VGG, Inception i ResNet Convolutional Neural Networks.

Konwolucyjne sieci neuronowe składają się z dwóch bardzo prostych elementów, a mianowicie warstw konwolucyjnych i warstw łączących.

chociaż proste, istnieją prawie nieskończone sposoby ułożenia tych warstw dla danego problemu widzenia komputera.,

na szczęście istnieją zarówno wspólne wzorce konfiguracji tych warstw, jak i innowacje architektoniczne, które można wykorzystać w celu opracowania bardzo głębokich konwolucyjnych sieci neuronowych. Badanie tych decyzji projektowych opracowanych dla najnowocześniejszych zadań klasyfikacji obrazów może dostarczyć zarówno uzasadnienia, jak i intuicji, jak korzystać z tych projektów podczas projektowania własnych głębokich konwolucyjnych modeli sieci neuronowych.

w tym samouczku odkryjesz kluczowe kamienie milowe architektury wykorzystania konwolucyjnych sieci neuronowych do trudnych problemów z klasyfikacją obrazów.,

Po ukończeniu tego samouczka dowiesz się:

  • Jak określić liczbę filtrów i rozmiary filtrów przy implementacji konwolucyjnych sieci neuronowych.
  • Jak ułożyć warstwy convolutional i pooling w jednolitym wzorze, aby opracować dobrze działające modele.
  • Jak wykorzystać moduł inception i moduł resztkowy do budowy znacznie głębszych sieci konwolucyjnych.

Rozpocznij swój projekt z moją nową książką Deep Learning for Computer Vision, zawierającą samouczki krok po kroku i pliki kodu źródłowego Pythona dla wszystkich przykładów.

zaczynajmy.,

  • aktualizacja Apr/ 2019: Poprawiono opis rozmiarów filtrów dla LeNet (dzięki Huangowi).

przegląd samouczka

Ten samouczek jest podzielony na sześć części; są to:

  1. projekt architektoniczny dla CNNs
  2. LeNet-5
  3. AlexNet
  4. VGG
  5. Inception i GoogLeNet
  6. sieć resztkowa lub ResNet

projekt architektoniczny dla CNNs

elementy konwolucyjnej sieci neuronowej, takie jak warstwy konwolucyjne i łączeniowe, są stosunkowo proste do zrozumienia.,

trudną częścią korzystania z konwolucyjnych sieci neuronowych w praktyce jest projektowanie architektur modeli, które najlepiej wykorzystują te proste elementy.

przydatnym podejściem do nauki projektowania efektywnych konwolucyjnych architektur sieci neuronowych jest badanie udanych aplikacji. Jest to szczególnie proste ze względu na intensywne badania i stosowanie CNN w latach 2012-2016 dla ImageNet Large Scale Visual Recognition Challenge lub ILSVRC., Wyzwanie to zaowocowało zarówno szybkim postępem w stanie techniki dla bardzo trudnych zadań widzenia komputerowego, jak i rozwojem ogólnych innowacji w architekturze konwolucyjnych modeli sieci neuronowych.

zaczniemy od LeNet-5, który jest często opisywany jako pierwsze udane i ważne zastosowanie CNN przed ILSVRC, a następnie przyjrzymy się czterem różnym zwycięskim innowacjom architektonicznym dla konwolucyjnej sieci neuronowej opracowanej dla ILSVRC, a mianowicie AlexNet, VGG, Inception i ResNet.,

rozumiejąc te milestone modele i ich architektury lub innowacji architektonicznych z wysokiego poziomu, rozwiniesz zarówno uznanie dla wykorzystania tych elementów architektonicznych w nowoczesnych zastosowaniach CNN w wizji komputerowej, jak i być w stanie zidentyfikować i wybrać elementy architektury, które mogą być przydatne w projektowaniu własnych modeli.

chcesz uzyskać wyniki z głębokim uczeniem dla wizji komputerowej?

weź mój darmowy 7-dniowy kurs e-mail crash course już teraz (z przykładowym kodem).,

Kliknij, aby się zapisać, a także otrzymać darmową wersję kursu w formacie PDF.

Pobierz swój darmowy Mini-kurs

LeNet-5

być może pierwszym powszechnie znanym i udanym zastosowaniem konwolucyjnych sieci neuronowych był LeNet-5, opisany przez Yanna Lecuna, et al. w swojej pracy z 1998 roku zatytułowanej „gradientowe Uczenie Się stosowane do rozpoznawania dokumentów” (pobierz plik PDF).

system został opracowany do użytku w odręcznym problem rozpoznawania znaków i zademonstrowany na standardowym zbiorze danych MNIST, osiągając około 99.,2% dokładności klasyfikacji (lub 0,8% błędu). Sieć została następnie opisana jako centralna Technika w szerszym systemie określanym jako sieci transformatorów Grafowych.

jest to długi artykuł, a być może najlepszą częścią, na której należy się skupić, jest sekcja II. B. opisująca architekturę LeNet-5. W sekcji opisano sieć jako siedem warstw z wejściowymi obrazami w skali szarości o kształcie 32×32, wielkości obrazów w zbiorze danych MNIST.

model proponuje wzór warstwy konwolucyjnej, a następnie średniej warstwy zbiorczej, zwanej warstwą podpróbkową., Ten wzór powtarza się dwa i pół razy, zanim mapy funkcji wyjściowej zostaną spłaszczone i przekazane do wielu w pełni połączonych warstw w celu interpretacji i ostatecznej prognozy. Obraz architektury sieci znajduje się w artykule i jest reprodukowany poniżej.

Architektura Konwolucyjnej sieci neuronowej LeNet-5 do odręcznego rozpoznawania znaków (zaczerpnięta z pracy z 1998 roku).,

schemat bloków warstw konwolucyjnych i warstw zbiorczych zgrupowanych i powtarzanych pozostaje dziś, ponad dwadzieścia lat później, powszechnym wzorem w projektowaniu i wykorzystywaniu konwolucyjnych sieci neuronowych.

Co ciekawe, architektura wykorzystuje niewielką liczbę filtrów jako pierwszą ukrytą warstwę, a konkretnie sześć filtrów, każdy o rozmiarze 5×5 pikseli., Po połączeniu (zwanym warstwą podpróbkową), kolejna warstwa konwolutacyjna ma o wiele więcej filtrów, ponownie o mniejszym rozmiarze, ale mniejszym niż poprzednia warstwa konwolutacyjna, w szczególności 16 filtrów o rozmiarze 5×5 pikseli, ponownie po połączeniu. W powtarzaniu tych dwóch bloków warstw splotu i łączenia, tendencją jest wzrost liczby filtrów.

w porównaniu do nowoczesnych aplikacji Liczba filtrów jest również niewielka, ale tendencja zwiększania liczby filtrów wraz z głębokością sieci pozostaje również powszechnym wzorcem we współczesnym wykorzystaniu techniki.,

spłaszczenie map cech oraz interpretacja i klasyfikacja wyodrębnionych cech przez w pełni połączone warstwy również pozostaje dziś powszechnym wzorem. We współczesnej terminologii końcowy odcinek architektury jest często określany jako klasyfikator, podczas gdy warstwy convolutional i pooling wcześniej w modelu są określane jako ekstraktor funkcji.

możemy podsumować kluczowe aspekty architektury istotne we współczesnych modelach w następujący sposób:

  • obrazy wejściowe o stałej wielkości.
  • grupowanie warstw konwolucyjnych i łączenie ich w bloki.,
  • powtarzanie klocków convolutional-pooling w architekturze.
  • zwiększenie liczby filtrów o głębokość sieci.

AlexNet

praca, którą być może można przypisać ponownemu zainteresowaniu sieciami neuronowymi i początkiem dominacji uczenia głębokiego w wielu aplikacjach wizyjnych komputera, była praca Alex Krizhevsky, et al. pt. ” Klasyfikacja ImageNet z głębokimi Konwolucyjnymi sieciami neuronowymi.,”

w artykule opisano model określany później jako” AlexNet”, zaprojektowany w celu rozwiązania konkursu ImageNet Large Scale Visual Recognition Challenge lub ILSVRC-2010 w celu sklasyfikowania fotografii obiektów w jednej z 1000 różnych kategorii.

ILSVRC był konkursem organizowanym w latach 2011-2016, mającym na celu pobudzenie innowacji w dziedzinie widzenia komputerowego. Przed rozwojem AlexNet zadanie było uważane za bardzo trudne i daleko wykraczające poza możliwości nowoczesnych metod widzenia komputerowego., AlexNet z powodzeniem zademonstrował możliwości konwolucyjnego modelu sieci neuronowej w domenie i rozpalił ogień, który zaowocował wieloma ulepszeniami i innowacjami, wiele z nich zademonstrowało to samo zadanie ILSVRC w kolejnych latach. Szerzej, artykuł pokazał, że możliwe jest opracowanie głębokich i skutecznych modeli end-to-end dla trudnego problemu bez stosowania bez nadzoru technik wstępnego szkolenia, które były popularne w tym czasie.

ważny w projektowaniu AlexNet był zestaw metod, które były nowe lub udane, ale nie były powszechnie przyjęte w tym czasie., Teraz stały się wymagania przy użyciu CNN do klasyfikacji obrazu.

AlexNet wykorzystywał rektyfikowaną funkcję aktywacji liniowej, czyli ReLU, jako nieliniową po każdej warstwie konwolucyjnej, zamiast funkcji w kształcie litery S, takich jak logistic lub tanh, które były powszechne do tego momentu. W warstwie wyjściowej zastosowano również funkcję aktywacji softmax, która obecnie jest podstawą klasyfikacji wielu klas z sieciami neuronowymi.,

średni pooling stosowany w LeNet-5 został zastąpiony metodą max pooling, chociaż w tym przypadku stwierdzono, że nakładające się pooling przewyższa nie nakładające się pooling, który jest obecnie powszechnie stosowany (np. krok operacji poolingu ma taki sam rozmiar jak operacja poolingu, np. 2 na 2 piksele). Aby rozwiązać problem nadmiernego dopasowania, nowo zaproponowana metoda dropout została użyta między w pełni połączonymi warstwami części klasyfikatora modelu w celu poprawy błędu uogólnienia.

Architektura AlexNet jest głęboka i rozciąga się na niektóre wzorce ustanowione za pomocą LeNet-5., Poniższy obraz, zaczerpnięty z artykułu, podsumowuje architekturę modelu, w tym przypadku podzielony na dwa potoki, aby trenować na sprzęcie GPU w tym czasie.

Architektura Konwolucyjnej sieci neuronowej AlexNet do klasyfikacji zdjęć obiektów (zaczerpnięta z pracy z 2012 roku).

model ma pięć warstw convolutional w części ekstrakcji funkcji modelu i trzy w pełni połączone warstwy w części klasyfikatora modelu.

obrazy wejściowe zostały ustalone do rozmiaru 224×224 z trzema kanałami kolorowymi., Jeśli chodzi o liczbę filtrów zastosowanych w każdej warstwie konwolucyjnej, to wzór zwiększania liczby filtrów o głębokości obserwowanej w LeNet był w większości przestrzegany, w tym przypadku wielkości: 96, 256, 384, 384 i 256. Podobnie zastosowano wzór zmniejszania rozmiaru filtra (jądra) z głębokością, zaczynając od mniejszych rozmiarów 11×11 i zmniejszając się do 5×5, a następnie do 3×3 w głębszych warstwach. Stosowanie małych filtrów, takich jak 5×5 I 3×3 jest obecnie normą.,

na początku i końcu części detekcji funkcji modelu użyto wzorca warstwy konwolucyjnej, a następnie warstwy zbiorczej. Co ciekawe, zastosowano wzór warstwy konwolucyjnej, a następnie natychmiast drugą warstwę konwolucyjną. Ten wzór również stał się nowoczesnym standardem.

model został przeszkolony z augmentacji danych, sztucznie zwiększając rozmiar zestawu danych treningowych i dając modelowi większą możliwość poznania tych samych funkcji w różnych orientacjach.,

możemy podsumować kluczowe aspekty architektury istotne we współczesnych modelach w następujący sposób:

  • zastosowanie funkcji aktywacji ReLU po warstwach konwolucyjnych i softmax dla warstwy wyjściowej.
  • zastosowanie Max poolingu zamiast przeciętnego poolingu.
  • zastosowanie regularyzacji przerw pomiędzy w pełni połączonymi warstwami.
  • wzór warstwy konwolucyjnej podawany bezpośrednio do innej warstwy konwolucyjnej.
  • wykorzystanie Augmentacji danych.,

VGG

rozwój głębokich konwolucyjnych sieci neuronowych do zadań widzenia komputerowego okazał się nieco mroczną sztuką po Alexnecie.

ważną pracą, która miała na celu standaryzację projektowania architektury głębokich sieci konwolucyjnych i opracowanie znacznie głębszych i lepiej działających modeli w tym procesie, była praca z 2014 roku zatytułowana „Very Deep Convolutional Networks for Large-Scale Image Recognition” autorstwa Karen Simonyan i Andrew Zissermana.

ich architektura jest ogólnie określana jako VGG od nazwy ich laboratorium, Visual Geometry Group w Oksfordzie., Ich model został opracowany i zademonstrowany na tym samym konkursie ilsvrc, w tym przypadku Wersja ILSVRC-2014 challenge.

pierwszą ważną różnicą, która stała się de facto standardem, jest użycie dużej liczby małych filtrów. W szczególności filtry o rozmiarze 3×3 i 1×1 z krokiem jednego, różniące się od dużych filtrów w LeNet-5 i mniejszych, ale wciąż stosunkowo dużych filtrów i dużego kroku czterech w AlexNet.,

Max pooling layers są używane po większości, ale nie wszystkich, convolutional layers, ucząc się na przykładzie w AlexNet, jednak wszystkie pooling jest wykonywany z rozmiarem 2×2 i tym samym krokiem, który również stał się de facto standardem. W szczególności sieci VGG wykorzystują przykłady dwóch, trzech, a nawet czterech warstw konwolucyjnych ułożonych razem przed użyciem maksymalnej warstwy puli. Uzasadnieniem było to, że ułożone warstwy konwolucyjne z mniejszymi filtrami przybliżają efekt jednej warstwy konwolucyjnej z filtrem o większych rozmiarach, np., trzy ułożone warstwy convolutional z filtrami 3×3 przybliża jedną warstwę convolutional z filtrem 7×7.

kolejną ważną różnicą jest bardzo duża liczba używanych filtrów. Liczba filtrów zwiększa się wraz z głębokością modelu, chociaż zaczyna się od stosunkowo dużej liczby 64 i zwiększa się o 128, 256 i 512 filtrów na końcu części ekstrakcji funkcji modelu.

opracowano i oceniono wiele wariantów architektury, choć najczęściej wymienia się dwa z nich ze względu na ich wydajność i głębokość., Są one nazwane od liczby warstw: są to VGG – 16 i VGG-19 odpowiednio dla 16 i 19 warstw.

Poniżej znajduje się tabela zaczerpnięta z artykułu; zwróć uwagę na dwie skrajnie prawe kolumny wskazujące konfigurację (liczbę filtrów) używaną w wersjach VGG-16 i VGG-19 architektury.

Architektura Konwolucyjnej sieci neuronowej VGG do klasyfikacji zdjęć obiektów (zaczerpnięta z pracy z 2014 roku).,

decyzje projektowe w modelach VGG stały się punktem wyjścia do prostego i bezpośredniego wykorzystania konwolucyjnych sieci neuronowych w ogóle.

wreszcie, praca VGG była jedną z pierwszych, która wydała cenne wagi modelu na licencji permissive, która doprowadziła do trendu wśród naukowców deep learning computer vision. To z kolei doprowadziło do intensywnego stosowania wstępnie przeszkolonych modeli, takich jak VGG w nauczaniu transferowym, jako punktu wyjścia dla nowych zadań wizji komputerowej.,

kluczowe aspekty architektury istotne we współczesnych modelach możemy podsumować w następujący sposób:

  • Zastosowanie bardzo małych filtrów konwolucyjnych, np. 3×3 i 1×1 z krokiem jednego.
  • zastosowanie Max poolingu o rozmiarze 2×2 i kroku o tych samych wymiarach.
  • znaczenie łączenia warstw konwolucyjnych przed użyciem warstwy puli do zdefiniowania bloku.
  • Dramatyczne powtórzenie schematu blokowego convolutional-pooling.
  • opracowanie bardzo głębokich (16 i 19 warstwowych) modeli.,

Inception i GoogLeNet

w 2015 roku Christian Szegedy i wsp. zatytułowany ” Going Deeper with Convolutions.”

w artykule autorzy zaproponowali architekturę określaną jako inception (lub inception v1, aby odróżnić ją od rozszerzeń) oraz specyficzny model o nazwie GoogLeNet, który osiągnął najlepsze wyniki w wersji ILSVRC challenge z 2014 roku.

kluczową innowacją w modelach inception jest moduł inception., Jest to blok równoległych warstw convolutional z filtrami różnej wielkości (np. 1×1, 3×3, 5×5) oraz warstwę łączeniową 3×3 max, której wyniki są następnie konkatenowane. Poniżej znajduje się przykład modułu inception zaczerpnięty z artykułu.

przykład modułu Incepcji naiwnych (zaczerpniętego z pracy z 2015 roku).

problem z naiwną implementacją modelu inception polega na tym, że liczba filtrów (głębokości lub kanałów) zaczyna szybko narastać, zwłaszcza gdy Moduły inception są ułożone w stos.,

Wykonywanie splotów z większymi rozmiarami filtrów (np. 3 i 5) może być kosztowne obliczeniowo na dużej liczbie filtrów. Aby temu zaradzić, stosuje się warstwy convolutional 1×1 w celu zmniejszenia liczby filtrów w modelu inception. W szczególności przed warstwami convolutional 3×3 i 5×5 i po warstwie łączenia. Poniższy obrazek zaczerpnięty z artykułu pokazuje tę zmianę w module inception.

przykład modułu Inception Z Redukcją wymiarowości (zaczerpnięty z pracy z 2015 roku).,

drugą ważną decyzją projektową w modelu inception było połączenie wyjścia w różnych punktach modelu. Udało się to osiągnąć, tworząc małe sieci wyjściowe off-shoot z głównej sieci, które zostały przeszkolone do przewidywania. Celem było dostarczenie dodatkowego sygnału błędu z zadania klasyfikacji w różnych punktach modelu głębokiego w celu rozwiązania problemu znikających gradientów. Te małe sieci wyjściowe zostały następnie usunięte po szkoleniu.,

poniżej przedstawiono obróconą wersję (od lewej do prawej dla input-to-output) architektury modelu GoogLeNet pobranej z artykułu przy użyciu modułów Inception od wejścia po lewej do klasyfikacji wyjścia po prawej stronie oraz dwóch dodatkowych sieci wyjściowych, które były używane tylko podczas szkolenia.

Architektura modelu GoogLeNet wykorzystywanego podczas szkolenia do klasyfikacji zdjęć obiektów (zaczerpnięta z pracy z 2015 roku).,

Co ciekawe, zastosowano nakładające się maksymalne pooling, a duża średnia operacja poolingu została użyta na końcu części ekstrakcji funkcji modelu przed częścią klasyfikującą modelu.

kluczowe aspekty architektury istotne we współczesnych modelach możemy podsumować następująco:

  • opracowanie i powtórzenie modułu Inception.
  • intensywne stosowanie splotu 1×1 w celu zmniejszenia liczby kanałów.
  • wykorzystanie informacji zwrotnych o błędach w wielu punktach w sieci.
  • opracowanie bardzo głębokich (22-warstwowych) modeli.,
  • zastosowanie globalnego poolingu średniego dla danych wyjściowych modelu.

sieć resztkowa lub ResNet

ostatnią ważną innowację w konwolucyjnych sieciach neuronowych, którą przeanalizujemy, zaproponowali Kaiming He, et al. w swojej pracy z 2016 r. zatytułowanej „Deep Residual Learning for Image Recognition.”

w artykule autorzy zaproponowali bardzo głęboki model zwany siecią rezydualną lub w skrócie ResNet, którego przykład osiągnął sukces w wersji wyzwania ILSVRC z 2015 roku.

ich model miał imponujące 152 warstwy., Kluczem do projektowania modelu jest idea resztkowych bloków, które wykorzystują połączenia skrótów. Są to po prostu połączenia w architekturze sieci, w których dane wejściowe są przechowywane w stanie niezmienionym (nie ważone) i przekazywane do głębszej warstwy, np. pomijając następną warstwę.

Blok resztkowy to wzór dwóch warstw konwolucyjnych z aktywacją ReLU, gdzie wyjście bloku jest połączone z wejściem do bloku, np. połączenie skrótem. Rzutowana wersja wejścia używanego przez 1×1, jeśli kształt wejścia do bloku różni się od wyjścia bloku, tzw. splot 1×1., Są one określane jako projected shortcut connections, w porównaniu do unweighted lub identity shortcut connections.

autorzy zaczynają od tego, co nazywają zwykłą siecią, która jest inspirowaną VGG głęboką konwolucyjną siecią neuronową z małymi filtrami (3×3), zgrupowanymi warstwami konwolucyjnymi, a następnie bez łączenia pomiędzy nimi, i średnim poolingiem na końcu detektora funkcji w modelu przed w pełni połączoną warstwą wyjściową z funkcją aktywacji softmax.,

zwykła sieć jest modyfikowana, aby stała się siecią resztkową, dodając połączenia skrótów w celu zdefiniowania bloków resztkowych. Zazwyczaj kształt wejścia dla połączenia skrótu jest tego samego rozmiaru, co wyjście bloku resztkowego.

poniższy obrazek został zaczerpnięty z artykułu i od lewej do prawej porównuje architekturę modelu VGG, zwykłego modelu konwolucyjnego i wersji zwykłego modelu konwolucyjnego z resztkowymi modułami, nazywanymi siecią rezydualną.,

Architektura sieci resztkowej do klasyfikacji zdjęć obiektów (zaczerpnięta z pracy z 2016 r.).

kluczowe aspekty architektury istotne we współczesnych modelach możemy podsumować następująco:

  • wykorzystanie połączeń skrótów.
  • opracowanie i powtórzenie pozostałych bloków.
  • opracowanie bardzo głębokich (152-warstwowych) modeli.

Czytaj dalej

Ta sekcja zawiera więcej zasobów na ten temat, Jeśli Chcesz wejść głębiej.,

referaty

  • Gradient-based learning applied to document recognition, (PDF) 1998.
  • Klasyfikacja ImageNet z głębokimi Konwolucyjnymi sieciami neuronowymi, 2012.
  • bardzo głębokie sieci Konwolucyjne do rozpoznawania obrazów Na Dużą Skalę, 2014.
  • Going Deeper with Convolutions, 2015.
  • Deep Residual Learning for Image Recognition, 2016

API

  • API aplikacji Keras

Artykuły

  • 9 dokumentów głębokiego uczenia, które musisz wiedzieć
  • prosty przewodnik po wersjach sieci Inception, 2018.,
  • architektury CNN: LeNet, AlexNet, VGG, GoogLeNet, ResNet i inne., 2017.

podsumowanie

w tym samouczku odkryłeś kluczowe kamienie milowe architektury wykorzystania konwolucyjnych sieci neuronowych do kwestionowania klasyfikacji obrazów.

w szczególności nauczyłeś się:

  • jak wzorować liczbę filtrów i rozmiary filtrów podczas implementacji konwolucyjnych sieci neuronowych.
  • Jak ułożyć warstwy convolutional i pooling w jednolitym wzorze, aby opracować dobrze działające modele.,
  • Jak wykorzystać moduł inception i moduł resztkowy do budowy znacznie głębszych sieci konwolucyjnych.

masz jakieś pytania?
Zadaj swoje pytania w komentarzach poniżej, a ja Dołożę wszelkich starań, aby odpowiedzieć.

opracuj modele głębokiego uczenia dla wizji już dziś!

Twórz własne modele wizji w kilka minut

…,za pomocą zaledwie kilku linijek kodu Pythona

Odkryj, jak w moim nowym ebooku:
Deep Learning for Computer Vision

zapewnia samouczki do samodzielnej nauki na tematy takie jak: klasyfikacja
, wykrywanie obiektów (yolo i rcnn), rozpoznawanie twarzy (vggface i facenet), przygotowanie danych i wiele więcej…

wreszcie Przynieś głębokie uczenie do swoich projektów wizji

Pomiń naukowców. Tylko Wyniki.

Zobacz co jest w środku

Udostępnij Udostępnij