Anifusion-SD
TL;DR
Bu, anime görüntüleri için yeni bir Stable-Diffusion benzeri modeldir (SD2'den ince ayar yapılmıştır), 768x768 çözünürlüğü destekler ve değerlendirmelerimize göre bazı popüler anime modellerinden önemli ölçüde daha iyi performans gösterir. Kontrol noktaları herkese açıktır ( kurulum talimatları ), demo bir süre için mevcuttur.
- giriş
- Arka Plan
- Difüzyon Modelleri
- Gizli Difüzyon
- Stabil Difüzyon
- Waifu Difüzyonu
- Stabil Difüzyon 2 - Modelimiz: eğitim
- Koşullandırıcı
- Teknik sorunlar ve optimizasyonlar
- Eğitim seti güncellemesi
- Daha yüksek çözünürlüklü eğitim
- Örnekleme değişiklikleri - Sonuçlar
- Diğer anime modelleriyle karşılaştırma
- Tartışma
- Referanslar
- İşaretçiler
Sıfırdan eğitim difüzyon modelleri ile yaptığım deneylerden sonra , birden fazla kişi aynı/benzer veri setlerinde bir dizi ince ayarlı Stable Difüzyon versiyonunun olduğunu belirtti. Özellikle:
- Waifu Difüzyon : verilerin nispeten küçük bir alt kümesini kullanır ve orijinal Kararlı Difüzyonda herhangi bir kod değişikliği olmaksızın (bu, IMO sorunludur) koşullandırma için etiket istemini CLIP'e besler). Bununla birlikte, şu anda en popüler anime difüzyon modeli gibi görünüyor. Bir sonraki modelden farklı olarak kontrol noktasını halka açtı;
- NovelAI : Bu, bağımsız araştırmacılar/mühendisler tarafından değil, gerçek bir şirket tarafından yapılır. Modeli yayınlamıyorlar, ancak ona ücretli bir arayüz sağlıyorlar. Görünüşe göre, kontrol noktaları ve kodlarının sızdırılmasıyla ilgili bazı dramlar da vardı, bunlardan orijinal Stable Difüzyonda bazı küçük değişiklikler yaptıkları görülüyor;
- Any-v3 : bu biraz sonra ortaya çıktı, model hakkında çok fazla bilgi yok, ancak WaifuDiffusion'dan ince ayar yapıldığından şüpheleniliyor (en azından, CLIP'e beslemeden önce benzer hızlı dönüşümleri kullanıyor). Çok ayrıntılı ve güzel görünen görüntüler üretir, ancak istemine çok sadık değildir. Çıktı alanı çok küçüktür (çeşitlilik yoktur, tüm görüntüler aynı stile sahiptir ve birbirine benzer) ve difüzyon öncesi GAN modellerini anımsatır. Diğer modellerden farklı olarak, bu model de NSFW üretemez - bu nedenle belki de tek bir sanatçı tarafından yüksek kaliteli görüntülerden oluşan küçük bir veri kümesi üzerinde ince ayar yapılarak elde edilmiştir.
Ancak, bu alandaki modellerin bolluğu göz önüne alındığında, ilk başta dahil olma zahmetine girmemeye ve ilerlemeyi akışına bırakmaya karar verdim. Ama şimdi Stable Diffusion 2 çıktı ve anime modellerinde hala gözle görülür bir ilerleme yok. Bu yüzden denemeye karar verdim - bu yazıda, Stable Diffusion 2'de özel hızlı saç kremi ile nasıl ince ayar yaptığımı anlatıyorum ve sonuçları gösteriyorum. Tabii ki, modeli de yayınlıyorum - denediğim birkaç istemden, yukarıda listelenen modellerden daha iyi olduğunu gördüm. Sonraki birkaç bölüm teknik ayrıntılara odaklanıyor, eğer ilgilenmiyorsanız doğrudan Sonuçlar bölümüne atlayabilirsiniz .
Arka fon
Neler olduğunu ve nelerin değiştiğini anlamak için önce mevcut modellere kısa bir göz atalım.
difüzyon modelleri
Difüzyon modellerinin detaylarına girmeyeceğim, internette zaten bununla ilgili pek çok iyi inceleme var. Amaçlarımız için, fikrin görüntü oluşturma sürecini bir "gürültü giderme" adımları dizisine ayrıştırmak olduğunu bilmek yeterlidir. Eğitim sırasında, model omurgası (görüntüler söz konusu olduğunda — genellikle bir UNet) bozuk bir görüntü ve gürültü giderme adımı verilir ve tek bir bozulma adımını geri almaya çalışır. Çıkarım sırasında, rastgele bir gürültüden başlıyoruz ve tüm hayali bozulma adımlarını "geri almak" için omurgayı tekrar tekrar uyguluyoruz. Bunun arkasındaki kesin matematiğin kesin olması gerekir. Çıkarım zamanında, modern difüzyon modellerinin çoğu, örnekleme adımlarının sayısını azaltmak için süreci değiştirir (bu, işlemin, sayısal bir yöntemle stokastik bir diferansiyel denklemi çözmeye şüpheli bir şekilde benzer olduğunu fark eden biri tarafından etkinleştirildi ve daha akıllı bir DE çözücü uygulandı. yerine).
gizli difüzyon
Bu, açık difüzyon modellerinin çoğunda kullanılan tartışmasız en önemli fikirdir. Google veya OpenAI gibi şirketler, çok sayıda donanıma sahip olduklarından, orijinal piksel alanında difüzyon modellerini eğitmeyi ve kullanmayı göze alabilirler. Ancak meslekten olmayan biri için UNet'i 512x512 piksellik bir alanda eğitmek (hatta çalıştırmak) çok pahalıdır. Fikir, görüntüyü orijinal 512x512x3 alanından gizli bir alana (Kararlı Difüzyon durumunda — 64x64x4) sıkıştıran otomatik kodlayıcıyı eğitmektir. Otomatik kodlayıcı, gizli alanı "hoş" tutmak için KL tabanlı düzenlileştirme ile bir VAE olarak eğitilmiştir .
Daha sonra, model bu 64x64x4 uzayda difüzyonu gerçekleştirir ki bu çok daha verimlidir. Dezavantajı, VAE'nin mükemmel olmaması ve görüntüyü sıkıştırırken bazı bilgilerin kaybolmasıdır. Ama pratikte çok iyi çalışıyor.
FWIW, alternatif yaklaşımlar mümkündür, örneğin Imagen , piksel alanında düşük boyutlu bir görüntü oluşturur ve ardından bunu kademeli olarak yükseltir. Ancak bu, bu makalede açıkladığımız model için geçerli değildir.
Kararlı Difüzyon
Bu, teknik bir atılımdan çok sosyal bir gelişmeydi. Model , LAION üzerinde eğitilmiş bir "vanilya" gizli difüzyon modeliydi ve önceki görüntü oluşturma modellerinin çoğundan farklı olarak halka sunuldu. Bu, teknolojiyi Makine Öğrenimine aşina olmayan geniş bir kitleye sunarak çok sayıda yaratıcılığı, tartışmayı ve çeşitli veri kümelerinde (örneğin yukarıda belirtilen anime modelleri) üzerinde ince ayar yapan insanları ateşledi.
Mimaride bizi çok ilgilendiren ilginç bir seçim, modelin koşullandırmayı nasıl yaptığıdır. Genellikle modeller hem “koşulsuz” ( UNet(corrupted image) ~ image ) hem de koşullu ( UNet(corrupted image, condition) ~ image ) modlarında eğitilir ve örnekleme sırasında sınıflandırıcı içermeyen rehberlik kullanılır: UNet ( bozuk görüntü ) kullanmak yerine , koşul ) görüntüleri oluştururken, C * UNet ( bozuk görüntü, koşul ) — ( C — 1) * UNet ( bozuk görüntü ) ve C'yi kullanır.1'den önemli ölçüde yüksektir (örn. 7). Bu çok sezgisel değildir, ancak hem görüntü kalitesini hem de oluşturulan görüntülerin aslına uygunluğunu büyük ölçüde artırır.
Bizi ilgilendiren, şartın nasıl elde edildiğidir. Stable Diffusion'da, CLIP modelinin metin kodlayıcısının son gizli katmanını kullanırlar . Donmuştur, yani eğimler eğitim sırasında ona geri yayılmaz. Dil anlayışını görsel anlamaya doğru yönlendiren bazı ikincil görüntü çeşitleriyle bir dil kodlayıcı modeli olarak düşünülebilir.
Waifu Difüzyonu
Bu, anime görüntülerinde ince ayar yapılmış bir Kararlı Yayılmadır. Eğitim seti olarak Danbooru2021'in bir alt kümesini (veya benzer bir şeyi) kullandıkları anlaşılıyor. Kodda herhangi bir değişiklik yapmadan Stable Diffusion'ı olduğu gibi kullandılar (yine de anime görüntüleriyle biraz daha iyi çalışmasını sağlamak için VAE'nin kod çözücü kısmında ince ayar yaptılar).
Sonuç olarak, benzer şekilde koşullandırıcı olarak CLIP'i kullanırlar ve onu bilgi istemi olarak etiketlerle bir dizi ile beslerler. Etiketleri de önceden işledikleri için (örneğin, alt çizgileri boşluklarla değiştirmek) oldukça zayıf çalıştığını tahmin ediyorum. Ancak bununla bile, CLIP'in komut istemini anlaması optimalin altında görünüyor.
Kararlı Difüzyon 2
Bu, modeli (aynı boyuttaki) sıfırdan yeniden eğiten ve ayrıca koşullandırıcıyı OpenCLIP ile değiştiren artımlı bir sürümdür . Derinlik tabanlı img2img ve daha yüksek çözünürlüklü model (768x768 piksel) gibi bazı ilginç ek özelliklere de sahiptir.
Modelimiz: eğitim
Amaç, CLIP'in doğal dilinin aksine, kodlayıcıyı giriş olarak etiketler için özelleşmiş özel bir modelle değiştirerek anime görüntülerinde Stable Diffusion 2'ye ince ayar yapmaktır. Daha iyi koşullandırmanın yanı sıra, bu aynı zamanda Anifusion'ın kalite ve çeşitliliğe çok yardımcı olan hızlı büyütme tekniğini de mümkün kılacaktı.
Saç Kremi
Anifusion'dakiyle aynı yaklaşımı kullanıyoruz: şartlandırma modeli, konumsal gömmeler içermeyen BERT boyutlu bir transformatördür (etiket bilgi istemlerinin simetrisini yakalamak için: etiketlerin sırası önemli olmamalıdır). Difüzyon omurgasının çapraz-dikkat kısmını aynı tutarak sadece yumuşatıcıyı değiştiriyoruz.
Burada önemli bir soru, ağırlık transformatörünün nasıl başlatılacağıdır. Eğitimsiz şartlandırıcı ve eğitimli UNet'ten başlamak ve bunları birlikte eğitmek, eğitim sürecinin UNet ağırlıklarını yok etmesine veya önemli ölçüde düşürmesine yol açabilir. Neyse ki bunu düzeltmek zor değil: UNet'i dondurabilir ve eğitimi bir süre sadece trafo kısmı için çalıştırabiliriz.
Teknik sorunlar ve optimizasyonlar
Eğitimi verimli hale getirmek için, video RAM'e mümkün olduğu kadar yüksek bir toplu iş boyutunu sıkıştırmak önemlidir (örneğin, optimize edici mantığını uygulama maliyeti toplu iş başına yalnızca bir kez ödenir). Burada temelde iki yön vardır.
Boru hattı değişiklikleri
Kurallı SD eğitim kodu, VAE kodlayıcıyı çevrimiçi çalıştırır, ham görüntüyü ayrıştırır ve kodlar. Bu, kurtulması gereken en düşük asılı meyvedir: VAE ağırlıkları VRAM tüketir, bu kodlayıcının uygulanmasından kaynaklanan ara değişkenler de VRAM tüketir, kodlama işlemi zaman alır. Özellikle veri üzerinden birden çok geçiş yaparsak, aynı görüntüyü birden çok kez kodlamanın maliyetini ödemenin bir anlamı yoktur.
Neyse ki, bu kısmı optimize etmek kolaydır: eğitim setindeki tüm görüntüleri önceden kodladık. Ek fayda, ortaya çıkan eğitim setinin piksel alanındaki orijinal 512x512 görüntülerden (disk boyutu açısından) çok daha küçük olmasıdır.
Bir miktar VRAM kaydetmenin diğer bir yolu da EMA'yı devre dışı bırakmaktır. Üstel Hareketli Ortalama, bir grup son kontrol noktasından (kabaca) ağırlıkların ortalamasını alarak modelin kalitesini biraz iyileştirme hilesidir ve EMA'yı saklamamak, ortaya çıkan modeli çok fazla incitmeden daha az VRAM kullanmanın kolay bir yoludur.
Eğitim değişiklikleri
Eğitimi hızlandırmanın ve VRAM'den tasarruf etmenin popüler bir yolu, daha düşük kesinlik kullanmaktır: normal fp32 (32 bit kayan noktalı sayılar) yerine fp16 veya bf16 (16 bit kayan noktalı sayıların varyasyonları) veya karma kesinlik (gerçekleştir) kullanın fp16'daki bazı işlemler).
Denedim ve gerçekten performansa yardımcı oluyor, ancak çok tehlikeli. Özellikle, bir noktada dikkat çekmek için "with torch.autocast():" (karma hassasiyet) ekledim ve ardından modelin neden zaman içinde yavaş yavaş farklılaştığını anlamak için epey zaman harcadım.
Sonuç olarak, eğitim zaten oldukça verimli olduğu için, bu tür optimizasyonları modele uygulamamanın daha güvenli olacağına karar verdim.
Eğitim seti güncellemesi
Anifusion'da, Danbooru veri setinin eski bir sürümü kullanıldı, bu yüzden onu güncellemenin iyi bir zaman olduğuna karar verdim, aynı zamanda bilgi isteminde eğitim setinin boyutunu ve desteklenen etiket setini genişlettim. Yine de birkaç zorluk vardı: (1) veri setinin yeni sürümü, öncekinin basit bir üst kümesi değildi ve (2) bunu model zaten eğitilirken yapmaya karar verdim, bu nedenle mevcut sürümü değiştirmek için bazı ek çalışmalar kontrol noktası gerekliydi.
Veri kümesi farklılıkları
Bu biraz önemsiz, ancak yeni veri kümesi sürümü için meta verileri indirdikten sonra, bir grup görüntünün (yüzde birkaçının) kaybolduğunu fark ettim. Daha önce ilk 2.5k arasına giren bazı etiketler de kayboldu (en popüler olanlardan bazıları dahil), üstelik kaldırılan resimler, kaldırılan etiketlerle eşleşiyordu.
Daha fazla inceleme, kaybolan etiketlerin hepsinin “çılgın NSFW” modeliyle eşleştiğini ortaya çıkardı (bazıları o kadar saçıktı ki, böyle şeylerin var olduğunu bile bilmiyordum…). Doğadaki diğer benzer etiketler ve resimler yerinde tutulduğundan, bu biraz tutarsızdı. Sanırım ya veri kümesinin koruyucusu ya da kaynak görüntü barındırma sitesi bunu bazı halkla ilişkiler endişelerini gidermek için hızlı bir saldırı olarak uyguladı. Her neyse, eski ve yeni veri kümelerinin birleşimini alıp üzerinde eğitim almak için yaklaşık 2 milyon görüntü elde ettim. Ayrıca, daha sonra daha yüksek çözünürlüklü modelde ince ayar yapmak için ≥ 786x768 çözünürlüğe sahip 800 bin görüntüyü örnekledim.
Etiket kümesini genişletme
Bu bölüm aslında önemsiz değil. Yeni veri setinin üretildiği noktada, model oldukça uzun bir süre eğitildi, iyi yakınsanmış bir düzenleyici transformatöre sahip ve giriş olarak en üstteki 2.5k etiketlerinden bilgi istemleri alıyor. Daha yeni sürüm için bunun yerine ilk 12 bin etiketi almaya karar verdim. Onları modele nasıl ekleyebilirim?
Yükseltilmesi gereken, transformatörün gömme tablosudur (2500x1024'ten 12000x1024'e). Naif bir yaklaşım, yeni yerleştirmeleri rasgele başlatmak ve modeli donmuş UNet ile bir süre eğitmek ve yalnızca trafoyu güncellemektir. Ancak bu, (1) zaman ve hesaplama açısından israf, (2) sıkıcı. Onları daha iyi başlatabilir miyiz?
Bizim için hangi bilgilerin mevcut olduğuna bakalım. Halihazırda 2,5 bin yerleştirmeyi eğittik ve yeni etiketler için yerleştirmeler onlara biraz benzer olmalıdır. Ama hangilerine? Saf bir fikir, semantik olarak benzer etiketlerin gömmelerini kullanmaktır. Ancak anlamsal benzerliği nasıl elde ederiz? Eski güzel word2vec bu konuda çok iyidir, bu yüzden etiket setlerini alabilir ve bunlar üzerinde word2vec yerleştirmeleri eğitebiliriz. Aşağıda, sonucun bir t-SNE görselleştirmesi bulunmaktadır (karanlık noktalar NSFW etiketlerine karşılık gelir, böylece onlara bakmak istemeyen kişiler için bunları atlamak kolaydır): etkileşimli bağlantı .
Transformatörden 2,5 bin eğitimli yerleştirme için aynı görselleştirmeye bakalım: interaktif bağlantı .
Yani gerçekten aynı değil ve semantikten çok görsel görünüme odaklanmış durumda. Bununla birlikte, yeterince yakın olmalıdır, böylece yeni etiketler için ilk yerleştirmeleri şu şekilde hesaplayabiliriz: word2vec alanındaki en yakın komşuları en üstteki 2.5k olanlardan alın ve bunların dönüştürücü yerleştirmelerini toplayın. Aslında, bunu biraz bile geliştirebiliriz: word2vec'i dönüştüren küçük bir NN eğitin, böylece en yakın komşu toplama, ilk 2,5k olanlardaki gerçek katıştırmayla eşleşir ve bunu etiketlerin geri kalanına uygular.
Bununla, yeni katıştırmalar için makul bir başlatma elde ediyoruz, en son kontrol noktasını değiştiriyoruz ve yeni verilerle ilgili eğitime olduğu gibi devam ediyoruz.
Daha yüksek çözünürlüklü eğitim
Stable Diffusion 2'nin bazı ilginç özellikleri olan (örn. parmakları daha düşük çözünürlüklü sürümden daha iyi idare ediyor gibi görünüyor) 768x768 boyutunda (yani 512x512'den 2,25 kat daha büyük) görüntüler oluşturan bir sürümü vardır. Biz de aynısını modelimiz için yapmaya karar verdik. Özellikle, eğitimin iki aşaması var:
- Düşük çözünürlük: 512x512 görüntü (64x64x4 gizli alan), 11 toplu iş boyutu, 5e-6 öğrenme hızı, 1 milyon adım için eğitim;
- Yüksek çözünürlük: önceki aşamadan geri dönerek, 768x768 görüntü (96x96x4 gizli alan), toplu iş boyutu 5, öğrenme hızı 5e-6, 80k adım ile eğitim.
Örnekleme değişiklikleri
Anifusion'da , istemi ayrı bir modelle artırmak, sonuçları büyük ölçüde iyileştirdi . Sezgisel olarak, difüzyon süreci içindeki örtülü sürekli uzayın aksine, ayrık kavram uzayındaki şeyleri örneklemek daha kolaydır.
Burada, aynı tekniği uyguluyoruz, hızlı büyütme transformatörünü yeni eğitim setinde yeniden eğitiyoruz. Aynı etkiyi gözlemliyoruz — numune kalitesi ve çeşitliliği, özellikle kısa bilgi istemleri için hızlı artışla büyük ölçüde artıyor.
Sonuçlar
768x768 modelinin 512x512 modelinden daha iyi görüntüler ürettiği görülüyor ve yalnızca çözünürlük nedeniyle değil: görüntülerin genel tutarlılığı ve (özellikle) karakterlerin anatomik ayrıntıları daha iyi. Bununla birlikte, hızlı sadakat biraz daha kötü görünüyor (Yine de uygun ölçümlerim yok, sadece izlenimim).
Unutulmaması gereken bir nokta, Anifusion ile karşılaştırıldığında, modelin NSFW/müstehcen görüntülere karşı daha önyargılı olduğudur. Bazıları hızlı büyütmeye atfedilebilir, ancak UNet kısmı da sorumludur. Bunun neden olduğundan emin değilim (eğitim seti değişiklikleri oldukça küçüktü; belki boyut/Stable Diffusion'dan başlamak buna neden olur?).
Çeşitli görüntü türlerini adım adım inceleyelim.
Portreler
Bu en basit kullanım durumudur ve GAN döneminde bile anime portreleri başarıyla oluşturulmuştur. Şaşırtıcı olmayan bir şekilde, modelin bununla ilgili bir sorunu yok (bazı örnekler aşağıda).
Tek karakter, popüler etiketler
Bu daha zor bir testtir ve beklendiği gibi zaman zaman (nadiren) kötü görüntüler elde edilebilir. Yaygın bir başarısızlık modu, kötü anatomidir - ek bir kol veya bacak. Ve elbette parmaklar model için oldukça zorlayıcı.
Tek karakter, kuyruk etiketleri
Burada daha az popüler olan etiketleri, özellikle eğitimin sonraki aşamalarında eklenenleri test ediyoruz (daha fazla ayrıntı için yukarıya bakın). Mükemmel olmasa da oldukça iyi çalışıyor gibi görünüyorlar. Bazı örnekler aşağıdadır. Genel olarak, karakter etiketlerinin model için kavram etiketlerinden daha kolay olduğu görülmektedir.
Karakter etkileşimleri
Sonunda ilginç bir şeye geliyoruz. Orijinal Anifusion, karakterler etkileşim halindeyken pek başarılı olmadı. Yeni model daha mı iyi?
Sadece yan yana duran birden fazla karakter iyi görünüyor:
Basit eylemler de biraz işe yarar:
Nesnelerle etkileşimler de aşağı yukarı iyidir:
Bununla birlikte, karmaşık etkileşimleri belirtmeye çalışırsak, çoğu zaman bedensel dehşet üretir (Rahatsız edici olabileceğinden bu resimleri burada yayınlamayacağım). Bu neden oluyor? Bunun, bilgi istemlerinin yalnızca etiket kümeleri olması ve etkileşimleri yeterince tam olarak belirtmemesi nedeniyle olduğunu düşünüyorum. Difüzyon modellerinin ilk etapta iyi görüntüler üretmesini sağlayan şey, sınıflandırıcı içermeyen rehberlikti: istemleri aşırı vurgulamak, hızlı örneklemeye kıyasla kaliteyi önemli ölçüde artırdı, çünkü difüzyon içindeki karmaşık kavramları örneklemek zordur. Bu nedenle, bilgi isteminde açık bir şekilde belirtilen her şeyin güzel bir şekilde üretilmesini bekleyebiliriz, ancak belirsizlikler pek de hoş olmayan bir şekilde çözülecektir. Doğal dilde yönlendirme bu anlamda daha iyi olabilir.
FWIW, reddit'teki orijinal Anifusion gönderisine yapılan yorumlarda Gwern , görüntülerden doğal dil istemleri oluşturmak için BLIP'i kullanmayı önerdi ; Aslında denedim ve istemlerin kalitesi son derece düşüktü, bu yüzden o kadar kolay değil.
stiller
Orijinal Stable Diffusion'da insanlar, çoğunlukla bazı sanatçıların adlarını ekleyerek, modele stiller belirlemenin sayısız yolunu buldular. Aynısı anime modeli için de geçerli mi?
Denemek — çok iyi çalışıyor (Bu, AnythingV3'e kıyasla bir avantajdır). Aşağıda çeşitli rasgele stillerdeki örnekler bulunmaktadır.
Diğer anime modelleriyle karşılaştırma
İsteme gerçekten saygı duymadığından ve (adından da anlaşılacağı gibi) hemen hemen her şey için benzer görüntüler ürettiğinden, AnythingV3 ile bir karşılaştırma yapmıyoruz. Geriye WaifuDiffusion ve NovelAI kalıyor. Sızan kontrol noktasının kullanılmasını gerektireceği ve bu dramadan uzak durmak daha iyi olacağı için NovelAI ile karşılaştırmaya karar verdik. Bu bizi WaifuDiffusion'a bırakır.
Unutulmaması gereken bir nokta, kısa istemlerde karşılaştırmanın WaifuDiffusion için çok haksızlık olacağıdır: Ani artırmayı içermez (Anifusion'ın aksine), kısa istemlerde çok kötü sonuçlar verir. Bunun yerine iki farklı karşılaştırma yapıyoruz. Birinde, orijinal veri kümesinden etiket kümelerini örnekleyerek hızlı büyütmeyi değerlendirmeden etkili bir şekilde çıkarırız ve yalnızca yayılma kısmını karşılaştırırız. İkincisinde, bazı orta ölçekli bilgi istemlerini manuel olarak oluşturuyoruz ve her iki modeli de onlar üzerinde değerlendiriyoruz (bu, bilgi istemi artırmanın etkisini içerir).
Veri kümesinden etiket kümeleri
Veri kümesinden 97 etiket kümesini örnekliyoruz ("güvenli" olarak derecelendirilen görüntülere tekdüze, filtreleme). Anifusion için, isteme "ranking_s, Score_perc_100, Adjusted_score_perc_100" ekleyerek bunları önceden işleriz. WaifuDiffusion için alt çizgileri boşluklarla değiştirerek bunları önceden işleriz. Her iki durumda da, 50 adımlı DDIM örneklemesi ve sınıflandırıcıdan bağımsız rehberlik ölçeği 9 kullanıyoruz.
Bazı insan derecelendirmeleri elde ettikten sonra (karşılaştırma için kenarları rastgele çevirerek), Waifu'ya karşı aşağıdaki sonuçları elde ederiz:
- Anifüzyon daha iyidir: %30
- Waifu daha iyi: %24
- Yaklaşık aynı: %46
Waifu'da fark ettiğim bir hata modeli: genellikle tam görüntü yerine bazı alt görüntüler oluşturarak karakterin başını keser. Anifusion'ın başarısızlık modeli, sorulmayan bir NSFW'dir (ve ilgili — kötü anatomi; nedense, görüntü NSFW'ye ne kadar yakınsa, model anatomiyi o kadar kötü alır).
Yan not: burada aynı istemler için AnyV3 sonuçlarını bulabilirsiniz. Sonuçlar iyi görünüyor, ancak bunu karşılaştırmalara dahil etmekten neden çekindiğim anlaşılıyor: tüm görüntüler tam olarak aynı tarzda görünüyor, ciddi şekilde çeşitlilikten yoksun, bu da modelin çok daha küçük çıktı alanına sahip olduğu anlamına geliyor.
Bu nedenle, dağıtım içi örnekleme ile, büyük ölçüde daha iyi değildir. Peki ya modelin yüksek çözünürlüklü versiyonunu kullanırsak?
- Anifüzyon daha iyi: %41
- Waifu daha iyi: %13
- Yaklaşık aynı: %46
Önemsiz olmayan bir miktarda "yaklaşık olarak aynı" olduğu fark edilebilir. Bu örneklerin çoğu, her iki modelin de eşit derecede iyi olduğu, ancak her iki modelin de korkunç derecede kötü olduğu bazı örnekler var (bunda bir şekilde birbirleriyle ilişkililer).
Manuel orta boyutlu bilgi istemleri
Önceki bölümde açıklandığı gibi aynı hızlı ön işlemeyi kullanıyoruz. 33 adet makul orta büyüklükte bilgi istemini manuel olarak hazırlıyoruz (elbette tek bir kişi tarafından hazırlandıkları için genel dağılımı temsil etmeyebilirler).
Burada sonuçlar çok farklı:
- Anifüzyon daha iyi: %73
- Waifu daha iyi: %9
- Yaklaşık aynı: %18
Gördüğümüz gibi, hızlı büyütme bir fark yaratıyor. Yüksek çözünürlüklü modeli kullandığımızda ne olur? Sonuçlar oldukça benzer ( ham veriler ):
- Anifüzyon daha iyi: %73
- Waifu daha iyi: %3
- Yaklaşık aynı: %24
Meslekten olmayan kişiler için erişilebilirlik
İlginç bir gözlem, bir milyon eğitim mini partisinden sonra bile modelin gelişmeye devam etmesidir. Modelin bu kadar çok adımdan sonra orijinal Kararlı Difüzyon kontrol noktasından herhangi bir şey hatırlayıp hatırlamadığı belli değil. Belki de anime veri seti, SD boyutlu difüzyon modellerini, mevcut SD'den sıcak bir başlangıç yapmadan ticari donanım üzerinde sıfırdan eğitebilecek kadar kolaydır? Bu, araştırılması gereken bir yön: eğer durum buysa, LAION tabanlı eğitimde olduğu gibi, hesaplamaya milyonlarca dolar harcamaya gerek kalmadan, bireyler için yeni mimarileri denemek daha kolay hale gelmelidir.
Daha fazla kalite iyileştirmesi
Mevcut modelle ne kadar ilerlemenin mümkün olduğunu görmek ilginç, bu yüzden muhtemelen 2M altkümesi yerine tam veri kümesini kullanarak biraz daha ince ayar yapmak istiyorum. Ancak sınırlayıcı faktörün, ince ayarın miktarı değil, veri kümesi kalitesi olduğundan şüpheleniyorum (yani, model kalitesini artırmak için, kişinin ya yalnızca daha yüksek kaliteli görüntüleri beslemesi ya da koşullayıcıya modele yardımcı olan özel bir tanımlayıcı eklemesi gerekir) daha iyi ve daha kötü görüntüleri ayırt etmek için). Bildiğim kadarıyla, anime için bunun gibi güvenilir modeller yok (genel görüntüler için insanlar LAION'un “estetik” alt kümesini kullanıyor). Bu modelden veya WaifuDiffusion'dan farklı görünen harika sonuçlar veren bazı modeller olsa da (örneğin, Midjorney'nin yalnızca özenle seçilmiş görüntüler biçiminde mevcut olan anime modeli), bu mümkün olabilir.
Daha yüksek çözünürlüklü üretimin, kaliteyi yalnızca çözünürlük dışındaki yönlerde iyileştirdiğini not etmek önemlidir - örneğin, kötü şöhretli "AI elleri" daha iyi hale gelir. 1024x1024'e yükseltmenin daha fazla iyileştirme sağlayıp sağlamayacağını merak ediyorum. Denenecek bir şey, gizli uzayda basamaklı difüzyon (örn . Imagen ) kullanmak olabilir (ör. gizli uzayda 64x64 -> 128x128 -> 256x256, orijinal uzayda 2048x2048 verir).
kullanılabilirlik
Yayınladığım şeyle ilgili bir endişe, bunun bir kavram kanıtı olmasıdır. Modelin kodu SD'den farklıdır, bu nedenle araçların çoğuyla (özellikle bilgi istemi belirteci kısmı) gerçekten uyumlu değildir. Yani bu model mevcut diğer anime modellerinden daha iyi görünse de kullanım kolaylığı o kadar iyi değil. Buna potansiyel bir çözüm, topluluğun (veya bunun için zamanım varsa benim) onu mevcut araçlarla düzgün bir şekilde entegre etmesi veya arayüz düzeyinde SD ile uyumlu hale getirmesi olabilir.
Referanslar
- Kararlı Difüzyon 2
- Gizli Difüzyon
- Danbooru2021 veri kümesi
- Web kullanıcı arayüzünü açmaya yönelik talimatlar
- Model kontrol noktaları (huggingface): 512x512 , 768x768 , bilgi istemi artırıcı
- Model için uyarlanmış SD Github deposu
- 768x768 demo — "derecelendirme: Güvenli" ile sınırlı, onu bir süre çalışır durumda tutacağım, ancak sonunda sürdürmeyeceğim

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































