Inledning:
Convolutional Neural Network (CNN eller ConvNet) är en klass av djupa neurala nätverk som oftast används för att göra bildigenkänning, bildklassificering, objektdetektering etc.
framstegen inom datorsyn med djupt lärande har konstruerats och perfektionerats med tiden, främst över en viss algoritm — ett Konvolutionellt neuralt nätverk.
Google använder det för fotosökning, Facebook för deras automatiska märkningsalgoritmer, Amazon för deras produktrekommendationer, och listan fortsätter och fortsätter…
med hjälp av CNN kan du göra mycket coola saker som, jag har gjort en handskriven siffraigenkänningsmodell som förutspår siffran i bilden med 98.82% noggrannhet.
Bonus:
kod -> https://github.com/UPPERCASEGUY/CNN-implementation
du kan också göra dina coola modeller med liten hjälp i begrepp om CNN. Den här bloggen kommer att börja bygga dina koncept om CNNs och du är bra att gå!
CONVOLUTIONAL NEURAL NETWORKS:
Bildklassificering är uppgiften att ta en inmatad bild och mata ut en klass eller en sannolikhet för klasser som bäst beskriver bilden. I CNN tar vi en bild som inmatning, lägger vikt vid dess olika aspekter/funktioner i bilden och kan skilja varandra från varandra. Förbehandlingen som krävs i CNN är mycket mindre jämfört med andra klassificeringsalgoritmer.
arkitektur:
datorer kan inte se saker som vi gör, för datorer bilden är ingenting annat än en matris.
en CNN har vanligtvis tre lager: ett faltningslager, poollager och helt anslutet lager.
Convolutional layer:
jag är ganska säker på att du har stött på ordet ’convolution’ i ditt liv tidigare och här förändras inte meningen. Ja! du har rätt, det här lagret handlar om att samla föremål på varandra. Faltningsskiktet är KÄRNBYGGNADSBLOCKET för CNN. Den bär huvuddelen av nätverkets beräkningsbelastning.
huvudmålet med faltning är att extrahera funktioner som kanter, färger, hörn från ingången. När vi går djupare inuti nätverket börjar nätverket identifiera mer komplexa funktioner som former,siffror, ansiktsdelar också.
detta lager utför en punktprodukt mellan två matriser, där en matris(känd som filter/kärna)är uppsättningen lärbara parametrar, och den andra matrisen är den begränsade delen av bilden.
om bilden är RGB kommer filtret att ha mindre höjd och bredd jämfört med bilden men det kommer att ha samma djup(höjd x bredd x 3) som bilden.
för RGB-bilder kan den konvolverande delen visualiseras enligt följande:
i slutet av faltningsprocessen har vi en utvald matris som har mindre parametrar(dimensioner) än den faktiska bilden samt tydligare funktioner än den faktiska. Så nu kommer vi att arbeta med vår presenterade matris från och med nu.
Samla Lager:
detta lager är enbart för att minska den beräkningskraft som krävs för att bearbeta data. Det görs genom att minska dimensionerna för den presenterade matrisen ännu mer. I det här lagret försöker vi extrahera de dominerande funktionerna från en begränsad mängd grannskap. Låt oss göra det klart genom att ta ett exempel.
den orange matrisen är vår utvalda matris, den bruna är en poolkärna och vi får vår blå matris som utgång efter att poolen är klar. Så här är det vi gör att ta maximalt bland alla siffror som finns i poolområdet och flytta poolområdet varje gång för att bearbeta ett annat grannskap i matrisen.
det finns två typer av poolingstekniker: MEDELPOOLING och MAXPOOLING.
skillnaden mellan dessa två är, i genomsnitt-pooling, vi tar genomsnittet av alla värden för pooling region och MAX-pooling, vi bara ta den maximala bland alla värden som ligger inne i pooling regionen.
så, efter sammanslagning lager, vi har en matris som innehåller huvuddragen i bilden och denna matris har ännu mindre dimensioner, vilket kommer att hjälpa en hel del i nästa steg.
helt anslutet lager:
hittills har vi inte gjort något för att klassificera olika bilder, det vi har gjort är markerat vissa funktioner i en bild och minskar bildens dimensioner drastiskt.
härifrån kommer vi faktiskt att göra klassificeringsprocessen.
nu när vi har konverterat vår inmatningsbild till en lämplig form för vår helt anslutna arkitektur på flera nivåer, ska vi platta bilden till en kolumnvektor. Den utplattade utgången matas till ett framåtriktat neuralt nätverk och backpropagation tillämpas på varje iteration av träning. Under en serie epoker kan modellen skilja mellan dominerande och vissa lågnivåfunktioner i bilder och klassificera dem.
sammanfattning:
- ange inmatningsbilden i faltningsskiktet.
- ta faltning med dagens kärna/filter.
- applicera poolningslager för att minska dimensionerna.
- Lägg till dessa lager flera gånger.
- platta utmatningen och mata in i ett helt anslutet lager.
- träna nu modellen med backpropagation med logistisk regression.
och du har gjort ditt konvolutionella neurala nätverk.