Конволуционе неуронске мреже (ЦНН): Увод

Konvolucione neuronske mreže predstavljaju napredniji pristup u prepoznavanju objekata i klasifikaciji slika, pružajući skalabilna rešenja.

Tehnološki napredak je izuzetno brz. Veštačka inteligencija (VI) i mašinsko učenje (MU) su pojmovi koji se sve češće čuju i koriste.

Ove tehnologije se trenutno primenjuju u gotovo svim sferama, od marketinga i e-trgovine, preko razvoja softvera, pa sve do bankarstva, finansija i medicine.

VI i MU su ogromna područja, a konstantno se ulažu napori u proširenje njihove primene kako bi se rešili brojni problemi u stvarnom svetu. Stoga, unutar ovih tehnologija postoje mnoge podgrane; MU je, zapravo, podskup veštačke inteligencije.

Konvolucione neuronske mreže su jedna od grana veštačke inteligencije koja postaje sve popularnija.

U ovom tekstu ću objasniti šta su CNN, kako funkcionišu i njihovu korisnost u savremenom svetu.

Zaronimo odmah!

Šta je konvoluciona neuronska mreža?

Konvoluciona neuronska mreža (ConvNet ili CNN) je vrsta veštačke neuronske mreže (ANN) koja koristi algoritme dubokog učenja za analizu slika, klasifikaciju vizuelnih elemenata i izvršavanje zadataka kompjuterskog vida.

CNN primenjuje principe linearne algebre, poput množenja matrica, kako bi otkrio obrasce na slici. S obzirom na to da ovi procesi uključuju kompleksne proračune, za obuku modela neophodne su grafičke procesorske jedinice (GPU).

Pojednostavljeno, CNN koristi algoritme dubokog učenja kako bi obradio ulazne podatke, poput slika, i dodelio im važnost putem predrasuda i težina koje se mogu prilagoditi različitim aspektima slike. Na ovaj način, CNN je sposoban da razlikuje ili klasifikuje slike.

CNN: Kratka istorija

S obzirom na to da je konvoluciona neuronska mreža vrsta veštačke neuronske mreže, važno je osvrnuti se na same neuronske mreže.

U računarstvu, neuronska mreža je deo mašinskog učenja (MU) koji koristi algoritme dubokog učenja. Ona je analogna obrascima povezivanja koji se mogu naći kod neurona u ljudskom mozgu. Veštačke neuronske mreže takođe su inspirisane načinom na koji je organizovan vizuelni korteks.

Različite vrste neuronskih mreža ili veštačkih neuronskih mreža (ANN) koriste se za različite svrhe. Jedna od njih je CNN, koja se primenjuje za detekciju i klasifikaciju slika, kao i za mnoge druge svrhe. Uveo ju je postdoktorski istraživač Jan LeKun 1980-ih.

Rana verzija CNN-a – LeNet, nazvana po LeKunu, bila je sposobna da prepoznaje rukom pisane cifre. Zatim je korišćena u bankarskim i poštanskim uslugama za čitanje cifara na čekovima i poštanskih brojeva na kovertama.

Međutim, ova rana verzija nije bila skalabilna; stoga, CNN-ovi nisu bili široko primenjivani u veštačkoj inteligenciji i kompjuterskom vidu. Takođe, zahtevali su značajne računarske resurse i podatke da bi efikasno funkcionisali za veće slike.

Kasnije, 2012. godine, AleksNet je ponovo uveo duboko učenje korišćenjem neuronskih mreža koje se sastoje od više slojeva. U to vreme, tehnologija je napredovala, a veliki skupovi podataka i moćni računarski resursi su postali dostupni, što je omogućilo stvaranje kompleksnih CNN-ova sposobnih za efikasno obavljanje zadataka kompjuterskog vida.

Slojevi u CNN-u

Razmotrimo različite slojeve u CNN-u. Povećanjem broja slojeva u CNN-u povećava se njegova kompleksnost i omogućava mu da otkrije više aspekata ili područja slike. Krećući od jednostavnih obeležja, postaje sposoban da detektuje složene karakteristike poput oblika objekta i većih elemenata, sve dok konačno ne prepozna celu sliku.

Konvolucioni sloj

Prvi sloj CNN-a je konvolucioni sloj. To je glavni gradivni blok CNN-a, gde se odvija većina proračuna. Zahteva nekoliko ključnih komponenti, kao što su ulazni podaci, mapa karakteristika i filter.

CNN može imati i dodatne konvolucione slojeve. Ovo daje CNN-u hijerarhijsku strukturu, jer naredni slojevi mogu vizualizovati piksele unutar prijemčivih polja prethodnih slojeva. Konvolucioni slojevi transformišu datu sliku u numeričke vrednosti, omogućavajući mreži da razume i izvuče vredne obrasce.

Slojevi spajanja

Slojevi spajanja se koriste za smanjenje dimenzija i nazivaju se smanjenjem uzorkovanja. Smanjuju parametre koji se koriste u ulazu. Operacija spajanja može pomerati filter preko celog ulaza, slično konvolucionom sloju, ali nema težine. Ovde filter primenjuje zajedničku funkciju na numeričke vrednosti u prijemčivom polju kako bi popunio niz rezultata.

Postoje dva tipa spajanja:

  • Prosečno spajanje: Izračunava se prosečna vrednost u prijemnom polju preko kojeg filter prelazi preko ulaza da bi je preneo u izlazni niz.
  • Maksimalno spajanje: Bira maksimalnu vrednost piksela i šalje je u izlazni niz dok filter prelazi preko ulaza. Maksimalno spajanje se češće koristi od prosečnog.

Iako se značajni podaci gube tokom spajanja, ono i dalje nudi brojne prednosti CNN-u. Pomaže u smanjenju rizika i kompleksnosti preterivanja, istovremeno poboljšavajući efikasnost. Takođe, poboljšava stabilnost CNN-a.

Potpuno povezan (FC) sloj

Kao što ime sugeriše, svi čvorovi u izlaznom sloju su direktno povezani sa čvorom prethodnog sloja u potpuno povezanom sloju. On klasifikuje sliku na osnovu karakteristika koje su izvučene kroz prethodne slojeve, zajedno sa njihovim filterima.

Pored toga, FC slojevi generalno koriste softmax funkciju aktivacije kako bi pravilno klasifikovali ulaze, umesto ReLU funkcija (kao što je slučaj sa slojevima spajanja i konvolucije). Ovo pomaže da se proizvede verovatnoća od 0 ili 1.

Kako funkcionišu CNN?

Konvoluciona neuronska mreža sastoji se od brojnih slojeva, čak i stotina njih. Ovi slojevi uče da identifikuju različite karakteristike date slike.

Iako su CNN neuronske mreže, njihova arhitektura se razlikuje od obične ANN.

ANN prolazi kroz mnoge skrivene slojeve da bi transformisala ulaz, gde je svaki sloj kreiran skupom veštačkih neurona i potpuno je povezan sa svakim neuronom u istom sloju. Na kraju, postoji potpuno povezan sloj ili izlazni sloj koji prikazuje rezultat.

S druge strane, CNN organizuje slojeve u tri dimenzije – širina, dubina i visina. Ovde se sloj iz neurona povezuje samo sa neuronima u malom regionu, umesto sa svakim od njih u sledećem sloju. Konačni rezultat se predstavlja jednim vektorom sa ocenom verovatnoće i ima samo dimenziju dubine.

Sada se možete pitati šta je „konvolucija“ u CNN-u.

Pa, konvolucija se odnosi na matematičku operaciju spajanja dva skupa podataka. U CNN-u, koncept konvolucije se primenjuje na ulazne podatke kako bi se dobila mapa obeležja filtriranjem informacija.

Ovo nas dovodi do nekih važnih koncepata i terminologija koji se koriste u CNN-u.

  • Filter: Takođe poznat kao detektor karakteristika ili kernel, filter može imati određenu dimenziju, kao što je 3×3. Prelazi preko ulazne slike kako bi izvršio množenje matrica za svaki element i primenio konvoluciju. Primena filtera na svaku sliku za obuku u različitim rezolucijama, zajedno sa izlazom konvoluirane slike, služiće kao ulaz za sledeći sloj.
  • Padding: Koristi se za proširenje ulazne matrice do granica umetanjem lažnih piksela. Ovo se radi da bi se izbeglo smanjivanje veličine matrice nakon konvolucije. Na primer, 9×9 matrica se može pretvoriti u 3×3 matricu nakon filtriranja.
  • Korak: Ako želite da dobijete izlaz manji od vašeg ulaza, možete koristiti korak. On omogućava preskakanje određenih oblasti dok filter klizi preko slike. Preskakanjem dva ili tri piksela možete proizvesti efikasniju mrežu smanjenjem prostorne rezolucije.
  • Težine i predrasude: CNN-ovi imaju težine i predrasude u svojim neuronima. Model može naučiti ove vrednosti tokom treninga, a vrednosti ostaju iste tokom datog sloja za sve neurone. Ovo implicira da svaki skriveni neuron otkriva iste karakteristike u različitim oblastima slike. Kao rezultat, mreža postaje tolerantnija na prevođenje objekata unutar date slike.
  • ReLU: Skraćenica od Rectified Linear Unit (ReLU) i koristi se za efikasniju i bržu obuku. Preslikava negativne vrednosti na 0 i zadržava pozitivne. Naziva se i aktivacija, jer mreža prenosi samo aktivirane karakteristike slike u sledeći sloj.
  • Prijemčivo polje: U neuronskoj mreži, svaki neuron prima ulaz sa različitih lokacija iz prethodnog sloja. U konvolucionim slojevima, svaki neuron prima ulaz samo iz ograničene oblasti prethodnog sloja, koja se naziva prijemčivo polje neurona. U slučaju FC sloja, ceo prethodni sloj je prijemčivo polje.

U realnim računarskim zadacima, konvolucija se obično vrši na 3D slici, za koju je potreban 3D filter.

Da se vratimo na CNN, on se sastoji od različitih delova ili slojeva čvorova. Svaki sloj čvora ima prag i težinu i povezan je sa drugim. Nakon što se pređe granična vrednost, podaci se šalju na sledeći sloj u ovoj mreži.

Ovi slojevi mogu izvršavati operacije promene podataka kako bi naučili relevantne karakteristike. Takođe, ove operacije se ponavljaju u stotinama različitih slojeva koji nastavljaju da uče i otkrivaju druge karakteristike slike.

Delovi CNN-a su:

  • Ulazni sloj: Ovde se uzima ulaz, poput slike. To će biti 3D objekat sa definisanom visinom, širinom i dubinom.
  • Jedan ili više skrivenih slojeva ili faza izdvajanja obeležja: Ovi slojevi mogu biti konvolucioni sloj, sloj spajanja i potpuno povezan sloj.
  • Izlazni sloj: Ovde se prikazuje rezultat.

Prolazak slike kroz sloj konvolucije transformiše je u mapu obeležja ili aktivacionu mapu. Nakon konvolucije ulaza, slojevi konvoluiraju sliku i prosleđuju rezultat sledećem sloju.

CNN će izvršiti brojne konvolucije i tehnike spajanja kako bi otkrio karakteristike tokom faze izdvajanja obeležja. Na primer, ako unesete sliku mačke, CNN će prepoznati njene četiri noge, boju, dva oka itd.

Zatim, potpuno povezani slojevi u CNN-u će delovati kao klasifikator izdvojenih karakteristika. Na osnovu onoga što je algoritam dubokog učenja predvideo o slici, slojevi će dati rezultat.

Prednosti CNN-a

Veća preciznost

CNN-ovi nude veću preciznost od običnih neuronskih mreža koje ne koriste konvoluciju. CNN-ovi su korisni, posebno kada zadatak uključuje puno podataka, prepoznavanje video zapisa i slika, itd. Daju vrlo precizne rezultate i predviđanja; stoga se njihova upotreba sve više povećava u različitim sektorima.

Računarska efikasnost

CNN nude viši nivo računarske efikasnosti od drugih običnih neuronskih mreža. Ovo je zbog upotrebe procesa konvolucije. Takođe koriste smanjenje dimenzija i deljenje parametara kako bi modeli bili brži i lakši za primenu. Ove tehnike se takođe mogu optimizovati za rad na različitim uređajima, bilo da je to pametni telefon ili laptop.

Izdvajanje svojstava

CNN može lako naučiti karakteristike slike bez potrebe za manuelnim inženjeringom. Možete koristiti unapred obučene CNN-ove i manipulisati težinama jednostavnim dostavljanjem podataka kada radite na novom zadatku, a CNN će se bez problema prilagoditi.

Primene CNN-a

CNN-ovi se koriste u različitim industrijama za mnoge slučajeve upotrebe. Neke od realnih primena CNN-a uključuju:

Klasifikacija slika

CNN-ovi se široko koriste u klasifikaciji slika. Oni mogu prepoznati vredne karakteristike i identifikovati objekte na datoj slici. Stoga se koristi u sektorima kao što je zdravstvo, posebno MRI. Pored toga, ova tehnologija se koristi za prepoznavanje rukom pisanih cifara, što je među najranijim primenama CNN-a u kompjuterskom vidu.

Detekcija objekata

CNN može detektovati objekte na slikama u realnom vremenu i takođe ih označiti i klasifikovati. Zbog toga se ova tehnika široko koristi u automatizovanim vozilima. Takođe, omogućava pametnim kućama i pešacima da prepoznaju lice vlasnika vozila. Koristi se i u sistemima za nadzor sa veštačkom inteligencijom za detekciju i označavanje objekata.

Audiovizuelno podudaranje

Pomoć CNN-a u audiovizuelnom podudaranju pomaže u poboljšanju platformi za strimovanje video zapisa kao što su Netflix, YouTube, itd. Takođe, pomaže u ispunjavanju zahteva korisnika, kao što su „ljubavne pesme Eltona Džona“.

Prepoznavanje govora

Pored slika, CNN-ovi su korisni i u obradi prirodnog jezika (NLP) i prepoznavanju govora. Primer iz stvarnog sveta bi bio Google koji koristi CNN u svom sistemu za prepoznavanje govora.

Rekonstrukcija objekta

CNN se mogu koristiti u 3D modeliranju realnog objekta u digitalnom okruženju. Takođe, modeli CNN-a mogu kreirati 3D model lica koristeći sliku. Pored toga, CNN je koristan u izgradnji digitalnih blizanaca u biotehnologiji, proizvodnji, biotehnologiji i arhitekturi.

Upotreba CNN-a u različitim sektorima uključuje:

  • Zdravstvo: Kompjuterski vid se može koristiti u radiologiji da pomogne lekarima da sa većom efikasnošću otkriju kancerogene tumore kod osobe.
  • Poljoprivreda: Mreže mogu koristiti slike sa veštačkih satelita kao što je LSAT i koristiti ove podatke za klasifikaciju plodnog zemljišta. Ovo takođe pomaže u predviđanju nivoa plodnosti zemljišta i razvoju efikasne strategije za maksimiziranje prinosa.
  • Marketing: Aplikacije društvenih medija mogu da predlože osobu na slici objavljenoj na nečijem profilu. Ovo vam pomaže da označite ljude u svojim foto albumima.
  • Maloprodaja: Platforme za e-trgovinu mogu da koriste vizuelnu pretragu da pomognu brendovima da preporuče relevantne artikle koje ciljni kupci žele da kupe.
  • Automobilska industrija: CNN se koristi u automobilima za poboljšanje bezbednosti putnika i vozača. To radi uz pomoć funkcija kao što su detekcija trake, detekcija objekata, klasifikacija slika, itd. Ovo takođe pomaže svetu automobila koji se sami voze da se dalje razvija.

Resursi za učenje CNN-a

Coursera:

Coursera nudi kurs o CNN-u koji možete razmotriti. Ovaj kurs će vas naučiti kako je kompjuterski vid evoluirao tokom godina i nekim primenama CNN-a u savremenom svetu.

Amazon:

Možete pročitati ove knjige i predavanja da biste saznali više o CNN-u:

  • Neuralne mreže i duboko učenje: Pokriva modele, algoritme i teoriju dubokog učenja i neuronskih mreža.
  • Vodič za konvolucione neuronske mreže za kompjuterski vid: Ova knjiga će vas naučiti o primeni CNN-a i njihovim konceptima.
  • Praktične konvolucione neuronske mreže sa TensorFlow-om: Uz pomoć ove knjige možete rešiti različite probleme u kompjuterskom vidu koristeći Python i TensorFlow.
  • Napredno primenjeno duboko učenje: Ova knjiga će vam pomoći da razumete CNN, duboko učenje i njihove napredne primene, uključujući detekciju objekata.
  • Konvolucione neuronske mreže i rekurentne neuronske mreže: Ova knjiga će vas naučiti o CNN-ovima i RNN-ovima i kako da izgradite ove mreže.

Zaključak

Konvolucione neuronske mreže su jedno od novih područja u veštačkoj inteligenciji, mašinskom učenju i dubokom učenju. Imaju različite primene u današnjem svetu u skoro svakom sektoru. Imajući u vidu njihovu sve veću upotrebu, očekuje se da će se više proširiti i da će biti korisnije u rešavanju problema u stvarnom svetu.