indledning:
Convolutional neurale netværk (CNN eller ConvNet)er en klasse af dybe neurale netværk, der for det meste bruges til at gøre billedgenkendelse, billedklassificering, objektdetektering osv.
fremskridtene inden for computersyn med dyb læring er konstrueret og perfektioneret med tiden, primært over en bestemt algoritme — et indviklet neuralt netværk.
Google bruger det til foto søgning, Facebook for deres automatiske tagging algoritmer,
med hjælp fra CNN, du kan gøre en masse cool ting som, jeg har lavet en håndskrevet ciffer anerkendelse model, som forudsiger ciffer i billedet med 98.82% nøjagtighed.
Bonus:
kode -> https://github.com/UPPERCASEGUY/CNN-implementation
du kan også lave dine seje modeller med lidt hjælp i koncepter vedrørende CNN. Denne blog vil begynde at opbygge dine koncepter om CNNs, og du er god til at gå!
CONVOLUTIONAL neurale netværk:
Billedklassificering er opgaven med at tage et inputbillede og udsende en klasse eller en sandsynlighed for klasser, der bedst beskriver billedet. I CNN tager vi et billede som input, tildeler betydning for dets forskellige aspekter/funktioner i billedet og er i stand til at skelne fra hinanden. Den forbehandling, der kræves i CNN, er meget mindre sammenlignet med andre klassificeringsalgoritmer.
arkitektur:
computere kan ikke se tingene, som vi gør, for computere billede er intet andet end en matrice.
en CNN har typisk tre lag: et konvolutionslag, poolinglag og fuldt forbundet lag.
Convolutional layer:
jeg er temmelig sikker på, at du har stødt på ordet ‘convolution’ i dit liv før, og her er det mening ændrer sig ikke. Ja! du har ret, dette lag handler om at samle objekter på hinanden. Konvolutionslaget er kernen byggesten af CNN. Det bærer hoveddelen af netværkets beregningsbelastning.
hovedformålet med convolution er at udtrække funktioner som kanter, farver, hjørner fra input. Når vi går dybere inde i netværket, netværket begynder at identificere mere komplekse funktioner såsom figurer,cifre, ansigtsdele også.
dette lag udfører et prikprodukt mellem to matricer, hvor en matrice(kendt som filter/kerne)er sæt af lærbare parametre, og den anden matrice er den begrænsede del af billedet.
hvis billedet er RGB, vil filteret have mindre højde og bredde sammenlignet med billedet, men det vil have samme dybde(højde 3) som på billedet.
for RGB-billeder kan den sammenfaldende del visualiseres som følger:
ved afslutningen af foldningsprocessen har vi en featured matrice, der har mindre parametre(dimensioner) end det faktiske billede såvel som mere klare funktioner end den faktiske. Så nu vil vi arbejde med vores fremhævede matrice fra nu af.
Pooling Layer:
dette lag er udelukkende for at reducere den computerkraft, der kræves for at behandle dataene. Det gøres ved at reducere dimensionerne af den fremhævede matrice endnu mere. I dette lag forsøger vi at udtrække de dominerende træk fra en begrænset mængde kvarter. Lad os gøre det klart ved at tage et eksempel.
den orange matrice er vores featured matrice, den brune er en pooling kerne og vi får vores blå matrice som output efter pooling er færdig. Så her er det, vi gør, at tage det maksimale blandt alle de tal, der er i pooling-regionen og flytte pooling-regionen hver gang for at behandle et andet kvarter i matricen.
der er to typer af pooling teknikker: gennemsnit-pooling og maks – pooling.
forskellen mellem disse to er, i gennemsnit-pooling, vi tager gennemsnittet af alle værdierne i pooling region og i maks-pooling, vi tager bare maksimum blandt alle de værdier, der ligger inde i pooling regionen.
så efter at have samlet lag, har vi en matrice, der indeholder hovedtræk ved billedet, og denne matrice har endnu mindre dimensioner, hvilket vil hjælpe meget i næste trin.
fuldt tilsluttet lag:
indtil nu har vi ikke gjort noget ved at klassificere forskellige billeder, hvad vi har gjort er fremhævet nogle funktioner i et billede og reducerer billedets dimensioner drastisk.
herfra skal vi faktisk gøre klassificeringsprocessen.
nu hvor vi har konverteret vores inputbillede til en passende form til vores fuldt tilsluttede arkitektur på flere niveauer, skal vi flade billedet ud i en kolonnevektor. Den udfladede udgang føres til et fremadgående neuralt netværk og backpropagation anvendt til enhver iteration af træning. Over en række epoker kan Modellen skelne mellem dominerende og visse funktioner på lavt niveau i billeder og klassificere dem.
oversigt:
- Giv input billedet i foldning lag.
- tag foldning med featured kerne/filtre.
- Påfør pooling lag for at reducere dimensionerne.
- tilføj disse lag flere gange.
- flad output og fremfør i et fuldt tilsluttet lag.
- træn nu modellen med backpropagation ved hjælp af logistisk regression.
og du har lavet dit indviklede neurale netværk.