Een Korte Handleiding voor het Convolutional Neurale Network(CNN)

INLEIDING:

Manan Parekh
Manan Parekh

Volg

Jul 16, 2019 · 5 min te lezen

Convolutional Neurale Network(CNN of ConvNet)is een klasse van diepe neurale netwerken die meestal gebruikt wordt om te doen image recognition, beeld-indeling, object detectie, etc.

de vooruitgang in computervisie met diep leren is geconstrueerd en geperfectioneerd met de tijd, voornamelijk via een bepaald algoritme — een Convolutioneel neuraal netwerk.

Google gebruikt deze voor foto zoeken, Facebook voor hun automatische tagging algoritmen, Amazon voor hun product aanbevelingen, en de lijst gaat op en op…

Met de hulp van CNN, kunt u een hoop leuke dingen zoals, Ik heb een handgeschreven cijfers erkenning model dat voorspelt dat het cijfer in de afbeelding met 98.82% nauwkeurigheid.

Bonus:

code -> https://github.com/UPPERCASEGUY/CNN-implementation

u kunt ook uw coole modellen met weinig hulp in concepten met betrekking tot CNN. Deze blog zal beginnen met het bouwen van uw concepten over CNNs en je bent goed om te gaan!

convolutionele neurale netwerken:

beeldclassificatie is de taak van het nemen van een invoerafbeelding en het uitvoeren van een klasse of een waarschijnlijkheid van klassen die het beeld het best beschrijft. In CNN nemen we een beeld als input, geven we belang aan de verschillende aspecten/kenmerken in het beeld en kunnen we de een van de ander onderscheiden. De pre-processing vereist in CNN is veel minder in vergelijking met andere classificatiealgoritmen.

Een klassieke CNN classificeren tussen een hond en een kat

ARCHITECTUUR:

matrix representatie van een beeld.

Computers kunnen dingen niet zien zoals wij, voor computers is image niets anders dan een matrix.

een CNN bestaat meestal uit drie lagen: een convolutielaag, een poolende laag en een volledig verbonden laag.

verschillende lagen in een CNN

Convolutielaag:

ik ben er vrij zeker van dat u het woord ‘convolutielaag’ eerder in uw leven hebt gezien en hier verandert de betekenis niet. Ja! je hebt gelijk, deze laag gaat over kronkelende objecten op elkaar. De convolutielaag is de kernbouwsteen van CNN. Het draagt het belangrijkste deel van de computationele belasting van het netwerk.

het belangrijkste doel van convolutie is om kenmerken zoals randen, kleuren, hoeken uit de input te halen. Naarmate we dieper in het netwerk gaan,begint het netwerk complexere functies te identificeren, zoals vormen, cijfers, gezichtsdelen ook.

Convoluting 5x5x1 beeld met een 3x3x1 kernel voor een 3x3x1 convolved functie

Deze laag voert een scalair product tussen twee matrices, waar een matrix(bekend als filter/kernel)is de verzameling van learnable parameters, en de andere matrix is het beperkt gedeelte van de afbeelding.

als de afbeelding RGB is dan zal het filter een kleinere hoogte en breedte hebben dan de afbeelding, maar het zal dezelfde diepte hebben (Hoogte x breedte x 3) als de afbeelding.

Voor RGB-afbeeldingen, de convolving deel kan worden gevisualiseerd als volgt:

Convolution werking op een MxNx3 afbeelding matrix met een 3x3x3 Kernel

Aan het einde van de convolutie-proces, we hebben een aanbevolen matrix die minder parameters(afmetingen) dan het werkelijke beeld en meer duidelijke kenmerken dan de feitelijke. Dus, nu zullen we werken met onze aanbevolen matrix van nu af aan.

Poolinglaag:

deze laag is uitsluitend bedoeld om het rekenvermogen te verminderen dat nodig is om de gegevens te verwerken. Het wordt gedaan door het verkleinen van de afmetingen van de aanbevolen matrix nog meer. In deze laag proberen we de dominante kenmerken uit een beperkte hoeveelheid buurt te halen. Laten we dit duidelijk maken door een voorbeeld te nemen.

pooling laag

de oranje matrix is onze aanbevolen matrix, de bruine is een pooling kernel en we krijgen onze blauwe matrix als output nadat pooling is gedaan. Dus wat we hier doen is het maximum nemen van alle getallen die in de poolende regio zijn en het poolende gebied elke keer verschuiven om een andere buurt van de matrix te verwerken.

er zijn twee soorten poolingtechnieken: gemiddelde pooling en MAX-pooling.

het verschil tussen deze twee is, bij gemiddelde pooling nemen we het gemiddelde van alle waarden van poolinggebied en bij MAX-pooling nemen we gewoon het maximum van alle waarden die binnen de poolinggebied liggen.

dus, na het samenvoegen van de laag, hebben we een matrix met de belangrijkste kenmerken van de afbeelding en deze matrix heeft nog kleinere dimensies, wat veel zal helpen in de volgende stap.

volledig verbonden laag:

tot nu toe hebben we niets gedaan aan het classificeren van verschillende afbeeldingen, wat we hebben gedaan is enkele functies in een afbeelding gemarkeerd en de afmetingen van de afbeelding drastisch verminderd.

volledig verbonden laag binnen CNN

vanaf nu gaan we het classificatieproces uitvoeren.

nu we onze invoerafbeelding hebben omgezet in een geschikte vorm voor onze multi-Level volledig verbonden architectuur, zullen we het beeld platmaken tot één kolomvector. De afgeplatte output wordt gevoed aan een feed-forward neuraal netwerk en backpropagatie toegepast op elke iteratie van de training. Over een reeks tijdperken kan het model onderscheid maken tussen dominerende en bepaalde low-level functies in afbeeldingen en classificeren.

samenvatting:

  1. zorg voor de invoerafbeelding in de convolutielaag.
  2. neem convolution met aanbevolen kernel / filters.
  3. poollaag aanbrengen om de afmetingen te verkleinen.
  4. voeg deze lagen meerdere keren toe.
  5. Plate de output en feed in een volledig verbonden laag.
  6. train het model nu met backpropagatie met behulp van logistieke regressie.

en u uw convolutioneel neuraal netwerk hebt gemaakt.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.