Programma ne vienmēr darbojas pareizi. Iznākums ir monstri ar četrām acīm, bez ausīm, iegareni zvaigznes formā un izkliedēti pa audeklu. Jūs varat izveidot briesmoni pats, zīmējot absurdu pirmajā logā.


Programmas lietošana ir vienkārša. Kreisajā pusē ir zīmēšanas logs. Zem tā ir trīs pogas: atcelt, notīrīt un nejauši zīmēt. Starp kvadrātiem ir poga "Apstrādāt". Viņa pārvērš zīmējumu par kaķi.

Programmas pamatā ir pašmācības "neironu tīkls". Pēc izstrādātāja teiktā, iekārta ir apstrādājusi 20 000 kaķu fotoattēlu. Es tajos izcēlu elementus, piemēram, ausis, vilnu, degunu, acis, mute. Es iemācījos tos atpazīt un atšķirt pēc to kontūrām.


Acis ir biedējošas.

Darbojas nepilnīgi. Tas ir īpaši slikti, ja acis tiek apstrādātas. Attēla robežu definīcija ne vienmēr ir skaidra. Sakarā ar to parādās papildu acis vai tās vispār neparādās.

Tas izrādās smieklīgi. Pakalpojums neattiecas tikai uz kaķiem. Vietnē var uzbūvēt māju no blokiem, līmēt kurpes un modelēt somu nākamajai sezonai.

Modes soma vasarai. Ekskluzīvs dizains!

Kas bērniem patīk visvairāk? Protams, karikatūras. Tieši šajā sadaļā esam apkopojuši dažādas ārzemju un pašmāju karikatūras. Starp milzīgo izvēli noteikti atradīsiet tādu, kas īpaši iemīlēs jūsu bērnu. Ja jums ir daudz darāmā vai vienkārši vēlaties atpūsties, un bērns prasa pastāvīgu uzmanību, un, ja viņš to nedara, viņš sāk "netīries", tad karikatūras nāks palīgā. Ieslēdzot bērnam multfilmu, jūs varat novērst viņa uzmanību uz vismaz pusstundu vai pat divas vai trīs.


Šis mākslas veids kā animācija pastāv jau ilgu laiku. Šajā laikā kvalitāte ir uzlabojusies, kas nevar vien priecāties. Karikatūras ir neprātīgi iemīlētas jebkuras paaudzes bērniem, visi bērnībā dievināja multenes. Daudziem pieaugušajiem vienā reizē bija jāgaida televizorā un jāskatās, ko rāda. Kādam savulaik paveicās, ja vecāki nopirka kasetes vai diskus. Un jaunā paaudze jau var skatīties, ko vēlas un netērējot no vecāku maciņa, jo gandrīz katrā mājā ir dators un internets, ar kura palīdzību tiek atvērta milzīga multfilmu kartotēka katrai gaumei un krāsai.


Mazajiem lieliski piemērota padomju klasika, kas ir slavena ar savu vienkāršību, laipnību un patīkamo attēlu. Piemēram, "Krokodils Gena", "Prostokvašino", "Nu, pagaidi!", "Brēmenes muzikanti", "Lidojošais kuģis", "Vinnijs Pūks", "Kids un Karlsons" un daudzi citi. Jūs pat varat apsēsties ar savu bērnu un atcerēties bērnību. Arī maziem bērniem ir daudz modernu izglītojošu multfilmu, kas atšķiras ne tikai ar spilgtāku attēlu, bet arī pēc satura.


Bērniem, kuri jau beidz bērnudārzu vai mācās pamatskolā, piemērotas izklaidējošas multfilmas, kurās varoņi izglābj kādu vai pat visu pasauli. Tās ir ārzemju multfilmas par supervaroņiem no komiksiem, par burvēm vai fejām, kā arī pašmāju karikatūras par varoņiem.


Tie bērni, kuri jau lēnām un noteikti virzās uz pusaudža vecumu, jau var sākt interesēties par multfilmām, kuru sižets ir īpaši atšķirīgs. Šādās multfilmās nepiespiestā formā bērns ir spiests domāt par nopietnām lietām un piedzīvot daudz emociju. Tie ir piemēroti apskatei visai ģimenei, jo pārdomātā sižeta dēļ būs ne mazāk interesanti arī pieaugušajiem. Šādas multfilmas var droši likt vienā plauktā ar ģimenes filmām.


Pusaudžiem, neskatoties uz to, ka viņi sevi uzskata par pieaugušajiem, joprojām patīk skatīties multfilmas. Pusaudžiem viņi jau ir drosmīgāki un nav tik nekaitīgi kā bērni. Tajos dominē izklaide, pieaugušo joki, pusaudžu problēmas. Tās galvenokārt ir ārzemju seriāla multfilmas, piemēram, Simsoni, Family Guy, Futurama u.c.


Neaizmirstiet par pieaugušajiem. Jā, viņi zīmē arī pieaugušajiem, tikai tie ir nedaudz līdzīgi pusaudžiem, taču tie ir rupjāki, var būt aizskaroši vārdi, intīmas pieskaņas un tiek ietekmētas pieaugušo problēmas (ģimenes dzīve, darbs, aizdevumi, pusmūža krīze utt. ).


Karikatūras ir mākslas veids, kurā autora rokas ir pilnībā atraisītas, jo var attēlot pilnīgi jebko un tajā pašā laikā pievienot burvīgu stāstu. Aicinām tās noskatīties jau tagad un gūt lielu prieku.

Attēlu atpazīšana ir klasisks neironu tīklu izmantošanas piemērs. Atcerēsimies, kā notiek tīkla mācību process, kādas grūtības rodas un kāpēc izstrādē jāizmanto bioloģija. Sīkāka informācija zem griezuma.

Dmitrijs Sošņikovs, Microsoft tehniskais evaņģēlists, Krievijas Mākslīgā intelekta asociācijas biedrs, funkcionālās un loģiskās mākslīgā intelekta programmēšanas skolotājs Maskavas Aviācijas institūtā, Maskavas Fizikas un tehnoloģiju institūtā un Ekonomikas augstskolā, kā arī mūsu kursos , palīdzēs mums ar stāstu.

Iedomājieties, ka mums ir daudz attēlu, kas jāsašķiro divās kaudzēs, izmantojot neironu tīklu. Kā to var izdarīt? Protams, viss ir atkarīgs no pašiem objektiem, taču mēs vienmēr varam izcelt dažas iezīmes.

Mums ir jāzina pēc iespējas vairāk informācijas par ievades datiem un jāņem tas vērā manuālajā ievadē, pat pirms tīkla apmācības. Piemēram, ja mums ir uzdevums attēlā noteikt daudzkrāsainus kaķus, svarīga būs nevis krāsa, bet gan objekta forma. Kad mēs atbrīvosimies no krāsām, pārejot uz melnbaltu attēlu, tīkls iemācīsies daudz ātrāk un veiksmīgāk: tam būs jāatpazīst vairākas reizes mazāk informācijas.

Patvaļīgu objektu, piemēram, kaķu un varžu, atpazīšanai acīmredzami svarīga ir krāsa: varde ir zaļa, bet kaķi nav. Ja atstājam krāsu kanālus, katrai paletei tīkls atkal iemācās atpazīt objektus attēlā, jo šis krāsu kanāls tiek padots citiem neironiem.

Bet ko darīt, ja mēs vēlamies iznīcināt slaveno mēmu par kaķiem un maizi, iemācot neironu tīklam noteikt dzīvnieku jebkurā attēlā? Šķiet, ka krāsas un forma ir aptuveni vienādas. Ko tad darīt?

Filtru bankas un bioloģiskā redze

Ar dažādu filtru palīdzību var atlasīt dažādus attēla fragmentus, kas pēc tam tiek atklāti un pārbaudīti kā atsevišķi rekvizīti. Piemēram, ievade tradicionālajā mašīnmācībā vai neironu tīklos. Ja neironu tīklam ir papildu informācija par objektu struktūru, ar kuriem tas darbojas, tad darba kvalitāte palielinās.

Mašīnredzes jomā ir izstrādātas filtru bankas - filtru komplekti objektu galveno pazīmju izcelšanai.

Līdzīga "arhitektūra" tiek izmantota bioloģijā. Zinātnieki uzskata, ka cilvēka redze nenosaka visu attēlu kopumā, bet gan izceļ raksturīgās iezīmes, unikālas iezīmes, pēc kurām smadzenes identificē objektu. Attiecīgi ātrai un pareizai objekta atpazīšanai ir iespējams noteikt unikālākās pazīmes. Piemēram, kaķiem var būt ūsas – vēdekļveida horizontālas līnijas attēlā.

Svara dalīšana

Lai tīklam nebūtu atsevišķi jāmācās atpazīt kaķus dažādās attēla daļās, mēs “dalām” atpazīšanas svarus starp dažādiem ieejas signālu fragmentiem.

Tam nepieciešama specializēta tīkla arhitektūra:

  • konvolūcijas tīkli darbam ar attēliem
  • atkārtoti tīkli darbam ar tekstu/sekvencēm
Neironu tīkli, kurus efektīvi izmanto attēlu atpazīšanā, kuri izmanto īpašus konvolucionālos slāņus (Convolution Layers).

Galvenā ideja ir šāda:

  • Svara dalīšanas izmantošana, lai izveidotu "filtra logu", kas darbojas virs attēla
  • Attēlam pielietotais filtrs palīdz izcelt atpazīšanai svarīgos fragmentus
  • Tā kā tradicionālajā mašīnredzē filtri tika izstrādāti ar rokām, neironu tīkli ļauj mums izveidot optimālus filtrus apmācībā.
  • Attēlu filtrēšanu var dabiski apvienot ar neironu tīkla aprēķinu


Attēlu apstrādei tiek izmantota konvolūcija, tāpat kā signālu apstrādē.

Aprakstīsim konvolūcijas funkciju ar šādiem parametriem:

  • kodols - konvolūcijas kodols, svara matrica
  • pad – cik pikseļu pievienot attēlam ap malām
  • solis - filtra pielietošanas biežums. Piemēram, stride=2 mēs uzņemsim katru otro attēla pikseļu vertikāli un horizontāli, samazinot izšķirtspēju uz pusi
In : def convolve(attēls, kodols, pad = 0, solis = 1): rindas, kolonnas = image.shape output_rows = rindas // solis output_columns = kolonnas // soļa rezultāts = np.zeros((izejas_rindas, izvades_kolonnas)), ja pad > 0: image = np.pad(attēls, pad, "konstante") kernel_size = kernel.size kernel_length = kodols.shape half_kernel = kodola_garums // 2 kernel_flat = kodols.reshape(kernel_size, 1) offset = builtins.abs( half_kernel-pad) r diapazonā (nobīde, rindas - nobīde, solis): c diapazonā (nobīde, kolonnas - nobīde, solis): rr = r - half_kernel + pad cc = c - half_kernel + spilventiņu ielāps = attēla rezultāts = np.dot(patch.reshape(1, kodola_izmērs), kodola_plakans) atgriež rezultātu
In : def show_convolution(kodols, solis = 1): """Parāda konvolācijas efektu ar doto kodolu.""" fig = pylab.figure(figsize = (9,9)) gs = gridspec.GridSpec(3, 3, height_ratios=) start=1 priekš i diapazonā (3): attēls = images_train conv = convolve(attēls, kodols, kodols.shape//2, stride) ax = fig.add_subplot(gs[i]) pylab.imshow (attēls, interpolācija="tuvākais") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(kernel, cmap="grey", interpolation="vistuvākais") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(conv, interpolation="nearest") ax.set_xticks() ax.set_yticks() pylab.show()
In : blur_kernel = np.array([, , , , ], dtype="float32") blur_kernel /= 273

Filtri

Aizmiglot

Izplūduma filtrs ļauj izlīdzināt nelīdzenumus un uzsvērt objektu kopējo formu.


In : show_convolution(blur_kernel)

Vertikālās malas

Varat izdomāt filtru, kas izceļ attēla vertikālās spilgtuma pārejas. Šeit zilā krāsa norāda pāreju no melnas uz baltu, dzeltena - otrādi.


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

Horizontālās malas

Līdzīgu filtru var izveidot, lai izceltu attēla horizontālos triepienus.


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)

kontūru filtrs

Varat arī izveidot 9x9 filtru, kas izcels attēla kontūras.


In : blob_kernel = np.array([, , , , , , , , ], dtype="float32") blob_kernel /= np.sum(np.abs(blob_kernel))
In : show_convolution(blob_kernel)
Lūk, kā darbojas klasiskais ciparu atpazīšanas piemērs: katram ciparam ir savas raksturīgās ģeometriskās pazīmes (divi apļi - astotnieks, slīpsvītra attēla pusē - viens utt.), pēc kuras neironu tīkls var noteikt, kāda veida objekts ir. . Mēs izveidojam filtrus, kas raksturo katru ciparu, mēs palaižam katru no filtriem virs attēla un samazinām kļūdu līdz minimumam.


Ja pielietosim līdzīgu pieeju, meklējot attēlā redzamos kaķus, tad ātri vien kļūs skaidrs, ka četrkājainim ir ļoti daudz pazīmju neironu tīkla trenēšanai, turklāt tās visas ir dažādas: astes, ausis, ūsas, deguns, kažoks un krāsa. . Un katram kaķim nevar būt nekā kopīga ar otru. Neironu tīkls ar nelielu datu apjomu par objekta uzbūvi nespēs saprast, ka viens kaķis guļ, bet otrs stāv uz pakaļkājām.

Konvolūcijas tīkla pamatideja

  • Mēs izveidojam neironu tīklā konvolucionālo slāni, kas nodrošina filtra uzlikšanu attēlam.
  • Mēs apmācām filtru svarus, izmantojot atpakaļpavairošanas algoritmu
Piemēram, mums ir attēls i, 2 konvolucionālie filtri w ar izejām o. Izvades attēla elementi tiks aprēķināti šādi:

Svara treniņš

Algoritms ir šāds:
  • Visiem attēla pikseļiem tiek piemērots filtrs ar vienādu svaru.
  • Šajā gadījumā filtrs "darbojas" pa visu attēlu.
  • Mēs vēlamies apmācīt šos svarus (kopīgos visiem pikseļiem), izmantojot atpakaļpavairošanas algoritmu.
  • Lai to izdarītu, mums ir jāsamazina filtra pielietojums līdz vienai matricu reizināšanai.
  • Atšķirībā no pilnībā savienota slāņa, apmācībai būs mazāk svaru un vairāk piemēru.
  • Viltīgs - im2col

im2col

Sāksim ar attēlu x, kur katrs pikselis atbilst burtam:

Pavisam nesen izstrādātājs Kristofers Hese pasaulei atklāja savu ideju - projektu. Ar neironu tīkla palīdzību uzzīmētie kaķi pārvēršas par “īstiem”. Idejas pamatā ir Google mašīnmācīšanās sistēma TensorFlow. Edges2cats ir sadalīts divos "laukos". Pirmajā lietotājs uzzīmē kaķi (vai tamlīdzīgu), bet otrajā neironu tīkls cenšas panākt, lai zīmējums izskatās pēc īsta dzīvnieka.

Vienkārša izklaide patika interneta lietotājiem. Viņi sāka masveidā publicēt savus jaunos mājdzīvniekus Twitter. Dažos gadījumos neironu tīkla radītais “attēls” izskatījās ļoti reālistisks, it kā mums būtu reālas dzīvas būtnes fotogrāfija. Daži lietotāji mēģināja padarīt kaķus mīļus (dažkārt viņiem pat izdevās), taču daudzos gadījumos piedzima īsti monstri.

Ņemiet vērā, ka acu atpazīšanas sistēma ne vienmēr darbojas pareizi, tāpēc dažos attēlos dzīvnieku acis principā nav redzamas, savukārt citos zīlītes var atrasties vietā, kur vajadzētu būt degunam.