ebsynth
adalah alat serbaguna untuk sintesis gambar contoh. Ini dapat digunakan untuk berbagai tugas sintesis gambar, termasuk sintesis tekstur terpandu, transfer gaya artistik, pengecatan sadar konten, dan resolusi super.
Fokus dari ebsynth
adalah menjaga kesetiaan materi sumber. Tidak seperti pendekatan terbaru lainnya, ebsynth
tidak bergantung pada jaringan saraf. Sebaliknya, ia menggunakan implementasi algoritma sintesis tekstur non-parametrik yang canggih. Berkat sifatnya yang berbasis tambalan, ebsynth
menghasilkan hasil yang tajam, yang mempertahankan semua detail halus yang ada pada gambar aslinya.
ebsynth -style -guide -output
-style
-guide
-weight
-uniformity
-patchsize
-pyramidlevels
-searchvoteiters
-patchmatchiters
-extrapass3x3
-backend [cpu|cuda]
Biner Windows bawaan dapat diunduh dari sini: http://jamriska.cz/ebsynth/ebsynth-win64.zip.
Contoh pertama menunjukkan cara melakukan sintesis tekstur dasar terpandu dengan ebsynth
. Kasus penggunaan ini pertama kali diusulkan dalam makalah Image Analogies asli [1], yang mereka sebut 'tekstur demi angka'. Kita mulai dengan memotret pemandangan alam beserta segmentasinya (misalnya batu dicat hijau, langit dicat biru):
ebsynth -style source_photo.png -guide source_segment.png target_segment.png -output output.png
Selanjutnya, kami melukis segmentasi target dengan tangan, dan kami meminta ebsynth
untuk menghasilkan 'foto' baru yang cocok dengan itu. Dalam bahasa transfer gaya: kami ingin mentransfer gaya foto sumber ke segmentasi target dengan cara yang menghormati segmen individual. Segmentasi bertindak sebagai panduan untuk sintesis.
Contoh ini menunjukkan cara mencapai rendering non-fotorealistik dengan ebsynth
. Hal ini didasarkan pada karya Fišer et al. [7]. Tujuannya adalah untuk membuat model 3D seperti yang dilakukan seorang seniman. Secara khusus, kami ingin menangkap cara seorang seniman menyampaikan berbagai efek pencahayaan, seperti sorotan, bayangan kontak, dan pantulan tidak langsung. Untuk itu, kami menyiapkan adegan referensi sederhana dengan bola yang menyala, dan membiarkan seniman menggambarnya sesuai gayanya. Kami menggunakan pelacak jalur siap pakai untuk menghasilkan lintasan render terpisah, misalnya, iluminasi global penuh, hanya komponen difusi langsung, hanya pantulan tidak langsung, dll. Selanjutnya, kami merender rangkaian lintasan yang sama untuk model 3D target dan menggunakannya sebagai panduan untuk ebsynth
.
ebsynth -style source_style.png
-guide source_fullgi.png target_fullgi.png -weight 0.66
-guide source_dirdif.png target_dirdif.png -weight 0.66
-guide source_indirb.png target_indirb.png -weight 0.66
-output output.png
Dibandingkan dengan tekstur demi angka, perbedaan utamanya di sini adalah kami sekarang memiliki beberapa saluran panduan. Perhatikan bahwa panduan selalu berpasangan: panduan sumber terlebih dahulu, panduan target kedua. Untuk hasil yang lebih baik, kami mungkin ingin meningkatkan kontribusi panduan terkait gaya. Pada contoh di atas, gaya memiliki bobot default 1,0, sedangkan saluran panduan masing-masing memiliki bobot 0,66. Singkatnya, total bobot panduan adalah 2,0, sehingga menghasilkan rasio panduan dan gaya 2:1.
Contoh ini menunjukkan bagaimana seseorang dapat menggunakan ebsynth
untuk mentransfer gaya lukisan potret ke foto orang lain. Hal ini didasarkan pada karya Fišer et al. [8]. Tujuannya adalah untuk mereproduksi nuansa halus lukisan sumber, dengan tetap menjaga identitas orang yang dituju. Artinya, kami ingin orang tersebut tetap dapat dikenali setelah sintesis.
Berbeda dengan StyLit, dalam pengaturan ini kami tidak memiliki referensi geometri 3D untuk digunakan sebagai panduan. Namun, kita dapat memanfaatkan fakta bahwa baik lukisan sumber maupun foto target memuat wajah manusia yang memiliki struktur yang jelas. Kami akan menggunakan struktur ini untuk menyimpulkan informasi panduan yang diperlukan.
ebsynth -style source_painting.png
-guide source_Gapp.png target_Gapp.png -weight 2.0
-guide source_Gseg.png target_Gseg.png -weight 1.5
-guide source_Gpos.png target_Gpos.png -weight 1.5
-output output.png
Secara khusus, kami mendeteksi penanda wajah pada gambar target dan sumber, dan menggunakannya untuk menghasilkan panduan segmentasi lembut Gseg
, dan panduan posisi Gpos
, yang pada dasarnya adalah bidang warp padat yang memetakan setiap piksel target ke posisi yang sesuai di sumbernya. . Untuk menjaga identitas orang tersebut, kami menggunakan panduan penampilan Gapp
, yang merupakan versi skala abu-abu dari foto target yang disamakan agar sesuai dengan pencahayaan lukisan sumber.
Kode ini dilepaskan ke domain publik. Anda dapat melakukan apapun yang Anda inginkan dengannya.
Namun, Anda harus menyadari bahwa kode tersebut mengimplementasikan algoritma PatchMatch, yang dipatenkan oleh Adobe (Paten AS 8.861.869). Teknik lain mungkin juga dipatenkan. Anda bertanggung jawab untuk memastikan bahwa Anda tidak melanggar hak pemegang paten mana pun dengan menggunakan kode ini.
Jika Anda merasa kode ini berguna untuk penelitian Anda, harap kutip:
@misc{Jamriska2018,
author = {Jamriska, Ondrej},
title = {Ebsynth: Fast Example-based Image Synthesis and Style Transfer},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/jamriska/ebsynth}},
}