Real-ESRGAN görüntü büyütme uygulaması için ek özelliklere sahip çoklu platformlu bir kullanıcı arayüzü. waifu2x-caffe'den ilham alınmıştır.
README çevirileri
- 简体中文 (Basitleştirilmiş Çince)
- English
- Ukraynaca (Українська) @kirill0ermakov tarafından
- Türkçe (Turkish) @NandeMD tarafından
Bu uygulama, Real-ESRGAN'ın taşınabilir çalıştırılabilir dosyası olan Real-ESRGAN-ncnn-vulkan'ı kullanarak sağlanan resmi son derece yüksek kalitelere çıkartır. Python dili ile yazılmıştır ve Tkinter ile kullanıcı dostu bir arayüz sunar.
Hızlı başlangıç:
-
Release
bölümünden en son sürümrealesrgan-gui-windows-bundled-v*.7z
dosyasını indirin, arşivi çıkarın verealesrgan-gui.exe
uygulamasını çalıştırın. -
Release
bölümünden en son sürümrealesrgan-gui-ubuntu-bundled-v*.tar.xz
dosyasını indirin, arşivi çıkarın verealesrgan-gui
uygulamasını çalıştırın. -
Release
bölümünden en son sürümrealesrgan-gui-macos-appbundle-v*.tar.xz
dosyasını indirin, arşivi çıkarın; terminaldechmod u+x "Real-ESRGAN GUI.app/Contents/MacOS/realesrgan-gui"
,chmod u+x "Real-ESRGAN GUI.app/Contents/MacOS/realesrgan-ncnn-vulkan"
vexattr -cr "Real-ESRGAN GUI.app"
kodlarını yürütün, sonrasındaReal-ESRGAN GUI
uygulamasını çalıştırın.
Tip
Real-ESRGAN-ncnn-vulkan, Nisan 2022'den beri güncelleme almamakta. Bunun yerine hâlâ destek alanupscayl/upscayl-ncnn fork'unu kullanabilirsiniz.
upscayl-bin[.exe]
dosyasını Real-ESRGAN GUI'nin içine yerleştirdiğinizde öncelikli olarak kullanılacaktır.
Notlar
- Real-ESRGAN-ncnn-vulkan'ın çalıştırılaiblir dosyası ve modelleri,
realesrgan-gui-windows.7z
içinde bulunmadığından buradan manuel olarak indirip Real-ESRGAN GUI ile aynı klasör içerisine koymanız gerekmektedir. - GitHub Actions'daki ögeler, son git commit'lerine dayanır, dolayısıyla Real-ESRGAN-ncnn-vulkan'ın çalıştırılabilir dosyasını ve modellerini içermez.
- Real-ESRGAN GUI'yi kaynak koddan çalıştırmak isterseniz Python 3.10 veya daha üst bir sürüm kullanmanız gerekmekte. Ayrıca
python main.py
komutunu yürütmeden önce Real-ESRGAN-ncnn-vulkan'ı klasöre çıkarmayı vepip install -r requirements.txt
ile de GUI'nin gereksinimlerini yüklemeyi unutmayın. - Real-ESRGAN GUI'yi farklı Linux dağıtımlarında da çalıştırmak mümkün olabilir ancak bu test edilmemiştir.
Real-ESRGAN GUI'ye katkı yapmayı düşünüyorsanız lütfen CONTRIBUTING.md dosyasına göz atın.
arm64
derlemelerinin universal2
derlemelerinden daha iyi performans gösterdiği test edilmiştir. Eğer Apple Silicon kullanıyorsanız kendinizin bir arm64 derlemesi yapmanız önerilir.
# 1. Bu depoyu klonlayın.
git clone https://github.com/TransparentLC/realesrgan-gui.git
cd realesrgan-gui
# 2. Paketlemeyi başlatmak için komut satırı betiğini başlatın. Projenin son sürümü tk sürüm 8.6 gerektirirken Python 3.10 ise tk sürüm 8.5 ile gelir, dolayısıyla paketleme işlemi Python3.11 içeren ortamdan yapılmalıdır. Paketlemeyi başlatmadan önce terminale `python3 -V` yazarak mevcut sürümün Python 3.11 olduğundan emin olun.
# "sudo pyinstaller realesrgan-gui-macOS-arm64.spec" için şifreniz gerekecektir.
sh Build-macOS-arm64.sh
# 3. Paketlenen uygulama "./realesrgan-gui/dist/Real-ESRGAN GUI.app" konumuna kaydedilecektir.
Warning
- Real-ESRGAN'ı Android'de kullanın: tumuyan/RealSR-NCNN-Android
- Real-ESRGAN ve Vapoursynth'le video kalitesini artırın: HolyWu/vs-realesrgan
Real-ESRGAN-GUI, Real-ESRGAN-ncnn-vulkan'da halihazırda bulunanlar haricinde aşağıdaki ek özellikleri de sunar:
- İsteğe bağlı boyuta yükseltme
- Real-ESRGAN-ncnn-vulkan (seçilen modele göre) görsel boyutunu sadece 2-4x gibi sabit değerlerde yükseltebilir.
- Real-ESRGAN GUI, Real-ESRGAN-ncnn-vulkan'ı kullanarak görsel boyutunu birkaç kez yükseltir ve sonrasında genel görsel boyut değiştirme algoritmalarını kullanarak ana görsel boyutunu istenilen düzeye indirir.
- Örneğin 640x360'lık bir görseli 2x'lik bir modeli kullanarak 1600 piksellik ene yükseltmek istediğinizde kaynak görsel ilk önce 1280x720 boyutuna, sonra da 2560x1440 boyutuna olmak üzere iki kez yükseltilir ve 1600x900 boyutuna düşürülür.
- Görsel boyutunu düşürmek için varsayılan algoritma Lanczos'dur ancak istenildiği takdirde kullanıma hazır başka algoritmalar da mevcuttur.
- GIF Dosyaları
- Hareketli GIF dosyaları karelere ayrılır ve süresi okunur. Sonrasında her karenin boyutu teker teker yükseltilir ve kareler geri birleştirilerek boyutu yükseltimiş bir GIF elde edilir.
- Sürükle-Bırak Desteği
- Görselleri veya görselleri içeren klasörleri arayüze sürüklediğinizde giriş ve çıkış dosya yolları otomatik olarak ayarlanır.
- Çıkış dosya yolu, seçilen boyutlandırma moduna göre x4, w1280, h1080 gibi ekler içerir.
- Karanlık Tema
- Sisteminizin ayarlarına göre aydınlık veya karanlık tema seçilir.
- Tema seçimi, darkdetect ile yapılır.
- macOS için mevcut değildir?
- Çoklu dil desteği
- Mevcut olarak basitleştirilmiş ve geleneksel Çince, İngilizce, Ukraynaca ve Türkçe desteklenmektedir.
- Dil seçimi için
locale.getdefaultlocale
kullanılır. - Eğer sistem dilinde çeviri mevcut değilse otomatik olarak İngilizce seçilir.
i18n.ini
dosyasını düzenleyerek çevirinizi ekleyebilir veya var olan çevirileri geliştirebilirsiniz. Her türlü katkınıza açığız!- Dilinizi
i18n.ini
'ye ekledikten sonragenerate_locales_map.py
dosyasını çalıştırarak sağlanan çıktıdakilocales_map
değişkeini sonuna kadar kopyalayın. Daha sonra kopyaladığınız değişkenii18n.py
dosyasındakiyle değiştirin. Eğergenerate_locales_map.py
çalıştırmakta sıkıntı yaşadıysanız komut satırındapip install -r requirements.txt
yaparak gereksinimleri yükledikten sonra tekrar deneyin. - Eğer
generate_locales_map.py
ile uğraşmak istemiyorsanız dil kodunuzu ve dilinizin görünürdeki ismini doğrudani18n.py
dosyasının içindekilocales_map
değişkenine kendi dilinizi ekleyebilirsiniz.
- Dilinizi
Nearest Neighbor | Lanczos | waifu2x-caffe | Real-ESRGAN |
---|---|---|---|
Nearest Neighbor | Lanczos | waifu2x-caffe | Real-ESRGAN |
---|---|---|---|
Nearest Neighbor | Real-ESRGAN |
---|---|
Nearest Neighbor | Real-ESRGAN |
---|---|
- waifu2x-caffe örnekleri,
UpResNet10
veUpPhoto
modelleriyle seviye 3 gürültü düşürme ve TTA ayarları kullanılarak alınmıştır. - Real-ESRGAN örnekleri,
realesrgan-x4plus-anime
verealesrgan-x4plus
modelleriyle TTA ayarı kullanılarak alınmıştır. - Orijinal görsel boyutları 4 katına çıkarılmıştır.
- Örneklerdeki GIF'ler, dosya boyutunu düşürmek amacıyla kayıplı şekilde sıkıştırılmıştır.
Gerçek hayat fotoğrafları için realesrgan-x4plus
, anime tarzı görseller için realesrgan-x4plus-anime
önerilir.
Aynı modelin farklı boyut yükseltme oranları için görseli yükselteceğiniz oranın üstündeki bir değeri seçmeniz tavsiye edilir. Örneğin bir modelin 2x ve 4x varyasyonları varsa ve siz görseli 3x yükseltmek istiyorsanız o zaman modelin 4x varyasyonunu seçmelisiniz.
Adında animevideo
barındıran modeller, anime videoları için tasarlanmıştır. Bu modeller küçüktür ve daha yüksek işlem hızına (realesrgan-x4plus-anime
'ye göre yaklaşık 1,5 ila 3 kat arası) sahiptir. Ancak Real-ESRGAN GUI, video işlemeyle alakalı özellikler eklemeyi düşünmemektedir.
Ek modelleri buradan indirerek bin
ve param
dosyalarını models
klasörüne koyabilirsiniz. Bu ek modeller, özellikle gerçek hayat fotoğrafları için daha iyi (veya daha kötü) sonuçlar ortaya çıkartabilir.
Bu parametre, Real-ESRGAN-ncnn-vulkan'ın -t tile-size
parametresine denk gelmektedir. Çoğu senaryoda "otomatik" seçeneğini seçebilir ya da yeterince büyük VRAM'iniz varsa daha büyük değerleri kullanabilirsiniz. Daha büyük tile boyutları, pek belirgin olmasa da işleme hızını ve çıkan görselin kalitesini geliştirebilir.
Real-ESRGAN-ncnn-vulkan'la gelen 256x256 test görselinin boyutunun 4 katına çıkarılmış halinin 32 ve 256 tile boyutlu versiyonları arasındaki farklı kendiniz kontrol edebilirsiniz.
Bu konu hakkında daha fazla detay için #32'ye (Çince) göz atabilirsiniz.
Çıkan görselin kalitesini az miktarda artırır ancak bu etki aslen pek fark edilebilir değildir. TTA modu açıldığında işleme hızı fazlasıyla artabileceğinden aktifleştirilmesi önerilmez.
Bu konu üzerinde test yapmak adına 1200 piksellik anime görselleri, 1/4 boyuruna düşürülüp realesrgan-x4plus-anime
modeli kullanılarak orijinal boyuta tekrar yükseltilmiş ve orijinal görselle SSIM değerleri ölçülmüştür. TTA-aktif görsellerin SSIM değerleri, TTA-aktif-olmayan görsellere kıyasla sadece 0.002 yüksek olarak kaydedilmiştir. Yani aradaki farkın insan gözüyle tespiti faslasıyla zordur.
GIF dosyaları yalnıza 256 adet RGB renk değerini saklayabilir ve bu değerlerden birini (isteğe bağlı) saydam olarak atar, yani yarı-saydamlık özellikleri yoktur. Bu da saydam parçaları olan GIF'ler için iki sorun ortaya çıkarır.
- Görselin Alpha kanalı, 0 ve 255 olmak üzere sadece iki değer alabilir ve yalnızca siyah-beyaz renklerini içeren, belirgin kenarlara sahip bir görsel olarak temsil edilebilir.
- GIF'in her bir karesi ayrılıp PNG, WebP vesaire şeklinde kaydedidikten sonra RGB kanalının şeffaf rengi tahmin edilemez hâle gelir. Örneğin, GIF tarafından seçilen şeffaf renk aslen #FFFFFF olsa bile görseli kaydettikten sonra #000000 da olabilir, sadece görsele bakılarak bunun anlaşılması mümkün değildir.
Real-ESRGAN'la GIF'leri (örnek) doğrudan yükseltirken yukarıda bahsedilen sorunların iki etkisi bulunur:
- Boyutu yükseltilen görselin alpha kanalının kalitesi aşırı düşük olduğundan yükseltilen karenin çevresinde çentikli bir yapıyla sonuçlanır.
- Bu çentikli yapının rengi tahmin edilemez. Örneğin bazı durumlarda siyahtır, bazı durumlarda da beyaz. Ayrıca fazlasıyla çirkin gözükür.
Bu parametre, bahsedilen sorunları çözmek için eklenmiştir ve aşağıda bahsedildiği gibi çalışır:
- GIF'i karelere ayırırken şeffaf bölümün rengi beyaz olacak şekilde ayarlanır.
- Alpha kanalındaki çentikleri yumuşatmak adına 3 piksellik Gauss bulanıklığı ve kontrast eğrisi eklenir. Ardından, alpha kanalı 0 ile 255 arasında değerlere sahip siyah-beyaz bir görüntüye dönüştürülür.
Bu ayar deneyseldir ve sadece şeffaflık içeren GIF'ler için kullanılması tavsiye edilir.
Eğer kayıplı sıkıştırma etkinse ve çıkış görseli formatı JPEG veya WebP'yse çıkış görsellerinin sıkıştırma kalitesini ayarlayabilirsiniz. Eğer uygulamaya görselleri içeren bir klasörün yolunu girdi olarak verdiyseniz bu ayar, belirtilen klasördeki JPEG ve WebP görsellerinin boyutunu yükseltirken kullanılacaktır. Bahsedilen sıkıştırma, Pillow ile yapılır.
Bu ayar aktif değilse çıkış formatı WebP olduğu takdirde kayıpsız sıkıştırma kullanılır.
Eğer özel sıkıştırma/son-işleme komutu belirttiyseniz Pillow'un sıkıştırması uygulanmayacaktır. Boyutu yükseltilen görselleri sıkıştırmak veya görsellerle başka şeyler yapmak isterseniz özel bir komut yazabilirsiniz.
{input}
giriş dosyasının yolunu temsil eder.{output}
çıkış dosyasının yolunu temsil eder.{output:ext}
çıkış dosyasının yolunuext
uzantısıyla temsil eder.- Örnekler:
- AVIF'e dönüştürmek için avifenc (libavif) kullanımı:
avifenc --speed 6 --jobs all --depth 8 --yuv 420 --min 0 --max 63 -a end-usage=q -a cq-level=30 -a enable-chroma-deltaq=1 --autotiling --ignore-icc --ignore-xmp --ignore-exif {input} {output:avif}
- JPEG XL'ye dönüştürmek için cjxl (libjxl) kullanımı:
cjxl {input} {output:jxl} --quality=80 --effort=9 --progressive --verbose
- GIF çıkışını WebP'ye dönüştürmek için gif2webp (libwebp) kullanımı:
gif2webp -lossy -q 80 -m 6 -min_size -mt -v {input} -o {output:webp}
- Sağ alt köşeye yazılı bir filigran eklemek ve sonrasında AVIF'e dönüştürmek için ImageMagick kullanımı:
magick convert -fill white -pointsize 24 -gravity SouthEast -draw "text 16 16 'https://github.com/TransparentLC/realesrgan-gui'" -quality 80 {input} {output:avif}
- AVIF'e dönüştürmek için avifenc (libavif) kullanımı:
Ya kod deposunun içinde ya da Real-ESRGAN GUI çalıştırılabilir dosyasıyla aynı klasördeki config.ini
dosyasına kaydolur. Bu dosya olmadan varsayılan ayarlar kullanılır.
Programdan çıktığınız zaman tüm ayarlar bu dosyaya kaydolur.
Upscale Wiki'den ek modeller indirerek Real-ESRGAN GUI ile birlikte kullanabilirsiniz. Bu ek modeller, bazı görseller için daha iyi (veya daha kötü) sonuçlar ortaya çıkartabilir.
Belirtilen yerden indireceğiniz modeller, PyTorch'un pth
formatını kullanır ancak Real-ESRGAN GUI (Real-ESRGAN-ncnn-vulkan), NCNN'in bin
ve param
formatlarını kullanır. Bu rehberi (RealSR-NCNN-Android'in yazarının Çince'de yazdığı bir rehber) takip edebilir ve cupscale'in pth2ncnn
yardımcı programını kullanarak modelleri dönüştürebilirsiniz. Dönüştürülen modellerin isimleri, x4
veya 4x
şeklinde boyut yükseltme oranını belirtmek zorundadır.
Ayrıca buradan önceden dönüştürülmüş bazı ek modelleri indirebilirsiniz.
Real-ESRGAN için elbette birden fazla GUI bulunuyor. Aşağıda bunlardan birkaçını ve neden onları kullanmak yerine kendi GUI'mi yaratmayı tercih ettiğimi listeledim.
Görsel boyutu yükseltmek için Waifu2x, Anime4k, Real-SR, SRMD, Real-ESRGAN ve Real-CUGAN; video enterpolasyonu için CAIN, DAIN ve RIFE dahil ffmpeg, ImageMagick, gifsicle, nircmd, wget dahil tonlarca çeşitli aracı entegre eden, her şey dahil bir el çantası. Ancak sadece Windows üzerinde kullanılabilir.
İçeriğinin bu denli zenginliği, arayüz ve konfigürasyonunun kafmaşıklığına yol açıyordu ancak özelliklerinin yalnız ufak bir kısmına ihtiyacım vardı. Hâlâ açık kayaklıyken şahsen bu uygulamayı kullanıyordum fakat yazarı, Mayıs 2021'de v3.41.02 ile birlikte lisansını değiştirdi ve kapalı kaynağa geçiş yaptı. Ayrıca premium versiyonunun reklamı, uygulamayı her açtığınızda ve her işlem bitiminde karşınıza çıkıyor.
Şahsen yalnızca premiumda sunulan özelliklerine ihtiyacım olmasa da üzerinde yapılan değişiklikler beni kendi ihtiyaçlarıma uyan, hafif bir GUI yazmaya itti.
Electron'la üretildiğinden çoklu platform desteğine sahip. Front-end teknolojilerinin gücünden yararlandığı için arayüzü ve kullanıcı etkileşimi harika. Hatta orijinal görselle yükseltilmiş görseli karşılaştırabildiğiniz bir özelliğe bile sahip. Ayrıca dokümantasyonu da fazlasıyla detaylı.
Ancak GIF işlemleri, işleme sonraso özel komutlar ve localization gibi bazı ek işlevlerden yoksun.
En nihayetinde bir Electron uygulaması olduğundan kullanıcıları aynı zamanda koca bir Chromium tarayıcısı indirmek zorunda. Upscayl'in dosya boyutu 400 MB civarlarındayken Real-ESRGAN GUI'ninki ise sadece yaklaşık 10 MB (Windows versiyonu için geçerli, Real-ESRGAN-ncnn-vulkan'ın modelleri ve dosyası hariç).
Bunlar, komut satırı parametrelerini sarani ek özelliklerden yoksun GUI'ler.
Ancak tsukumijima/Real-ESRGAN-GUI'nin tasarımını sevdiğimi belirtmek isterim.
@blacklein ve @hyrulelinks'e bu uygulamayı macOS'te kullanma ve paketleme üzerindeki yardımları için teşekkürler.
Ayrıca katkıda bulunan diğer herkese minnettarız!