Rozpoznávanie obrazu je klasickým príkladom využitia neurónových sietí. Pripomeňme si, ako prebieha proces sieťového učenia, aké ťažkosti vznikajú a prečo by sa biológia mala využívať pri vývoji. Detaily pod strihom.

Dmitrij Soshnikov, technický evanjelizátor spoločnosti Microsoft, člen Ruskej asociácie umelej inteligencie, učiteľ funkčného a logického programovania AI na Moskovskom leteckom inštitúte, Moskovskom inštitúte fyziky a technológie a Vysokej škole ekonomickej, ako aj naše kurzy , nám pomôže s príbehom.

Predstavte si, že máme veľa obrázkov, ktoré je potrebné roztriediť na dve kôpky pomocou neurónovej siete. Ako sa to dá urobiť? Všetko samozrejme závisí od samotných objektov, no vždy môžeme vyzdvihnúť niektoré vlastnosti.

O vstupných údajoch musíme vedieť čo najviac informácií a zohľadniť ich pri manuálnom zadávaní ešte pred trénovaním siete. Ak máme napríklad za úlohu odhaliť na obrázku viacfarebné mačky, dôležitá bude nie farba, ale tvar objektu. Keď sa zbavíme farby tým, že pôjdeme do čierna a biela, sieť sa bude učiť oveľa rýchlejšie a úspešnejšie: bude musieť rozpoznať niekoľkonásobne menej informácií.

Na rozpoznanie ľubovoľných predmetov, ako sú mačky a žaby, je samozrejme dôležitá farba: žaba je zelená, ale mačky nie. Ak opustíme farebné kanály, pre každú paletu sa sieť opäť naučí rozpoznávať objekty v obraze, pretože tento farebný kanál je napájaný na iné neuróny.

Čo ak však chceme zničiť slávny mém o mačkách a chlebe tým, že naučíme neurónovú sieť rozpoznať zviera na akomkoľvek obrázku? Zdalo by sa, že farby a tvar sú približne rovnaké. čo robiť potom?

Filtrovať banky a biologické videnie

Pomocou rôznych filtrov môžete zvýrazniť rôzne časti obrázka, ktoré sa potom zistia a preskúmajú ako samostatné vlastnosti. Napríklad vstup do tradičného strojového učenia alebo neurónových sietí. Ak má neurónová sieť Ďalšie informácie o štruktúre predmetov, s ktorými sa pracuje, zvyšuje sa kvalita práce.

V oblasti strojového videnia boli vyvinuté banky filtrov – sady filtrov na zvýraznenie hlavných vlastností objektov.

Podobná „architektúra“ sa používa v biológii. Vedci sa domnievajú, že ľudské videnie neurčuje celý obraz ako celok, ale zvýrazňuje vlastnosti, jedinečné vlastnosti, podľa ktorých mozog identifikuje predmet. V súlade s tým je pre rýchle a správne rozpoznanie objektu možné určiť tie najunikátnejšie vlastnosti. Mačky môžu mať napríklad fúzy – vejárovité vodorovné čiary na obrázku.

Zdieľanie hmotnosti

Aby sa sieť nemusela samostatne učiť rozpoznávať mačky v rôzne časti obrázky, "zdieľame" váhy zodpovedné za rozpoznávanie medzi rôznymi fragmentmi vstupných signálov.

Vyžaduje si to špecializovanú sieťovú architektúru:

  • konvolučné siete na prácu s obrázkami
  • rekurentné siete pre prácu s textom / sekvenciami
Neurónové siete, ktoré sa efektívne využívajú pri rozpoznávaní obrázkov, ktoré využívajú špeciálne konvolučné vrstvy (Convolution Layers).

Hlavná myšlienka je takáto:

  • Použitie zdieľania hmotnosti na vytvorenie „okna filtra“ prechádzajúceho cez obrázok
  • Filter aplikovaný na obrázok pomáha zvýrazniť fragmenty, ktoré sú dôležité pre rozpoznanie
  • Zatiaľ čo v tradičnom strojovom videní boli filtre navrhnuté ručne, neurónové siete nám umožňujú navrhnúť optimálne filtre prostredníctvom učenia.
  • Filtrovanie obrazu možno prirodzene kombinovať s výpočtom neurónovej siete


Na spracovanie obrazu sa používa konvolúcia ako pri spracovaní signálu.

Opíšme konvolučnú funkciu s nasledujúcimi parametrami:

  • kernel - konvolučné jadro, matica hmotnosti
  • podložka - koľko pixelov pridať do obrázka okolo okrajov
  • krok - frekvencia aplikácie filtra. Napríklad pre krok = 2 vezmeme každý druhý pixel obrázka vertikálne a horizontálne, čím znížime rozlíšenie na polovicu
In : def convolve(image, kernel, pad = 0, step = 1): rows, columns = image.shape output_rows = rows // krok output_columns = columns // krokový výsledok = np.zeros((output_rows, output_columns)) if podložka > 0: image = np.pad(obrázok, podložka, "konštantná") kernel_size = kernel.size kernel_length = kernel.shape half_kernel = kernel_length // 2 kernel_flat = kernel.reshape(kernel_size, 1) offset = builtins.abs( half_kernel-pad) pre r v rozsahu (posun, riadky - posun, krok): pre c v rozsahu (posun, stĺpce - posun, krok): rr = r - polovičné_jadro + podložka cc = c - polovičné_kernel + podložka patch = výsledok obrázka = np.dot(patch.reshape(1, kernel_size), kernel_flat) návratový výsledok
In : def show_convolution(kernel, krok = 1): """Zobrazí efekt konvolúcie s daným jadrom.""" fig = pylab.figure(veľkosť obrázku = (9,9)) gs = gridspec.GridSpec(3, 3, height_ratios=) start=1 for i in range(3): image = images_train conv = convolve(image, kernel, kernel.shape//2, krok) ax = fig.add_subplot(gs[i]) pylab.imshow(image, interpolation="nearest") ax.set_xticks() ax.set_yticks( ) ax = fig.add_subplot(gs) pylab.imshow(kernel, cmap="grey", interpolation="najbližšie") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(conv , interpolation="nearest") ax.set_xticks() ax.set_yticks() pylab.show()
V : blur_kernel = np.array([, , , , ], dtype="float32") blur_kernel /= 273

Filtre

Rozmazať

Filter rozostrenia vám umožní vyhladiť nerovnosti a zdôrazniť celkový tvar objektov.


In: show_convolution(blur_kernel)

Vertikálne okraje

Môžete prísť s filtrom, ktorý zvýrazní vertikálne prechody jasu na obrázku. Tu modrá označuje prechod z čiernej na bielu, žltá - naopak.


In : vertical_edge_kernel = np.array([, , , , ], dtype="float32") vertical_edge_kernel /= 166
V: show_convolution(vertical_edge_kernel)

Horizontálne okraje

Podobný filter možno vytvoriť na zvýraznenie vodorovných ťahov na obrázku.


In : horizontal_bar_kernel = np.array([, [-2, -8, -13, -8, -2], , [-2, -8, -13, -8, -2], ], dtype=" float32") horizontal_bar_kernel /= 132
In: show_convolution(horizontal_bar_kernel)

obrysový filter

Môžete tiež vytvoriť filter 9x9, ktorý zvýrazní obrysy obrázka.


V: blob_kernel = np.array([, , , , , , , , ], dtype="float32") blob_kernel /= np.sum(np.abs(blob_kernel))
V: show_convolution(blob_kernel)
Takto funguje klasický príklad rozpoznávania číslic: každá číslica má svoje charakteristické geometrické znaky (dva kruhy – osmička, lomka v polovici obrázka – jedna atď.), podľa ktorých neurónová sieť môže určiť, aký druh objektu. Vytvárame filtre, ktoré charakterizujú každú číslicu, prechádzame každým z filtrov cez obrázok a znižujeme chybu na minimum.


Ak použijeme podobný prístup k hľadaniu mačiek na obrázku, rýchlo sa ukáže, že štvornožec má veľa znakov na trénovanie neurónovej siete a všetky sú iné: chvosty, uši, fúzy, nosy, srsť a farba. . A každá mačka nemôže mať nič spoločné s druhou. Neurónová sieť s malým množstvom údajov o štruktúre objektu nebude schopná pochopiť, že jedna mačka leží a druhá stojí na zadných nohách.

Základná myšlienka konvolučnej siete

  • V neurónovej sieti vytvoríme konvolučnú vrstvu, ktorá zabezpečí aplikáciu filtra na obrázok.
  • Váhy filtrov trénujeme pomocou algoritmu backpropagation
Napríklad máme obrázok i, 2 konvolučné filtre w s vývodmi o. Prvky výstupného obrázka sa vypočítajú takto:

Silový tréning

Algoritmus je:
  • Na všetky pixely v obrázku sa použije filter s rovnakou hmotnosťou.
  • V tomto prípade filter „prebehne“ cez celý obrázok.
  • Chceme trénovať tieto váhy (spoločné pre všetky pixely) pomocou algoritmu backpropagation.
  • Aby sme to dosiahli, musíme zredukovať použitie filtra na jediné násobenie matíc.
  • Na rozdiel od plne prepojenej vrstvy bude na tréning menej závaží a viac príkladov.
  • Prefíkanosť - im2col

im2col

Začnime obrázkom x, kde každý pixel zodpovedá písmenu:

Program nefunguje vždy správne. Výstupom sú príšery so štyrmi očami, bez uší, pretiahnuté do tvaru hviezdy a rozložené po plátne. Monštrum si môžete vytvoriť sami nakreslením absurdity v prvom okne.


Používanie programu je jednoduché. Vľavo je okno kreslenia. Pod ním sú tri tlačidlá: zrušiť, vyčistiť a náhodné kreslenie. Medzi štvorcami je tlačidlo „proces“. Premení kresbu na mačku.

Program je založený na samoučiacej sa „neurónovej sieti“. Podľa vývojára stroj spracoval 20 000 fotografií mačiek. Zvýraznil som v nich prvky ako uši, vlna, nos, oči, ústa. Naučil som sa ich rozoznávať a rozlišovať podľa obrysu.


Oči sú strašidelné.

Funguje nedokonale. Je to obzvlášť zlé, keď sú oči spracované. Definícia hraníc obrázka nie je vždy jasná. Z tohto dôvodu sa objavujú ďalšie oči alebo sa vôbec nezobrazujú.

Vychádza to vtipne. Služba sa neobmedzuje len na mačky. Na mieste si môžete postaviť dom z kociek, nalepiť topánky a vymodelovať tašku na ďalšiu sezónu.

Módna taška na leto. Exkluzívny dizajn!

Nedávno vývojár Christopher Hesse odhalil svetu svoje duchovné dieťa - projekt. Pomocou neurónovej siete sa nakreslené mačky menia na „skutočné“. Jadrom myšlienky je systém strojového učenia od spoločnosti Google s názvom TensorFlow. Edges2cats je rozdelený do dvoch "polí". V prvom používateľ nakreslí mačku (alebo niečo podobné) a v druhom sa neurónová sieť snaží, aby kresba vyzerala ako skutočné zviera.

Jednoduchá zábava oslovila používateľov internetu. Svojich nových miláčikov začali hromadne zverejňovať na Twitteri. V niektorých prípadoch „obraz“ vytvorený neurónovou sieťou vyzeral veľmi realisticky, ako keby sme mali fotografiu skutočnej živej bytosti. Niektorí používatelia sa snažili urobiť mačky roztomilými (niekedy sa im to aj podarilo), no v mnohých prípadoch sa zrodili skutočné príšery.

Upozorňujeme, že systém rozpoznávania očí nefunguje vždy správne, takže na niektorých obrázkoch v zásade chýbajú oči zvierat, zatiaľ čo na iných môže byť zrenička tam, kde by mal byť nos.



Čo majú deti najradšej? Samozrejme, karikatúry. Práve v tejto časti sme zhromaždili rôzne zahraničné a domáce karikatúry. Medzi obrovským výberom sa určite nájde taká, ktorú si zamiluje najmä vaše dieťa. Ak máte veľa práce alebo si chcete len oddýchnuť a dieťa žiada o neustálu pozornosť, a ak nie, začne sa „špiniť“, na záchranu prídu karikatúry. Zapnutím karikatúry pre dieťa môžete rozptýliť jeho pozornosť najmenej na pol hodiny alebo dokonca na dve alebo tri.


Tento druh umenia ako animácia je tu už dlho. Počas tejto doby sa kvalita zlepšila, čo sa nemôže len radovať. Karikatúry sú šialene zamilované do detí akejkoľvek generácie, každý, ako dieťa, zbožňoval karikatúry. Mnohí dospelí naraz museli čakať v televízii a museli sledovať, čo sa premietalo. Niekto mal kedysi šťastie, ak jeho rodičia kupovali kazety alebo disky. A nová generácia už môže sledovať, čo chce, a bez utrácania z peňaženky svojich rodičov, pretože takmer každý dom už má počítač a internet, pomocou ktorých sa otvára obrovská kartotéka karikatúr pre každý vkus a farbu.


Pre najmenších sa hodí sovietska klasika, ktorá je povestná svojou jednoduchosťou, láskavosťou a príjemným obrázkom. Napríklad "Krokodíl Gena", "Prostokvashino", "No, počkaj chvíľu!", "The Bremen Town Musicians", "Flying Ship", "Winnie the Pooh", "Kid and Carlson" a mnoho ďalších. Môžete si dokonca s dieťaťom sadnúť a zaspomínať na detstvo. Aj pre malé deti existuje veľa moderných vzdelávacích karikatúr, ktoré sa líšia nielen jasnejším obrazom, ale aj obsahom.


Pre deti, ktoré už končia materskú školu alebo študujú v Základná škola, vhodné sú zábavné karikatúry, kde hrdinovia zachraňujú niekoho alebo dokonca celý svet. Sú to zahraničné karikatúry o superhrdinoch z komiksov, o čarodejniciach alebo vílach, ako aj domáce o hrdinoch.


Tie deti, ktoré sa už pomaly a isto pohybujú smerom k dospievaniu, sa už môžu začať zaujímať o karikatúry, ktoré sú obzvlášť odlišné v zápletke. V takýchto karikatúrach v uvoľnenej forme je dieťa nútené premýšľať o vážnych veciach a zažívať veľa emócií. Sú vhodné na prezeranie celej rodiny, pretože vďaka premyslenému pozemku nebudú o nič menej zaujímavé aj pre dospelých. Takéto karikatúry možno bezpečne umiestniť na rovnakú poličku s rodinnými filmami.


Tínedžeri, napriek tomu, že sa považujú za dospelých, stále radi pozerajú karikatúry. Pre tínedžerov sú už odvážnejší a nie sú takí neškodní ako deti. Dominuje im zábava, žarty pre dospelých, tínedžerské problémy. Ide najmä o zahraničné sériové kreslené filmy, ako napríklad The Simsons, Family Guy, Futurama atď.


Nezabudnite na dospelých. Áno, kreslia aj pre dospelých, len sú v niečom podobní tínedžerkám, ale sú drzejší, môžu sa v nich vyskytovať urážlivé slová, intímne podtóny, zasiahnuté sú aj problémy dospelých (rodinný život, práca, pôžičky, kríza stredného veku atď.). ).


Kreslené sú formou umenia, pri ktorej má autor úplne rozviazané ruky, pretože môžete zobraziť úplne čokoľvek a zároveň pridať očarujúci príbeh. Pozývame vás, aby ste si ich pozreli práve teraz a mali veľkú radosť.