Articles

The Complete Beginner ‘ S Guide To Deep Learning: Convolutional Neural Networks and Image Classification

Posted by admin

«en ting som slo meg tidlig er at du ikke legger inn et fotografi hva som kommer til å komme ut. Eller omvendt, det som kommer ut er ikke det du legger inn.»

― Diane Arbus

en melding dukker opp på din favoritt sosiale nettverk som noen postet et bilde som kan ha deg i det.

Det er riktig.

Det er det verste bildet av deg noensinne.

GIF via GIPHY

hvordan skjedde det?

bilde klassifisering!convolutional neural network (cnn) er en klasse av dyp læring nevrale nettverk. CNNs representerer et stort gjennombrudd i bildegjenkjenning. De brukes oftest til å analysere visuelle bilder og jobber ofte bak kulissene i bildeklassifisering. De kan bli funnet i kjernen av Alt Fra Facebook foto tagging til selvkjørende biler. De jobber hardt bak kulissene i alt fra helsetjenester til sikkerhet.

de er raske og effektive. Men hvordan fungerer de?bilde klassifisering er prosessen med å ta en inngang (som et bilde) og gi ut en klasse (som «katt») eller en sannsynlighet for at inngangen er en bestemt klasse («det er en 90% sannsynlighet for at denne inngangen er en katt»). Du kan se på et bilde og vite at du ser på et forferdelig bilde av ditt eget ansikt, men hvordan kan en datamaskin lære å gjøre det?

Med et innviklet nevralt nettverk!

EN CNN har

  • Convolutional lag
  • ReLU lag
  • Pooling lag
  • Et fullt tilkoblet lag

en klassisk cnn arkitektur ville se omtrent slik ut:

Input ->Convolution ->ReLU ->Convolution ->ReLU ->Pooling ->
ReLU ->Convolution ->ReLU ->Pooling ->Fully Connected

A CNN convolves (not convolutes…) learned features with input data and uses 2D convolutional layers. This means that this type of network is ideal for processing 2D images. Sammenlignet med andre bildeklassifiseringsalgoritmer, Bruker CNNs faktisk svært lite forbehandling. Dette betyr at de kan lære filtrene som må håndlaget i andre algoritmer. CNNs kan brukes i tonnevis av applikasjoner fra bilde-og videogjenkjenning, bildeklassifisering og anbefalingssystemer til naturlig språkbehandling og medisinsk bildeanalyse.

CNNs er inspirert av biologiske prosesser. De er basert på noen kule undersøkelser Gjort Av Hubel Og Wiesel på 60-tallet om syn på katter og aper. Mønsteret av tilkobling i EN CNN kommer fra deres forskning om organisering av den visuelle cortexen. I et pattedyrs øye reagerer individuelle nevroner bare på visuelle stimuli i det mottakelige feltet, som er en begrenset region. De mottakelige feltene i forskjellige regioner overlapper delvis slik at hele synsfeltet er dekket. DETTE er MÅTEN EN CNN fungerer!

Bilde av NatWhitePhotography på

cnn-er har et inndatalag, utdata-lag og skjulte lag. De skjulte lagene består vanligvis av convolutional lag, ReLU lag, pooling lag, og fullt tilkoblede lag.

  • Convolutional layers bruk en convolution-operasjon til inngangen. Dette sender informasjonen videre til neste lag.
  • Pooling kombinerer utgangene av klynger av nevroner i en enkelt neuron i neste lag.
  • Fullt tilkoblede lag kobler hver nevron i ett lag til hver nevron i neste lag.

i et convolutional lag mottar nevroner bare innspill fra et delområde av det forrige laget. I et fullt tilkoblet lag mottar hver nevron innspill fra hvert element i det forrige laget.

EN CNN fungerer ved å trekke ut funksjoner fra bilder. Dette eliminerer behovet for manuell funksjon utvinning. Funksjonene er ikke trent! De læres mens nettverket trener på et sett med bilder. Dette gjør dype læringsmodeller ekstremt nøyaktige for datasynsoppgaver. Cnns lær funksjonsdeteksjon gjennom titalls eller hundrevis av skjulte lag. Hvert lag øker kompleksiteten til de lærte funksjonene.

GIF via GIPHY
EN CNN

  • starter med et inngangsbilde
  • bruker mange forskjellige filtre for å lage et funksjonskart
  • bruker en relu-funksjon for å øke ikke-lineariteten
  • bruker et samlingslag på hvert funksjonskart
  • flater de samlede bildene inn i en lang vektor.
  • legger vektoren inn i et fullt tilkoblet kunstig nevralt nettverk.
  • behandler funksjonene gjennom nettverket. Det endelige fullt tilkoblede laget gir «stemme» av klassene vi er ute etter.
  • tog gjennom forover forplantning og backpropagation for mange, mange epoker. Dette gjentar til vi har et veldefinert nevralt nettverk med trente vekter og funksjonsdetektorer.

Så hva betyr det?

i begynnelsen av denne prosessen brytes et inngangsbilde ned i piksler.

GIF via GIPHY

for et svart-hvitt bilde tolkes disse pikslene som EN 2d-matrise (for eksempel 2×2 piksler). Hver piksel har en verdi mellom 0 og 255. (Null er helt svart og 255 er helt hvit. Gråtoner eksisterer mellom disse tallene.) Basert på denne informasjonen kan datamaskinen begynne å jobbe med dataene.

for et fargebilde er DETTE ET 3d-array med et blått lag, et grønt lag og et rødt lag. Hver av disse fargene har sin egen verdi mellom 0 og 255. Fargen kan bli funnet ved å kombinere verdiene i hvert av de tre lagene.

Convolution

hovedformålet med convolution-trinnet er å trekke ut funksjoner fra inngangsbildet. Det innviklede laget er alltid det første trinnet i EN CNN.

Du har et inngangsbilde, en funksjonsdetektor og et funksjonskart. Du tar filteret og bruker det pikselblokk ved pikselblokk til inngangsbildet. Du gjør dette gjennom multiplikasjon av matriser.

La oss si at du har en lommelykt og et ark med bobleplast. Lommelykten skinner en 5-boble x 5-boble område. For å se på hele arket, ville du skyve lommelykten over hver 5×5 firkant til du hadde sett alle boblene.

Foto av stux på

lyset fra lommelykten her er filteret ditt og regionen du skyver over er mottakelig felt. Lyset glir over mottakelige feltene er lommelykten convolving. Filteret er en rekke tall(også kalt vekter eller parametere). Avstanden lyset fra lommelykten glir når det reiser (flytter du filteret ditt over en rad bobler om gangen? To?) kalles stride. For eksempel betyr et skritt på en at du flytter filteret over en piksel om gangen. Konvensjonen er et skritt på to.

dybden på filteret må være den samme som dybden på inngangen, så hvis vi så på et fargebilde, ville dybden være 3. Det gjør dimensjonene til dette filteret 5x5x3. I hver posisjon multipliserer filteret verdiene i filteret med de opprinnelige verdiene i pikselen. Dette er element klok multiplikasjon. Multiplikasjonene er oppsummert, og skaper et enkelt tall. Hvis du startet øverst i venstre hjørne av bobleplast, er dette nummeret representativt for øverste venstre hjørne. Nå kan du flytte filteret til neste posisjon og gjenta prosessen rundt bobleplast. Arrayet du ender med kalles et funksjonskart eller et aktiveringskart! Du kan bruke mer enn ett filter, som vil gjøre en bedre jobb med å bevare romlige relasjoner.

GIF via GIPHY

du vil angi parametere som antall filtre, filterstørrelsen, arkitekturen i nettverket, og så videre. CNN lærer verdiene av filtrene på egen hånd under treningsprosessen. Du har mange alternativer som du kan jobbe med for å gjøre det beste bildet klassifiserer mulig for oppgaven. Du kan velge å pute inngangsmatrisen med nuller (null polstring) for å bruke filteret til grenseelementer i inngangsbildematrisen. Dette lar deg også kontrollere størrelsen på funksjonskartene. Å legge til null polstring er bred konvolusjon. Ikke å legge til null polstring er smal konvolusjon.

dette er i utgangspunktet hvordan vi oppdager bilder! Vi ser ikke på hver eneste piksel i et bilde. Vi ser funksjoner som en lue, en rød kjole, en tatovering og så videre. Det er så mye informasjon som går inn i våre øyne til enhver tid at vi ikke kunne håndtere hver eneste piksel av det. Vi lar vår modell gjøre det samme.

resultatet av dette er convolved feature map. Det er mindre enn det opprinnelige inngangsbildet. Dette gjør det enklere og raskere å håndtere. Mister vi informasjon? Noen, ja. Men samtidig er formålet med funksjonsdetektoren å oppdage funksjoner, noe som er akkurat hva dette gjør.

Vi lager mange funksjonskart for å få vårt første konvolusjonslag. Dette gjør at vi kan identifisere mange forskjellige funksjoner som programmet kan bruke til å lære.

Funksjonsdetektorer kan settes opp med forskjellige verdier for å få forskjellige resultater. For eksempel kan et filter brukes som kan skarpere og fokusere et bilde eller sløre et bilde. Det ville gi like stor betydning for alle verdiene. Du kan gjøre kantforbedring, kantdeteksjon og mer. Du vil gjøre det ved å bruke forskjellige funksjonsdetektorer for å lage forskjellige funksjonskart. Datamaskinen er i stand til å bestemme hvilke filtre som gir mest mening og bruke dem.

hovedformålet her er å finne funksjoner i bildet ditt, sette dem inn i et funksjonskart, og fortsatt bevare det romlige forholdet mellom piksler. Det er viktig slik at pikslene ikke får alle mikset opp.

la oss visualisere dette!

Si hei til min lille venn:

Photo by Kirgiz03 on

We’re going to use this guy for our input image.

We’ll make him black and white

Let’s define and visualize our filters

import numpy as npfilter_vals = np.array(, , , ])print('Filter shape: ', filter_vals.shape)

Filter shape: (4, 4)

og vi ser:

Filter 1: 



]

her er en visualisering av våre fire filtre

la oss nå definere et innviklet lag (jeg elsker pytorch akkurat nå, så det er det vi bruker her.)

Vi ser

Net(
(conv): Conv2d(1, 4, kernel_size=(4, 4), stride=(1, 1), bias=False)
)

Legg til litt mer kode

Så litt mer

Og vi kan visualisere utgangen av et konvolusjonslag før En ReLu-aktiveringsfunksjon brukes!

la oss nå lage en tilpasset kjerne ved hjelp av en sobel-operatør som et kantdeteksjonsfilter. Sobel-filteret brukes svært ofte i kantdeteksjon. Det gjør en god jobb med å finne mønstre i intensitet i et bilde. Bruk Av Et Sobel-filter til et bilde er en måte å ta en tilnærming av derivatet av bildet separat i x-eller y-retningen.

vi konverterer vår lille fyr til gråtoner for filtrering

gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)plt.imshow(gray, cmap='gray')

her går vi!

vil du sjekke ut regnestykket? Ta En titt På Introduksjon Til Convolutional Neural Networks av Jianxin wu

ReLU layer

ReLU (rectified linear unit) laget er et annet skritt til vårt convolution layer. Du bruker en aktiveringsfunksjon på funksjonskartene dine for å øke ikke-lineariteten i nettverket. Dette er fordi bildene selv er svært ikke-lineære! Det fjerner negative verdier fra et aktiveringskart ved å sette dem til null.Convolution Er en lineær operasjon med ting som elementvis matrisemultiplikasjon og tillegg. De virkelige dataene vi vil AT CNN skal lære, vil være ikke-lineære. Det kan vi gjøre rede for med En Operasjon Som ReLU. Du kan bruke andre operasjoner som tanh eller sigmoid. ReLU er imidlertid et populært valg fordi det kan trene nettverket raskere uten noen stor straff for generaliseringsnøyaktighet.

Sjekk Ut C.-C. Jay Kuo Forstå Convolutional Nevrale Nettverk Med En Matematisk Modell.

Vil du grave dypere? Prøv Kaiming He, et al. Hulene Dypt Inn Likerettere: Overgår Menneske-Nivå Ytelse På ImageNet Klassifisering.

hvis du trenger litt mer info om det absolutte grunnleggende om aktiveringsfunksjoner, kan du finne det her!

slik ser vår lille kompis etter At En ReLU-aktiveringsfunksjon gjør alle de negative pikselverdiene svarte

viz_layer(activated_layer)

Related Post

Leave A Comment