Şəkillər neyron şəbəkəsi. Neyron şəbəkələrdən istifadə edərək təsvirin stilizasiyası: mistisizm yoxdur, sadəcə söyüş

ev / Keçmiş

Ən adi fotoşəkillərdə çoxsaylı və tamamilə fərqlənməyən varlıqlar görünür. Çox vaxt nədənsə itlər. İnternet bu cür şəkillərlə dolmağa 2015-ci ilin iyun ayında Google-dan DeepDream - ilklərdən biri olanda başladı. açıq xidmətlər, neyroşəbəkələrə əsaslanır və təsvirin emalı üçün nəzərdə tutulub.

Bu, belə olur: alqoritm fotoşəkilləri təhlil edir, onlarda bəzi tanış obyektləri xatırladan fraqmentlər tapır və bu məlumatlara uyğun olaraq təsviri təhrif edir.

Əvvəlcə layihə açıq mənbə kimi nəşr olundu, sonra isə eyni prinsiplər əsasında yaradılmış onlayn xidmətlər internetdə peyda oldu. Ən rahat və populyarlardan biri Deep Dream Generator-dur: burada kiçik bir fotoşəkilin işlənməsi cəmi 15 saniyə çəkir (əvvəllər istifadəçilər bir saatdan çox gözləməli idi).

Neyroşəbəkələr bu cür şəkillər yaratmağı necə öyrənirlər? Yeri gəlmişkən, niyə belə adlanırlar?

Öz strukturunda olan neyron şəbəkələri canlı orqanizmin real neyron şəbəkələrini təqlid edir, lakin bunu riyazi alqoritmlərdən istifadə edərək edir. Əsas struktur yaratdıqdan sonra onu maşın öyrənmə metodlarından istifadə edərək məşq edə bilərsiniz. Söhbət təsvirin tanınmasından gedirsə, o zaman minlərlə təsvirin neyron şəbəkəsi vasitəsilə ötürülməsi lazımdır. Neyron şəbəkənin vəzifəsi fərqlidirsə, təlim məşqləri fərqli olacaq.

Şahmat oynamaq üçün alqoritmlər, məsələn, təhlil edin şahmat oyunları. Eyni şəkildə, Google DeepMind-dən AlphaGo alqoritmi Çin Go oyununa - bir irəliləyiş kimi qəbul edildi, çünki Go şahmatdan daha mürəkkəb və qeyri-xəttidir.

    Siz neyron şəbəkələrin sadələşdirilmiş modeli ilə oynaya və onun prinsiplərini daha yaxşı başa düşə bilərsiniz.

    YouTube-da bir sıra başa düşülən rəsmlər də var rulonlar neyron şəbəkələrin necə işlədiyi haqqında.

Digər məşhur xidmət isə Dreamscope-dur ki, o, təkcə itlər haqqında yuxuda deyil, həm də müxtəlif rəsm üslublarını təqlid edə bilir. Burada təsvirin işlənməsi də çox sadə və sürətlidir (təxminən 30 saniyə).

Göründüyü kimi, xidmətin alqoritmik hissəsi artıq müzakirə etdiyimiz "Neyral stil" proqramının modifikasiyasıdır.

Bu yaxınlarda, qara və ağ şəkilləri real şəkildə rəngləndirən bir proqram ortaya çıxdı. Əvvəlki versiyalarda oxşar proqramlar öz işini daha az yerinə yetirirdi və insanların ən azı 20%-i real şəkli kompüterin rəngləndirdiyi təsvirdən ayıra bilmirsə, bu böyük nailiyyət sayılırdı.

Üstəlik, burada rəngləmə cəmi 1 dəqiqə çəkir.

Eyni inkişaf şirkəti də şəkilləri tanıyan bir xidmət təqdim etdi fərqli növlər obyektlər.

Bu xidmətlər sadəcə əyləncə kimi görünə bilər, amma əslində hər şey daha maraqlıdır. Yeni texnologiyalar insan rəssamlarının təcrübəsinə daxil olur və bizim sənət anlayışımızı dəyişir. Çox güman ki, insanlar tezliklə yaradıcılıq sahəsində maşınlarla rəqabət aparmalı olacaqlar.

Şəkilləri tanımaq üçün alqoritmləri öyrətmək süni intellekt tərtibatçılarının uzun müddətdir mübarizə apardıqları bir işdir. Buna görə də köhnə fotoşəkilləri rəngləndirən və səmada itlər çəkən proqramlar daha böyük və daha maraqlı bir prosesin bir hissəsi hesab edilə bilər.

Salam, Habr! Siz yəqin ki, diqqət yetirmisiniz ki, fotoşəkillərin stilləşdirilməsi mövzusu fərqlidir sənət üslubları Sizin bu İnternetlərinizdə fəal müzakirə olunur. Bütün bu məşhur məqalələri oxuyarkən düşünə bilərsiniz ki, bu proqramların başlığı altında sehr baş verir və neyron şəbəkə həqiqətən sıfırdan təsviri xəyal edir və yenidən çəkir. Elə oldu ki, komandamız oxşar vəzifə ilə üzləşdi: daxili korporativ hakatonun bir hissəsi olaraq biz video stilizasiya etdik, çünki... Artıq fotoşəkillər üçün proqram var idi. Bu yazıda şəbəkənin şəkilləri necə “yenidən çəkdiyini” anlayacağıq və bunu mümkün edən məqalələri təhlil edəcəyik. Bu materialı oxumazdan əvvəl əvvəlki postu və ümumiyyətlə, konvolyusiya neyron şəbəkələrinin əsaslarını oxumağınızı tövsiyə edirəm. Siz bəzi düsturlar, bəzi kodlar (Teano və Lazanya haqqında nümunələr verəcəyəm), həmçinin çoxlu şəkillər tapa bilərsiniz. Bu yazı əsaslanır xronoloji qaydada məqalələrin görünüşü və müvafiq olaraq fikirlərin özləri. Bəzən mən bunu son təcrübəmizlə sulandıracağam. Budur diqqətinizi cəlb etmək üçün cəhənnəmdən bir oğlan.


Qıvrımlı Şəbəkələrin Görünüşü və Anlanması (28 Noyabr 2013)

Əvvəla, müəlliflərin neyron şəbəkənin qara qutu deyil, tamamilə şərh edilə bilən bir şey olduğunu göstərə bildikləri bir məqaləni qeyd etmək lazımdır (yeri gəlmişkən, bu gün bunu təkcə kompüter üçün konvolyusiya şəbəkələri haqqında deyilə bilər). görmə). Müəlliflər gizli təbəqələrdə neyronların aktivləşdirilməsini necə şərh etməyi öyrənməyə qərar verdilər; bunun üçün onlar bir neçə il əvvəl təklif olunan dekonvolyusiya neyron şəbəkəsindən (deconvnet) istifadə etdilər (yeri gəlmişkən, bunun müəllifləri olan eyni Seiler və Fergus tərəfindən). nəşr). Dekonvolyutsiya şəbəkəsi əslində bükülmələr və birləşmələrlə eyni şəbəkədir, lakin tərs qaydada tətbiq olunur. Deconvnet-dəki orijinal iş şəkillər yaratmaq üçün şəbəkədən nəzarətsiz öyrənmə rejimində istifadə etdi. Müəlliflər bu dəfə ondan sadəcə olaraq şəbəkə vasitəsilə irəli keçiddən sonra əldə edilən xüsusiyyətlərdən orijinal təsvirə geri çəkilmək üçün istifadə ediblər. Nəticə neyronlarda bu aktivləşməyə səbəb olan siqnal kimi şərh edilə bilən bir görüntüdür. Təbii ki, sual yaranır: bükülmə və qeyri-xəttilikdən tərs keçidi necə etmək olar? Üstəlik, max-pooling vasitəsilə, bu, şübhəsiz ki, dönməz əməliyyat deyil. Gəlin hər üç komponentə nəzər salaq.

Ters ReLu

Konvolyusiya şəbəkələrində tez-tez aktivləşdirmə funksiyasından istifadə olunur ReLu(x) = maks (0, x), bu da təbəqədəki bütün aktivləşdirmələri mənfi olmayan edir. Müvafiq olaraq, qeyri-xəttidən geriyə dönərkən, həm də mənfi olmayan nəticələr əldə etmək lazımdır. Bunun üçün müəlliflər eyni ReLu-dan istifadə etməyi təklif edirlər. Memarlıq nöqteyi-nəzərindən Theano gradient əməliyyat funksiyasını ləğv etməlidir (sonsuz qiymətli notebook Lasagna Reseptlərindədir, oradan ModifiedBackprop sinfinin nə olduğu barədə təfərrüatları əldə edəcəksiniz).

Sinif ZeilerBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = inputs (grd,) = out_grads #return (grd * (grd > 0).astype(inp.dtype),) # explicitly rectify return (self.nonlinearity(grd),) # verilmiş qeyri-xəttidən istifadə edin

Ters çevrilmə

Bu, bir az daha mürəkkəbdir, lakin hər şey məntiqlidir: eyni konvolyutsiya nüvəsinin köçürülmüş versiyasını tətbiq etmək kifayətdir, lakin irəli keçiddə istifadə olunan əvvəlki təbəqənin əvəzinə əks ReLu-dan gələn çıxışlara. Ancaq qorxuram ki, bu sözlə o qədər də aydın deyil, gəlin bu prosedurun vizuallaşdırılmasına baxaq (daha çox əyilmə vizualizasiyasını tapa bilərsiniz).


Addımla əyilmə=1

Addımla əyilmə=1 Əks versiya

Addımla əyilmə=2

Addımla əyilmə=2 Əks versiya

Əks hovuzlaşdırma

Bu əməliyyat (əvvəlkilərdən fərqli olaraq) ümumiyyətlə tərsinə çevrilmir. Amma biz yenə də qayıdış keçidi zamanı birtəhər maksimumdan keçmək istərdik. Bunun üçün müəlliflər birbaşa keçid zamanı maksimumun olduğu xəritədən istifadə etməyi təklif edirlər (maksimum yer açarları). Əks keçid zamanı giriş siqnalı orijinal siqnalın strukturunu təqribən qoruyacaq şəkildə unpooling-ə çevrilir; burada təsvir etməkdənsə görmək həqiqətən daha asandır.



Nəticə

Vizuallaşdırma alqoritmi çox sadədir:

  1. Düz bir keçid edin.
  2. Bizi maraqlandıran təbəqəni seçin.
  3. Bir və ya bir neçə neyronun aktivləşdirilməsini qeyd edin və qalanları sıfırlayın.
  4. Əks nəticə çıxarın.

Aşağıdakı şəkildəki hər bir boz kvadrat filtrin vizuallaşdırılmasına (konvolyutsiya üçün istifadə olunur) və ya bir neyronun çəkisinə uyğundur və hər biri rəngli şəkil- bu, orijinal təsvirin müvafiq neyronu aktivləşdirən hissəsidir. Aydınlıq üçün bir təbəqədəki neyronlar qruplaşdırılır tematik qruplar. Ümumiyyətlə, birdən məlum oldu ki, neyron şəbəkəsi Hubel və Vayselin mükafatlandırıldıqları vizual sistemin strukturu ilə bağlı işlərində dəqiq nələr haqqında yazdığını öyrənir. Nobel mükafatı 1981-ci ildə. Bu məqalə sayəsində konvolyusiya neyron şəbəkəsinin hər bir təbəqədə öyrəndiklərinin vizual təsvirini əldə etdik. Məhz bu bilik sonradan yaradılan təsvirin məzmununu manipulyasiya etməyə imkan verəcək, lakin bu hələ çox uzaqdır, növbəti bir neçə il neyron şəbəkələrinin "trepanlaşdırılması" üsullarının təkmilləşdirilməsinə sərf edilmişdir. Bundan əlavə, məqalənin müəllifləri əldə etmək üçün konvolusion neyron şəbəkəsi arxitekturasının ən yaxşı şəkildə necə qurulacağını təhlil etmək üçün bir üsul təklif etdilər. ən yaxşı nəticələr(baxmayaraq ki, onlar ImageNet 2013-ü qazanmasalar da, zirvəyə yüksəldilər; UPD: belə çıxır ki, onlar qazandılar, Clarifai bunlardır).


Xüsusiyyət vizuallaşdırılması


Budur, deconvnet-dən istifadə edərək aktivləşdirmələrin vizuallaşdırılmasına bir nümunə, bu gün bu nəticə belə görünür, lakin sonra bu, bir irəliləyiş idi.


deconvnet-dən istifadə edərək Saliency Maps

Deep Inside Convolutional Networks: Şəkil Təsnifat Modellərinin və Diqqət Xəritələrinin vizuallaşdırılması (19 aprel 2014)

Bu məqalə konvolyusiya neyron şəbəkəsində olan biliklərin vizuallaşdırılması üsullarının öyrənilməsinə həsr edilmişdir. Müəlliflər gradient enişinə əsaslanan iki vizuallaşdırma metodu təklif edirlər.

Sinif modelinin vizuallaşdırılması

Beləliklə, təsəvvür edin ki, müəyyən sayda siniflərə təsnifat problemini həll etmək üçün öyrədilmiş neyron şəbəkəmiz var. Sinifə uyğun gələn çıxış neyronunun aktivasiya dəyərini işarə edək c. Sonra aşağıdakı optimallaşdırma problemi bizə seçilmiş sinfi maksimuma çatdıran görüntünü tam olaraq verir:



Bu problem Theano istifadə edərək asanlıqla həll edilə bilər. Adətən biz çərçivədən model parametrlərinə görə törəmə götürməyi xahiş edirik, lakin bu dəfə parametrlərin sabit olduğunu və giriş şəklinə görə törəmənin götürüldüyünü fərz edirik. Aşağıdakı funksiya çıxış qatının maksimum dəyərini seçir və giriş şəklinin törəməsini hesablayan funksiyanı qaytarır.


def compile_saliency_function(net): """ Daxil edilmiş şəkillərin verilmiş minibatçı üçün əsaslılıq xəritələrini və proqnozlaşdırılan sinifləri hesablamaq üçün funksiya tərtib edir. """ inp = net["input"].input_var outp = lasagne.layers.get_output(net) ["fc8"], deterministic=Doğru) max_outp = T.max(çıxış, ox=1) qabarıqlıq = theano.grad(max_outp.sum(), wrt=inp) max_class = T.argmax(outp, ox=1) theano.function (, ) qaytarın

Yəqin ki, siz internetdə it sifətləri olan qəribə şəkillər görmüsünüz - DeepDream. Orijinal məqalədə müəlliflər seçilmiş sinfi maksimuma çatdıran şəkillər yaratmaq üçün aşağıdakı prosesdən istifadə edirlər:

  1. İlkin şəkli sıfırlarla işə salın.
  2. Bu şəkildən törəmə dəyərini hesablayın.
  3. Törəmədən yaranan şəkli ona əlavə etməklə şəkli dəyişdirin.
  4. 2-ci nöqtəyə qayıdın və ya döngədən çıxın.

Nəticə görüntülər bunlardır:




Və əgər ilk şəkli işə salsaq real foto və eyni prosesə başlamaq? Ancaq hər iterasiyada təsadüfi bir sinif seçəcəyik, qalanını sıfırlayacağıq və törəmənin dəyərini hesablayacağıq, sonra bu dərin yuxu kimi bir şey alacağıq.


Diqqət 60 mb


Niyə bu qədər it üzləri və gözləri var? Çox sadədir: imagenetdə 1000 sinifdən təxminən 200 it var, onların gözləri var. Həm də sadəcə insanların olduğu bir çox siniflər.

Sinif Salience Extraction

Bu proses real fotoşəkillə işə salınarsa, birinci iterasiyadan sonra dayandırılırsa və törəmənin dəyəri çəkilirsə, onda biz belə bir şəkil alacağıq, hansını orijinala əlavə edərək, seçilmiş sinfin aktivasiya dəyərini artıracağıq.


Törəmədən istifadə edərək Saliency Maps


Yenə də nəticə “belə-belə” olur. Qeyd etmək lazımdır ki, bu, aktivləşdirmələri vizuallaşdırmaq üçün yeni bir üsuldur (heç nə bizə aktivləşdirmə dəyərlərini sonuncu qatda deyil, ümumiyyətlə şəbəkənin hər hansı bir təbəqəsində düzəltməyə və daxil edilmiş təsvirə görə törəmə götürməyə mane olmur) ). Növbəti məqalə hər iki əvvəlki yanaşmanı birləşdirəcək və bizə stil köçürməsini necə quracağımıza dair bir alət verəcək, bu barədə daha sonra təsvir ediləcəkdir.

Sadəliyə can atırıq: The All Convolutional Net (13 aprel 2015)

Bu məqalə, ümumiyyətlə, vizuallaşdırma haqqında deyil, böyük bir addımla birləşən konvolyutsiya ilə əvəz edilməsinin keyfiyyət itkisinə səbəb olmadığı haqqındadır. Lakin tədqiqatlarının əlavə məhsulu olaraq, müəlliflər daha çox istifadə etdikləri xüsusiyyətləri vizuallaşdırmaq üçün yeni bir üsul təklif etdilər. dəqiq təhlil model nə öyrənir. Onların ideyası belədir: əgər sadəcə törəmə götürsək, dekonvolyutsiya zamanı giriş təsvirində olan xüsusiyyətlər geri qayıtmır. sıfırdan azdır(giriş şəklinə ReLu tətbiqi). Və bu, əks olunan görüntüdə mənfi dəyərlərin görünməsinə səbəb olur. Digər tərəfdən, deconvnet istifadə edirsinizsə, onda ReLu törəməsindən başqa bir ReLu götürülür - bu, mənfi dəyərləri geri qaytarmamağa imkan verir, amma gördüyünüz kimi, nəticə "belədir". Bəs bu iki üsulu birləşdirsəniz nə olacaq?




class GuidedBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = inputs(grd,) = out_grads dtype = inp.dtype return (grd * (inp > 0).astype(dtype) * (grd) > 0).tip(dtype),)

Sonra tamamilə təmiz və şərh edilə bilən bir görüntü əldə edəcəksiniz.


Bələdçili Geri Yayılmadan istifadə edərək Diqqət Xəritələri

Daha dərinə get

İndi gəlin düşünək bu bizə nə verir? Nəzərinizə çatdırım ki, hər bir bükülmə təbəqəsi üçölçülü tensoru giriş kimi qəbul edən və həmçinin çıxış kimi üçölçülü tensor istehsal edən, bəlkə də fərqli ölçüdə olan bir funksiyadır. d x w x h; d epth təbəqədəki neyronların sayıdır, onların hər biri ölçüdə xüsusiyyət xəritəsi yaradır w igth x h səkkiz.


VGG-19 şəbəkəsində aşağıdakı təcrübəni sınayaq:



conv1_2

Bəli, demək olar ki, heç nə görmürsən, çünki... qəbuledici sahə çox kiçikdir, bu, 3x3-ün ikinci qıvrılmasıdır, ümumi sahəsi 5x5-dir. Ancaq böyüdükdə bu xüsusiyyətin sadəcə gradient detektoru olduğunu görürük.




conv3_3


conv4_3


conv5_3


hovuz 5


İndi təsəvvür edək ki, blok üzərindəki maksimum əvəzinə, giriş şəkli üzərində blokun bütün elementlərinin cəminin dəyərinin törəməsini alacağıq. Sonra açıq-aydın bir qrup neyronun qəbuledici sahəsi bütün giriş şəklini əhatə edəcəkdir. İlkin təbəqələr üçün parlaq xəritələr görəcəyik, onlardan belə nəticəyə gəlirik ki, bunlar rəng detektorları, sonra gradientlər, sonra kənarlar və daha mürəkkəb naxışlara doğru davam edir. Qat nə qədər dərin olsa, şəkil bir o qədər qaralır. Bu, daha dərin təbəqələrin aşkar etdikləri daha mürəkkəb nümunəyə malik olması və mürəkkəb nümunənin sadədən daha az görünməsi ilə izah olunur, beləliklə aktivləşdirmə xəritəsi sönür. Birinci üsul mürəkkəb naxışlı təbəqələri başa düşmək üçün uyğundur, ikincisi isə sadəcə sadə olanlar üçündür.


conv1_1


conv2_2


conv4_3


Siz bir neçə şəkil və .

Bədii Üslubun Sinir Alqoritmi (2 Sentyabr 2015)

Beləliklə, neyron şəbəkənin ilk uğurlu trepanasiyasından bir neçə il keçdi. Biz (insanlıq mənasında) əlimizdədir güclü alət, bu bizə neyron şəbəkənin nə öyrəndiyini anlamağa imkan verir, həmçinin öyrənmək istəmədiyimiz şeyi silir. Bu məqalənin müəllifləri bir şəkil yaratmağa imkan verən bir üsul inkişaf etdirirlər oxşar xəritə bəzi hədəf təsvirində aktivləşdirmələr və bəlkə də birdən çox - bu stilizasiyanın əsasını təşkil edir. Girişə ağ səs-küy tətbiq edirik və dərin yuxuda olduğu kimi oxşar iterativ prosesdən istifadə edərək, bu təsviri xüsusiyyət xəritələri hədəf təsvirə bənzəyən birinə endiririk.

Məzmun itkisi

Artıq qeyd edildiyi kimi, neyron şəbəkənin hər bir təbəqəsi müəyyən ölçülü üçölçülü tensor istehsal edir.




Çıxışı işarə edək i kimi girişdən ci qat. O zaman daxil edilmiş təsvir arasındakı qalıqların çəkili cəmini minimuma endirsək və hədəflədiyimiz bəzi görüntü c, onda tam olaraq sizə lazım olanı əldə edəcəksiniz. Ola bilər.



Bu məqalə ilə təcrübə etmək üçün hesablamaların aparıldığı bu sehrli noutbukdan istifadə edə bilərsiniz (həm GPU, həm də CPU-da). GPU neyron şəbəkənin xüsusiyyətlərini və xərc funksiyasının dəyərini hesablamaq üçün istifadə olunur. Theano, məqsəd funksiyasının gradientini hesablaya bilən bir funksiya istehsal edir eval_grad giriş şəkli ilə x. Bu, sonra lbfgs-ə verilir və iterativ proses başlayır.


# Səs-küy təsviri ilə başlatın created_image.set_value(floatX(np.random.uniform(-128, 128, (1, 3, IMAGE_W, IMAGE_W))))) x0 = generated_image.get_value().astype("float64") xs = xs.append(x0) # Optimize edin, nəticəni i üçün vaxtaşırı olaraq (8) diapazonunda saxlayın: print(i) scipy.optimize.fmin_l_bfgs_b(eval_loss, x0.flatten(), fprime=eval_grad, maxfun=40) x0 = yaradılan_image.get_value().astype("float64") xs.append(x0)

Belə bir funksiyanın optimallaşdırılmasını həyata keçirsək, tez bir zamanda hədəfə bənzər bir şəkil əldə edəcəyik. İndi bəzi məzmun şəklinə bənzər şəkilləri yenidən yaratmaq üçün ağ səs-küydən istifadə edə bilərik.


Məzmun itkisi: conv4_2



Optimallaşdırma prosesi




Yaranan görüntünün iki xüsusiyyətini görmək asandır:

  • rənglər itir - bu, içərisində olmasının nəticəsidir konkret misal yalnız conv4_2 qatı istifadə edilmişdir (və ya başqa sözlə, onun üçün çəki w sıfırdan fərqli, digər təbəqələr üçün isə sıfır idi); xatırladığınız kimi, rənglər və gradient keçidləri haqqında məlumatı ehtiva edən ilk təbəqələrdir, sonrakılar isə daha böyük detallar haqqında məlumatları ehtiva edir, bizim müşahidə etdiyimiz budur - rənglər itir, məzmun yox;
  • bəzi evlər “köçüb”, yəni. düz xətlər bir qədər əyridir - bunun səbəbi qat nə qədər dərin olsa, o qədərdir daha az məlumat bu xüsusiyyətin məkan mövqeyi haqqında məlumatı ehtiva edir (qıvrılmaların və birləşdirmənin istifadəsinin nəticəsi).

Erkən təbəqələrin əlavə edilməsi dərhal rəng vəziyyətini düzəldir.


Məzmun itkisi: conv1_1, conv2_1, conv4_2


Ümid edirəm ki, indi ağ səs-küy təsvirinə yenidən çəkilənlərə nəzarət etdiyiniz kimi hiss edirsiniz.

Üslub itkisi

İndi isə ən maraqlı hissəyə keçirik: üslubu necə çatdıra bilərik? stil nədir? Aydındır ki, üslub Content Loss-da optimallaşdırdığımız bir şey deyil, çünki o, funksiyaların məkan mövqeləri haqqında çoxlu məlumatları ehtiva edir.Ona görə də bizim etməli olduğumuz ilk şey bu məlumatı bir şəkildə hər bir təbəqədə alınan baxışlardan silməkdir.


Müəllif aşağıdakı metodu təklif edir. Müəyyən bir təbəqənin çıxışındakı tensoru götürək, onu məkan koordinatları boyunca genişləndirək və kalıplar arasında kovariasiya matrisini hesablayaq. Bu çevrilməni kimi işarə edək G. Biz həqiqətən nə etmişik? Deyə bilərik ki, bir yamaq daxilində olan xüsusiyyətlərin cüt-cüt baş vermə tezliyini hesabladıq və ya başqa sözlə, çoxvariantlı normal paylanma ilə yamaqlarda xüsusiyyətlərin paylanmasını təxmini etdik.




Sonra Style Loss aşağıdakı kimi daxil edilir, burada s- bu üslublu bir şəkildir:



Vinsent üçün cəhd edək? Prinsipcə, gözlənilən bir şey alırıq - Van Qoq üslubunda səs-küy, xüsusiyyətlərin məkan təşkili haqqında məlumat tamamilə itirilir.


Vinsent




Stil şəklinin yerinə bir fotoşəkil qoysanız nə olacaq? Siz tanış xüsusiyyətlər, tanış rənglər əldə edəcəksiniz, lakin məkan mövqeyi tamamilə itirilir.


Stil itkisi ilə foto


Yəqin ki, niyə başqa bir şey deyil, kovariasiya matrisini hesabladığımızla maraqlanmısınız? Axı, məkan koordinatlarının itirilməsi üçün xüsusiyyətləri birləşdirməyin bir çox yolu var. Bu, həqiqətən açıq sualdır və çox sadə bir şey götürsəniz, nəticə kəskin şəkildə dəyişməyəcək. Bunu yoxlayaq, biz kovariasiya matrisini deyil, sadəcə olaraq hər bir lövhənin orta qiymətini hesablayacağıq.




sadə üslub itkisi

Kombinə edilmiş itki

Təbii ki, bu iki xərc funksiyasını qarışdırmaq istəyi var. Sonra ağ səs-küydən elə bir şəkil yaradacağıq ki, o, məzmun şəklinin xüsusiyyətlərini (məkan koordinatları ilə əlaqələndirilir) saxlasın və həmçinin məkan koordinatları ilə əlaqəli olmayan "üslub" xüsusiyyətlərini ehtiva etsin, yəni. biz ümid edəcəyik ki, məzmun təsviri təfərrüatları öz yerindən toxunulmaz qalacaq, lakin istədiyiniz üslubla yenidən çəkiləcək.



Əslində, bir nizamlayıcı da var, lakin sadəlik üçün onu buraxacağıq. Cavab vermək qalır növbəti sual: optimallaşdırarkən hansı təbəqələrdən (çəkilərdən) istifadə etməliyəm? Qorxuram ki, bu suala nə mənim cavabım var, nə də məqalə müəllifləri. Onların aşağıdakılardan istifadə etmək təklifi var, lakin bu, heç də o demək deyil ki, başqa kombinasiya da daha pis işləyəcək. böyük yer axtarış. Modeli başa düşməkdən irəli gələn yeganə qayda: bitişik təbəqələri götürməyin mənası yoxdur, çünki onların xüsusiyyətləri bir-birindən çox da fərqlənməyəcək, ona görə də üsluba hər conv*_1 qrupundan bir təbəqə əlavə olunur.


# İtki funksiyası itkilərini müəyyənləşdirin = # məzmun itkisi zərərləri.append(0.001 * məzmun_itməsi(foto_xüsusiyyətlər, gen_xüsusiyyətlər, "conv4_2")) # stil itkisi zərərləri.append(0.2e6 * stil_itkisi (incəsənət_xüsusiyyətləri, gen_xüsusiyyətləri, "conv1_1")) zərərlər.append (0.2e6 * style_loss(art_features, gen_features, "conv2_1")) losses.append(0.2e6 * style_loss(art_features, gen_features, "conv3_1")) losses.apppend(0.2e6 * style_loss(art_features, gen_features, gen_fe1") ) itkilər.append(0.2e6 * style_loss(art_features, gen_features, "conv5_1")) # total variation penalty losses.append(0.1e-7 * cəmi_dəyişiklik_itkisi(yaradılan_şəkil)) ümumi_itki = cəmi(zərər)

Son model aşağıdakı kimi təqdim edilə bilər.




Və burada Van Qoqla evlərin nəticəsidir.



Prosesə nəzarət etməyə çalışır

Əvvəlki hissələri xatırlayaq, indiki məqalədən iki il əvvəl digər elm adamları neyron şəbəkənin həqiqətən nə öyrəndiyini araşdırırdılar. Bütün bu məqalələrlə silahlanmış xüsusiyyət vizualizasiyaları yarada bilərsiniz müxtəlif üslublar, müxtəlif şəkillər, fərqli qətnamə və ölçülər və hansı təbəqələrin hansı çəki ilə çəkiləcəyini anlamağa çalışın. Ancaq hətta təbəqələri yenidən ölçmək də baş verənlərə tam nəzarət vermir. Burada problem daha konseptualdır: yanlış funksiyanı optimallaşdırırıq! Necə, soruşursan? Cavab sadədir: bu funksiya uyğunsuzluğu minimuma endirir... yaxşı, siz fikir əldə edirsiniz. Amma əslində istədiyimiz odur ki, görüntünü bəyənək. Məzmun və üslub itkisi funksiyalarının qabarıq birləşməsi ağlımızın gözəl hesab etdiyi şeyin ölçüsü deyil. Qeyd olundu ki, stilizasiyaya çox uzun müddət davam etsəniz, xərc funksiyası təbii olaraq aşağı və aşağı enir, lakin nəticənin estetik gözəlliyi kəskin şəkildə azalır.




Yaxşı, daha bir problem var. Deyək ki, bizə lazım olan xüsusiyyətləri çıxaran bir təbəqə tapdıq. Tutaq ki, bəzi teksturalar üçbucaqlıdır. Lakin bu təbəqə, həmçinin, nəticədə ortaya çıxan görüntüdə görmək istəmədiyimiz dairələr kimi bir çox başqa xüsusiyyətləri də ehtiva edir. Ümumiyyətlə, bir milyon çinlini işə götürə bilsək, stil imicinin bütün xüsusiyyətlərini vizuallaşdıra bilərdik və kobud güclə sadəcə ehtiyacımız olanları qeyd edə və yalnız xərc funksiyasına daxil edə bilərik. Ancaq məlum səbəblərə görə bu o qədər də sadə deyil. Bəs nəticədə görmək istəmədiyimiz bütün dairələri stil təsvirindən sadəcə silsək necə olar? Sonra dairələrə cavab verən müvafiq neyronların aktivləşdirilməsi sadəcə işləməyəcək. Və təbii ki, bu, nəticədə yaranan şəkildə görünməyəcək. Çiçəklərlə də eynidir. Çoxlu rənglərlə parlaq bir görüntü təsəvvür edin. Rənglərin paylanması bütün məkanda çox ləkələnəcək və nəticədə ortaya çıxan görüntünün paylanması eyni olacaq, lakin optimallaşdırma prosesində orijinalda olan zirvələr çox güman ki, itiriləcək. Məlum oldu ki, sadəcə bit dərinliyini azaltmaq rəng palitrası bu problemi həll edir. Əksər rənglərin paylanma sıxlığı sıfıra yaxın olacaq və bir neçə sahədə böyük zirvələr olacaq. Beləliklə, Photoshop-da orijinalı manipulyasiya etməklə, biz şəkildən çıxarılan xüsusiyyətləri manipulyasiya edirik. İnsan üçün öz istəklərini əyani şəkildə ifadə etmək, onları riyaziyyat dili ilə ifadə etməyə çalışmaqdan daha asandır. sağol. Nəticədə, Photoshop və xüsusiyyətlərin vizuallaşdırılması üçün skriptlərlə silahlanmış dizaynerlər və menecerlər, riyaziyyatçılar və proqramçılardan üç dəfə daha sürətli nəticələr əldə etdilər.


Xüsusiyyətlərin rəngi və ölçüsü ilə manipulyasiya nümunəsi


Və ya üslub kimi sadə bir şəkil istifadə edə bilərsiniz



nəticələr








Budur video, ancaq düzgün tekstura ilə

Tekstura Şəbəkələri: Dokuların və Stilləşdirilmiş Şəkillərin İrəli Sintezi (10 Mart 2016)

Deyəsən, bir nüans olmasaydı, orada dayana bilərdik. Yuxarıdakı stilizasiya alqoritmini tamamlamaq çox uzun vaxt tələb edir. lbfgs-in CPU-da işlədiyi tətbiqi götürsək, proses təxminən beş dəqiqə çəkir. Optimallaşdırmanın GPU-ya keçməsi üçün onu yenidən yazsanız, proses 10-15 saniyə çəkəcək. Bu yaxşı deyil. Ola bilsin ki, bu və sonrakı məqalənin müəllifləri eyni şey haqqında fikirləşiblər. Hər iki nəşr əvvəlki məqalədən demək olar ki, bir il sonra, 17 gün fərqlə müstəqil olaraq nəşr olundu. Cari məqalənin müəllifləri, əvvəlki məqalənin müəllifləri kimi, fakturalar yaratmaqla məşğul idilər (əgər siz sadəcə Stil İtkisini sıfırlasanız, əldə edəcəksiniz). Onlar ağ səs-küydən əldə edilən təsviri deyil, stilizə edilmiş təsviri yaradan bəzi neyron şəbəkəni optimallaşdırmağı təklif etdilər.




İndi, üslub prosesi heç bir optimallaşdırma ehtiva etmirsə, yalnız irəli keçid etməlisiniz. Və optimallaşdırma generator şəbəkəsini öyrətmək üçün yalnız bir dəfə tələb olunur. Bu məqalədə hər biri növbəti iyerarxik generatordan istifadə olunur zəvvəlkindən daha böyük ölçüdə və teksturanın yaranması halında səs-küydən və stilistin hazırlanması üçün bəzi təsvirlər bazasından nümunə götürülmüşdür. Imagenetin təlim hissəsindən başqa bir şey istifadə etmək çox vacibdir, çünki... Loss şəbəkəsinin daxilindəki xüsusiyyətlər təlim hissəsi zamanı öyrədilmiş şəbəkə ilə hesablanır.



Real-Time Style Transfer və Super Resolution üçün Qavrama İtkiləri (27 Mart 2016)

Başlıqdan da göründüyü kimi, generativ şəbəkə ideyası ilə cəmi 17 gün gecikən müəlliflər şəkillərin həllediciliyini artırmaq üzərində işləyirdilər. Görünür, onlar ən son imagenet-də qalıq öyrənmənin uğurundan ilhamlanıblar.




Müvafiq olaraq, qalıq blok və konv bloku.



Beləliklə, indi üsluba nəzarətdən əlavə, sürətli bir generatora sahibik (bu iki məqalə sayəsində bir şəkil üçün generasiya vaxtı onlarla ms ilə ölçülür).

Son

Biz nəzərdən keçirilən məqalələrdən və müəlliflərin kodundan əldə edilən məlumatdan ilk video üslubu tətbiqinin üslubu üçün başqa proqram yaratmaq üçün başlanğıc nöqtəsi kimi istifadə etdik:



Bu kimi bir şey yaradır.


Tübingen Universitetindən olan alman tədqiqatçıları 2015-ci ilin avqustunda üslubun ötürülməsinin mümkünlüyü ilə bağlı araşdırmalarını təqdim etdikdən sonra məşhur rəssamlar digər fotoşəkillərdə bu fürsətdən pul qazanan xidmətlər görünməyə başladı. O, Qərb bazarına çıxarılıb, tam surəti isə Rusiya bazarına çıxarılıb.

Əlfəcinlərə

Ostagramın dekabr ayında yenidən işə salınmasına baxmayaraq, aprelin ortalarında sosial şəbəkələrdə sürətlə populyarlıq qazanmağa başladı. Eyni zamanda, aprelin 19-na olan məlumata görə, VKontakte-də layihədə mindən az adam var idi.

Xidmətdən istifadə etmək üçün iki şəkil hazırlamaq lazımdır: emal edilməli olan fotoşəkil və orijinal fotoşəkilin üzərinə örtmək üçün üslub nümunəsi olan şəkil.

Xidmətin pulsuz versiyası var: o, təsvirin ən uzun tərəfi boyunca minimum 600 piksel təsvir ölçüsündə təsvir yaradır. İstifadəçi fotoya filtr tətbiq etməkdən yalnız birinin nəticəsini alır.

İki pullu versiya var: Premium ən uzun tərəfi boyunca 700 pikselə qədər təsvir yaradır və təsvirə neyroşəbəkə emalının 600 iterasiyası tətbiq edir (nə qədər çox təkrarlama olarsa, emal bir o qədər maraqlı və intensivdir). Belə bir fotoşəkil 50 rubla başa gələcək.

HD versiyasında, təkrarlamaların sayını fərdiləşdirə bilərsiniz: 100 50 rubla, 1000 isə 250 rubla başa gələcək. Bu halda, təsvirin ən uzun tərəfində 1200 pikselə qədər qətnamə olacaq və o, kətan üzərində çap üçün istifadə edilə bilər: Ostagram 1800 rubldan başlayan çatdırılma ilə belə bir xidmət təklif edir.

Fevral ayında Ostagram nümayəndələri "inkişaf etmiş kapitalizmi olan ölkələrdən" istifadəçilərin şəkillərin emalı üçün müraciətləri qəbul etməyəcəklərini, lakin sonra bütün dünyadan VKontakte istifadəçiləri üçün foto emalına giriş əldə edəcəklərini açıqladılar. GitHub-da dərc olunan Ostagram koduna əsasən, onu Nijni Novqorodun 30 yaşlı sakini Sergey Moruqin hazırlayıb.

TJ əlaqə saxladı kommersiya direktoruözünü Andrey kimi təqdim edən layihə. Onun sözlərinə görə, Ostagram Instapainting-dən əvvəl meydana çıxıb, lakin Vipart adlı oxşar layihədən ilhamlanıb.

Ostagram NSTU-dan bir qrup tələbə tərəfindən hazırlanmışdır. Alekseeva: dar dostlar qrupunda ilkin sınaqdan sonra 2015-ci ilin sonunda layihəni ictimaiyyətə təqdim etmək qərarına gəldilər. Əvvəlcə şəkillərin işlənməsi tamamilə pulsuz idi və planda çap olunmuş rəsmləri sataraq pul qazanmaq idi. Andreyin sözlərinə görə, çap ən böyük problem olub: neyron şəbəkəsi tərəfindən işlənmiş insanların fotoşəkilləri nadir hallarda xoş görünür. insan gözü, və son müştəri nəticəni kətana tətbiq etməzdən əvvəl onu uzun müddət dəqiq tənzimləməlidir ki, bu da böyük maşın resursları tələb edir.

Ostagram yaradıcıları şəkilləri emal etmək üçün Amazon bulud serverlərindən istifadə etmək istəyirdilər, lakin istifadəçilərin axınından sonra məlum oldu ki, xərclər minimum investisiya gəliri ilə gündə min dolları keçəcək. Layihənin investoru olan Andrey Nijni Novqorodda server tutumunu icarəyə götürüb.

Layihənin auditoriyası gündə təxminən min nəfərdir, lakin bəzi günlərdə proqramdan keçidlər səbəbindən 40 min nəfərə çatırdı. xarici media, layihəni yerli olanlardan əvvəl fərq edən (Ostagram hətta Avropa DJ-ləri ilə də əməkdaşlıq etməyi bacardı). Gecə, trafikin az olduğu vaxtlarda təsvirin işlənməsi 5 dəqiqə, gündüz isə bir saata qədər çəkə bilər.

Əgər əvvəllər şəkillərin işlənməsinə giriş qəsdən xarici istifadəçilərlə məhdudlaşdırılırdısa (onlar Rusiyada monetizasiyaya başlamağı düşünürdülər), indi Ostagram daha çox Qərb auditoriyasına güvənir.

Bu gün kompensasiya perspektivləri şərtidir. Hər bir istifadəçi emal üçün 10 rubl ödəsəydi, bəlkə də ödəyəcəkdi. […]

Bizdə pul qazanmaq çox çətindir: insanlarımız bir həftə gözləməyə hazırdır, amma bunun üçün bir qəpik də ödəməyəcək. Avropalılar buna daha əlverişlidir - sürətləndirmək, keyfiyyəti artırmaq üçün ödəniş baxımından - ona görə də onlar həmin bazarı hədəfləyirlər.

Andrey, Ostagram nümayəndəsi

Andreyin sözlərinə görə, Ostagram komandası üzərində işləyir yeni versiya sosiallığa güclü diqqət yetirən sayt: "Bu, bir tanınmış xidmətə bənzəyəcək, amma nə etməli." Facebook-un Rusiyadakı nümayəndələri artıq layihə ilə maraqlanırdılar, lakin satışla bağlı danışıqlar hələ satış nöqtəsinə çatmayıb.

Xidmət işlərinin nümunələri

Ostagram veb saytındakı lentdə siz son fotoşəkillərlə nəticələnən şəkillərin birləşməsini də görə bilərsiniz: çox vaxt bu nəticənin özündən daha maraqlıdır. Bu halda, filtrlər - emal üçün effekt kimi istifadə olunan şəkillər gələcək istifadə üçün saxlanıla bilər.

© 2023 skudelnica.ru -- Sevgi, xəyanət, psixologiya, boşanma, hisslər, mübahisələr