Sinir ağlarını kullanarak görüntülerin stilizasyonu: Mistisizm yok, sadece mattan. Ostagram: Sayı tabanlı hizmet, fotoğraf ve süs eşyalarını sanatsal başyapıtlarda birleştirin Nörallet resimleri çizer

Sinir ağlarını kullanarak görüntülerin stilizasyonu: Mistisizm yok, sadece mattan. Ostagram: Sayı tabanlı hizmet, fotoğraf ve süs eşyalarını sanatsal başyapıtlarda birleştirin Nörallet resimleri çizer
Sinir ağlarını kullanarak görüntülerin stilizasyonu: Mistisizm yok, sadece mattan. Ostagram: Sayı tabanlı hizmet, fotoğraf ve süs eşyalarını sanatsal başyapıtlarda birleştirin Nörallet resimleri çizer

En sıradan fotoğraflarda çok sayıda ve tamamen ayırt edilemez özler belirir. En sık bazı sebepler için köpekler. İnternetin bu resmi Haziran 2015'te doldurmaya başladı, Google'dan DeabDream başlatıldığında - Sinir ağlarına dayanan ve görüntü işleme için tasarlanan ilk açık hizmetlerden biri.

Yaklaşık olarak gerçekleşir: algoritma fotoğrafları analiz eder, tanıdık herhangi bir nesneyi hatırlatan parçaları bulur - ve görüntüyü bu verilere göre bozar.

İlk başta, proje açık kod olarak yayınlandı ve daha sonra aynı prensiplerde oluşturulan İnternette oluşturulan çevrimiçi hizmetler. En uygun ve en popüler olanlardan biri derin rüya jeneratörü: Burada küçük bir fotoğraf işleme sadece yaklaşık 15 saniye sürer (önceki kullanıcılar bir saatten fazla beklemek zorunda kaldı).

Sinir ağları bu tür görüntüler oluşturmayı nasıl öğrenir? Ve neden, bu arada, sözde mi?

Cihazlarında nöral ağlar, canlı bir organizmanın gerçek sinir ağlarını taklit eder, ancak matematiksel algoritmaların yardımıyla yaparlar. Temel bir yapı oluşturarak, makine öğrenme yöntemlerine göre eğitebilirsiniz. Görüntüleri tanımaktan bahsediyorsak, binlerce görüntünün sinir ağından atlanması gerekir. Nörosette görevi farklı ise, eğitim egzersizleri farklı olacaktır.

Örneğin satranç oynamak için algoritmalar, satranç oyunlarını analiz eder. Çin oyununda Google Deepmind'den aynı algoritma alphago - bir atılım olarak algılandı, çünkü çok daha zor ve ona daha çok değerli.

    Basitleştirilmiş bir sinir ağının modeli ile oynamak ve ilkelerini anlamak daha iyidir.

    YouTube'da ayrıca bir dizi kişiselleştirilmiş elle çizilmiş var. silindirler Sinir ağlarının nasıl çalıştığı hakkında.

Bir diğer popüler hizmet de, sadece köpekleri hayal edebilecek, aynı zamanda çeşitli pitoresk stilleri taklit edebilecek Dreamscope'dir. Burada görüntü işleme ayrıca çok basit ve hızlı bir şekilde ortaya çıkar (yaklaşık 30 saniye).

Görünüşe göre, hizmetin algoritmik kısmı, zaten olduğumuz sinir tarzı programının bir modifikasyonudur.

Son zamanlarda, gerçekçi olarak siyah beyaz görüntüleri boyayan bir program vardı. Önceki sürümlerde, benzer programlar görevleriyle çok uzakta başa çıktı ve büyük bir başarı olarak kabul edildi, eğer insanların en az% 20'si bilgisayar tarafından boyanmış görüntüden gerçek bir resmi ayırt edemez.

Ayrıca, burada renklendirme sadece yaklaşık 1 dakika sürer.

Aynı kalkınma şirketi ayrıca resimlerde farklı nesneleri tanıyan bir hizmeti başlattı.

Bu hizmetler sadece eğlenceli görünebilir, ancak aslında her şey çok daha ilginç. Yeni teknolojiler, insanların sanatçılarının pratiğine dahil edilir ve sanat hakkındaki fikirlerimizi değiştirir. Muhtemelen, yakında insanlar arabalarla ve yaratıcılık alanında rekabet etmek zorunda kalacaklar.

Yapay zekanın geliştiricilerinin uzun süredir savaştığı görevleri tanımlamak için algoritmaları öğretin - Bu nedenle, eski resimlerin köpekler gökyüzünde çizdiği programlar, daha büyük ve ilgi çekici bir sürecin bir parçası olarak kabul edilebilir.

Sana selamlar, HABR! Elbette, çeşitli sanatsal stiller için fotoğraf stilleri konusunun bu konularda aktif olarak tartışıldığını fark ettiniz. Tüm bu popüler makaleleri okuyarak, bu uygulamaların kaputunun altında, sihirin devam ettiğini ve sinir ağı gerçekten fantezileri ve görüntüyü sıfırdan yeniden çizer. Bu yüzden ekibimizin benzer bir görevle karşı karşıya olduğu oldu: İç Kurumsal Hackaton çerçevesinde bir video stilizasyonu yaptık, çünkü Fotoğraflar için başvuru zaten. Bu yazıda, bu şebekenin görüntülerini nasıl "yeniden çizdiğini" anlayacağız ve mümkün olduğu sayesinde makaleleri analiz edeceğiz. Bu materyali okumadan önce ve genel olarak konviirel nöral ağların temelleri ile son yazıyı tanımak için tavsiye ederim. Küçük bir formül için bekliyorsunuz, küçük bir kod (örnekler theano ve lazanya'ya yol açacağım) ve birçok resim. Bu yazı, makalelerin ortaya çıkması ve buna göre fikirlerin kendileri için kronolojik prosedürde inşa edilmiştir. Bazen son deneyimimize rağmen onu seyrelteceğim. İşte dikkat çekmek için cehennemden bir çocuk.


Convinitional ağları görselleştirme ve anlama (28 Kas 2013)

Her şeyden önce, yazarların sinir ağının kara bir kutu olmadığını, ancak oldukça yorumlanabilecek bir şey olduğunu gösteren makaleyi belirtmekte fayda var (bu arada, bugün sadece bilgisayar için konvigatif ağlar hakkında söylenebilir. vizyon). Yazarlar, gizli katmanların nöronlarının aktivasyonunu nasıl yorumlamayı öğrenmeye karar verdiler, bunun için birkaç yıl önce önerilen dekonvumruvminir sinir ağını (Deconvnet) kullandılar (bu arada, aynı Zayler ve Fergus, yazarlar ve bu yayın). Dekonvumrik ağ aslında kasılmalar ve bloglarla aynı ağdır, ancak ters sırada uygulanır. Orijinal DeconVnet işleminde, ağ, eğitim modunda bir öğretmen olmadan görüntüler oluşturmak için kullanıldı. Bu sefer, yazarlar basitçe, ağın üzerindeki doğrudan geçişten sonra elde edilen işaretlerden, orijinal görüntüye kadar. Sonuç olarak, nöronlarda bu aktivasyona neden olan bir sinyal olarak yorumlanabilecek bir görüntü ortaya çıkar. Doğal olarak, soru ortaya çıkıyor: Karşıdaki geçişin bir evrişim ve doğrusal olmayan yoldan nasıl yapılması? Ve özellikle maksimum çekme yoluyla, kesinlikle ters bir işlem değildir. Üç bileşenin de dikkate alın.

Ters Reldur.

Bir aktivasyon işlevi genellikle kullanılırken Reldur (x) \u003d maksimum (0, x)Bu katmandaki tüm aktivasyonları negatif değildir. Buna göre, doğrusal olmayan yoldan geçiş ne zaman olumsuz sonuçlar elde etmek gerekir. Bunun için, yazarlar aynı relduru kullanmayı teklif eder. Theano mimarisinin bakış açısına göre, operasyonun degradesinin fonksiyonunu geçersiz kılmak için gereklidir (sonsuz değerli bir dizüstü bilgisayar, Lazagan'ın tariflerindedir, oradan ModifiedBackProp sınıfı için olanın ayrıntılarını idare edeceksiniz).

Class ZeilerbackProp (ModifiedBackProp): DEF Grads (öz, girişler, Out_grads): (inp,) \u003d Girişler (GRD,) \u003d Out_grads #Return (GRD * (GRD\u003e 0) .Astype (inp.dtype),) # Açıkça düzeltmek Geri dönüş (self.nonlinearity (grd),) # Verilen doğrusallığı kullanın

Ters matkap

Burada biraz daha karmaşıktır, ancak her şey mantıklıdır: Aynı kat çekirdeğinin transposed sürümünü uygulamak yeterlidir, ancak doğrudan geçişte kullanılan önceki katman yerine reelin çıkışlarına yeterlidir. Ama bu kadar açık olmayan kelimelerle, bu prosedürün görselleştirilmesine bakacağız (daha fazla paketi görselleştirmeyi bulacaksınız).


Stride ile kesilmiş \u003d 1

Stride ile kesilmiş \u003d 1 Ters versiyonu

Adımla kesilmiş \u003d 2

Adımla kesilmiş \u003d 2 Ters versiyonu

Ters Çekme

Bu, bu işlemdir (önceki aksine) genellikle ters çevrilmemiştir. Ama yine de zıt geçitte maksimumdan geçmek istedik. Bunun için yazarlar, maksimum doğrudan geçiş (maksimum konum anahtarı) olduğu bir harita kullanmayı teklif eder. Ters geçiş, giriş sinyali görünür, kaynak sinyalin yapısını yaklaşık olarak kaydetmeye dönüştürülür, ne tarif edeceğini görmek gerçekten daha kolaydır.



Sonuç

Görselleştirme algoritması son derece basittir:

  1. Doğrudan geçiş yapmak.
  2. Bize ilgi katmanını seçin.
  3. Bir veya daha fazla nöronun güvenli aktivasyonu ve geri kalanını sıfırlayın.
  4. Ters çıktı yapın.

Aşağıdaki resimdeki her gri kare, filtre görselleştirmesine (bir konvolite için kullanılır) veya bir nöronun ağırlıklarına karşılık gelir ve her renk resminin karşılık gelen nöronu aktive eden orijinal görüntünün parçasıdır. Netlik için, bir katmanın içindeki nöronlar tematik gruplara göre gruplandırılmıştır. Genel olarak, sinir ağının, Hewubel ve Weizel'in 1981'deki Nobel Ödülü'nün onurlandırıldığı görsel sistemin yapısı hakkında tam olarak öğrendiği şeydi. Bu makale sayesinde, her katmanda konviüzyonsal bir sinir ağı öğrendiklerinin görsel bir gösterimi aldık. Oluşturulan görüntünün içeriğini daha sonra manipüle etmenize izin verecek bu bilgidir, ancak bundan önce, aşağıdaki birkaç yıl, "ihanet" nöral ağlarının yöntemlerinin iyileştirilmesini geçti. Ek olarak, makalenin yazarları, en iyi sonuçları elde etmek için konviüzyonsal bir sinir ağ mimarisi oluşturmanın nasıl daha iyi olduğunu analiz etmenin bir yolunu önerdi (olsa, Imagenet 2013 kazanmadılar, ancak üste girdi; Güncellemek.: Taki kazanılacak, Clarifai onlar, onlar).


Görselleştirme fich


İşte Deconvnet kullanarak etkinleştirmeyi görselleştirme bir örneği, bugün bu sonuç zaten öylesine öylesine, ama sonra bir atılımdı.


Deconvnet kullanan muhteşem haritalar

Derin Convinyum Ağları: Görüntü sınıflandırma modellerini ve muhteşem haritalarını görselleştirme (19 Nis 2014)

Bu makale, konvigasyonel bir sinir ağında bulunan bilgileri görselleştirme yöntemlerinin incelenmesine ayrılmıştır. Yazarlar, gradyan inişine dayanarak iki görselleştirme yolu sunar.

Sınıf Modeli Görselleştirme

Öyleyse, bazı dersler için sınıflandırma görevini çözmek için eğitimli bir sinir ağımız olduğunu hayal edin. Sınıfa karşılık gelen çıkış nöronunun aktivasyonunun değeri ile belirtir c.. Sonra bir sonraki optimizasyon görevi bize tam olarak seçilen sınıfı en üst düzeye çıkaran görüntüyü verir:



Bu görev, theano kullanarak karar vermek kolaydır. Genellikle çerçeveden modelin parametrelerine göre bir türev almasını isteriz, ancak bu sefer parametrelerin sabit olduğuna ve türevin giriş görüntüsünden alındığına inanıyoruz. Aşağıdaki işlev, çıkış katmanının maksimum değerini seçer ve giriş görüntüsünün türevini hesaplayan bir işlev döndürür.


DEF Compile_Saliency_Function: "" "Belirgin bir MITITBATH için öngörülen sınıfları hesaplamak için bir işlevi derler." "" İNP \u003d NET ["Giriş"]. Input_var Outp \u003d lasagne.layers.get_output (net ["FC8 "], deterministik \u003d true) max_outp \u003d t.max (Outp, Axis \u003d 1) kurtuluş \u003d theano.grad (max_outp.sum (), wrt \u003d inp) max_class \u003d t.argmax (Outp, Axis \u003d 1) Theano iade. işlevi ()

Muhtemelen stajyerleri köpek köpekleri ile garip görüntüler gördünüz - DeepDream. Orijinal makalede, yazarlar seçilen sınıfı en üst düzeye çıkaran görüntüler oluşturmak için aşağıdaki işlemi kullanır:

  1. Zeros'un ilk görüntüsünü başlat.
  2. Bu görüntüdeki türevin değerini hesaplar.
  3. Sonuçtaki görüntüyü türevden ekleyerek görüntüyü değiştirin.
  4. 2. noktaya geri dönün veya bir döngüden çıkın.

Böyle görüntüler elde edilir:




Ve gerçek bir fotoğrafın ilk görüntüsünü başlatırsanız ve aynı işlemi çalıştırırsanız? Ancak her yinelemede, rastgele bir sınıf seçeceğiz, gerisini sıfırla ve türevin değerini hesaplayacağız, o zaman böyle derin bir rüya olacak.


DİKKAT 60 MB


Neden bu kadar çok köpek ve gözler? Her şey basit: 1000 sınıftan yaklaşık 200 köpek durumunda gözleri var. İnsanların sahip olduğu birçok sınıfın yanı sıra.

Sınıf Görüşürlüğü Ekstraksiyonu

Bu işlem gerçek fotoğrafla başlatılırsa, ilk yinelemeden sonra durun ve türevin değerini inkar ederse, o zaman böyle bir görüntüyü, hangisinin orijinaline ekleyerek alacağız, seçilen sınıfın aktivasyonunun değerini artıracağız. .


Türev kullanan muhteşem haritalar


Tekrar "so-so" sonucu. Bunun aktivasyonları görselleştirmenin yeni bir yolu olduğuna dikkat etmek önemlidir (hiçbir şey, son katta olmayan, ancak genel olarak ağın herhangi bir tabakası üzerinde aktivasyon değerlerini tamir etmemizi engellememiz ve giriş görüntüsünün bir türevini almalarını engellemektedir. Bir sonraki makale, önceki yaklaşımları birleştirecek ve bize servis hizmeti daha sonra açıklanacak tarza özelleştirmek için bize bir araç verir.

Sadelik için String: Tüm konvomitasyon net (13 Nis 2015)

Bu makale genellikle görselleştirme konusunda konuşmuyor, ancak pullea evrağının büyük bir saman ile değiştirilmesi, kalite kaybına yol açmaz. Ancak, araştırmalarının bir yan ürünü olarak, yazarlar, modeli öğrenenlerin daha doğru bir analizine uyguladıkları özelliği görselleştirmenin yeni bir yolunu sundular. Fikri şu şekildedir: eğer sadece bir türev alırsak, o zaman dekonvolüsyonlarla, giriş görüntüsündeki özellikler sıfırdan (giriş görüntüsü için Reldur'un kullanımı) dekonvolidasyon sırasında geri dönmez. Ve bu, negatif değerlerin öngörülen görüntüde göründüğü gerçeğine yol açar. Öte yandan, Deconvnet kullanıyorsanız, başka bir Reldur, Reldur Türevinden başka bir Reldur, geri dönmemenizi sağlar, ancak sonucu gördüğünüz gibi, "SO-SO-SO-SO" olarak ortaya çıkıyor. Peki ya bu iki yöntemi birleştirirseniz?




Sınıf GuidedBackProp (ModifiedBackProp): DEF Grad (öz, girişler, Out_grads): (inp,) \u003d Girişler (GRD,) \u003d OUT_GRADS DTYPE \u003d inp.dtype geri dönüş (GRD * (INP\u003e 0) .Astype (DType) * (GRD) \u003e 0) .AstyPy (dtype),)

Sonra tamamen temiz ve yorumlanabilir bir görüntü ortaya çıkar.


Kılavuzlu backpropagation kullanarak muhteşem haritalar

Daha derine git.

Şimdi bunu düşünelim, bize ne veriyor? Her koçluk katmanının, üç boyutlu bir tensör alan bir fonksiyon olduğunu ve çıkışa çıkışın bir fonksiyon olduğunu hatırlatayım, aynı zamanda üç boyutlu bir tensör verir, belki başka bir boyutsallaştırma sağlar d. X. w. X. h.; d.ePTH, katmandaki nöronların sayısıdır, her biri bir plaka üretir (özellik haritası) w.iGTH X. h.sEKİZ.


VGG-19 ağında aşağıdaki deneyleri tutmaya çalışalım:



conv1_2.

Evet, neredeyse hiçbir şey görmüyorsun çünkü Tarif alanı çok küçük, bu, sırasıyla 3x3'ün ikinci evrimidir, toplam alan 5x5'dir. Ancak arttıkça, özelliğin sadece bir degrade dedektör olduğunu göreceğiz.




conv3_3.


cONV4_3.


cONV5_3.


havuz5.


Ve şimdi bir RAID'de maksimum bir yerine, belirtilerin tüm elemanlarının türev değerini giriş görüntüsündeki türev değerini alacağız. Sonra, nöron grubunun tarifi alanı tüm giriş görüntüsünü kapsayacaktır. Erken katmanlar için, bunların çiçek dedektörleri olduğu sonucuna vardığımız parlak kartlar göreceğiz, daha sonra gradyanlar, daha sonra kalıpların komplikasyonu yönündedir. Katmanı daha derin, o kadar donuk görüntü ortaya çıkar. Bu, daha derin katmanların, algıladıkları daha karmaşık bir desen ve karmaşık modelin daha az sıklıkla göründüğü, bu nedenle, aktivasyon haritası daha az sıklıkla göründüğü gerçeğiyle açıklanmaktadır. İlk yöntem, karmaşık desenli katmanları anlamak için uygundur ve ikincisi sadece basittir.


conv1_1


conv2_2.


cONV4_3.


Birkaç resim için daha eksiksiz bir aktivasyon veritabanı indirebilirsiniz.

Sanatsal tarzın nöral bir algoritması (2 Eyl 2015)

Dolayısıyla, sinir ağının ilk başarılı trepanasyon anından birkaç yıl geçti. Biz (anlamda - insanlıkta) ellerde güçlü bir araç vardır, bu, sinir ağı neyin öğrendiklerini anlamayı mümkün kılan ve ayrıca öğrenmek için gerçekten neyi sevmeyeceğimiz şeyleri kaldırır. Bu makalenin yazarları, bir görüntünün bir hedef görüntü için benzer bir aktivasyon kartı oluşturmasını sağlayan ve belki de bir şey bile olmamasına izin veren bir yöntem geliştiriyor - bu stilizasyonun temelidir. Girişte beyaz gürültüye ve derin rüyada olduğu gibi benzer bir yineleme sürecini hizmet ediyoruz, bu imajı işaret belirtileri hedef görüntüye benzer şekilde sunuyoruz.

İçerik kaybı

Daha önce de belirtildiği gibi, sinir ağının her bir katmanı, bir boyuttaki üç boyutlu bir tensör üretir.




Yoluyla belirtir bEN.Girişten katman. Sonra giriş görüntüsü arasındaki ağırlıklı toplamı en aza indirirsek ve çaba gösterdiğimiz bazı resimler c., sonra tam olarak ihtiyacınız olanı ortaya çıkar. Muhtemelen.



Bu makaleye sahip deneyler için, bu sihirli dizüstü bilgisayar kullanılabilir, orada hesaplamalar meydana gelir (hem GPU hem de CPU'da). GPU, sinir ağının özelliğini ve maliyet fonksiyonunun değerini hesaplamak için kullanılır. Theano, hedef fonksiyonun degradesini hesaplayabilen bir fonksiyon verir. eval_grad. Giriş görüntüsünde x.. O zaman hepsi LBFGS'de servis edilir ve yinelemeli işlem başlatılır.


# Bir gürültü görüntüsü ile başlatma jenerated_image.set_value (Floatx (np.random.uniform (-128, 128, (1, 3, Image_w, Image_W)))) x0 \u003d jenenated_image.get_value (). Astype ("float64") XS \u003d xs.Append (x0) # Optimize edin, sonuç aralığında periyodik olarak (8): Print (i) SCIPY.OPTIMIE.FMIN_L_BFGS_B (EVAL_LOSS, X0.FTTEN (), FPRIME \u003d EVAL_GRAD, MAXFUN \u003d 40) X0 \u003d generated_image.get_value (). Astype ("float64") xs.Append (x0)

Böyle bir fonksiyonun optimizasyonunu başlatırsak, hızla hedefe benzer bir görüntü elde ederiz. Şimdi bazı içerik görüntüsüne benzer görüntüleri yeniden yaratabiliriz.


İçerik kaybı: CONV4_2



Süreç Optimizasyonu




Alınan görüntünün iki özelliğine dikkat çekmek kolaydır:

  • renkler kayboldu - bu, belirli bir örnekte, yalnızca bir Conved4_2 tabakası (veya başka bir deyişle, W ile birlikte ağırlık olarak ve kalan sıfır katmanlar için) kullanılan gerçeğin sonucudur; Hatırladığınız gibi, renkler ve degrade geçişleri hakkında bilgi içeren erken katmanlardır ve daha sonra gözlemlediğimiz daha büyük ürünler hakkında bilgi içermektedir - renkler kaybolur ve içerik yoktur;
  • bazı evler "gitti", yani. Düz çizgiler hafifçe bükülmüş - bunun nedeni, daha derin tabaka, özelliğin mekansal pozisyonu hakkında daha az bilgi bulunmasıdır (paket ve kayalıkların kullanımının sonucu).

Erken katmanlar eklemek hemen çiçeklerle durumu düzeltir.


İçerik kaybı: CONV1_1, CONV2_1, CONV4_2


Umarım bu nokta için, beyaz gürültüden bir resimde ne sapkın olacağını idare edebileceğinizi hissettiğinizde.

Stil kaybı.

Ve bu yüzden en ilginç olana vardık: Stilini geçmemiz için ne var? Stil nedir? Açıkçası, stil içerik kaybında optimize ettik "e, çünkü özelliklerin mekansal pozisyonları hakkında çok fazla bilgi var. Böylece yapılacak ilk şey, bu bilgiyi elde edilen temsillerden kaldırmanın herhangi bir yoludur. her katman.


Yazar, aşağıdaki yolu sunar. Bazı katmandan çıkışta bir tensör alıyoruz, mekansal koordinatlar üzerinde genişleyeceğiz ve kalıplar arasındaki kovaryans matrisini göz önünde bulunduracağız. Bu dönüşümü olarak belirtir G.. Aslında ne yaptık? Zarların içinde ne sıklıkla işaretlerin çiftler halinde bulunduğunu saydığımız söylenebilir veya başka bir deyişle, çok boyutlu normal bir dağılımla olanlardaki işaretlerin dağılımını yaklaştırdık.




Sonra stil kaybı aşağıdaki gibi girilir. s. - Bu stil ile bazı resim:



Vincent için deneyelim mi? Elde ediyoruz, prensip olarak, beklenen bir şey Van Gogh tarzındaki gürültü, özelliklerin mekansal konumu hakkında bilgi tamamen kayboldu.


Vincent




Peki ya stil yerine bir fotoğraf koyarsan? Zaten bilinen özellikler, tanıdık renkler, ancak mekansal pozisyon tamamen kaybolur.


Stil kaybı ile fotoğraf


Elbette merak etti, neden kovaryans matrisini hesaplıyoruz, başka bir şey değil mi? Ne de olsa, mekansal koordinatların kaybolması için işaretlerin toplamanın birçok yolu vardır. Bu gerçekten açık bir sorudur ve çok basit bir şey alırsanız, sonuç önemli ölçüde değişmez. Kontrol edelim, kovaryans matrisini hesaplayacağız, ancak her zarın ortalama değerini hesaplayacağız.




basit stil kaybı

Kombine kaybı

Doğal olarak, maliyetin bu iki işlevini karıştırmak için bir arzu ortaya çıkar. Ardından, içerik-görüntünün (mekansal koordinatlara bağlanması olan) ve mekansal koordinatlara bağlı olmayan "stil" işaretlerinden oluşan beyaz gürültüden oluşacağız, yani, yani İçeriğin içeriğinin ayrıntılarının yerlerinden sağlam kalacağını, ancak istenen tarzla yeniden çizileceğini umuyoruz.



Aslında, düzenli bir düzenleyici var, ancak sadelik için tanımlayacağız. Bir sonraki soruyu cevaplamak için kalır: optimize ederken ne tür katmanlar (ağırlık) kullanır? Ve bu soruya bir cevabım olmadığımdan ve ayrıca makalenin yazarlarına da korkarım. Aşağıdakileri kullanacak bir teklifi var, ancak başka bir kombinasyonun daha da kötüleşeceği, çok fazla arama alanı olması anlamına gelmez. Modelin anlayışından takip eden tek kural: komşu katmanları almak hiç mantıklı değil, çünkü Birbirlerinden işaretler farklı olmayacaklar, çünkü stil her grup için bir katmanla eklenir.


# Kaybı fonksiyon kaybını tanımlar \u003d # içerik kaybı kaybı .Ark (0.001 * Content_loss (Photo_Features, Gen_Features, "Conv4_2")) # stil kaybı kaybı .Apt (0.2e6 * style_loss (art_features, gen_features, "Conv11_1")) zararlar .Append (Art_features, gen_features, "conv2_1")) zararlar.append (0.2E6 * style_loss (art_features, gen_features, "conv33_1")) zararlar.append (0.2e6 * style_loss (art_features, gen_features, "" conv4_1 ")) kayıplar.append ( 0.2e6 * Style_loss (Art_Features, Gen_Features, "Conv5_1")) # toplam varyasyon cezası kaybı .Ark (0.1e-7 * total_variation_loss (jeneralty_image)) total_loss \u003d toplamı (kayıplar)

Son model aşağıdaki formda gösterilebilir.




Ancak Van Gogh'lu evlerin sonucu.



İşlemi kontrol etmeye çalışın

Önceki parçaları, şu anki makalenin önündeki iki yıl önce hatırlayalım, diğer bilim adamları sinir ağını gerçekten öğrenenleri araştırdı. Tüm bu makalelerle donanmış, çeşitli stillerin, çeşitli görüntülerin, çeşitli izinlerin ve boyutların özelliklerinin görselleştirilmesini iyileştirebilir ve hangi katmanların ne kadar kilo alacağını anlamaya çalışmayı deneyebilirsiniz. Ancak katmanların döşemesi bile, neler olup bittiğini tam olarak kontrol etmez. Buradaki sorun daha kavramsaldır: bu işlevi optimize etmiyoruzK! Nasıl soruyorsun? Cevap basittir: Bu özellik bir artıkları en aza indirir ... Peki, anladığınızdır. Ama gerçekten istediğimiz şey, görüntüden hoşlanmamız. İçerik ve stil kaybının dışbükey kombinasyonu, zihnimizin güzel olduğunu düşündüğü gerçeğinin bir ölçüsü değildir. Çok uzun süre stilizasyona devam ederseniz, maliyet fonksiyonu doğal olarak aşağı ve aşağıda düşer, ancak sonucun estetik güzelliği keskin bir şekilde düşer.




Tamam, tamam, başka bir sorun var. İhtiyacınız olan işaretleri kaldıran bir katman bulduğumuzu varsayalım. Bazı üçgen dokular olduğunu varsayalım. Ancak bu katman hala ortaya çıkan görüntüde görmek istemediklerimizin çevreleri gibi birçok başka işaret içeriyor. Genel olarak konuşursak, bir milyon çince kiralayabilseydiniz, tarzın tarzının tüm özelliklerini görselleştirebilirsiniz ve tam refah, sadece ihtiyacımız olanları not edin ve sadece maliyet fonksiyonuna dahil edin. Ancak bariz nedenlerden dolayı bu çok basit değil. Fakat, sadece stilin tarzından sonucu görmek istemediklerimizin tüm çevreleri silersek? Sonra sadece çalışmazlar. Dairelere tepki veren ilgili nöronları etkinleştirin. Ve elbette, sonra ortaya çıkan resimde görünmeyecek. Çiçeklerle aynı. Çok sayıda renkle parlak bir görüntü hayal edin. Renklerin dağılımı boşluk boyunca çok kusurlu olacaktır, aynı görüntünün dağılımı olacaktır, ancak optimizasyon sürecinde, orijinalde bulunan bu zirveler muhtemelen kaybedilir. Renk paleti renginde basit bir düşüşün bu sorunu çözdüğü ortaya çıktı. Çoğu renkteki dağılım yoğunluğu sıfır olacaktır ve birkaç bölümde büyük zirveler olacaktır. Böylece, Photoshop'taki orijinali manipüle ederek, görüntüden alınan işaretleri manipüle ediyoruz. Bir kişinin, arzularını, matematiğin dilinde formüle etmeye çalışmaktan daha kolaydır. A kadar. Sonuç olarak, imalatçılar ve yöneticiler, işaretleri görselleştirmek için Photoshop ve komut dosyaları ile donanmış, sonuçları üç kez elde edildi, sonuç, programcıları olan matematiğin daha iyi olduğu.


Renginin manipülasyonunun bir örneği ve özelliklerin boyutu


Ve bir stil olarak basit bir görüntü alabilirsin



Sonuçlar








Ve işte bir widget, ancak sadece istenen doku ile

Doku ağları: Dokuların ve stilize görüntülerin beslenme sentezi (10 Mar 2016)

Bir nüans değilse, bunun durdurulabileceği anlaşılıyor. Yukarıda açıklanan stilizasyon algoritması çok uzun süre çalışır. LBFG'lerin CPU'da başladığında bir fark edinirseniz, işlem beş dakika sürer. Hem optimizasyonun GPU'ya gitmesi için yeniden yazarsanız, işlem 10-15 saniye sürer. Her yerde iyi değil. Belki de bunun yazarları ve bir sonraki makalenin aynı şeyi düşünüyor. Her iki yayın, önceki makalenin neredeyse bir yılından sonra, 17 gün farkı ile bağımsız olarak çıktı. Mevcut makalenin yanı sıra öncekinin yazarlarının yazarları, dokuların oluşturulmasıyla meşgul (eğer sadece stil kaybını sıfırlarsanız, yaklaşık olarak başarılı olur). Beyaz gürültüden elde edilen bir görüntüyü değil, stilize bir görüntü oluşturan bir sinyal ağını optimize etmeyi teklif ettiler.




Şimdi stilizasyon işlemi herhangi bir optimizasyonu içermiyorsa, yalnızca doğrudan bir geçiş gereklidir. Ve optimizasyon, bir ağ üreticisi için sadece bir kez bir kez çalışması gerekir. Bu makale, her bir sonraki yerde bir hiyerarşik jeneratör kullanır. z. Boyut, önceki birinden daha büyük ve doku üretimi durumunda ve bir stilist için belirli bir görüntü tabanından gelen gürültüden daha büyüktür. Imajne'nin eğitim bölümünden farklı bir şeyi kullanmak çok önemlidir, çünkü Kayıp ağının içindeki özellikler, sadece eğitim bölümünde eğitilmiş ağ tarafından hesaplanır.



Gerçek zamanlı stil transferi ve süper çözünürlük için algısal kayıplar (27 Mar 2016)

Adından görülebileceği gibi, üreten ağ fikri ile ilgili sadece 17 gün boyunca geç kalan yazarlar, görüntü çözünürlüğünde bir artışa girmiştir. Görünüşe göre son etkinlikte artık öğrenmenin başarısından ilham alıyorlardı.




Buna göre, rezidüel blok ve konvi blok.



Böylece, şimdi elinizde bulunduk. Stilizasyonun kontrol edilmesine ek olarak, ayrıca hızlı bir jeneratör var (bu iki makale sayesinde, bir görüntünün üretim süresi, onlarca MS ile ölçülür).

Bitirme

İlk video stilizasyon uygulamasını stillendirmek için başka bir uygulama oluşturmak için bir başlangıç \u200b\u200bnoktası olarak kullanılan makalelerden ve yazar kodlarından gelen bilgiler:



Böyle bir şey üret.


Ağustos 2015'ten bu yana, Tübingen Üniversitesi'nden Alman Araştırmacıları, ünlü sanatçıların tarzını diğer fotoğraflara yaptıklarını, bu fırsatın para kazandığı ortaya çıkmaya başladılar. Batı pazarında başlatıldı ve Rusça - tam kopyası.

Yer imlerine

Ostagram'ın Aralık ayında geri fırlatıldığı gerçeğine rağmen, Nisan ayının ortalarında sosyal ağlarda hızlı bir şekilde popülerlik kazanmaya başladı. Aynı zamanda, 19 Nisan'da VKontakte'deki projede bin kişiden daha az insan vardı.

Servisi kullanmak için, iki resim hazırlamanız gerekir: işlenecek bir fotoğraf ve orijinal resimde yerleştirmek için bir stil örneği olan bir resim.

Servis ücretsiz bir versiyona sahiptir: resmin en uzun tarafı boyunca 600 piksel kadar minimum çözünürlükte bir görüntü oluşturur. Kullanıcı, fotoğrafa uygulanan filtrenin yinelemelerinden yalnızca birinin sonucunu alır.

Ücretli sürümler İki: Premium, en uzun taraf boyunca 700 piksele kadar bir resim sunar ve nöral ağın (daha fazla yineleme, daha ilginç ve daha yoğun bir işlem) 600 yineleme imajı için geçerlidir. Böyle bir anlık görüntü 50 ruble olacak.

HD versiyonunda, yineleme sayısını ayarlayabilirsiniz: 100 50 ruble ve 1000 - 250 ruble mal olacak. Bu durumda, görüntü en uzun taraf boyunca 1200 piksele kadar bir çözünürlüğe sahip olacak ve tuval üzerine baskı yapmak için kullanılabilir: Ostagram, 1800 ruble'den teslimatla böyle bir hizmet sunar.

Şubat ayında, kullanıcılardan "gelişmiş kapitalizme olan ülkelerden", ancak daha sonra dünyanın dört bir yanından "Vkontakte" kullanıcılar için fotoğraf işleme işlemlerine erişime erişen Ostagram temsilcileri. Github'da yayınlanan Ostagram koduyla yargılanan Sergei Morugin, 30 yaşındaki Nizhny Novgorod'un ikamet ettiği, gelişimi ile meşguldü.

TJ, Andrey tarafından tanıtılan projenin ticari direktörlüğüne başvurdu. Ona göre, Ostagram instapain yapmadan önce ortaya çıktı, ancak VIPART adlı benzer bir projeden ilham aldı.

Ostagramın gelişimi, NSTU'dan bir grup öğrenciye nişanlandı. Alekseeva: 2015 yılı sonunda dar bir arkadaş grubunda ilk testten sonra, proje halka açık hale getirildi. Başlangıçta, görüntü işleme tamamen ücretsizdi ve basılı resimlerin satışında para kazanması planlandı. Andrei'ye göre, mühür en büyük sorun olduğu ortaya çıktı: Nöral araçlarla tedavi edilen fotoğraf insanları nadiren insan gözleri için güzel görünüyorlar ve son müşterinin büyük makine kaynakları gerektiren tuvale uygulamadan önce sonucu uzun süre özelleştirmesi gerekiyor. .

Görüntü işleme için, Ostagram'ın yaratıcıları Amazon Cloud Sunucularını kullanmak istedi, ancak kullanıcıların akışından sonra, maliyetlerinin minimum yatırım getirisi ile günde bin dolar'ı geçeceği açıkça ortaya çıktı. Andrei, aynı anda projenin yatırımcısı olarak, Nizhny Novgorod'da sunucu gücü kiraladı.

Bununla birlikte, projenin izleyicisi günde yaklaşık bin kişilerdir, ancak bazı günlerde, yurtdışından önce projeyi farketmeyi başarmış olan yabancı medyadan geçiş masraflarında 40 bin kişiye ulaştı (Ostagram bile Avrupa DJ'leriyle yükselmeyi başardı) . Geceleri, trafik düşük olduğunda, görüntü işleme 5 dakika içinde gerçekleşebilir ve bir saat kadar işgal etmek.

Daha önce yabancı kullanıcıların, görüntü işleme konusundaki bilinçli bir şekilde sınırlı bir şekilde erişimine sahipse (Rusya ile başlamak için para kazanmayı başlatmak için), şimdi Ostagram zaten Batı izleyicilerinde sayılıyor.

Bugüne kadar, geri ödeme beklentileri şartlıdır. Her kullanıcı 10 ruble işleme koymuşsa, belki de kaynar olurdu. [...]

Ülkemizde para kazanmak için çok çalışıyoruz: Bir hafta beklemeye hazırız, ancak bunun için bir kuruş ödemeyeceğiz. Bunun için Avrupalılar daha elverişlidir - bir kaldırma, kalite iyileştirme için ödeme açısından - bu nedenle, oryantasyon piyasaya sürülür.

Andrei, Temsilci Ostagram

Andrei'ye göre, Ostagram ekibi sitenin yeni bir versiyonunda sosyallikte büyük bir önyargı ile çalışıyor: "Tanınmış bir hizmete benzer, ama ne yapmalı." Proje, Rusya'daki Facebook temsilcilerinin zaten ilgi duyuyordu, ancak satıştaki müzakerelerden önce hizmete ulaşmadı.

Hizmet örnekleri

Ostagram web sitesindeki şeritte, hangi görüntülerin nihai resimlerin ortaya çıktığı kombinasyonunu görmek de mümkündür: bu genellikle sonuçtan daha da ilginçtir. Aynı zamanda, filtreler işleme için bir etki olarak kullanılan resimlerdir - daha fazla kullanım için kaydedilebilir.