stub Kas yra CNN (konvoliuciniai neuroniniai tinklai)? - Vienykitės.AI
Susisiekti su mumis
AI meistriškumo klasė:

AI 101 m

Kas yra CNN (konvoliuciniai neuroniniai tinklai)?

mm
Atnaujinta on

Galbūt susimąstėte, kaip „Facebook“ ar „Instagram“ gali automatiškai atpažinti veidus vaizde arba kaip „Google“ leidžia ieškoti panašių nuotraukų internete tiesiog įkėlus savo nuotrauką. Šios funkcijos yra kompiuterinio matymo pavyzdžiai ir jas maitina konvoliuciniai neuroniniai tinklai (CNN). Tačiau kas tiksliai yra konvoliuciniai neuroniniai tinklai? Giliai pasinerkime į CNN architektūrą ir supraskime, kaip jos veikia.

Kas yra neuroniniai tinklai?

Prieš pradėdami kalbėti apie konvoliucinius neuroninius tinklus, skirkime šiek tiek laiko apibrėžti įprastą neuroninį tinklą. Yra kitą straipsnį apie galimus neuroninius tinklus, todėl čia per daug nesigilinsime į juos. Tačiau norint trumpai juos apibrėžti, tai yra žmogaus smegenų įkvėpti skaičiavimo modeliai. Neuroninis tinklas veikia imdamas duomenis ir manipuliuodamas jais koreguodamas „svorius“, kurie yra prielaidos apie tai, kaip įvesties ypatybės yra susijusios viena su kita ir objekto klase. Treniruojant tinklą, svorių reikšmės koreguojamos ir, tikimasi, jos susilygins su svoriais, kurie tiksliai užfiksuoja ryšius tarp funkcijų.

Taip veikia nukreipiamasis neuroninis tinklas, o CNN susideda iš dviejų pusių: į priekį nukreipto neuroninio tinklo ir konvoliucinių sluoksnių grupės.

Kas yra konvoliucijos neuroniniai tinklai (CNN)?

Kokios yra „susisukimai“, vykstantys konvoliuciniame neuroniniame tinkle? Konvoliucija yra matematinė operacija, kuria sukuriamas svorių rinkinys, iš esmės sukuriantis vaizdo dalių vaizdą. Šis svorių rinkinys vadinamas branduolys arba filtras. Sukurtas filtras yra mažesnis nei visas įvesties vaizdas ir apima tik vaizdo poskyrį. Filtro reikšmės padauginamos iš verčių paveikslėlyje. Tada filtras perkeliamas, kad būtų sukurta nauja vaizdo dalis, ir procesas kartojamas tol, kol bus padengtas visas vaizdas.

Kitas būdas apie tai galvoti – įsivaizduoti plytų sieną, kurioje plytos vaizduoja įvesties vaizdo pikselius. Išilgai sienos, kuri yra filtras, pirmyn ir atgal stumdomas „langas“. Plytelės, kurios matomos per langą, yra pikseliai, kurių vertė padauginta iš filtro verčių. Dėl šios priežasties šis svarmenų su filtru kūrimo būdas dažnai vadinamas „stumdomų langų“ technika.

Per visą įvesties vaizdą perkeliamų filtrų išvestis yra dvimatis masyvas, vaizduojantis visą vaizdą. Šis masyvas vadinamas a „Funkcijų žemėlapis“.

Kodėl konvoliucijos yra būtinos

Koks vis dėlto tikslas sukurti konvoliucijas? Konvoliucijos būtinos, nes neuroninis tinklas turi sugebėti interpretuoti vaizdo pikselius kaip skaitines reikšmes. Konvoliucinių sluoksnių funkcija yra konvertuoti vaizdą į skaitines reikšmes, kurias neuroninis tinklas gali interpretuoti ir tada išgauti atitinkamus modelius. Konvoliucinio tinklo filtrų užduotis yra sukurti dvimatį verčių masyvą, kuris gali būti perduotas į vėlesnius neuroninio tinklo sluoksnius, tuos, kurie išmoks vaizde esančius šablonus.

Filtrai ir kanalai

Nuotrauka: cecebur per Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)

CNN nenaudoja tik vieno filtro, kad išmoktų šablonus iš įvesties vaizdų. Naudojami keli filtrai, nes dėl skirtingų filtrų sukurtų skirtingų matricų gaunamas sudėtingesnis ir turtingesnis įvesties vaizdo vaizdas. Įprasti CNN filtrų skaičiai yra 32, 64, 128 ir 512. Kuo daugiau filtrų, tuo daugiau galimybių CNN išnagrinėti įvesties duomenis ir iš jų mokytis.

CNN analizuoja pikselių reikšmių skirtumus, kad nustatytų objektų ribas. Pilkų atspalvių vaizde CNN žiūrėtų tik į juodos ir baltos spalvos skirtumus nuo šviesos iki tamsos. Kai vaizdai yra spalvoti, CNN atsižvelgia ne tik į tamsą ir šviesą, bet ir į tris skirtingus spalvų kanalus – raudoną, žalią ir mėlyną. Šiuo atveju filtrai turi 3 kanalus, kaip ir pats vaizdas. Filtro turimų kanalų skaičius vadinamas jo gyliu, o kanalų skaičius filtre turi atitikti kanalų skaičių vaizde.

Konvoliucinis neuroninis tinklas (CNN) architektūra

Pažvelkime į visą architektūrą konvoliucinis neuroninis tinklas. Konvoliucinis sluoksnis randamas kiekvieno konvoliucinio tinklo pradžioje, nes reikia paversti vaizdo duomenis į skaitines matricas. Tačiau konvoliuciniai sluoksniai taip pat gali būti po kitų konvoliucinių sluoksnių, o tai reiškia, kad šie sluoksniai gali būti sukrauti vienas ant kito. Kelių konvoliucinių sluoksnių turėjimas reiškia, kad vieno sluoksnio išvestis gali būti toliau vingiuota ir sugrupuota į atitinkamus modelius. Praktiškai tai reiškia, kad vaizdo duomenims einant per konvoliucinius sluoksnius, tinklas pradeda „atpažinti“ sudėtingesnes vaizdo ypatybes.

Ankstyvieji „ConvNet“ sluoksniai yra atsakingi už žemo lygio funkcijų, pvz., taškų, sudarančių paprastas linijas, išskyrimą. Vėlesni ConvNet sluoksniai šias linijas sujungs į formas. Šis procesas, pereinant nuo paviršiaus lygio analizės prie gilaus lygio analizės, tęsiasi tol, kol „ConvNet“ atpažįsta sudėtingas formas, tokias kaip gyvūnai, žmonių veidai ir automobiliai.

Kai duomenys praeina per visus konvoliucinius sluoksnius, jie patenka į tankiai sujungtą CNN dalį. Tankiai sujungti sluoksniai yra tai, kaip atrodo tradicinis nukreipiamasis neuroninis tinklas, mazgų serija, suskirstyta į sluoksnius, kurie yra sujungti vienas su kitu. Duomenys perduodami per šiuos tankiai sujungtus sluoksnius, kurie sužino modelius, kuriuos išgavo konvoliuciniai sluoksniai, ir tai darydamas tinklas gali atpažinti objektus.