Convolutional Neural Networks (CNNs): En introduktion

Konvolutionella neurala nätverk erbjuder ett mer skalbart sätt för objektigenkänning och bildklassificeringsuppgifter.

Det sker massor av framsteg i teknikens värld. Artificiell intelligens och maskininlärning är några vanliga sådana du kan höra ofta.

För närvarande används dessa tekniker inom nästan alla områden, från marknadsföring, e-handel och mjukvaruutveckling till bank, finans och medicin.

AI och ML är stora områden, och ansträngningar görs för att bredda deras applikationer för att lösa många verkliga problem. Det är därför du kan se många grenar inom dessa teknologier; ML är en delmängd av AI själv.

Konvolutionella neurala nätverk är en av de grenar av AI som blir populära i dessa dagar.

I den här artikeln kommer jag att diskutera vad CNN är, hur de fungerar och deras användbarhet i den moderna världen.

Låt oss dyka direkt in!

Vad är ett konvolutionellt neuralt nätverk?

Ett konvolutionellt neuralt nätverk (ConvNet eller CNN) är ett artificiellt neuralt nätverk (ANN) som använder algoritmer för djupinlärning för att analysera bilder, klassificera bilder och utföra datorseendeuppgifter.

CNN utnyttjar principerna för linjär algebra, såsom matrismultiplikation, för att upptäcka mönster i en bild. Eftersom dessa processer involverar komplexa beräkningar kräver de grafiska bearbetningsenheter (GPU) för att träna modellerna.

Med enkla ord använder CNN Deep Learning-algoritmer för att ta indata som bilder och tilldela betydelse i form av fördomar och inlärningsbara vikter till olika aspekter av den bilden. På så sätt kan CNN skilja mellan bilder eller klassificera dem.

CNN:s: En kort historia

Eftersom ett konvolutionellt neuralt nätverk är ett artificiellt neuralt nätverk, är det viktigt att upprepa neurala nätverk.

I beräkningar är ett neuralt nätverk en del av maskininlärning (ML) med algoritmer för djupinlärning. Det är analogt med anslutningsmönstren som följs av neuroner i den mänskliga hjärnan. Artificiella neurala nätverk hämtar också inspiration från hur den visuella cortex är ordnad.

Så olika typer av neurala nätverk eller artificiella neurala nätverk (ANN) används för olika ändamål. En av dem är CNN som används för bilddetektering och klassificering med mera. Den introducerades av en postdoktor, Yann LeCun, på 1980-talet.

CNN:s tidiga version – LeNet, uppkallad efter LeCun, kunde känna igen handskrivna siffror. Sedan användes det i bank- och posttjänster för att läsa siffror på checkar och postnummer skrivna på kuvert.

Denna tidiga version saknade dock skalning; CNN användes därför inte mycket inom artificiell intelligens och datorseende. Det krävde också betydande beräkningsresurser och data för att fungera mer effektivt för större bilder.

Under 2012 besökte AlexNet dessutom djupinlärning som använder neurala nätverk som består av flera lager. Runt denna tid förbättrades tekniken, och stora datamängder och tunga datorresurser var tillgängliga för att möjliggöra skapandet av komplexa CNN:er som kan utföra datorseendeaktiviteter effektivt.

Lager i en CNN

Låt oss förstå de olika lagren i ett CNN. Ökande lager i ett CNN kommer att öka dess komplexitet och göra det möjligt för den att upptäcka fler aspekter eller områden av en bild. Från och med en enkel funktion blir den kapabel att upptäcka komplexa egenskaper som objektets form och större element tills den äntligen kan upptäcka bilden.

Konvolutionellt lager

Det första lagret av en CNN är det faltningslagrade. Det är CNN:s huvudsakliga byggsten där de flesta beräkningarna sker. Den behöver färre komponenter, såsom indata, en funktionskarta och ett filter.

En CNN kan också ha ytterligare faltningslager. Detta gör CNN-strukturen hierarkisk eftersom de efterföljande lagren kan visualisera pixlar inom tidigare lagers mottagliga fält. Därefter omvandlar faltningsskikten den givna bilden till numeriska värden och låter nätverket förstå och extrahera värdefulla mönster.

Samla lager

Poollager används för att reducera dimensioner och kallas nedsampling. Det minskar parametrarna som används i ingången. Poolningsoperationen kan flytta ett filter över hela ingången som faltningsskiktet men saknar vikter. Här tillämpar filtret en gemensam funktion på de numeriska värdena i det receptiva fältet för att fylla i resultatmatrisen.

Pooling har två typer:

  • Genomsnittlig pooling: Medelvärdet beräknas i det mottagliga fältet som filerna sveper över ingången för att sända till utmatrisen.
  • Max pooling: Den väljer den maximala pixeln och skickar den till utgångsmatrisen när filtret sveper över ingången. Max pooling används mer än genomsnittlig pooling.

Även om betydande data går förlorade vid pooling, erbjuder det fortfarande många fördelar för CNN. Det hjälper till att minska riskerna för övermontering och komplexiteten samtidigt som effektiviteten förbättras. Det förbättrar också CNN:s stabilitet.

Fullt anslutet (FC) lager

Som namnet antyder är alla noder i ett utdatalager direkt anslutna till det föregående lagrets nod i ett helt sammankopplat lager. Den klassificerar en bild baserat på de extraherade funktionerna via tidigare lager tillsammans med deras filter.

Dessutom använder FC-lager i allmänhet en softmax-aktiveringsfunktion för att klassificera ingångar korrekt istället för ReLu-funktioner (som i fallet med pooling och faltningslager). Detta hjälper till att producera en sannolikhet på antingen 0 eller 1.

Hur fungerar CNN?

Ett konvolutionellt neuralt nätverk består av många lager, till och med hundratals av dem. Dessa lager lär sig att identifiera olika egenskaper hos en given bild.

Även om CNN är neurala nätverk, skiljer sig deras arkitektur från en vanlig ANN.

Den senare lägger en input genom många dolda lager för att transformera den, där varje lager skapas med en uppsättning artificiella neuroner och är helt anslutna till varje neuron i samma lager. Äntligen finns det ett helt anslutet lager eller utdatalagret för att visa resultatet.

Å andra sidan organiserar CNN lagren i tre dimensioner – bredd, djup och höjd. Här ansluter ett lager från neuronen bara till neuroner i en liten region istället för att relatera till var och en av dem i nästa lager. Slutligen representeras det slutliga resultatet av en enda vektor med ett sannolikhetspoäng och har bara djupdimensionen.

Nu kan du fråga vad ”konvolution” är i en CNN.

Tja, faltning hänvisar till en matematisk operation för att slå samman två datamängder. I CNN tillämpas faltningskonceptet på indata för att mata ut en funktionskarta genom att filtrera informationen.

Detta för oss till några av de viktiga begrepp och terminologier som används i CNN.

  • Filter: Även känt som en funktionsdetektor eller kärna, ett filter kan ha en viss dimension, till exempel 3×3. Den går över en ingångsbild för att utföra matrismultiplikation för varje element för att tillämpa faltning. Att använda filter på varje träningsbild med olika upplösningar plus utdata från den konvolverade bilden kommer att fungera som en ingång för det efterföljande lagret.
  • Utfyllnad: Den används för att expandera en inmatningsmatris till matrisens gränser genom att infoga falska pixlar. Det är gjort för att motverka det faktum att faltning minskar matrisstorleken. Till exempel kan en 9×9-matris förvandlas till en 3×3-matris efter filtrering.
  • Striding: Om du vill få en utgång som är mindre än din input, kan du utföra striding. Det gör det möjligt att hoppa över vissa områden medan filtret glider över bilden. Genom att hoppa över två eller tre pixlar kan du skapa ett mer effektivt nätverk genom att minska den rumsliga upplösningen.
  • Vikter och fördomar: CNN har vikter och fördomar i sina nervceller. En modell kan lära sig dessa värden under träning, och värdena förblir desamma under ett givet lager för alla neuroner. Detta innebär att varje gömd neuron upptäcker samma egenskaper i olika delar av en bild. Som ett resultat blir nätverket mer tolerant när objekt översätts till en given bild.
  • ReLU: det står för Rectified Linear Unit (ReLu) och används för effektivare och snabbare träning. Den mappar negativa värden till 0 och bibehåller positiva värden. Det kallas också aktivering, eftersom nätverket endast bär de aktiverade bildfunktionerna till det efterföljande lagret.
  • Receptivt fält: I ett neuralt nätverk får varje neuron input från olika platser från föregående skikt. Och i faltningslager får varje neuron input från endast ett begränsat område av det föregående lagret, kallat ett mottagligt fält av neuronen. I fallet med FC-lagret är hela det föregående lagret det receptiva fältet.

I verkliga beräkningsuppgifter utförs vanligtvis faltning i en 3D-bild som kräver ett 3D-filter.

För att komma tillbaka till CNN, består den av olika delar eller nodlager. Varje nodlager har en tröskel och vikt och är kopplat till ett annat. När tröskelgränsen överskrids skickas data till nästa lager i detta nätverk.

Dessa lager kan utföra operationer för att ändra data för att lära sig relevanta funktioner. Dessa operationer upprepar också hundratals olika lager som fortsätter att lära sig att upptäcka andra funktioner i en bild.

Delarna av ett CNN är:

  • Ett indatalager: Det är här inmatningen tas, till exempel en bild. Det kommer att vara ett 3D-objekt med en definierad höjd, bredd och djup.
  • Ett/flera dolda lager eller extraktionsfas för funktioner: dessa lager kan vara ett faltningslager, poollager och helt sammankopplat lager.
  • Ett utdatalager: Här kommer resultatet att visas.

Att passera bilden genom faltningsskiktet omvandlas till en funktionskarta eller aktiveringskarta. Efter att ha vikit in inmatningen rullar lagren bilden och skickar resultatet till det efterföljande lagret.

CNN kommer att utföra många faltningar och poolningstekniker för att upptäcka funktionerna under utvinningsfasen. Till exempel, om du matar in en katts bild kommer CNN att känna igen dess fyra ben, färg, två ögon, etc.

Därefter kommer helt anslutna lager i en CNN att fungera som en klassificerare över de extraherade funktionerna. Baserat på vad algoritmen för djupinlärning har förutspått om bilden, skulle lagren ge resultatet.

Fördelar med CNN

Högre noggrannhet

CNN erbjuder högre noggrannhet än vanliga neurala nätverk som inte använder faltning. CNN:s är till hjälp, särskilt när uppgiften involverar mycket data, video- och bildigenkänning, etc. De producerar mycket exakta resultat och förutsägelser; därför ökar deras användning inom olika sektorer.

Beräkningseffektivitet

CNN erbjuder en högre beräkningseffektivitetsnivå än andra vanliga neurala nätverk. Detta beror på att man använder faltningsprocessen. De använder också dimensionsreduktion och parameterdelning för att göra modellerna snabbare och enklare att distribuera. Dessa tekniker kan också optimeras för att fungera på olika enheter, oavsett om det är din smartphone eller bärbara dator.

Särdragsextraktion

CNN kan enkelt lära sig en bilds funktioner utan att kräva manuell konstruktion. Du kan utnyttja förutbildade CNN:er och hantera vikterna genom att mata in data till dem när du arbetar med en ny uppgift, och CNN kommer att anpassa sig till det sömlöst.

Ansökningar från CNN

CNN:s används i olika branscher för många användningsfall. Några av de verkliga tillämpningarna av CNN inkluderar:

Bildklassificering

CNN används ofta i bildklassificering. Dessa kan känna igen värdefulla egenskaper och identifiera objekt i en given bild. Därför används det inom sektorer som sjukvård, särskilt MRI. Dessutom används den här tekniken för handskriven sifferigenkänning, vilket är bland de tidigaste användningsfallen av CNN:er i datorseende.

Objektdetektion

CNN kan upptäcka objekt i bilder i realtid och även märka och klassificera dem. Därför används denna teknik flitigt i automatiserade fordon. Det gör det också möjligt för smarta hem och fotgängare att känna igen fordonets ägares ansikte. Den används också i AI-drivna övervakningssystem för att upptäcka och markera objekt.

Audiovisuell matchning

CNN:s hjälp med audiovisuell matchning hjälper till att förbättra videoströmningsplattformar som Netflix, YouTube, etc. Det hjälper också till att möta användarförfrågningar som ”kärlekslåtar av Elton John”.

Taligenkänning

Förutom bilder är CNN:er användbara vid naturlig språkbehandling (NLP) och taligenkänning. Ett verkligt exempel på detta kan vara Google som använder CNN i sitt taligenkänningssystem.

Objektrekonstruktion

CNN kan användas i 3D-modellering av ett verkligt objekt i en digital miljö. Det är också möjligt för CNN-modeller att skapa en 3D-ansiktsmodell med hjälp av en bild. Dessutom är CNN användbar för att konstruera digitala tvillingar inom bioteknik, tillverkning, bioteknik och arkitektur.

CNN:s användning inom olika sektorer inkluderar:

  • Sjukvård: Datorseende kan användas inom radiologi för att hjälpa läkare att upptäcka cancertumörer med bättre effektivitet hos en person.
  • Jordbruk: Nätverken kan använda bilder från konstgjorda satelliter som LSAT och utnyttja dessa data för att klassificera bördiga marker. Detta hjälper också till att förutsäga jordens fruktbarhetsnivåer och utveckla en effektiv strategi för att maximera avkastningen.
  • Marknadsföring: Sociala medier-applikationer kan föreslå en person i en bild som publiceras på någons profil. Detta hjälper dig att tagga personer i dina fotoalbum.
  • Detaljhandel: E-handelsplattformar kan använda visuell sökning för att hjälpa varumärken att rekommendera relevanta varor som målkunderna vill köpa.
  • Fordon: CNN finner användning i bilar för att förbättra passagerarnas och förarens säkerhet. Det gör den med hjälp av funktioner som fillinjedetektering, objektdetektering, bildklassificering etc. Detta hjälper också världen av självkörande bilar att utvecklas mer.

Resurser för att lära dig CNN

Coursera:

Coursera har den här kursen på CNN som du kan överväga att ta. Den här kursen kommer att lära dig hur datorseende har utvecklats under åren och vissa tillämpningar av CNN i den moderna världen.

Amazon:

Du kan läsa dessa böcker och föreläsningar för att lära dig mer om CNN:

  • Neurala nätverk och djupinlärning: Den täcker modeller, algoritmer och teorin om djupinlärning och neurala nätverk.
  • A Guide to Convolutional Neural Networks for Computer Vision: Den här boken kommer att lära dig tillämpningarna av CNN och deras koncept.
  • Hands-on Convolutional Neural Networks with Tensorflow: Du kan lösa olika problem inom datorseende med Python och TensorFlow med hjälp av den här boken.
  • Advanced Applied Deep Learning: Den här boken hjälper dig att förstå CNN, djupinlärning och deras avancerade applikationer, inklusive objektdetektering.
  • Konvolutionella neurala nätverk och återkommande neurala nätverk: Den här boken kommer att lära dig om CNN och RNN och hur man bygger dessa nätverk.

Slutsats

Konvolutionella neurala nätverk är ett av de framväxande områdena för artificiell intelligens, maskininlärning och djupinlärning. Den har olika tillämpningar i dagens värld i nästan alla sektorer. Om man tittar på dess ökande användning förväntas den expandera mer och vara mer användbar för att ta itu med verkliga problem.