Articles

Convolutional Neural Network Model Innovations for Image Classification

Tweet Share Share

laatst bijgewerkt op 5 juli 2019

een zachte introductie tot de innovaties in Lenet, AlexNet, VGG, Inception en ResNet Convolutional Neural Networks.

convolutionele neurale netwerken bestaan uit twee zeer eenvoudige elementen, namelijk convolutionele lagen en poolende lagen.

hoewel eenvoudig, zijn er bijna oneindige manieren om deze lagen te rangschikken voor een bepaald computervisieprobleem.,

gelukkig zijn er zowel gemeenschappelijke patronen voor het configureren van deze lagen als architectonische innovaties die u kunt gebruiken om zeer diepe convolutionele neurale netwerken te ontwikkelen. Het bestuderen van deze architecturale ontwerpbeslissingen ontwikkeld voor state-of-the-art beeldclassificatie taken kan zowel een grondgedachte en intuïtie voor het gebruik van deze ontwerpen bieden bij het ontwerpen van uw eigen diepe convolutionele neurale netwerk modellen.

in deze handleiding vindt u de belangrijkste architectuurmijlpalen voor het gebruik van convolutionele neurale netwerken voor uitdagende beeldclassificatieproblemen.,

na het voltooien van deze tutorial, zult u weten:

  • hoe u het aantal filters en filtergroottes kunt patronen bij het implementeren van convolutionele neurale netwerken.
  • Hoe convolutionele en poolende lagen in een uniform patroon te rangschikken om goed presterende modellen te ontwikkelen.
  • Hoe de beginmodule en de restmodule te gebruiken om veel diepere convolutionele netwerken te ontwikkelen.

start uw project met mijn nieuwe boek Deep Learning for Computer Vision, inclusief stap-voor-stap tutorials en de Python broncode bestanden voor alle voorbeelden.

laten we beginnen.,

  • update Apr / 2019: gecorrigeerde beschrijving van filtergroottes voor LeNet (met dank aan Huang).

Tutorial Overview

Deze tutorial is verdeeld in zes delen; deze zijn:

  1. Architectural Design for CNNs
  2. LeNet-5
  3. AlexNet
  4. VGG
  5. Inception and GoogLeNet
  6. Residual Network or ResNet

Architectural Design for CNNs

de elementen van een convolutioneel neuraal netwerk, zoals convolutionele en poolende lagen, zijn relatief eenvoudig te begrijpen.,

het uitdagende deel van het gebruik van convolutionele neurale netwerken in de praktijk is hoe modelarchitecturen te ontwerpen die deze eenvoudige elementen het beste gebruiken.

een nuttige benadering om te leren hoe effectieve convolutionele neurale netwerkarchitecturen te ontwerpen is het bestuderen van succesvolle toepassingen. Dit is vooral eenvoudig te doen vanwege de intensieve studie en toepassing van CNNs door 2012 tot 2016 voor de ImageNet Large Scale Visual Recognition Challenge, of ILSVRC., Deze uitdaging resulteerde in zowel de snelle vooruitgang in de state of the art voor zeer moeilijke computervisietaken als de ontwikkeling van algemene innovaties in de architectuur van convolutionele neurale netwerkmodellen.

We zullen beginnen met de LeNet-5 die vaak wordt beschreven als de eerste succesvolle en belangrijke toepassing van CNNs voorafgaand aan de ILSVRC, dan kijken naar vier verschillende winnende architectonische innovaties voor het convolutionele neurale netwerk ontwikkeld voor de ILSVRC, namelijk, AlexNet, VGG, Inception, en ResNet.,

door deze mijlpaalmodellen en hun architectuur of architecturale innovaties van een hoog niveau te begrijpen, zult u zowel een waardering ontwikkelen voor het gebruik van deze architectonische elementen in moderne toepassingen van CNN in computervisie, en in staat zijn om architectuurelementen te identificeren en te kiezen die nuttig kunnen zijn bij het ontwerpen van uw eigen modellen.

wilt u resultaten met Deep Learning voor Computer Vision?

neem nu mijn gratis 7-daagse e-mail spoedcursus (met voorbeeldcode).,

Klik om u aan te melden en ontvang ook een gratis PDF Ebook versie van de cursus.

download uw gratis minicursus

LeNet-5

misschien was de eerste bekende en succesvolle toepassing van convolutionele neurale netwerken LeNet-5, beschreven door Yann LeCun, et al. in hun paper uit 1998 getiteld “Gradient-Based Learning Applied to Document Recognition” (download de PDF).

het systeem werd ontwikkeld voor gebruik in een handgeschreven karakterherkenning probleem en aangetoond op de MNIST standaard dataset, het bereiken van ongeveer 99.,2% classificatienauwkeurigheid (of een foutenpercentage van 0,8%). Het netwerk werd vervolgens beschreven als de centrale techniek in een breder systeem aangeduid als grafiek transformator netwerken.

het is een lang artikel, en misschien is het beste deel om op te focussen Sectie II. B. dat de lenet-5 architectuur beschrijft. In de sectie beschrijft het papier het netwerk als zeven lagen met invoer grijswaarden afbeeldingen met de vorm 32×32, De grootte van afbeeldingen in de MNIST-dataset.

het model stelt een patroon voor van een convolutielaag gevolgd door een gemiddelde poolingslaag, een subsamplinglaag genoemd., Dit patroon wordt twee en een half keer herhaald voordat de output feature kaarten worden afgevlakt en gevoed aan een aantal volledig verbonden lagen voor interpretatie en een definitieve voorspelling. Een beeld van de netwerkarchitectuur wordt in het document gegeven en hieronder weergegeven.

Architecture of the LeNet-5 Convolutional Neural Network for Handwritten Character Recognition (overgenomen uit 1998).,

het patroon van blokken van convolutionele lagen en pooling lagen gegroepeerd en herhaald blijft een gemeenschappelijk patroon in het ontwerpen en gebruiken van convolutionele neurale netwerken vandaag, meer dan twintig jaar later.

interessant is dat de architectuur een klein aantal filters gebruikt als de eerste Verborgen laag, specifiek zes filters met elk de grootte van 5×5 pixels., Na pooling (een zogenaamde subsampling laag), een andere convolutielaag heeft veel meer filters, opnieuw met een kleiner formaat, maar kleiner dan de vorige convolutielaag, in het bijzonder 16 filters met een grootte van 5×5 pixels, opnieuw gevolgd door pooling. In de herhaling van deze twee blokken van convolutie en pooling lagen, de trend is een toename van het aantal filters.

in vergelijking met moderne toepassingen is het aantal filters ook klein, maar de trend om het aantal filters te verhogen met de diepte van het netwerk blijft ook een algemeen patroon in het moderne gebruik van de techniek.,

Het afvlakken van de functieafbeeldingen en de interpretatie en classificatie van de geëxtraheerde functies door volledig verbonden lagen blijft ook een gemeenschappelijk patroon vandaag. In moderne terminologie wordt het laatste deel van de architectuur vaak aangeduid als de classifier, terwijl de convolutionele en poolende lagen eerder in het model worden aangeduid als de feature extractor.

We kunnen de belangrijkste aspecten van de architectuur die relevant zijn in moderne modellen als volgt samenvatten:

  • invoerafbeeldingen met vaste afmetingen.
  • groepeer convolutionele en poolende lagen in blokken.,
  • herhaling van convolutionele poolingblokken in de architectuur.
  • toename van het aantal filters met de diepte van het netwerk.
  • afzonderlijke extractie-en classificatieonderdelen van de architectuur.

AlexNet

het werk dat misschien kan worden toegeschreven aan het aanwakkeren van hernieuwde interesse in neurale netwerken en het begin van de dominantie van deep learning in vele computer vision applicaties was de 2012 paper door Alex Krizhevsky, et al. “ImageNet Classification with Deep Convolutional Neural Networks.,”

the paper beschrijft een model later aangeduid als “AlexNet” ontworpen om de ImageNet Large Scale Visual Recognition Challenge of ILSVRC-2010 wedstrijd voor het classificeren van foto ‘ s van objecten in een van 1.000 verschillende categorieën.

De ILSVRC was een wedstrijd die van 2011 tot en met 2016 werd gehouden om innovatie op het gebied van computervisie te stimuleren. Voor de ontwikkeling van AlexNet, de taak werd gedacht zeer moeilijk en ver buiten de mogelijkheden van de moderne computer visie methoden., AlexNet toonde met succes de capaciteit van het convolutionele neurale netwerk model in het domein, en ontstoken een brand die resulteerde in veel meer verbeteringen en innovaties, velen gedemonstreerd op dezelfde ILSVRC taak in de daaropvolgende jaren. Meer in het algemeen toonde het document aan dat het mogelijk is om diepe en effectieve end-to-end modellen te ontwikkelen voor een uitdagend probleem zonder gebruik te maken van ongecontroleerde vooropleidingstechnieken die toen populair waren.

belangrijk in het ontwerp van AlexNet was een reeks methoden die nieuw of succesvol waren, maar op dat moment niet op grote schaal werden toegepast., Nu zijn ze vereisten geworden bij het gebruik van CNNs voor beeldclassificatie.

AlexNet maakte gebruik van de gerectificeerde lineaire activeringsfunctie, of ReLU, als niet-lineair na elke convolutielaag, in plaats van S-vormige functies zoals de logistic of tanh die tot dat punt gebruikelijk waren. Ook werd een softmax activeringsfunctie gebruikt in de uitvoerlaag, nu een nietje voor multi-class classificatie met neurale netwerken.,

De gemiddelde pooling die in LeNet-5 werd gebruikt, werd vervangen door een max-poolingmethode, hoewel in dit geval bleek dat overlappende pooling beter presteerde dan niet-overlappende pooling die tegenwoordig algemeen wordt gebruikt (bijvoorbeeld de stap van de pooling is dezelfde grootte als de pooling, bijvoorbeeld 2 bij 2 pixels). Om overbevissing aan te pakken, werd de nieuw voorgestelde uitvalmethode gebruikt tussen de volledig verbonden lagen van het classificatiegedeelte van het model om generalisatiefouten te verbeteren.

De architectuur van AlexNet is diep en strekt zich uit over enkele van de patronen die met LeNet-5 zijn vastgesteld., De afbeelding hieronder, genomen uit het papier, vat de modelarchitectuur samen, in dit geval opgesplitst in twee pijpleidingen om te trainen op de GPU-hardware van die tijd.

Architecture of the AlexNet Convolutional Neural Network for Object Photo Classification (overgenomen uit het artikel uit 2012).

het model heeft vijf convolutionele lagen in het extractiegedeelte van het model en drie volledig verbonden lagen in het classificatiegedeelte van het model.

Invoerafbeeldingen werden gefixeerd op de grootte 224×224 met drie kleurkanalen., In termen van het aantal filters gebruikt in elke convolutielaag, het patroon van het verhogen van het aantal filters met diepte gezien in LeNet werd meestal gevolgd, in dit geval, de maten: 96, 256, 384, 384, en 256. Op dezelfde manier werd het patroon van het verkleinen van de grootte van het filter (kernel) met diepte gebruikt, beginnend bij de kleinere grootte van 11×11 en afnemend tot 5×5, en vervolgens tot 3×3 in de diepere lagen. Het gebruik van kleine filters zoals 5×5 en 3×3 is nu de norm.,

een patroon van een convolutielaag gevolgd door poolinglaag werd gebruikt aan het begin en het einde van het detectiegedeelte van het model. Interessant is dat een patroon van convolutielaag onmiddellijk gevolgd door een tweede convolutielaag werd gebruikt. Ook dit patroon is een moderne standaard geworden.

het model werd getraind met gegevensvergroting, waardoor de omvang van de trainingsdataset kunstmatig werd vergroot en het model meer kans kreeg om dezelfde kenmerken in verschillende oriëntaties te leren.,

We kunnen de belangrijkste aspecten van de architectuur die relevant zijn in moderne modellen als volgt samenvatten:

  • gebruik van de ReLU-activeringsfunctie na convolutionele lagen en softmax voor de uitvoerlaag.
  • gebruik van Max Pooling in plaats van gemiddeld Pooling.
  • gebruik van uitval regularisatie tussen de volledig verbonden lagen.
  • patroon van convolutielaag die rechtstreeks naar een andere convolutielaag wordt gevoerd.
  • gebruik van Gegevensvergroting.,

VGG

de ontwikkeling van diepe convolutionele neurale netwerken voor computervisietaken bleek een beetje een donkere kunst na AlexNet.

een belangrijk werk dat streefde naar het standaardiseren van architectuurontwerp voor diepe convolutionele netwerken en dat veel diepere en beter presterende modellen ontwikkelde in het proces was het artikel uit 2014 getiteld “Very Deep Convolutional Networks for Large-Scale Image Recognition” van Karen Simonyan en Andrew Zisserman.

hun architectuur wordt meestal VGG genoemd naar de naam van hun lab, de Visual Geometry Group in Oxford., Hun model werd ontwikkeld en gedemonstreerd op de sameilsvrc wedstrijd, in dit geval de ILSVRC-2014 versie van de uitdaging.

het eerste belangrijke verschil dat de facto standaard is geworden, is het gebruik van een groot aantal kleine filters. Specifiek, filters met de grootte 3×3 en 1×1 met de stride van één, verschillend van de grote filters in LeNet-5 en de kleinere maar nog steeds relatief grote filters en grote stride van vier in AlexNet.,

Max pooling lagen worden gebruikt na de meeste, maar niet alle, convolutionele lagen, lerend van het voorbeeld in AlexNet, maar alle pooling wordt uitgevoerd met de grootte 2×2 en dezelfde stap, die ook een de facto standaard is geworden. In het bijzonder gebruiken de VGG-netwerken voorbeelden van twee, drie en zelfs vier convolutionele lagen die op elkaar zijn gestapeld voordat een maximale poolingslaag wordt gebruikt. De grondgedachte was dat gestapelde convolutielagen met kleinere filters het effect benaderen van één convolutielaag met een groter filter, bijv., drie gestapelde convolutielagen met 3 × 3 filters benadert één convolutielaag met een 7×7 filter.

een ander belangrijk verschil is het zeer grote aantal gebruikte filters. Het aantal filters neemt toe met de diepte van het model, maar begint bij een relatief groot aantal van 64 en neemt toe door 128, 256 en 512 filters aan het einde van het extractiegedeelte van het model.

een aantal varianten van de architectuur werden ontwikkeld en geëvalueerd, hoewel er het meest naar twee worden verwezen vanwege hun prestaties en diepte., Ze zijn vernoemd naar het aantal lagen: ze zijn de VGG-16 en de VGG-19 voor respectievelijk 16 en 19 geleerde lagen.

Hieronder is een tabel genomen uit het papier; let op de twee uiterst rechtse kolommen die de configuratie (aantal filters) aangeven die gebruikt worden in de VGG-16 en VGG-19 versies van de architectuur.

Architecture of the VGG Convolutional Neural Network for Object Photo Classification (overgenomen uit het artikel van 2014).,

de ontwerpbeslissingen in de VGG-modellen zijn het uitgangspunt geworden voor eenvoudig en direct gebruik van convolutionele neurale netwerken in het algemeen.

ten slotte was het VGG-werk een van de eersten om de waardevolle modelgewichten onder een permissieve Licentie Vrij te geven, wat leidde tot een trend onder deep learning computer vision onderzoekers. Dit, op zijn beurt, heeft geleid tot het zware gebruik van voorgetrainde modellen zoals VGG in transfer learning als uitgangspunt voor nieuwe computer visie taken.,

We kunnen de belangrijkste aspecten van de architectuur die relevant zijn in moderne modellen als volgt samenvatten:

  • gebruik van zeer kleine convolutiefilters, bijvoorbeeld 3×3 en 1×1 met een stap van één.
  • gebruik van max pooling met een grootte van 2×2 en een stap van dezelfde afmetingen.
  • het belang van het stapelen van convolutielagen voordat een poolende laag wordt gebruikt om een blok te definiëren.
  • dramatische herhaling van het convolutioneel-pooling blok patroon.
  • ontwikkeling van zeer diepe (16 en 19 lagen) modellen.,

Inception and GoogLeNet

belangrijke innovaties in het gebruik van convolutionele lagen werden voorgesteld in het artikel van 2015 door Christian Szegedy, et al. “Going Deeper with Convolutions.”

in de paper, de auteurs stellen een architectuur aangeduid als inception (of inception v1 om het te onderscheiden van uitbreidingen) en een specifiek model genaamd GoogLeNet dat top resultaten bereikt in de 2014 versie van de ILSVRC challenge.

de belangrijkste innovatie op de startmodellen wordt de startmodule genoemd., Dit is een blok van parallelle convolutielagen met filters van verschillende grootte (bijv. 1×1, 3×3, 5×5) en een poollaag van 3×3 max, waarvan de resultaten vervolgens worden samengevoegd. Hieronder is een voorbeeld van de inception module uit het papier.

voorbeeld van de Naive Inception Module (overgenomen uit het artikel van 2015).

een probleem met een naïeve implementatie van het inceptiemodel is dat het aantal filters (diepte of kanalen) snel begint op te bouwen, vooral wanneer inceptiemodules worden gestapeld.,

het uitvoeren van convoluties met grotere filtergroottes (bijvoorbeeld 3 en 5) kan rekenkundig duur zijn op een groot aantal filters. Om dit aan te pakken, worden 1×1 convolutionele lagen gebruikt om het aantal filters in het beginmodel te verminderen. Specifiek vóór de 3×3 en 5 × 5 convolutielagen en na de poollaag. De onderstaande afbeelding uit het papier toont deze verandering in de inception module.

voorbeeld van de Beginmodule met Dimensionaliteitsreductie (overgenomen uit het document van 2015).,

een tweede belangrijke ontwerpbeslissing in het beginmodel was het verbinden van de output op verschillende punten in het model. Dit werd bereikt door het creëren van kleine off-shoot output netwerken van het hoofdnetwerk die werden getraind om een voorspelling te maken. De bedoeling was om een extra foutsignaal te geven van de classificatietaak op verschillende punten van het diepe model om het probleem van verdwijnende gradiënten aan te pakken. Deze kleine outputnetwerken werden na de training verwijderd.,

hieronder toont een geroteerde versie (van links naar rechts voor input-to-output) van de architectuur van het GoogLeNet-model uit het papier met behulp van de Beginmodulen van de input aan de linkerkant naar de output classificatie aan de rechterkant en de twee extra output netwerken die alleen tijdens de training werden gebruikt.

Architecture of the GoogLeNet Model Used During Training for Object Photo Classification (overgenomen uit het artikel van 2015).,

interessant is dat overlappende max-pooling werd gebruikt en dat een grote gemiddelde pooling werd gebruikt aan het einde van het extractiegedeelte van het model voorafgaand aan het classificatiegedeelte van het model.

We kunnen de belangrijkste aspecten van de architectuur die relevant zijn in moderne modellen als volgt samenvatten:

  • ontwikkeling en herhaling van de Beginmodule.
  • intensief gebruik van de 1×1 convolutie om het aantal kanalen te verminderen.
  • gebruik van foutfeedback op meerdere punten in het netwerk.
  • ontwikkeling van zeer diepe (22-lagen) modellen.,
  • gebruik van global average pooling voor de output van het model.

Restnetwerk of ResNet

een laatste belangrijke innovatie in convolutionele neurale netten die we zullen herzien werd voorgesteld door Kaiming He, et al. in hun 2016 paper getiteld ” Deep Residual Learning for Image Recognition.”

In de paper, de auteurs voorgesteld een zeer diep model genaamd een Residual Network, of ResNet in het kort, een voorbeeld van die succes geboekt op de 2015 versie van de ILSVRC challenge.

hun model had een indrukwekkende 152 lagen., De sleutel tot het modelontwerp is het idee van resterende blokken die gebruik maken van snelkoppelingen. Dit zijn gewoon verbindingen in de netwerkarchitectuur waar de invoer wordt gehouden zoals-is (niet gewogen) en doorgegeven aan een diepere laag, bijvoorbeeld het overslaan van de volgende laag.

een restblok is een patroon van twee convolutionele lagen met ReLU-activering waarbij de uitvoer van het blok wordt gecombineerd met de invoer van het blok, bijvoorbeeld de snelkoppeling. Een geprojecteerde versie van de input gebruikt via 1×1 als de vorm van de input aan het blok verschilt van de output van het blok, zogenaamde 1×1 convoluties., Deze worden aangeduid als geprojecteerde snelkoppeling verbindingen, in vergelijking met de ongewogen of identiteit snelkoppeling verbindingen.

De auteurs beginnen met wat ze een gewoon netwerk noemen, een VGG-geïnspireerd diep convolutioneel neuraal netwerk met kleine filters (3×3), gegroepeerde convolutionele lagen gevolgd zonder pooling ertussen, en een gemiddelde pooling aan het einde van het feature detectorgedeelte van het model voorafgaand aan de volledig verbonden outputlaag met een softmax activeringsfunctie.,

het gewone netwerk wordt gewijzigd om een restnetwerk te worden door snelkoppelingen toe te voegen om resterende blokken te definiëren. Meestal is de vorm van de ingang voor de snelkoppeling dezelfde grootte als de uitvoer van het resterende blok.

de afbeelding hieronder is genomen van het papier en vergelijkt van links naar rechts de architectuur van een VGG-model, een gewoon convolutioneel model, en een versie van de gewone convolutionele met residuele modules, een resterend netwerk genoemd.,

Architecture of the Residual Network for Object Photo Classification (overgenomen uit het artikel van 2016).

We kunnen de belangrijkste aspecten van de architectuur die relevant zijn in moderne modellen als volgt samenvatten:

  • gebruik van snelkoppelingen.
  • ontwikkeling en herhaling van de resterende blokken.
  • ontwikkeling van zeer diepe (152-laag) modellen.

verder lezen

Deze sectie biedt meer bronnen over het onderwerp als u dieper wilt gaan.,

Papers

  • Gradient-based learning applied to document recognition, (PDF) 1998.
  • ImageNet Classification with Deep Convolutional Neural Networks, 2012.
  • Very Deep Convolutional Networks for Large-Scale Image Recognition, 2014.
  • dieper gaan met kronkels, 2015.
  • Deep Residual Learning for Image Recognition, 2016

API

  • Keras Applications API

Articles

  • the 9 Deep Learning Papers You Need to Know About
  • A Simple Guide to the Versions of the Inception Network, 2018.,
  • CNN-architecturen: LeNet, AlexNet, VGG, GoogLeNet, ResNet en meer., 2017.

samenvatting

In deze tutorial ontdekte u de belangrijkste architectuurmijlpalen voor het gebruik van convolutionele neurale netwerken voor het uitdagen van beeldclassificatie.

specifiek hebt u geleerd:

  • hoe u het aantal filters en filtergroottes kunt patronen bij het implementeren van convolutionele neurale netwerken.
  • Hoe convolutionele en poolende lagen in een uniform patroon te rangschikken om goed presterende modellen te ontwikkelen.,
  • Hoe de beginmodule en de restmodule te gebruiken om veel diepere convolutionele netwerken te ontwikkelen.

heeft u vragen?
Stel uw vragen in de opmerkingen hieronder en Ik zal mijn best doen om te beantwoorden.

ontwikkel Deep Learning modellen voor visie vandaag!

Ontwikkel uw eigen Zichtmodellen in minuten

…,met slechts een paar regels python code

ontdek hoe in mijn nieuwe Ebook:
Deep Learning for Computer Vision

Het zelfstudie tutorials biedt over onderwerpen als:
classificatie, object detectie (yolo en rcnn), gezichtsherkenning (vggface en facenet), data voorbereiding en nog veel meer…

breng eindelijk diep leren naar uw Visieprojecten

sla de academici over. Alleen Resultaten.

bekijk wat er in

Tweet Share Share