Yapay zeka tarafından oluşturulan kötü resimler aslında "modele ince ayar" yapabilir mi?

Orijinal: Max Woolf

**Kaynak:**Founder Park

OpenAI'nin modeli geliştirmek için kullandığı takviyeli öğrenme süreci, olumsuz davranışları olumlu insan etkileşimlerinden dolaylı olarak azaltır.

Bu makalede yazarlar yeni bir pratik yaklaşım benimsiyorlar: Olumlu davranışları dolaylı olarak artırmak için olumsuz insan etkileşimlerini kullanmak (yani kasıtlı olarak düşük kaliteli görseller seçmek).

Dreambooth LoRA ile bu hedefe ulaşmak için büyük bir dil modelini eğitmek kadar çok fazla girdi verisi hazırlamaya da gerek yok.

Farklı optimizasyon seviyelerine sahip "Uzaylı şekilli Burger ()"

Yazar, Stable Diffusion XL 1.0 tarafından yayımlanan iki temel özelliği tanıtıyor: hızlı kelime ağırlıklandırma ve Dreambooth LoRA eğitimi ve akıl yürütme ve Lora'yı eğitmek için Metin Tersine Çevirme (metni ters çevirme) yöntemini birleştirerek Lora'yı daha akıllı ve kullanımı kolay hale getiriyor.

Yazar hakkında: Max Woolf (@minimaxir), BuzzFeed'de yapay zeka/makine öğrenimi araçları ve çeşitli açık kaynak projeleri üzerinde çalışan bir veri bilimcisidir.

Orijinal bağlantı:

Kurucu Park tarafından düzenlenen makalenin içeriği aşağıdadır.

SDXL kısa tanıtımı

Geçen ay, Stability AI, Stable Diffusion XL 1.0'ı (SDXL) piyasaya sürdü ve açık kaynak haline getirerek kullanıcıların herhangi bir özel izin gerektirmeden bu sürüme erişmesine olanak tanıdı.

SDXL 1.0 çıkış örneği

SDXL aslında iki modeldir: bir temel model ve hız yükü olmadan ayrıntı gösterimini önemli ölçüde artırabilen isteğe bağlı bir iyileştirme modeli.

Kararlı Difüzyonun çeşitli versiyonlarının modelleri arasındaki göreceli kalite karşılaştırması

İnceltilmiş modeli kullandıktan sonra kalitedeki önemli iyileşmeye dikkat edin

SDXL 1.0 Özellikleri

Bu sürümün (SDXL 1.0), özel önlemler olmadan doğal olarak 1024x1024 çözünürlüklü görüntüler üretebilen ilk açık kaynaklı modellerden biri olduğunu ve oluşturulan görüntülerin daha ayrıntılı olduğunu belirtmekte fayda var.

Hugging Face'in difüzörleri Python kütüphanesi artık bazı performans optimizasyonlarıyla birlikte modeli tamamen destekliyor.

Aynı zamanda, difüzörler iki yeni özellik için destek de uyguladı: istemi kelime ağırlıklandırma ve Dreambooth LoRA eğitimi ve çıkarımı. Bu yüzden denemeyi planlıyorum (difüzörlerdeki SDXL demo kodunu makalenin sonunda görebilirsiniz).

Difüzörler için hızlı sözcük ağırlıklandırma desteği, terimleri daha matematiksel bir şekilde ağırlıklandırmaya zorlama adı verilen bir Python kitaplığından yararlanır. Oluşturulan konumsal metin yerleştirmedeki "önemini" artırmak veya azaltmak ve böylece son çıktıyı etkilemek için belirli bir kelimeye istediğiniz sayıda + veya - ekleyebilirsiniz.

Aynı prensibe göre, cümleleri de sarabilirsiniz: örneğin, "Salvador Dali'nin San Francisco manzarası, tuval üzerine yağlıboya" eserini oluştursaydınız ve bu, San Francisco'nun gerçekçi bir fotoğrafını oluşturduysa, o zaman sanat formunu çerçeveleyebilir ve "Salvador Dali'den San Francisco manzarası, (tuval üzerine yağlıboya)+++" girin, Stable Diffusion'ın beklenen etkiyi yaratmasına izin verin.

Ortam hazırlığı

Bir bulut sanal makinesini çalıştırdım, ona yeni bir orta sınıf Nvidia L4 GPU (Google Cloud Platform'daki Spot örneği için saat başına 0,24 ABD doları) sağladım ve işe koyuldum.

Bir L4 GPU ile, her bir 1024x1024 görüntüyü oluşturmak yaklaşık 22 saniye sürer; ve önceki Kararlı Dağılım modundan farklı olarak, artık orta düzey GPU, GPU kullanımı zaten dolu olduğundan bir seferde yalnızca bir görüntü oluşturabilir; daha sabırlı olmak. Çözünürlüğü düşürmek derlemeyi hızlandırabilir, ancak sonuç berbat olacağından kesinlikle buna karşı çıkmanızı tavsiye ederim.

** Biraz kişiselleştirilmiş konfigürasyon **

Testlerimde, Stable Diffusion 2.0'dan sonra ortaya çıkan istem sözcük sorunlarının çoğunu, özellikle de daha yüksek sınıflandırıcısız rehberlik değerleri ayarlandığında düzeltir (guiding_scale varsayılan olarak 7,5'tir; bunu 13 olarak değiştirmeyi seviyorum)

Bu makaledeki LoRA modeli tarafından oluşturulan tüm örnekler için kılavuz ölçek 13'tür.

Başlarken丨LoRA'yı Keşfedin

SDXL 1.0'ın en önemli güncellemesi aslında Stabil Difüzyon modelini kişiselleştirmemize olanak sağlayan Dreambooth LoRA desteğidir.

Dreambooth, çok küçük bir kaynak görüntü kümesine ve tetikleyici bir anahtar kelimeye dayalı olarak Kararlı Yayılımın ince ayarını yapmak için kullanılan bir tekniktir; böylece bu görüntülerdeki "kavramlar", anahtar sözcük verilen diğer bağlamlarda kullanılabilir.

Dreambooth Çalışma Prensibinin Şematik Diyagramı

LoRA'nın avantajı: alana özgü "küçük modeller"

Stabil Difüzyonun kendisini eğitirken, küçük bir model bile birçok pahalı GPU üzerinde saatlerce eğitim gerektirir.

LoRA'nın kullanışlı olduğu nokta burasıdır: Vision modelinin küçük bir alt kümesini eğitir, böylece 10 dakikada sonuçların çıktısı için yalnızca ucuz bir GPU gerekir ve son model + LoRA'nın kalitesi, tamamen ince ayarlı bir modelle karşılaştırılabilir düzeydedir. (Genel olarak konuşursak, insanlar Kararlı Difüzyonun ince ayarından bahsettiklerinde genellikle bir LoRA oluşturmayı kastediyorlar).

Eğitilmiş bir LoRA, başkalarıyla kolayca paylaşılabilen veya Civitai gibi bir depoya yüklenebilen küçük, bağımsız bir ikili programdır.

LoRA'nın küçük bir dezavantajı, aynı anda yalnızca birinin aktif olabilmesidir: birden fazla LoRA'yı birleştirip avantajlarını bir araya getirebiliriz ancak pratikte bu o kadar basit değildir.

Metin Tersine Çevirme Gerçek Mücadele: Metin Tersine Çevirme

Kararlı Difüzyon LoRA yaygın olarak popüler hale gelmeden önce, metni ters çevirme adı verilen ve metin kodlayıcıların kavramları öğrenmesine olanak tanıyan bir yöntem vardı, ancak eğitimi saatler sürüyordu ve sonuçlar çirkin olabiliyordu.

Önceki bir blog yazısında metin ters çevirme eğitimi verdim: Ugly Sonic (Sonic) ve Stable Diffusion'ın kaynak veri kümesinde olmadığından sonuçlar benzersizdi. Oluşturulan sonuçlar karışık sonuçlarla birlikte aşağıdaki gibidir.

(Çirkin) Sonic, ama çok çirkin

Bu sefer LoRA'yı eğitmek için Ugly Sonic'i kullanmanın SDXL'in potansiyelini test etmek için iyi bir örnek olacağını düşünüyorum.

Hugging Face, LoRA'yı eğitmek için SDXL temel modelini kullanabilen bir train_dreaboooth_lora_sdxl.py betiği sağlıyor; bu betik hâlâ kutudan çıktı, ancak parametreleri biraz ayarladım.

Eğitimli LoRA tarafından çeşitli komut sözcükleri altında oluşturulan Ugly Sonic görüntülerinin daha iyi göründüğünü ve daha organize olduğunu söylemek abartı olmaz.

Sonic, ama bu sefer dişli

Gelişmiş ve Derinlemesine Metin Çevirme

Bu deneyin başarısından sonra, metni tersine çevirmeyle ilgili daha önce yaptığım başka bir deneyi yeniden yapmaya karar verdim: daha iyi görüntüler oluşturmak için işaret sözcüğünü yanlış ekleyerek.

Bu seferki yöntem, LoRA'yı oldukça bozuk, düşük kaliteli görüntülerle eğitmek ve verilen istem kelimesi yanlış.Umarım LoRA, yanlışı "olumsuz istem" olarak değerlendirebilir ve bu durumdan kaçınarak daha az bozulmaya sahip görüntüler üretebilir.

Bir Jupyter Notebook yazdım ve çok sayıda "yanlış" kompozit görüntü oluşturmak için SDXL'i kullandım, bu sefer aynı zamanda bulanık (bulanık) ve kötü eller (yanlış çizim) eller gibi başarısız görüntülerin daha belirgin örneklerini oluşturmak için çeşitli ipucu ağırlıkları da kullandım) .

İronik bir şekilde, yüksek çözünürlüklü, başarısız görüntüler oluşturmak için SDXL kullanmamız gerekiyor.

Yukarıda sentetik yanlış görsellerin bazı örnekleri verilmiştir

İstemeden 2000'li yılların punk rock albüm kapaklarından öğeler içeriyor

Bu LoRA'yı eğittim ve Stable Diffusion XL temel modeline yükledim (modelde ince ayar yapmak için LoRA gerekli değildir) ve verilen komut sözcükleri için aşağıdaki çıktıyı karşılaştırmak üzere bir Jupyter Notebook yazdım:

LoRA'sız temel model + ardışık düzen. (basit)

LoRA ardışık düzeni yok, olumsuz ipucu olarak yanlışı kullanın (olumsuz ipucu ekleyin)

LoRA'nın ardışık düzenini kullanın, yanlışı olumsuz bir ipucu olarak kullanın (ideal hedef)

Oluşturulan her sonucun tohumları aynıdır, bu nedenle üç çıktı fotoğrafının bileşimi benzer olmalı ve yanlış olumsuz ipuçları ile LoRA'nın etkisi ile temel model hattı arasındaki fark çok açık olmalıdır.

SDXL 0.9 Test Senaryosu

Teste başlamak için basit bir istemi göstermek için SDXL 0.9'u kullanalım:

「Yosemite Ulusal Parkı'nda bir kurt, serin doğa belgesel film fotoğrafçılığı」

Yukarıdaki resme dikkatli bakıldığında, temel modeldeki yanlış ipucunun arka plandaki ormana biraz yaprak ve derinlik kattığını görmek zor değil, ancak LoRA daha fazla şey katıyor: daha güçlü ışık ve gölgeler, daha ayrıntılı yapraklar ve renk değişiklikleri. Kurtların görünüşü Kamera açısı daha ilginç görünüyor.

Daha sonra istem kelimesine "ekstrem yakın çekim (çok yakın çekim)" ifadesini ekledim ve önceki tohumu tekrar kullandıktan sonra benzer fotoğraf kompozisyonu altında kurtların farklı perspektifte yakın çekimlerini elde ettim.

「Yosemite Ulusal Parkı'ndaki bir kurdun aşırı yakın çekimi, soğuk doğa belgesel film fotoğrafçılığı」

Şu anda LoRA'nın dokusu ve netliği diğer modellere göre çok daha iyi ve resim daha canlı. Ancak tek bir yanlış ipucu sözcüğü eklemenin bakış açısını değiştireceğini unutmayın.

Bir başka iyi test örneği de yemek fotoğrafçılığıdır ve DALL-E 2 ile ürettiğim tuhaf yemek çekimleri özellikle iyidir. SDXL + yanlış LoRA, biraz ipucu veren tuhaf görünümlü Öklidyen olmayan burgerler üretebilir mi?

「büyük, lezzetli bir hamburger (beş boyutlu uzaylı geometrisi şeklinde)++++, profesyonel yemek fotoğrafçılığı」

"Lezzetli büyük bir burger (5D uzaylı geometrisi)++++, profesyonel yemek fotoğrafçılığı"

Yanıt, istem sözcüğü birçok kez ayarlansa bile yapamayacağıdır. Yine de çıktı ilginç: Temel SDXL, istemin "uzaylı" kısmını düşündüğümden daha kelimenin tam anlamıyla alıyor gibi görünüyor (ve ona sevimli bir melon şapka vermiş!), ancak LoRA daha iyi çalışıyor İpuçlarının anlamını net bir şekilde anladı ve insanların yemesi zor olan "uzaylı" bir burger yaptı ve imaj tarzı daha parlaktı.

Ressamın durumu ne olacak? LoRA, yapay zekanın el çekmemesi sorununu yanlış bir şekilde çözebilecek mi? Ayrıca LoRA'nın eğitim verilerine de bu tür birçok örneği dahil ettik. Bir Başkan Taylor Swift çizmek için Stable Diffusion 2.0'ı ilk denediğimde kullandığım istemi değiştirelim:

「ABD Başkanı Taylor Swift (belgeleri imzalıyor)++++, fotoğraf Associated Press tarafından çekilmiş」

"ABD Başkanı Taylor Swift (imza belgesi)++++, fotoğraf AP'den"

Taylor'ın sağ koluna bir bakın: Varsayılan SDXL modeli çılgın sonuçlar veriyor ve yanlış olduğunda durum daha da kötü, ancak LoRA'da düzeltildi! LoRA'nın renk katmanlaması çok daha iyi; ceketi sarı-beyaz yerine daha belirgin bir beyaza dönüşüyor. Ancak elleri hala dikkatli görülemiyor: SDXL 1.0 ile karakter çizmek hala hantal ve güvenilmez!

Artık sonuç açıktır, her durumda yanlış + LoRA çıktısı, yalnızca yanlış negatif ipuçları eklemenin çıktısından daha ilginçtir, bu nedenle aşağıda yalnızca temel çıktıyı ve LoRA çıktısını karşılaştırıyoruz. Yanlış LoRA ile karşılaştırıldığında temel modelin bir örneği:

「Bilgisayar iş istasyonunda blog yazan gerçekçi insan Shrek, gösteriş fuarı için hipergerçekçi ödüllü fotoğraf」

*(bilgisayar iş istasyonunda blog yazan gerçekçi insan Shrek, Vanity Fair'den gerçeküstü ödüllü fotoğraflar) - LoRA'nın eli daha iyi çizilmiş ve daha iyi aydınlatılmış. Kostümler daha detaylı ve arka planlar daha ilgi çekici. *

「kalp şeklinde biberli pizza, hipergerçekçi, ödüllü profesyonel yemek fotoğrafçılığı」

(kalp şeklinde biberli pizza, ultra gerçekçi, ödüllü profesyonel yemek fotoğrafçılığı) - daha ayrıntılı biberli, sıcak kabarcıklar, pizzanın kenarlarında daha az fazla biberli, kabuk daha sert görünüyor

Yanlış olan LoRA'yı burada bulabilirsiniz, ancak difüzörler dışındaki arayüzlerdeki performansını garanti edemem.

Bu görüntüleri oluşturmak için kullanılan tüm Not Defterleri, standart SDXL 1.0 + ince ayar modeli + LoRA Colab Not Defterleri de dahil olmak üzere bu GitHub deposundadır. Yanlışlıkla bu Not Defterlerini ücretsiz bir T4 GPU'da çalıştırabilirsiniz. Bu yazıda kullanılan oluşturulan görsellerin daha yüksek çözünürlüklü versiyonunu görmek isterseniz yazının kaynak kodunu ziyaret edebilirsiniz.

Yanlış Neler oluyor?

LoRA ile yanlış Bu hile yalnızca oluşturulan görüntünün kalitesini ve netliğini artırır, ancak LoRA, SDXL'nin daha akıllı davranmasını ve hızlı kelimelerin ruhunu daha fazla yansıtmasını sağlıyor gibi görünüyor.

Teknik düzeyde, bu negatif işaret, difüzyonun görüntüleri oluşturduğu gizli alanın bölgesini belirler; bu bölge hem yanlış temel model hem de LoRA için aynıdır.

Benim sezgim, LoRA'nın devasa yüksek boyutlu gizli uzaydaki bu istenmeyen bölgeyi başlangıç bölgesine daha benzer olacak şekilde yeniden şekillendirdiği, böylece normal üretim sonuçlarının bu bölgeye çarpma olasılığı küçüldüğü ve kalitenin düştüğü yönündedir. (Yukarıdaki Alien Burger'in değişim sürecine bakın)

SDXL'yi geliştirmek için düşük kaliteli görüntülerle eğitmek, teknik olarak insan geri bildirimiyle (RLHF) takviyeli öğrenmenin bir biçimidir: bu yaklaşım aynı zamanda ChatGPT'nin başarısına giden yoldur. OpenAI tarafından modeli geliştirmek için kullanılan takviyeli öğrenme süreci, olumsuz davranışı olumlu kullanıcı etkileşiminden dolaylı olarak azaltmaktır; oysa burada, olumlu davranışı dolaylı olarak artırmak için olumsuz kullanıcı etkileşimini (yani kasıtlı olarak düşük kaliteli görselleri seçmeyi) kullanıyorum.

Ancak Dreambooth LoRA ile temelde büyük bir dil modelini eğitmek kadar fazla girdi verisi hazırlamanıza gerek yoktur.

"Negatif LoRA" potansiyeli hâlâ büyüktür: Sentetik veri kümesi oluşturma parametrelerimin geliştirilebilecek çok yeri vardır ve LoRA da daha uzun bir süre boyunca eğitilebilir. Ancak şu ana kadar elde edilen sonuçlardan çok memnunum ve negatif LoRA ile daha fazla test yapmak istiyorum; örneğin diğer LoRA'larla birleşerek ikincisini geliştirip geliştiremeyeceğini görmek istiyorum (özellikle yanlış LoRA + Çirkin Sonic LoRA!)

Ek: Difüzörlerdeki SDXL demosu

ithalat meşale

difüzörlerden DiffusionPipeline, AutoencoderKL'yi içe aktarın

yük tabanı SDXL ve arıtıcı

vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",

meşale_dtype=torch.float16)

base = DiffusionPipeline.from_pretrained(

"kararlılıkai/kararlı-difüzyon-xl-base-1.0",

ayaklar = ayaklar,

meşale_dtype=torch.float16,

iant = "fp16",

_safetensors=Doğru'yu kullanın,

)

_ = base.to("cuda")

arıtıcı = DiffusionPipeline.from_pretrained(

"stabilityai/stabil-difüzyon-xl-refiner-1.0",

text_encoder_2=base.text_encoder_2,

bacak=taban.bacak,

meşale_dtype=torch.float16,

iant = "fp16",

_safetensors=Doğru'yu kullanın,

)

_ = rafiner.to("cuda")

her iki modeli de kullanan üretim (uzmanların karışımı)

yüksek_gürültü_frac = 0,8

= "ata binen bir astronot"

negatif_ = "bulanık, kötü eller"

resim = taban(

=,

negatif_=negatif_,

gürültü giderme_end=yüksek_gürültü_frac,

çıktı_type="gizli",

).Görüntüler

resim = arıtıcı(

=,

negatif_=negatif_,

gürültü giderme_başlangıç=yüksek_gürültü_frac,

resim=resim,

).Görüntüler [0] ​

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)