LeanImg

Görüntü ölçekleyici: bir büyütücü mü yoksa yeniden boyutlandırıcı mı istersiniz?

Bir yeniden boyutlandırıcı pikselleri iç içe geçirir ve bir büyütücü bunları yeniden inşa eder. Hangi birine ihtiyacınız var, ölçülen 2x ve 4x sonuçları ve gerçek tarayıcı sınırlarıyla.

"Görüntü ölçekleyici" bir dosyaya zıt işlemler yapan iki aracı kapsar. Bir yeniden boyutlandırıcı, zaten sahip olduğunuz pikselleri yeniden örnekler, böylece 4000 px genişlik 1080 px genişliğe dönüşür ve detay daha az örnekle ortalamaya alınır. Bir büyütücü, görüntüyü, orijinalin hiç depolanmadığı kenarları ve dokuyu yeniden inşa eden bir eğitim modelinden geçirir. Her ikisi de boyutlar kutusundaki sayıyı değiştirir. Sadece biri detay ekleyebilir ve yalnızca 2x veya 4x sunar.

Her ikisi de tarayıcı sekmesinde çalışır. Büyütücü modeli bir kez bilgisayarınıza indirir, ardından her bir parça kendi GPU'nuzda hesaplanır. Hiçbir şey nereye gönderilmez, çünkü gönderilecek bir API yolu yoktur ve kod tabanında hiçbir sunucu işlemi yoktur (bu, gizlilik sayfamızda açıklanan tüm mimaridir). Bu kategorideki diğer tüm ölçekleyiciler dosyanızı yükler ve ardından bir veya iki saat sonra silme sözü verir.

Yeniden boyutlandırma ile büyütme arasındaki fark nedir?

Yeniden boyutlandırma iç içe geçirmedir. Bizim yeniden boyutlandırıcımız işi tarayıcıya devreder, ya `resizeQuality: "high"` ile createImageBitmap aracılığıyla ya da yüksek düzeyde imageSmoothingQuality ayarıyla bir canvas `drawImage` aracılığıyla. Her iki durumda da çıkış pikseli çevresindeki giriş piksellerinin ağırlıklı ortalamasıdır. Ortalama alma, kaynak verilerde olmayan bir kenar üretemez, bu nedenle iç içe geçirme ile büyütmek, aynı bilginin daha büyük, daha yumuşak bir kopyasını verir.

Büyütme yeniden inşa etmektir. Bizimki Real-ESRGAN realesr-general-x4v3'ü çalıştırır, 4x'te makul detay hayal etmek için eğitilmiş bir üretken modeldir, 2021 makalesinde açıklanmıştır. Görüntüyü her tarafında 16 px örtüşme ile 256 px parçalar halinde işler, böylece bir parça her zaman komşularının bağlamını görür ve ardından ana bölge yazılır. Model tahmin eder. Bu tahminler genellikle yüzlerde, kumaşlarda ve metinlerde doğru olur ve ince tekrarlayan desenlerde kötü yanlış olabilir.

Gerçekten hangisini istiyorum?

Hedef boyut kaynak boyuttan küçükse, yeniden boyutlandırıcıyı istersiniz ve tartışacak bir şey yoktur. Hedef daha büyükse, aşağıdaki kısıtlamaları karşılayıp karşılayamayacağınız sorusudur. İşte iki aracın bizim yapımımızda gerçekten yaptığı şeyler, pazarlama metninden ziyade koddan alınmıştır.

Yeniden BoyutlandırıcıBüyütücü
YönHerhangi bir hedef boyut, yukarı veya aşağıSadece 2x veya 4x
YöntemTarayıcı canvas iç içe geçirmeReal-ESRGAN realesr-general-x4v3
Çıktı formatıKaynak format korunur (GIF ve AVIF PNG olarak çıkar)Her zaman PNG
Kalite kontrolüPNG kayıpsız, diğer her şey kalite 90'da yeniden kodlanırYok, PNG'nin kalite ayarı yoktur
Toplu limit10 dosya, toplam 50 MB1 dosya
Giriş tavanıSadece toplu sınırWebGPU ile yaklaşık 32 MP, olmadan yaklaşık 1.1 MP
Ön ayarlar15 sosyal boyut artı %25/%50/%75Yok, sadece 2x ve 4x butonları

Bir satır bir uyarıyı hak ediyor. Yeniden boyutlandırıcı varsayılan olarak "büyütme yapma" seçeneğini işaretli tutar, bu da herhangi bir yazılan hedefi orijinal boyutlara sıkıştırır. Adlandırılmış bir sosyal ön ayar, bu sıkıştırmayı kasıtlı olarak geçersiz kılar, çünkü sıkıştırılmış 1080x1920 hikaye çerçevesi hiçbir platform spesifikasyonuna uymuyor.

Büyütme yaptığımda dosya ne kadar büyür?

Çok, ve PNG bunun sebebidir. small.png, 400x269 ve 177.1 KB, her iki ayardan geçirildi. 2x'te 800x538 ve 782.8 KB çıktı. 4x'te 1600x1076 ve 2.7 MB çıktı. Bu, 16 kat piksel için 15 kat giriş baytı demektir, bu da modelin her düz alanı yeni mikro doku ile doldurduğunda kayıpsız çıktının nasıl göründüğüdür. Büyütücü her durumda PNG yazar, bu nedenle karşılaştırılacak bir kalite kaydırıcısı yoktur.

400x269 kaynak görüntüsü ve 800x538 büyütülmüş sonucu arasında bölünmüş görünüm
small.png 2x'te: 400x269 ve 177.1 KB girdi, 800x538 ve 782.8 KB çıktı. Aynı dosyanın 4x çalışması 1600x1076 ve 2.7 MB'de sonuçlanır.

Sonucu herhangi bir yerde kullanmadan önce sıkıştırıcıya gönderin. PNG "sıkıştırma yok" modumuz oxipng seviye 3'tür, gerçekten kayıpsızdır ve 942.4 KB alpha.png dosyasını 383.9 KB'ye düşürdü. Palet modu (imagequant) aynı dosyayı 98.3 KB'ye düşürdü, bu düz grafikler için uygundur ve fotoğrafik bir büyütme için yanlıştır.

Neden 2x seçeneği 4x'ten daha yumuşak görünüyor?

Çünkü 2x ayrı bir model değildir. realesr-general-x4v3'ün tam olarak bir çıktı ölçeği vardır ve bu 4x'tir. 2x'i seçtiğinizde, aynı çıkarımı çalıştırıyoruz ve ardından her parçayı yüksek yumuşatma kalitesinde yarı boyuta geri küçültüyoruz. Bu nedenle GPU çalışması her iki buton için de aynıdır ve 2x, yeniden örnekleme ile takip edilen yeniden inşa anlamına gelir. Küçültme her parça başına gerçekleşir, bu da tam 4x görüntünün 2x işi sırasında bellekte asla var olmadığı anlamına gelir. Modelin ham çıktısını istiyorsanız, 4x'i seçin ve ardından yeniden boyutlandırıcıda kendiniz küçültün. Her çarpanın 3840 px'e ulaşması gereken kaynak genişliği ayrı olarak hesaplanır.

Neden büyütücü 24 MP fotoğrafımı almaz?

Tamamen tarayıcınızın WebGPU'yu başlatıp başlatmadığına bağlıdır. WebGPU çalışıyorsa, 4x işi yaklaşık 32 megapiksel girişi kabul eder. Olmadığında, onnxruntime-web tek iş parçacıklı WASM'ye geri döner ve giriş tavanı yaklaşık 1.1 megapiksele düşer, bu da neredeyse her telefon fotoğrafından daha küçüktür. Bu, keyfi bir sınır değildir. Bu modelde CPU çıkarımı, her megapiksel için dakikalarca sürer ve 24 MP'lik bir iş, sekmeyi öğleden sonra boyunca dondurur. Her zaman bir dosya, her zaman.

Yeniden boyutlandırıcı, piksel sayısı dışında başka neleri değiştirir?

Beklenenden daha fazla. Bir PNG kaynağı PNG olarak kalır ve kayıpsızdır. Diğer her şey, varsayılan olarak kalite 90'da yeniden kodlanır, bu nedenle bir JPEG'i yeniden boyutlandırmak da istenip istenmediğine bakılmaksızın yeniden sıkıştırmadır. Bir GIF kaynağı PNG olarak çıkar ve eğer bu GIF animasyonluysa, ilk çerçeve dışında her çerçeveyi kaybedersiniz. AVIF kaynakları da PNG olarak çıkar. Üç uyum modu, kaynak ve hedef en boy oranları uyuşmadığında önemlidir: kaplama merkez kesimleri, uzatma bozulmaları ve içeri alma, tuvali uygun alana küçültür, kenarlarıyla doldurmak yerine. Belirli bir boyut yerine belirli bir bölgeye ihtiyacınız varsa, kesici doğru araçtır, ancak bu bir dosya alır ve kayıplı formatları sabit kodlanmış kalite 92'de yeniden kodlar.

O halde şu anda dosyamla ne yapmalıyım?

Öncelikle uzun kenarı kontrol edin. Yaklaşık 1600 px altında ve daha büyük bir boyuta ihtiyacınız varsa, büyütücü'yi açın, 2x çalıştırın, ardından PNG'yi kayıpsız modda sıkıştırıcıdan geçirin. Bunun üzerinde veya zaten ihtiyaç duyduğunuz çözünürlükteyseniz, yeniden boyutlandırıcıyı kullanın ve boyutları aramak zorunda kalmamak için bir sosyal ön ayar seçin. Hedef bir akışsa, Instagram'ın kabul ettiği dört şekil ve arkasındaki 1080 px tavan üzerinde çalışmanız gereken listedir.