Convolutional Neural Networks (CNN’er): En introduktion

Konvolutionelle neurale netværk tilbyder en mere skalerbar måde til objektgenkendelse og billedklassificeringsopgaver.

Der sker mange fremskridt i teknologiens verden. Kunstig intelligens og maskinlæring er nogle almindelige, du måske hører ofte.

I øjeblikket bruges disse teknologier på næsten alle områder, fra marketing, e-handel og softwareudvikling til bank, finans og medicin.

AI og ML er enorme felter, og der gøres en indsats for at udvide deres applikationer for at løse mange problemer i den virkelige verden. Dette er grunden til, at du kunne se en masse grene inde i disse teknologier; ML er en delmængde af AI selv.

Konvolutionelle neurale netværk er en af ​​de grene af AI, der bliver populære i disse dage.

I denne artikel vil jeg diskutere, hvad CNN’er er, hvordan de fungerer, og deres anvendelighed i den moderne verden.

Lad os dykke direkte ind!

Hvad er et konvolutionelt neuralt netværk?

Et konvolutionelt neuralt netværk (ConvNet eller CNN) er et kunstigt neuralt netværk (ANN), der bruger deep learning-algoritmer til at analysere billeder, klassificere visuelle elementer og udføre computersynsopgaver.

CNN udnytter principperne for lineær algebra, såsom matrixmultiplikation, til at detektere mønstre i et billede. Da disse processer involverer komplekse beregninger, kræver de grafiske behandlingsenheder (GPU’er) til træning af modellerne.

Med enkle ord bruger CNN Deep Learning-algoritmer til at tage inputdata som billeder og tildele betydning i form af skævheder og indlærelige vægte til forskellige aspekter af det billede. På denne måde kan CNN skelne mellem billeder eller klassificere dem.

CNN’s: En kort historie

Da et konvolutionelt neuralt netværk er et kunstigt neuralt netværk, er det vigtigt at gentage neurale netværk.

I beregninger er et neuralt netværk en del af maskinlæring (ML) ved hjælp af deep learning-algoritmer. Det er analogt med forbindelsesmønstrene efterfulgt af neuroner i den menneskelige hjerne. Kunstige neurale netværk henter også inspiration fra, hvordan den visuelle cortex er arrangeret.

Så forskellige typer neurale netværk eller kunstige neurale netværk (ANN) bruges til forskellige formål. En af dem er CNN, der bruges til billeddetektering og klassificering og mere. Det blev introduceret af en postdoc-forsker, Yann LeCun, i 1980’erne.

CNN’s tidlige version – LeNet, opkaldt efter LeCun, var i stand til at genkende håndskrevne cifre. Derefter blev det brugt i bank- og posttjenester til at læse cifre på checks og postnumre skrevet på konvolutter.

Denne tidlige version manglede dog skalering; derfor blev CNN ikke brugt meget i kunstig intelligens og computersyn. Det krævede også betydelige beregningsressourcer og data for at arbejde mere effektivt for større billeder.

Desuden besøgte AlexNet i 2012 dyb læring, der bruger neurale netværk bestående af flere lag. Omkring dette tidspunkt blev teknologien forbedret, og store datasæt og tunge computerressourcer var tilgængelige for at muliggøre oprettelsen af ​​komplekse CNN’er, der er i stand til at udføre computersynsaktiviteter effektivt.

Lag i en CNN

Lad os forstå de forskellige lag i et CNN. Forøgelse af lag i et CNN vil øge dets kompleksitet og gøre det i stand til at registrere flere aspekter eller områder af et billede. Startende med en simpel funktion bliver den i stand til at detektere komplekse funktioner som objektets form og større elementer, indtil den endelig kan registrere billedet.

  Hvad er fejlkode 36 på Mac?

Konvolutionerende lag

Det første lag af et CNN er det konvolutionelle lag. Det er CNN’s vigtigste byggesten, hvor de fleste beregninger sker. Det har brug for færre komponenter, såsom inputdata, et funktionskort og et filter.

En CNN kan også have yderligere foldningslag. Dette gør CNNs struktur hierarkisk, da de efterfølgende lag kan visualisere pixels inden for tidligere lags modtagelige felter. Dernæst transformerer de foldede lag det givne billede til numeriske værdier og tillader netværket at forstå og udtrække værdifulde mønstre.

Pooling af lag

Pooling-lag bruges til at reducere dimensioner og kaldes downsampling. Det reducerer de parametre, der bruges i inputtet. Pooling-operationen kan flytte et filter hen over hele input ligesom foldningslaget, men mangler vægte. Her anvender filteret en fælles funktion til de numeriske værdier i det modtagelige felt for at udfylde resultatarrayet.

Pooling har to typer:

  • Gennemsnitlig pooling: Gennemsnitsværdien beregnes i det modtagelige felt, som filerne fejer over inputtet for at sende til output-arrayet.
  • Max pooling: Den vælger den maksimale værdipixel og sender den til output-arrayet, mens filteret fejer over inputtet. Max pooling bruges mere end gennemsnitlig pooling.

Selvom betydelige data går tabt i pooling, giver det stadig mange fordele for CNN. Det hjælper med at reducere overfittingsrisici og kompleksitet, samtidig med at effektiviteten forbedres. Det forbedrer også CNN’s stabilitet.

Fuldt forbundet (FC) lag

Som navnet antyder, er alle noderne i et outputlag direkte forbundet med det forrige lags node i et fuldt forbundet lag. Den klassificerer et billede baseret på de ekstraherede funktioner via tidligere lag sammen med deres filtre.

Desuden bruger FC-lag generelt en softmax-aktiveringsfunktion til at klassificere input korrekt i stedet for ReLu-funktioner (som i tilfældet med pooling og foldningslag). Dette hjælper med at producere en sandsynlighed på enten 0 eller 1.

Hvordan fungerer CNN’er?

Et foldet neuralt netværk består af mange lag, endda hundredvis af dem. Disse lag lærer at identificere forskellige funktioner i et givet billede.

Selvom CNN’er er neurale netværk, adskiller deres arkitektur sig fra en almindelig ANN.

Sidstnævnte lægger input gennem mange skjulte lag for at transformere det, hvor hvert lag er skabt med et sæt kunstige neuroner og er fuldt forbundet med hver neuron i det samme lag. Endelig er der et fuldt forbundet lag eller outputlaget for at vise resultatet.

På den anden side organiserer CNN lagene i tre dimensioner – bredde, dybde og højde. Her forbinder et lag fra neuronen kun neuroner i en lille region i stedet for at relatere til hver enkelt af dem i det næste lag. Endelig er det endelige resultat repræsenteret af en enkelt vektor med en sandsynlighedsscore og har kun dybdedimensionen.

Nu kan du spørge, hvad “convolution” er i en CNN.

Nå, foldning refererer til en matematisk operation for at flette to datasæt. I CNN anvendes foldningskonceptet på inputdata for at udlæse et funktionskort ved at filtrere informationen.

Dette bringer os til nogle af de vigtige begreber og terminologier, der bruges i CNN’er.

  • Filter: Også kendt som en funktionsdetektor eller kerne, kan et filter have en bestemt dimension, såsom 3×3. Det går over et inputbillede for at udføre matrixmultiplikation for hvert element for at anvende foldning. Anvendelse af filtre på hvert træningsbillede ved forskellige opløsninger plus outputtet af det konvolverede billede vil fungere som input til det efterfølgende lag.
  • Padding: Det bruges til at udvide en inputmatrix til matrixens grænser ved at indsætte falske pixels. Det er gjort for at imødegå det faktum, at foldning reducerer matrixstørrelsen. For eksempel kan en 9×9 matrix blive til en 3×3 matrix efter filtrering.
  • Striding: Hvis du ønsker at få et output, der er mindre end dit input, kan du udføre skridt. Det giver mulighed for at springe visse områder over, mens filteret glider hen over billedet. Ved at springe to eller tre pixels over, kan du producere et mere effektivt netværk ved at reducere den rumlige opløsning.
  • Vægte og skævheder: CNN’er har vægte og skævheder i deres neuroner. En model kan lære disse værdier under træning, og værdierne forbliver de samme gennem et givet lag for alle neuroner. Dette indebærer, at hver skjult neuron registrerer de samme funktioner i forskellige områder af et billede. Som et resultat bliver netværket mere tolerant, mens objekter oversættes til et givet billede.
  • ReLU: det står for Rectified Linear Unit (ReLu) og bruges til mere effektiv og hurtigere træning. Den kortlægger negative værdier til 0 og bevarer positive værdier. Det kaldes også aktivering, da netværket kun fører de aktiverede billedfunktioner ind i det efterfølgende lag.
  • Receptivt felt: I et neuralt netværk modtager hver neuron input fra forskellige steder fra det forrige lag. Og i foldede lag modtager hver neuron kun input fra et begrænset område af det foregående lag, kaldet et modtageligt felt af neuronen. I tilfælde af FC-laget er hele det foregående lag det modtagelige felt.
  15 specielle karakterer, du skal kende til Bash

Ved beregningsopgaver i den virkelige verden udføres foldning normalt i et 3D-billede, der kræver et 3D-filter.

Når vi vender tilbage til CNN, omfatter det forskellige dele eller nodelag. Hvert nodelag har en tærskel og vægt og er forbundet med et andet. Ved overskridelse af tærskelgrænsen sendes data til det næste lag i dette netværk.

Disse lag kan udføre operationer for at ændre dataene for at lære relevante funktioner. Disse operationer gentager også hundredvis af forskellige lag, der bliver ved med at lære at opdage andre funktioner i et billede.

Delene af et CNN er:

  • Et inputlag: Det er her input tages, såsom et billede. Det vil være et 3D-objekt med en defineret højde, bredde og dybde.
  • Et/flere skjulte lag eller ekstraktionsfase: Disse lag kan være et foldningslag, et poollag og et fuldt forbundet lag.
  • Et outputlag: Her vil resultatet blive vist.

At føre billedet gennem foldningslaget transformeres til et funktionskort eller et aktiveringskort. Efter at have foldet inputtet konvolverer lagene billedet og sender resultatet videre til det efterfølgende lag.

CNN vil udføre mange foldninger og pooling-teknikker for at detektere funktionerne under udtrækningsfasen. For eksempel, hvis du indtaster en kats billede, vil CNN genkende dens fire ben, farve, to øjne osv.

Dernæst vil fuldt forbundne lag i en CNN fungere som en klassificering af de udtrukne funktioner. Baseret på hvad deep learning-algoritmen har forudsagt om billedet, ville lagene give resultatet.

Fordele ved CNN’er

Højere nøjagtighed

CNN’er tilbyder højere nøjagtighed end almindelige neurale netværk, der ikke bruger foldning. CNN’er er nyttige, især når opgaven involverer masser af data, video- og billedgenkendelse osv. De producerer meget præcise resultater og forudsigelser; derfor er deres brug stigende i forskellige sektorer.

Beregningseffektivitet

CNN’er tilbyder et højere beregningseffektivitetsniveau end andre almindelige neurale netværk. Dette er på grund af brugen af ​​foldningsprocessen. De bruger også dimensionsreduktion og parameterdeling for at gøre modellerne hurtigere og nemmere at implementere. Disse teknikker kan også optimeres til at fungere på forskellige enheder, det være sig din smartphone eller bærbare computer.

  Vælg Google Workspace til e-mail og samarbejde

Feature Extraction

CNN kan nemt lære et billedes funktioner uden at kræve manuel konstruktion. Du kan udnytte forudtrænede CNN’er og styre vægtene ved at tilføre data til dem, når du arbejder på en ny opgave, og CNN vil tilpasse sig det problemfrit.

Ansøgninger fra CNN

CNN’er bruges i forskellige industrier til mange brugssager. Nogle af de virkelige applikationer af CNN’er inkluderer:

Billedklassificering

CNN’er bruges meget i billedklassificering. Disse kan genkende værdifulde funktioner og identificere objekter i et givet billede. Derfor bruges det i sektorer som sundhedspleje, især MRI’er. Derudover bruges denne teknologi i håndskreven ciffergenkendelse, som er blandt de tidligste anvendelsestilfælde af CNN’er i computervision.

Objektdetektion

CNN kan registrere objekter i billeder i realtid og også mærke og klassificere dem. Derfor bruges denne teknik i vid udstrækning i automatiserede køretøjer. Det gør det også muligt for smarte hjem og fodgængere at genkende køretøjets ejers ansigt. Det bruges også i AI-drevne overvågningssystemer til at detektere og markere objekter.

Audiovisuel matchning

CNN’s hjælp til audiovisuel matchning hjælper med at forbedre videostreamingplatforme som Netflix, YouTube osv. Det hjælper også med at imødekomme brugerønsker såsom “kærlighedssange af Elton John”.

Tale genkendelse

Udover billeder er CNN’er nyttige i naturlig sprogbehandling (NLP) og talegenkendelse. Et virkeligt eksempel på dette kunne være Google, der bruger CNN’er i sit talegenkendelsessystem.

Genopbygning af objekter

CNN’er kan bruges i 3D-modellering af et rigtigt objekt i et digitalt miljø. Det er også muligt for CNN-modeller at skabe en 3D-ansigtsmodel ved hjælp af et billede. Derudover er CNN nyttig til at konstruere digitale tvillinger inden for biotek, fremstilling, biotek og arkitektur.

CNN’s brug i forskellige sektorer inkluderer:

  • Sundhedspleje: Computersyn kan bruges i radiologi til at hjælpe læger med at opdage kræftsvulster med bedre effektivitet hos en person.
  • Landbrug: Netværkene kan bruge billeder fra kunstige satellitter såsom LSAT og udnytte disse data til at klassificere frugtbare lande. Dette hjælper også med at forudsige jordens frugtbarhedsniveauer og udvikle en effektiv strategi for at maksimere udbyttet.
  • Marketing: Sociale medieapplikationer kan foreslå en person på et billede, der er lagt ud på en persons profil. Dette hjælper dig med at tagge personer i dine fotoalbum.
  • Detailhandel: E-handelsplatforme kan bruge visuel søgning til at hjælpe brands med at anbefale relevante varer, som målkunderne ønsker at købe.
  • Automotive: CNN finder brug i biler for at forbedre passager- og chaufførsikkerheden. Det gør den ved hjælp af funktioner som vognbanegenkendelse, objektgenkendelse, billedklassificering osv. Dette hjælper også verden af ​​selvkørende biler til at udvikle sig mere.

Ressourcer til at lære CNN’er

Coursera:

Coursera har dette kursus på CNN, som du kan overveje at tage. Dette kursus vil lære dig, hvordan computersyn har udviklet sig gennem årene og nogle anvendelser af CNN’er i den moderne verden.

Amazon:

Du kan læse disse bøger og foredrag for at lære mere om CNN:

  • Neurale netværk og dyb læring: Det dækker modeller, algoritmer og teorien om dyb læring og neurale netværk.
  • A Guide to Convolutional Neural Networks for Computer Vision: Denne bog vil lære dig anvendelserne af CNN’er og deres koncepter.
  • Praktiske konvolutionelle neurale netværk med Tensorflow: Du kan løse forskellige problemer i computersyn ved hjælp af Python og TensorFlow ved hjælp af denne bog.
  • Advanced Applied Deep Learning: Denne bog vil hjælpe dig med at forstå CNN’er, deep learning og deres avancerede applikationer, herunder objektdetektering.
  • Konvolutionelle neurale netværk og tilbagevendende neurale netværk: Denne bog vil lære dig om CNN’er og RNN’er, og hvordan du opbygger disse netværk.

Konklusion

Konvolutionelle neurale netværk er et af de nye områder inden for kunstig intelligens, machine learning og deep learning. Det har forskellige applikationer i den nuværende verden i næsten alle sektorer. Ser man på dets stigende brug, forventes det at udvide sig mere og være mere nyttigt til at tackle problemer i den virkelige verden.