Convolutional Neural Networks (CNNs): En introduktion

By rik

Konvolutionella neurala nätverk erbjuder en mer flexibel och effektiv metod för att identifiera objekt och klassificera bilder.

Teknikens framsteg är snabba. Artificiell intelligens och maskininlärning är två exempel som ofta nämns.

Dessa tekniker används idag inom många områden, från marknadsföring och e-handel till mjukvaruutveckling, bankväsende, finans och medicin.

AI och ML är omfattande områden där man kontinuerligt arbetar för att utöka deras tillämpningar för att lösa verkliga problem. Det är därför det finns många grenar inom dessa teknologier; ML är en del av AI.

Konvolutionella neurala nätverk är en av dessa grenar inom AI som har blivit alltmer populär.

I denna artikel kommer jag att förklara vad CNN är, hur de fungerar och deras användningsområden i dagens samhälle.

Låt oss börja!

Vad är ett konvolutionellt neuralt nätverk?

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

CNN bygger på principer från linjär algebra, såsom matrismultiplikation, för att identifiera mönster i bilder. Dessa processer kräver grafiska processorer (GPU) för att träna modellerna eftersom de involverar komplexa beräkningar.

Enkelt uttryckt använder CNN algoritmer för djupinlärning för att bearbeta bilder som indata och tilldela betydelse i form av bias och inlärningsbara vikter till olika delar av bilden. På detta sätt kan CNN skilja mellan olika bilder eller kategorisera dem.

CNN: En kort historik

Eftersom ett konvolutionellt neuralt nätverk är en form av artificiellt neuralt nätverk är det värt att kort repetera vad neurala nätverk är.

Inom datavetenskap är ett neuralt nätverk en del av maskininlärning (ML) som använder algoritmer för djupinlärning. Det liknar hur neuroner är anslutna i den mänskliga hjärnan. Artificiella neurala nätverk har också hämtat inspiration från hur den visuella hjärnbarken är organiserad.

Det finns olika typer av neurala nätverk eller artificiella neurala nätverk (ANN) som används för olika ändamål. Ett av dem är CNN, som används för bildigenkänning och klassificering. Det introducerades av doktoranden Yann LeCun på 1980-talet.

En tidig version av CNN – LeNet, som uppkallades efter LeCun, kunde känna igen handskrivna siffror. Den användes sedan inom bank- och posttjänster för att läsa siffror på checkar och postnummer skrivna på kuvert.

Den tidiga versionen var dock begränsad i sin skalbarhet, vilket innebar att CNN inte användes i stor utsträckning inom artificiell intelligens och datorseende. Det krävdes också stora beräkningsresurser och mycket data för att fungera effektivt med större bilder.

År 2012 återupplivades djupinlärning med AlexNet, som använde neurala nätverk med flera lager. Vid den här tiden hade tekniken utvecklats och stora datamängder och kraftfulla datorresurser blev tillgängliga, vilket möjliggjorde skapandet av komplexa CNN som kunde utföra datorseendeaktiviteter effektivt.

Lager i ett CNN

Låt oss undersöka de olika lagren i ett CNN. Ju fler lager ett CNN har, desto mer komplext blir det, och det kan upptäcka fler aspekter eller områden av en bild. Från att identifiera enkla funktioner kan det utvecklas till att upptäcka komplexa egenskaper som objektets form och större element, tills det slutligen kan identifiera hela bilden.

Konvolutionellt lager

Det första lagret i ett CNN är det konvolutionella lagret. Detta är CNN:s huvudkomponent där de flesta beräkningar görs. Det består av färre delar, såsom indata, en funktionskarta och ett filter.

Ett CNN kan ha flera konvolutionella lager. Detta gör CNN-strukturen hierarkisk, eftersom de efterföljande lagren kan visualisera pixlar inom de tidigare lagrens mottagliga fält. Därefter omvandlar konvolutionslagren den inmatade bilden till numeriska värden, vilket gör att nätverket kan förstå och extrahera användbara mönster.

Poollager

Poollager används för att reducera dimensioner och kallas för nedsampling. De minskar antalet parametrar som används i indata. Poolningsprocessen kan flytta ett filter över hela indatan, likt konvolutionslagret, men utan vikter. Här applicerar filtret en vanlig funktion på de numeriska värdena inom det receptiva fältet för att generera resultatmatrisen.

Det finns två typer av poolning:

  • Genomsnittlig poolning: Beräknar medelvärdet inom det receptiva fältet när filtren rör sig över indata och skickar det till utmatningsmatrisen.
  • Max poolning: Väljer den maximala pixeln och skickar den till utmatningsmatrisen när filtret rör sig över indata. Max poolning används oftare än genomsnittlig poolning.

Även om en betydande mängd data går förlorad genom poolning, ger det fortfarande många fördelar för CNN. Det bidrar till att minska risken för överanpassning och komplexitet, samtidigt som effektiviteten ökar. Det förbättrar också CNN:s stabilitet.

Fullt anslutet (FC) lager

Som namnet antyder är alla noder i ett utdatalager direkt anslutna till noderna i föregående lager i ett fullt anslutet lager. Det klassificerar en bild baserat på de funktioner som extraherats av de tidigare lagren med hjälp av deras filter.

FC-lager använder vanligtvis en softmax-aktiveringsfunktion för att klassificera indata korrekt, istället för ReLu-funktioner (som i fallet med poolnings- och konvolutionslager). Detta hjälper till att generera en sannolikhet på antingen 0 eller 1.

Hur fungerar CNN?

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

Även om CNN är neurala nätverk, skiljer sig deras struktur från vanliga ANN.

I det senare matas indata genom många dolda lager för att transformera den, där varje lager skapas med en uppsättning artificiella neuroner som är fullt anslutna till varje neuron i samma lager. Slutligen finns ett fullt anslutet lager eller ett utdatalager för att visa resultatet.

CNN organiserar istället lagren i tre dimensioner: bredd, djup och höjd. Här ansluter en neurons lager endast till neuroner i en liten region istället för alla neuroner i nästa lager. Det slutgiltiga resultatet representeras av en enkel vektor med en sannolikhetspoäng och har bara djupdimensionen.

Nu kanske du undrar vad ”konvolution” är i ett CNN.

Konvolution är en matematisk operation för att kombinera två uppsättningar data. I CNN appliceras konvolutionskonceptet på indata för att generera en funktionskarta genom att filtrera informationen.

Detta leder oss till några viktiga begrepp och termer 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. Det rör sig över en inmatningsbild för att utföra matrismultiplikation för varje element för att applicera konvolution. Att använda filter på varje träningsbild med olika upplösningar, samt utdata från den konvolverade bilden, kommer att fungera som indata för det efterföljande lagret.
  • Utfyllnad: Används för att utöka en inmatningsmatris till matrisens gränser genom att lägga till falska pixlar. Detta görs för att kompensera för att konvolution minskar matrisstorleken. Till exempel kan en 9×9-matris omvandlas till en 3×3-matris efter filtrering.
  • Steglängd: Om du vill ha en utdata som är mindre än din indata kan du använda steglängd. Detta gör att du kan hoppa över vissa områden medan filtret rör sig ö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 bias: CNN har vikter och bias i sina neuroner. En modell kan lära sig dessa värden under träning, och värdena förblir desamma inom ett givet lager för alla neuroner. Det betyder att varje dold neuron upptäcker samma egenskaper i olika delar av en bild. Detta gör nätverket mer tolerant när objekt flyttas inom en given bild.
  • ReLU: Står för Rectified Linear Unit (ReLu) och används för effektivare och snabbare träning. Det mappar negativa värden till 0 och behåller positiva värden. Det kallas också aktivering, eftersom nätverket endast för de aktiverade bildfunktionerna vidare till nästa lager.
  • Receptivt fält: I ett neuralt nätverk får varje neuron indata från olika platser i föregående lager. I konvolutionslager får varje neuron endast indata från ett begränsat område i föregående lager, vilket kallas för neuronens receptiva fält. I FC-lagret är hela det föregående lagret det receptiva fältet.

I praktiken utförs konvolution oftast på 3D-bilder, vilket kräver ett 3D-filter.

För att återgå till CNN består det 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 nätverket.

Dessa lager kan utföra operationer för att ändra data för att lära sig relevanta funktioner. Dessa operationer upprepas i hundratals olika lager som kontinuerligt lär sig att upptäcka olika funktioner i en bild.

Delarna i ett CNN är:

  • Ett indatalager: Det är där indata, som en bild, matas in. Det kommer att vara ett 3D-objekt med definierad höjd, bredd och djup.
  • Ett/flera dolda lager eller funktionsutvinningsfaser: Dessa lager kan vara konvolutionslager, poollager och fullt anslutna lager.
  • Ett utdatalager: Det är här resultatet visas.

När bilden har passerat genom konvolutionslagret omvandlas den till en funktionskarta eller aktiveringskarta. Efter att ha konvoluerat indata, rullar lagren bilden och skickar resultatet till nästa lager.

CNN kommer att utföra flera konvolutions- och poolningstekniker för att identifiera funktionerna under utvinningsfasen. Om du till exempel matar in en bild på en katt kommer CNN att känna igen dess fyra ben, färg, två ögon osv.

Därefter kommer de fullt anslutna lagren i ett CNN att fungera som en klassificerare över de extraherade funktionerna. Baserat på vad djupinlärningsalgoritmen har förutspått om bilden, kommer lagren att ge resultatet.

Fördelar med CNN

Högre precision

CNN erbjuder högre precision än vanliga neurala nätverk som inte använder konvolution. CNN är särskilt användbara när uppgiften handlar om stora mängder data, video- och bildigenkänning etc. De ger mycket exakta resultat och förutsägelser, vilket ökar deras användning inom olika sektorer.

Beräkningseffektivitet

CNN har en högre beräkningseffektivitet än andra vanliga neurala nätverk. Detta beror på att de använder konvolutionsprocessen. 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.

Funktionsextraktion

CNN kan enkelt lära sig funktioner i en bild utan att kräva manuell konstruktion. Du kan använda förtränade CNN och hantera vikterna genom att mata in data till dem när du arbetar med en ny uppgift, och CNN anpassar sig sömlöst till den.

Tillämpningar av CNN

CNN används i olika branscher för många olika ändamål. Några verkliga tillämpningar av CNN inkluderar:

Bildklassificering

CNN används ofta i bildklassificering. De kan känna igen viktiga egenskaper och identifiera objekt i en given bild. Därför används de inom sektorer som hälso- och sjukvård, särskilt vid MRI. Dessutom används denna teknik för att känna igen handskrivna siffror, vilket är ett av de tidigaste användningsområdena för CNN inom datorseende.

Objektidentifiering

CNN kan identifiera objekt i bilder i realtid samt märka och klassificera dem. Därför används denna teknik i stor utsträckning i automatiserade fordon. Det gör det också möjligt för smarta hem och fotgängare att identifiera fordonets ägare genom ansiktsigenkänning. Det används också i AI-drivna övervakningssystem för att identifiera och markera objekt.

Audiovisuell matchning

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

Taligenkänning

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

Objektrekonstruktion

CNN kan användas för att skapa 3D-modeller 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. CNN är också användbara för att skapa digitala tvillingar inom bioteknik, tillverkning, bioteknik och arkitektur.

Användningsområden för CNN inom olika sektorer är:

  • Hälso- och sjukvård: Datorseende kan användas inom radiologi för att hjälpa läkare att upptäcka cancertumörer med större effektivitet.
  • Jordbruk: Nätverken kan använda bilder från satelliter, till exempel LSAT, för att klassificera bördiga marker. Detta hjälper också till att förutsäga jordens bördighet och utveckla effektiva strategier för att maximera avkastningen.
  • Marknadsföring: Sociala medieapplikationer kan föreslå vem en person är på en bild som publiceras i någons profil. Det underlättar för 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 deras kunder är intresserade av att köpa.
  • Fordon: CNN används i bilar för att förbättra passagerarnas och förarens säkerhet. Detta sker med hjälp av funktioner som detektering av körfält, objektidentifiering, bildklassificering etc. Det hjälper också världen av självkörande bilar att utvecklas.

Resurser för att lära sig om CNN

Coursera:

Coursera erbjuder en kurs om CNN som du kan överväga att gå. Den här kursen kommer att lära dig hur datorseende har utvecklats genom åren och några tillämpningar av CNN i dagens samhälle.

Amazon:

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

  • Neurala nätverk och djupinlärning: Denna bok täcker modeller, algoritmer och teorin bakom djupinlärning och neurala nätverk.
  • En guide till konvolutionella neurala nätverk för datorseende: Den här boken kommer att lära dig tillämpningarna av CNN och deras underliggande koncept.
  • Praktisk användning av konvolutionella neurala nätverk med Tensorflow: Du kan lösa olika problem inom datorseende med Python och TensorFlow med hjälp av den här boken.
  • Avancerad tillämpad djupinlärning: Den här boken hjälper dig att förstå CNN, djupinlärning och deras avancerade tillämpningar, inklusive objektidentifiering.
  • Konvolutionella neurala nätverk och återkommande neurala nätverk: Den här boken lär dig om CNN och RNN, och hur man bygger dessa nätverk.

Slutsats

Konvolutionella neurala nätverk är ett växande område inom artificiell intelligens, maskininlärning och djupinlärning. Det har många tillämpningar i dagens värld inom nästan alla sektorer. Med tanke på den ökande användningen förväntas den fortsätta att växa och bli ännu mer användbar för att lösa verkliga problem.