Fúzy, labky a chvost: ako neurónová sieť rozpoznáva mačky a iné predmety. Fúzy, labky a chvost: ako neurónová sieť rozpoznáva mačky a iné objekty Neurónová sieť kreslí mačky bez registrácie

Fúzy, labky a chvost: ako neurónová sieť rozpoznáva mačky a iné predmety. Fúzy, labky a chvost: ako neurónová sieť rozpoznáva mačky a iné objekty Neurónová sieť kreslí mačky bez registrácie

13.10.2023

Nedávno vývojár Christopher Hesse ukázal svetu svoje duchovné dieťa - projekt. Pomocou neurónovej siete sa nakreslené mačky menia na „skutočné“. Myšlienka je založená na systéme 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 pripomínala skutočné zviera.

Používateľom internetu sa páčila jednoduchá zábava. Svojich nových miláčikov začali hromadne zverejňovať na Twitteri. V mnohých prípadoch vyzeral „obraz“ vytvorený neurónovou sieťou veľmi realisticky, ako keby sme sa pozerali na fotografiu skutočného živého tvora. Niektorí používatelia sa pokúšali urobiť mačky roztomilými (niekedy to dokonca fungovalo), no v mnohých prípadoch sa zrodili skutočné príšery.

Všimnite si, že systém rozpoznávania očí nefunguje vždy správne, takže na niektorých obrázkoch zvieratá nemajú oči vôbec, zatiaľ čo na iných sa zrenička môže nachádzať 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 žiadna nie je, začne sa „pokaziť“, karikatúry prídu na pomoc. Zapnutím karikatúry pre dieťa môžete rozptýliť jeho pozornosť najmenej na pol hodiny alebo dokonca na dve alebo tri.


Umelecká forma, akou je animácia, existuje už pomerne dlho. Počas tejto doby sa kvalita zlepšila, čo je dobrá správa. Deti akejkoľvek generácie absolútne milujú karikatúry; každý, ako dieťa, miloval karikatúry. Mnohí dospelí naraz museli čakať v televízii a museli sledovať, čo sa premietalo. Niektorí ľudia mali naraz šťastie, ak ich rodičia kupovali kazety alebo disky. A nová generácia už môže sledovať, čo chce, bez toho, aby míňala peniaze z peňaženky svojich rodičov, pretože takmer každý dom už má počítač a internet, pomocou ktorých sa dá otvoriť obrovská kartotéka karikatúr pre každý vkus a farbu. .


Pre najmenších sú sovietske klasiky, ktoré sú známe svojou jednoduchosťou, láskavosťou a príjemnými obrázkami, ako stvorené. Napríklad „Krokodíl Gena“, „Prostokvashino“, „No, počkaj chvíľu!“, „Hudobníci Brém“, „Lietajúca loď“, „Medvedík Pú“, „Baby a 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šími obrázkami, ale aj obsahom.


Pre deti, ktoré už končia materskú školu alebo študujú na základnej škole, sú vhodné zábavné kreslené rozprávky, kde hrdinovia zachraňujú niekoho alebo dokonca celý svet. Patria sem zahraničné karikatúry o superhrdinoch z komiksov, o čarodejniciach či 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 sú deti uvoľneným spôsobom 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 môžu byť bezpečne umiestnené na rovnakej poličke ako rodinné filmy.


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


Nezabudnite na dospelých. Áno, kreslia aj pre dospelých, len sú v niečom podobní tínedžerom, ale sú drzejší, môžu tam byť nadávky, intímne podtóny a dotýkajú sa aj problémy dospelých (rodinný život, práca, pôžičky, kríza stredného veku atď.).


Karikatúry sú umeleckou formou, v ktorej sú ruky autora úplne voľné, pretože môžete zobraziť absolútne čokoľvek a zároveň pridať očarujúci príbeh. Pozývame vás, aby ste si ich pozreli práve teraz a užili si skvelú zábavu.

Program nefunguje vždy správne. Konečným výsledkom sú príšery so štyrmi očami, bez uší, natiahnuté v tvare hviezdy a rozložené po plátne. Môžete vytvoriť monštrum sami tým, že nakreslíte niečo absurdné v prvom okne.


Program sa ľahko používa. Vľavo je okno kreslenia. Pod ním sú tri tlačidlá: zrušiť, vymazať a náhodný vzor. Medzi štvorcami je tlačidlo „proces“. Premení kresbu na mačku.

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


Oči sú strašidelné.

Nefunguje dokonale. Je to obzvlášť zlé, keď sa liečia oči. 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 stránke si môžete postaviť dom z kociek, nalepiť topánky a vymodelovať tašku na ďalšiu sezónu.

Módna kabelka na leto. Exkluzívny dizajn!

Rozpoznávanie obrazu je klasickým príkladom využitia neurónových sietí. Pripomeňme si, ako prebieha proces sieťového tréningu, kde vznikajú ťažkosti a prečo používať biológiu vo vývoji. Detaily pod strihom.

Dmitrij Soshnikov, technický evanjelista Microsoftu, č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. pomôž nám v príbehu.

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 je napríklad našou úlohou odhaliť na obrázku viacfarebné mačky, dôležitá bude nie farba, ale tvar objektu. Keď sa zbavíme farieb a prejdeme na čiernobiely obraz, sieť sa bude učiť oveľa rýchlejšie a úspešnejšie: bude musieť rozpoznávať 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 na obrázku, pretože tento farebný kanál je napájaný na iné neuróny.

Čo 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 zisťujú a skúmajú ako jednotlivé vlastnosti. Ako vstup môžete použiť napríklad tradičné strojové učenie alebo neurónové siete. Ak má neurónová sieť ďalšie informácie o štruktúre objektov, s ktorými pracuje, zvyšuje sa kvalita jej práce.

V oblasti počítačové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, ale zvýrazňuje charakteristické črty, jedinečné črty, podľa ktorých mozog identifikuje predmet. V súlade s tým je možné pre rýchle a správne rozpoznanie objektov určiť tie najunikátnejšie vlastnosti. Napríklad u mačiek to môžu byť 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ôznych častiach obrazu, „rozdeľujeme“ váhy zodpovedné za rozpoznávanie medzi rôzne fragmenty 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:

  • Zdieľanie hmotnosti používame 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


Konvolúcia sa používa na spracovanie obrazu, rovnako ako pri spracovaní signálu.

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

  • kernel - konvolučné jadro, matica hmotnosti
  • podložka - koľko pixelov by sa malo 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
V : def show_convolution(kernel, krok = 1): """Zobrazí efekt konvolúcie s daným jadrom.""" fig = pylab.figure(figsize = (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, step) 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="najbližšie") ax.set_xticks() ax.set_yticks() pylab.show()
V : blur_kernel = np.array([, , , , ], dtype="float32") blur_kernel /= 273

Filtre

Rozmazať

Filter rozostrenia umožňuje vyhladiť nepravidelnosti a zdôrazniť celkový tvar predmetov.


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á farba označuje prechod z čiernej na bielu, žltá - naopak.


In : vertical_edge_kernel = np.array([, , , ], dtype="float32") vertical_edge_kernel /= 166
In: 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)

Slučkový 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 čísel: každé číslo má svoje charakteristické geometrické znaky (dva kruhy – osmička, lomka cez polovicu obrázka – jednotka atď.), pomocou ktorých môže neurónová sieť určiť, aký objekt to je. Vytvárame filtre, ktoré charakterizujú každú číslicu, prechádzame každým filtrom cez obrázok a znižujeme chybu na minimum.


Ak použijete podobný prístup k hľadaniu mačiek na obrázku, rýchlo sa ukáže, že štvornohé zviera má veľa znakov na trénovanie neurónovej siete a všetky sú iné: chvosty, uši, fúzy, nosy, srsť a sfarbenie. A každá mačka nemusí mať nič spoločné s inou. 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čí aplikovanie 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ýstupmi o. Prvky výstupného obrazu sa vypočítajú takto:

Silový tréning

Algoritmus je nasledovný:
  • 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.
  • Na to je potrebné zredukovať použitie filtra na násobenie jednej matice.
  • Na rozdiel od plne spojenej vrstvy bude na tréning menej závaží a viac príkladov.
  • Trik - im2col

im2col

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

© 2023 skypenguin.ru - Tipy na starostlivosť o domáce zvieratá