Skip to main content

Genel Bakış

LoRA (Low-Rank Adaptation), bir AI modeline küçük bir örnek görüntü kümesi kullanarak yeni bir görsel stil öğreten bir ince ayar tekniğidir. Mevcut bir modele yeni “stil ağırlıkları” enjekte ederek çalışır, bu da eğitimi hem hızlı hem de verimli hale getirir. Bu kılavuz tam iş akışını anlatır:

Eğitim Görüntülerini Hazırlayın

İstediğiniz stili temsil eden yüksek kaliteli görüntüleri küratörlüğünü yapın ve yükleyin

Eğitim İşini Gönderin

Görüntü URL’leriniz ve yapılandırmanızla /styles/train adresine bir POST isteği gönderin

İlerlemeyi İzleyin

Döndürülen job_id’yi kullanarak eğitim işinizin durumunu takip edin

Stilinizle Üretim Yapın

Eğitilmiş stilinizi görüntü üretimine uygulayın

Eğitim Görüntülerini Hazırlama

Veri Kümenizin Küratörlüğünü Yapma

Eğitim görüntülerinizin kalitesi sonuçları doğrudan etkiler. Farklı eğitim türlerinin farklı gereksinimleri vardır:
TürKullanım Alanıİpuçları
StyleSanatsal stiller, görsel estetikÇeşitli konular arasında tutarlı stil
CharacterKişisel benzerlik, tutarlı karakterlerÇeşitli pozlar, ifadeler, aydınlatmalar
ObjectBelirli öğeler, ürünlerBirden çok açı, tutarlı nesne

Kaç Görüntü Gerekli?

Kalite, nicelikten çok daha önemlidir. Küçük ama mükemmel görüntülerden oluşan bir küme, büyük ama vasat bir kümeden daha iyi sonuç verir.
Veri Kümesi BoyutuRehberlik
5 görüntüMinimum uygun. Basit, tutarlı stiller için işe yarayabilir
10-30 görüntüÖnerilen. Kalite ve kapsamın en iyi dengesi
50+ görüntüStil yüksek varyasyona sahip olmadıkça azalan getiri
Kalite > Nicelik15 yüksek kaliteli görüntü, 50 düşük kaliteli görüntüden daha iyi sonuçlar üretir. Şuna öncelik verin:
  • Yüksek çözünürlük (en az 1024x1024)
  • Tüm görüntülerde tutarlı stil
  • Filigran, metin bindirmesi veya sıkıştırma kusurları olmaması
  • Stil tutarlılığını korurken çeşitli konular
Örnek Veri Kümeleri
  • Karakter eğitimi: Çeşitli pozlar, ifadeler ve aydınlatma koşullarıyla bir kişinin fotoğrafları. Görüntülerde başka kişilerin bulunmasından kaçının.
  • Stil eğitimi: Tutarlı bir stilde bir sanat eseri koleksiyonu. Örneğin, The Metropolitan Museum of Art Ukiyo-E Dataset, sanatsal bir stili eğitmek için ideal Japon tahta baskılarını sağlar.

Görüntüleri Yükleyin

Eğitimden önce, barındırılan URL’leri almak için görüntülerinizi yükleyin. /assets uç noktasını kullanın:
import requests
import os
from dotenv import load_dotenv
import mimetypes

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")

image_dir = "training_images"
uploaded_urls = []

for filename in os.listdir(image_dir):
    if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.webp')):
        filepath = os.path.join(image_dir, filename)
        mime_type, _ = mimetypes.guess_type(filepath)

        with open(filepath, 'rb') as f:
            response = requests.post(
                f"{API_BASE}/assets",
                headers={"Authorization": f"Bearer {API_TOKEN}"},
                files={"file": (filename, f, mime_type)},
                data={"description": f"Training image: {filename}"}
            )

        if response.ok:
            data = response.json()
            uploaded_urls.append(data["image_url"])
            print(f"Uploaded: {filename}")
        else:
            print(f"Failed: {filename}")

print(f"\nUploaded {len(uploaded_urls)} images")
Döndürülen image_url değerlerini kaydedin—bunları eğitim uç noktasına geçireceksiniz.

Stilinizi Eğitin

Temel Eğitim Örneği

Eğitimi başlatmak için görüntü URL’lerinizi gönderin:
import requests
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")

# Yükleme adımından gelen eğitim URL'leri
urls = [
    "https://krea.ai/assets/img1.jpg",
    "https://krea.ai/assets/img2.jpg",
    "https://krea.ai/assets/img3.jpg",
    # ... daha fazla görüntü
]

response = requests.post(
    f"{API_BASE}/styles/train",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "name": "Ukiyo-E Style",
        "urls": urls,
        "model": "flux_dev",
        "type": "Style",
        "max_train_steps": 500
    }
)

response.raise_for_status()
job = response.json()
print(f"Training started! Job ID: {job['job_id']}")

Eğitim Türleri

type parametresi, kullanım durumunuz için optimize edilmiş akıllı varsayılanları ayarlar:
TürEn İyi Olduğu Alan
StyleSanatsal stiller, görsel estetik
CharacterKişisel benzerlik, tutarlı karakterler
ObjectBelirli öğeler, ürünler
DefaultGenel eğitim

Parametreler

Zorunlu Parametreler

name
string
required
Özel stiliniz için açıklayıcı bir ad.Örnek: "Ukiyo-E Style", "Product Photos"
urls
array
required
Üzerinde eğitim yapılacak görüntü URL’lerinin dizisi. Daha iyi sonuçlar için daha fazla görüntü ekleyin.

Opsiyonel Parametreler

model
string
default:"flux_dev"
Eğitim için temel model:Görüntü modelleri:
  • flux_dev - Yüksek kalite, çok yönlü
  • flux_schnell - BFL’nin gerçek zamanlı modeli
  • qwen - Alibaba’nın modeli
  • z-image - Alibaba’nın verimli görüntü modeli
  • wan22 - Yalnızca görüntü üretimi
Video modelleri:
  • wan - Alibaba’nın video modeli
type
string
default:"Default"
Eğitim kategorisi: Style, Object, Character veya Default
trigger_word
string
Promptlarda bu stili etkinleştirmek için özel kelime. Belirtilmediğinde, stil adı kullanılır.
Tipik promptlarda görünmeyecek benzersiz tetikleyici kelimeler seçin. Birden çok kelimeli tetikleyiciler için alt çizgi kullanın: ukiyo_style
learning_rate
number
Eğitim yoğunluğunu kontrol eder. Daha yüksek değerler daha hızlı eğitir ancak overfitting yapabilir.Önerilen aralık: 0.0001 - 0.001
max_train_steps
integer
Maksimum eğitim iterasyonu. Aralık: 1-2000
batch_size
integer
Aynı anda işlenen görüntüler. Daha büyük batch’ler = daha hızlı eğitim ancak daha fazla bellek.

Gelişmiş Parametreleri Ayarlama

type alanı tarafından belirlenen varsayılanlarla başlayın—bunlar çoğu durum için iyi çalışır. Yalnızca belirli sorunlar görüyorsanız bunları ayarlayın:
Modelin eğitim görüntülerinize ne kadar agresif adapte olduğunu kontrol eder.
DeğerNe Zaman Kullanılır
0.0001 (daha düşük)Overfitting sorunları, karmaşık stiller, küçük veri kümeleri
0.0003 (varsayılan)Çoğu kullanım durumu
0.0005-0.001 (daha yüksek)Daha hızlı eğitim
Ayarlamanız gerektiğine dair işaretler:
  • Çıktılar eğitim görüntüleriyle aynı görünüyor → oranı düşürün
  • Eğitimden sonra stil etkisi zayıf → oranı biraz artırın
Modelin görüntülerinizde ne kadar süre eğitildiği.
Veri Kümesi BoyutuÖnerilen Adımlar
5-10 görüntü300-500 adım
15-30 görüntü500-800 adım
50+ görüntü800-1500 adım
Ayarlamanız gerektiğine dair işaretler:
  • Çıktılar çok katı, promptları görmezden geliyor → adımları azaltın
  • Stil etkisi zayıf → adımları artırın
  • Oluşturulan görüntüler tam olarak eğitim verisi gibi görünüyor → adımları azaltın (overfitting)
Yinelemeli Ayarlamaİlk eğitim deneyiminiz istediğiniz sonuçları vermezse:
  1. Önce max_train_steps ayarını yaparak başlayın (en yaygın çözüm)
  2. Adımlar tek başına yardımcı olmuyorsa learning_rate deneyin

Yanıt Formatı

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": "2024-01-15T10:30:00Z"
}

Eğitim İlerlemesini İzleyin

Eğitim genellikle 5-15 dakika sürer. Durumu kontrol etmek için Jobs API’yi sorgulayın:
import requests
import time
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")
job_id = "your-job-id"

while True:
    response = requests.get(
        f"{API_BASE}/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_TOKEN}"}
    )
    job = response.json()
    status = job["status"]

    print(f"Status: {status}")

    if status == "completed":
        style_id = job["result"]["style_id"]
        print(f"Training complete! Style ID: {style_id}")
        break
    elif status in ["failed", "cancelled"]:
        print(f"Training {status}")
        break

    time.sleep(30)
Eğitim işleri bu durumlardan geçer:
  1. queued - Kuyrukta bekleme
  2. processing - Aktif eğitim
  3. completed - Eğitim başarıyla tamamlandı
  4. failed - Eğitimde bir hata oluştu
  5. cancelled - İş manuel olarak iptal edildi

Eğitilmiş Stilinizi Kullanın

Eğitim tamamlandığında, styles parametresini kullanarak stilinizi görüntü üretimine uygulayın:
Uygulama ve API arasında stil sahipliğiAPI ve Krea web uygulaması, çalışma alanınızda ayrı kullanıcı kimlikleri olarak çalışır. Stiller, oluşturan kullanıcıya özeldir, yani:
  • Uygulamada eğitilmiş stiller, paylaşılmadıkça API üzerinden erişilebilir değildir
  • API’de eğitilmiş stiller, paylaşılmadıkça uygulamada erişilebilir değildir
Bir stili çalışma alanınızla paylaşmak için (her iki yönde de çalışır):
curl -X POST https://api.krea.ai/styles/YOUR_STYLE_ID/share/workspace \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import time
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")
STYLE_ID = "w29t6pvy0"

response = requests.post(
    f"{API_BASE}/generate/image/krea/krea-2/medium",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "An abstract, colorful, surreal composition of symmetry and balance. Swirling colors, imagery of trees and coalescing patterns converge. The lantern of light and death. It is as if the world was at once dark, and yet again lit.",
        "aspect_ratio": "1:1",
        "resolution": "1K",
        "styles": [
            {
                "id": STYLE_ID,
                "strength": 0.95
            }
        ]
    }
)

job = response.json()
job_id = job["job_id"]
print(f"Generation started! Job ID: {job_id}")

# Tamamlanma için sorgula
while True:
    check = requests.get(
        f"{API_BASE}/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_TOKEN}"}
    )
    status_data = check.json()

    if status_data["status"] == "completed":
        image_url = status_data["result"]["urls"][0]
        print(f"Image ready: {image_url}")
        break
    elif status_data["status"] == "failed":
        print("Generation failed")
        break

    time.sleep(2)

Stil Gücü

strength parametresi (0.0-1.0) stilinizin ne kadar güçlü uygulandığını kontrol eder:
GüçEtki
0.5-0.7İnce etki, prompt esnekliğini korur
0.8-0.9Güçlü stil uygulaması, önerilen başlangıç noktası
0.95-1.0Maksimum stil bağlılığı, prompt yanıt verme özelliğini azaltabilir
0.8 gücünde başlayın ve sonuçlara göre ayarlayın. Daha düşük değerler daha fazla yaratıcı özgürlük verir; daha yüksek değerler daha katı stil bağlılığı sağlar.

Birden Fazla Stili Birleştirme

styles dizisine ekleyerek birden fazla stil uygulayın:
"styles": [
    {"id": "style-id-1", "strength": 0.6},
    {"id": "style-id-2", "strength": 0.4}
]

En İyi Uygulamalar

  • Optimum sonuçlar için elinizdeki yüksek kaliteli görüntülerin mümkün olduğunca fazlasını kullanın
  • Tüm eğitim görüntülerinde tutarlı bir stil sağlayın
  • Stil tutarlılığını korurken konularda çeşitlilik ekleyin
  • Filigranlardan, metin bindirmelerinden veya kusurlardan kaçının
  • En az 1024x1024 çözünürlükteki görüntüleri kullanın
  • type alanını kullanarak varsayılan parametrelerle başlayın
  • Stiller için: 500-1000 adım genellikle yeterlidir
  • Düşük öğrenme oranları (0.0001-0.0003) overfitting’i önler
  • Stil yeterince güçlü değilse adımları artırın
  • Çıktı çok katı ise adımları azaltın
  • Birden fazla stili birleştirmeyi planlıyorsanız aynı tetikleyici kelimeyi kullanın
  • Stili dahil ederseniz tetikleyici kelimeler otomatik olarak prompta enjekte edilir
  • Tipik promptlarda görünen yaygın kelimelerden kaçının
  • Birden çok kelimeli tetikleyiciler için alt çizgi kullanın: my_custom_style