Tutorial Qwen Image 2512: Bangun Poster Studio dengan Gradio
Pelajari cara membangun Aplikasi Gradio Poster Studio dengan Qwen-Image-2512 yang menghasilkan materi kreatif e-commerce dengan tipografi kuat, tata letak bersih, dan adegan produk fotorealistik.
Qwen-Image-2512 adalah model text-ke-gambar open-source yang kuat yang sangat unggul untuk visual realistis dan komposisi dengan banyak teks. Dalam tutorial ini, kita akan menggunakannya untuk membangun Poster Studio, sebuah aplikasi Gradio tempat Anda memasukkan detail produk seperti nama, penawaran, harga, CTA, dan manfaat, memilih rasio aspek platform, lalu menghasilkan gambar promo hanya dengan satu klik.
Karena Qwen-Image-2512 adalah model besar, kita juga akan menekankan sisi praktis agar berjalan lancar. Anda akan mempelajari cara memuatnya secara stabil pada A100 dengan pengaturan presisi yang tepat, menghindari mode kegagalan umum, dan beradaptasi dengan alur kerja apa pun dengan beriterasi pada resolusi lebih kecil, mengurangi langkah, atau mengeksplorasi model terkuantisasi untuk perangkat keras yang lebih ketat.
Apa itu Qwen-Image-2512?
Qwen-Image-2512 adalah pembaruan untuk model fondasi text-ke-gambar Qwen, sekaligus lompatan kualitas dibandingkan rilis Qwen-Image sebelumnya. Di balik layar, Qwen-Image adalah model difusi MMDiT 20B, yang dirancang untuk kepatuhan prompt yang kuat dan perenderan teks di dalam gambar.
Model ini juga didukung oleh evaluasi gaya preferensi skala besar dengan 10.000+ putaran buta di AI Arena, di mana model ini menonjol sebagai model open-source terkuat sekaligus tetap kompetitif dengan sistem tertutup.
Tiga peningkatan yang paling berdampak dalam alur kerja nyata adalah:
Potret manusia lebih realistis: Wajah terlihat kurang “AI-ish”, dengan fitur wajah lebih tajam, detail kulit lebih natural, dan realisme keseluruhan yang lebih baik.
Tekstur alami lebih kaya: Adegan yang kaya tekstur seperti lanskap, air, bulu, dan material dirender dengan detail lebih halus dan mikro-tekstur yang lebih meyakinkan.
Tipografi dan tata letak lebih kuat: Perenderan teks lebih akurat, dan komposisi lebih menyerupai halaman, yang sangat berguna untuk poster, slide, banner, dan infografik.
Proyek Contoh Qwen Image 2512: Bangun Poster Studio
Di bagian ini, kita akan membangun aplikasi Gradio sederhana yang:
Mengumpulkan nama produk, deskripsi, penawaran, harga, CTA, dan manfaat
Memungkinkan pengguna memilih preset platform seperti unggahan/cerita Instagram, banner, poster, atau slide
Menyediakan panel untuk steps, true_cfg_scale, seed, dan negative prompt opsional.
Terakhir, menghasilkan gambar poster menggunakan QwenImagePipeline.
Mari kita bangun selangkah demi selangkah.
Langkah 1: Prasyarat
Pertama, instal Diffusers terbaru dari GitHub (kartu model Qwen merekomendasikan ini untuk dukungan pipeline) beserta dependensi intinya:
Selanjutnya, lakukan pemeriksaan cepat untuk memastikan CUDA tersedia dan mengidentifikasi GPU:
import torch, diffusers
print("diffusers:", diffusers.__version__)print("CUDA available:", torch.cuda.is_available())
!nvidia-smiDidukung oleh
Jika CUDA available: True dan Anda melihat GPU Anda di nvidia-smi, Anda siap memuat model.
Catatan: QwenImagePipeline bukan satu blok bergaya UNet. Di Diffusers, ini adalah tumpukan lengkap yang terdiri dari pengenkode teks Qwen2.5-VL-7B-Instruct, transformer difusi MMDiT, dan Variational Auto-Encoder(VAE) untuk decoding. Pengenkode teks 7B adalah salah satu alasan utama RAM/VRAM dapat melonjak saat pemuatan model dan generasi, terutama pada GPU yang lebih kecil.
Saya menjalankan tutorial ini di Google Colab dengan A100, yang mampu menangani resolusi gambar 1328×1328 pada ~50 langkah dengan nyaman. Pada GPU kelas T4/16GB, Anda biasanya perlu menurunkan skala (sekitar resolusi gambar 768×768 dan langkah lebih sedikit) atau menggunakan varian terkuantisasi melalui runtime alternatif (seperti GGUF/ComfyUI).
Langkah 2: Impor dan utilitas dasar
Sebelum kita memuat model, ada baiknya menyiapkan kerangka runtime kecil agar Colab tetap dapat diprediksi. Qwen-Image-2512 berat, dan beban kerja pembuatan gambar dapat diam-diam menghabiskan RAM sistem dan memori GPU.
Setelah dependensi terpasang, kita menyiapkan impor, cache, pemantauan memori, dan beberapa flag performa GPU. Berikut yang dilakukan kode di atas:
QwenImagePipeline: Ini adalah kelas pipeline utama yang akan kita gunakan nanti untuk memuat dan menjalankan Qwen-Image-2512 dalam pembuatan gambar.
gradio: Pustaka ini menjalankan UI web sederhana sehingga kita dapat membuat poster di dalam Colab.
HF_HOME=/content/hf: Kita gunakan untuk mengikat cache Hugging Face ke folder yang pasti, sehingga unduhan model dan bobot tersimpan konsisten di berbagai run.
Fungsi mem(): Fungsi mem() melacak RAM sistem dan VRAM GPU yang dialokasikan vs dicadangkan.
Fungsi cleanup(): Utilitas reset kecil untuk membersihkan referensi Python dan melepaskan memori GPU yang di-cache, berguna saat beriterasi pada resolusi/langkah.
Pemeriksaan GPU: Kita gagal cepat jika CUDA tidak tersedia, lalu mengaktifkan TF32 dan mengatur presisi matmul ke "high" untuk mempercepat perkalian matriks pada GPU Ampere seperti A100.
Penyiapan ini belum menghasilkan gambar, tetapi membuat langkah berikutnya (pemuatan dan inferensi) jauh lebih stabil dan mudah di-debug.
Langkah 3: Memuat Qwen-Image-2512
Setelah runtime siap, saatnya memuat model ke dalam pipeline Diffusers. Pada A100, titik manisnya adalah menjalankan sebagian besar bobot dalam BF16 demi performa, namun mempertahankan decoding VAE di FP32 untuk menghindari NaN yang dapat muncul sebagai gambar hitam penuh.
Di GPU Ampere/Hopper (A100/H100), BF16 biasanya menjadi default terbaik karena lebih cepat dan lebih hemat memori daripada FP32, sekaligus lebih stabil secara numerik daripada FP16 untuk model besar.
Selanjutnya, kita memuat pipeline Qwen-Image-2512 penuh dari Hugging Face dan menyatukan komponen model ke antarmuka yang dapat dipanggil. Kita menggunakan beberapa argumen kunci untuk ini:
torch_dtype=DTYPE: Memuat sebagian besar bobot dalam BF16 untuk mengurangi VRAM dan mempercepat inferensi.
low_cpu_mem_usage=True: Mengurangi duplikasi di sisi CPU saat pemuatan (penting untuk checkpoint besar).
use_safetensors=True: Memastikan loader menggunakan format safetensors yang lebih aman/cepat bila tersedia.
Terakhir, pipe.vae.to(torch.float32) mengonversi keluaran ruang laten menjadi piksel. Jika langkah decode itu terkena NaN/Inf pada presisi lebih rendah, gambar akhir bisa menjadi hitam seluruhnya. Jadi, kita paksa VAE ke FP32 lalu panggil cleanup() untuk mengonfirmasi jejak RAM/VRAM pasca-pemuatan.
Selanjutnya, kita akan mendefinisikan preset rasio aspek platform dan menyambungkan pipeline ke UI Gradio minimal untuk pembuatan poster interaktif.
Langkah 4: Preset dan fungsi pembuatan gambar
Sekarang kita membangun mesin demo, yaitu lapisan kecil yang mengubah input UI menjadi prompt yang terstruktur baik, memilih resolusi keluaran berdasarkan preset platform, dan memanggil pipeline Qwen Image untuk menghasilkan gambar.
ASPECT_PRESETS ={"Instagram Post (1:1) — 1328×1328":(1328,1328),"Instagram Story (9:16) — 928×1664":(928,1664),"YouTube / Banner (16:9) — 1664×928":(1664,928),"Poster (3:4) — 1104×1472":(1104,1472),"Slides (4:3) — 1472×1104":(1472,1104),"Fast Draft (1:1) — 768×768":(768,768),}
DEFAULT_NEG =" "defbuild_prompt(product_name, product_desc, offer, price, cta, benefits, tone, style_keywords, language):returnf"""
Create a high-converting e-commerce promotional poster in {language}. Clean grid layout, strong hierarchy.
- Product name: "{product_name}"
- Product description: "{product_desc}"
- Offer headline (exact): "{offer}"
- Price (exact): "{price}"
- CTA button text (exact): "{cta}"
- Benefits (use these exact phrases, no typos):
{benefits}
- Tone: {tone}
- Style keywords: {style_keywords}
- Text must be legible and correctly spelled.
- Do not add extra words, fake prices, or random letters.
- Align typography to a neat grid with consistent margins.
""".strip()@torch.inference_mode()defgenerate_image(product_name, product_desc, offer, price, cta, benefits, tone, style_keywords,
language, preset, negative_prompt, steps, true_cfg_scale, seed, show_seed):
w, h = ASPECT_PRESETS[preset]
prompt = build_prompt(product_name, product_desc, offer, price, cta, benefits, tone, style_keywords, language)if seed isNoneorint(seed)<0:
seed = random.randint(0,2**31-1)
seed =int(seed)
gen = torch.Generator(device="cuda").manual_seed(seed)
img = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
width=int(w),
height=int(h),
num_inference_steps=int(steps),
true_cfg_scale=float(true_cfg_scale),
generator=gen,).images[0].convert("RGB")return(seed if show_seed elseNone), imgDidukung oleh
Peta preset dan dua fungsi di atas membentuk mesin inti Poster Studio kita.
Kamus ASPECT_PRESETS mendefinisikan berbagai ukuran kanvas platform (misalnya 1:1 untuk unggahan Instagram, 9:16 untuk Story, 16:9 untuk banner). Pengguna cukup memilih preset, dan kita menerjemahkannya ke lebar × tinggi yang benar untuk generasi.
Fungsi build_prompt() mengubah input produk sederhana seperti nama, penawaran, harga, CTA, dan manfaat menjadi brief gambar. Fungsi ini mempertimbangkan aturan tata letak dan teks, sehingga model mendapat batasan yang konsisten setiap kali dan tidak melenceng ke salinan acak.
Fungsi generate_image() adalah lapisan eksekusi. Ia membaca preset yang dipilih untuk mendapatkan lebar/tinggi, dan memanggil pipeline Qwen-Image dengan steps, true_cfg_scale, dan negative_prompt yang dipilih. Terakhir, ia mengembalikan poster yang dihasilkan (dan opsional seed-nya). steps mengatur durasi proses difusi (semakin banyak langkah semakin lambat namun biasanya hasil lebih bersih), sedangkan true_cfg_scale mengatur seberapa kuat model mengikuti prompt (nilai lebih tinggi berarti kepatuhan lebih baik, tetapi terlalu tinggi dapat menimbulkan artefak).
Selanjutnya, kita akan menanamkan fungsi generate_image() ke antarmuka Gradio sehingga pengguna dapat membuat poster tanpa harus berurusan langsung dengan prompt engineering mentah.
Langkah 5: UI Gradio
Terakhir, kita membungkus mesin pembuatan poster dalam antarmuka Gradio. Aplikasi memungkinkan pengguna mengetik detail produk, memilih rasio aspek platform, dan menekan Generate.
Kolom kiri mendefinisikan semua kontrol interaktif untuk brief poster. Pengguna mengisi kolom produk, lalu memilih nada, menambahkan kata kunci gaya, memilih bahasa, dan memilih preset platform. Preset penting karena dipetakan langsung ke lebar × tinggi final menggunakan ASPECT_PRESETS.
Tombol “Advanced” mencakup parameter kunci seperti steps dan true_cfg_scale, yang masing-masing mengontrol berapa banyak iterasi denoising yang dijalankan model dan seberapa kuat model mengikuti prompt. Seed mengontrol reprodusibilitas, dan show_seed secara opsional menampilkan seed akhir.
Sementara kolom kanan menampilkan gambar poster yang dihasilkan, dan opsional seed yang digunakan untuk generasi tersebut.
Terakhir, pemanggilan btn.click() menghubungkan semuanya. Gradio mengambil semua widget input sesuai urutan, meneruskannya ke generate_image(), dan menyalurkan nilai yang dikembalikan ke widget output. Terakhir, demo.launch(share=True, debug=True) memulai server Gradio, memberi kita tautan publik yang dapat dibagikan untuk demo, dan mencetak log debug di notebook untuk membantu diagnosis masalah.
Berikut video yang menampilkan aplikasi Qwen Image 2512 final kita saat digunakan:
Kesimpulan
Qwen-Image-2512 dapat digunakan baik untuk menghasilkan visual fotorealistik maupun tata letak dengan banyak teks yang andal. Dalam tutorial ini, kita membangun Poster Studio end-to-end di atas Diffusers. Kita memuat model pada A100, menambahkan preset rasio aspek platform, dan membungkus semuanya dalam UI Gradio yang mengubah input produk sederhana menjadi materi kreatif e-commerce yang rapi.
Jika Anda menjalankan pada GPU yang lebih kecil, alur kerja yang sama tetap berlaku, cukup beriterasi pada resolusi 768×768, kurangi langkah, dan pertimbangkan runtime terkuantisasi saat perlu melakukan skala.
FAQ Qwen-Image-2512
Bisakah saya menjalankan Qwen-Image-2512 pada GPU konsumen (seperti RTX 4090)?⌄
Ya, tetapi kemungkinan Anda tidak dapat menjalankan model penuh dalam presisi aslinya. Versi penuh BF16 membutuhkan sekitar 48GB+ VRAM, yang membuatnya di luar jangkauan kartu konsumen standar (bahkan RTX 4090 24GB). Namun, Anda dapat menjalankannya pada kartu 24GB dengan menggunakan kuantisasi FP8 atau format GGUF (mirip cara orang menjalankan Llama 3 secara lokal). Untuk kartu 16GB, hampir pasti Anda perlu menggunakan varian GGUF 4-bit (Q4_K_M) agar model muat di memori tanpa crash.
Apakah Qwen-Image-2512 gratis untuk penggunaan komersial?⌄
Ya. Berbeda dengan beberapa pesaing yang menggunakan lisensi komunitas yang membatasi seperti "khusus riset" atau "non-komersial", Qwen-Image-2512 dirilis di bawah lisensi Apache 2.0. Ini umumnya memungkinkan Anda menggunakan model untuk aplikasi komersial, mengintegrasikannya ke produk, dan membangun layanan (seperti Poster Studio ini) tanpa membayar royalti, asalkan Anda mematuhi ketentuan lisensi.
Bagaimana perbandingannya dengan FLUX.2?⌄
Mereka adalah kompetitor dengan kekuatan berbeda.
FLUX.2 (dan FLUX.1 Pro) umumnya dianggap paling unggul dalam fotorealisme dan estetika. Jika Anda butuh "vibes", gaya artistik, atau resolusi native 4MP untuk fotografi, FLUX.2 biasanya lebih unggul.
Qwen-Image-2512 unggul pada perenderan teks dan kepatuhan instruksi. Karena menggunakan pengenkode teks berparameter 7B yang masif, model ini mengikuti tata letak prompt yang kompleks ("letakkan teks X di sini, buat tombol Y di sana") jauh lebih akurat daripada FLUX. Model ini juga lebih baik dalam teks dwibahasa (Mandarin/Inggris) dan menghasilkan gambar menyerupai dokumen (poster, chart, faktur).
Apakah saya perlu Diffusers dari sumbernya?⌄
Ya, untuk Qwen-Image-2512, kartu modelnya sendiri menyarankan Anda menginstal Diffusers dari GitHub untuk dukungan pipeline terbaru.
Apakah `guidance_scale` adalah pengaturan yang tepat?⌄
Tidak untuk Qwen-Image saat ini. Dalam integrasi Diffusers saat ini, guidance_scale pada dasarnya hanya placeholder, jadi tidak akan memberi kita classifier-free guidance. Karena itu, kami menggunakan true_cfg_scale bersama negative_prompt (bahkan satu spasi " ") untuk mengontrol guidance. true_cfg_scale yang lebih tinggi meningkatkan kepatuhan pada prompt, tetapi jika terlalu tinggi dapat menimbulkan artefak.
Berapa ukuran model Qwen-Image-2512?⌄
Menurut repo HF, ukuran Qwen-Image-2512 sekitar ~57,7 GB, yang cukup besar untuk inferensi lokal.
Mengapa penggunaan memori begitu tinggi?⌄
Penggunaan memori tinggi karena pipeline mencakup pengenkode teks besar (Qwen2.5-VL-7B Instruct) bersama transformer difusi dan Variational Auto-Encoder(VAE).
Saya adalah Google Developers Expert di ML (Gen AI), Kaggle 3x Expert, dan Women Techmakers Ambassador dengan pengalaman lebih dari 3 tahun di bidang teknologi. Saya ikut mendirikan startup health-tech pada 2020 dan sedang menempuh studi magister ilmu komputer di Georgia Tech dengan spesialisasi machine learning.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Qwen-Image-2512 adalah model text-ke-gambar open-source yang kuat yang sangat unggul untuk visual realistis dan komposisi dengan banyak teks. Dalam tutorial ini, kita akan menggunakannya untuk membangun Poster Studio, sebuah aplikasi Gradio tempat Anda memasukkan detail produk seperti nama, penawaran, harga, CTA, dan manfaat, memilih rasio aspek platform, lalu menghasilkan gambar promo hanya dengan satu klik.
Karena Qwen-Image-2512 adalah model besar, kita juga akan menekankan sisi praktis agar berjalan lancar. Anda akan mempelajari cara memuatnya secara stabil pada A100 dengan pengaturan presisi yang tepat, menghindari mode kegagalan umum, dan beradaptasi dengan alur kerja apa pun dengan beriterasi pada resolusi lebih kecil, mengurangi langkah, atau mengeksplorasi model terkuantisasi untuk perangkat keras yang lebih ketat.
Apa itu Qwen-Image-2512?
Qwen-Image-2512 adalah pembaruan untuk model fondasi text-ke-gambar Qwen, sekaligus lompatan kualitas dibandingkan rilis Qwen-Image sebelumnya. Di balik layar, Qwen-Image adalah model difusi MMDiT 20B, yang dirancang untuk kepatuhan prompt yang kuat dan perenderan teks di dalam gambar.
Model ini juga didukung oleh evaluasi gaya preferensi skala besar dengan 10.000+ putaran buta di AI Arena, di mana model ini menonjol sebagai model open-source terkuat sekaligus tetap kompetitif dengan sistem tertutup.
Tiga peningkatan yang paling berdampak dalam alur kerja nyata adalah:
Proyek Contoh Qwen Image 2512: Bangun Poster Studio
Di bagian ini, kita akan membangun aplikasi Gradio sederhana yang:
steps,true_cfg_scale,seed, dannegative promptopsional.QwenImagePipeline.Mari kita bangun selangkah demi selangkah.
Langkah 1: Prasyarat
Pertama, instal Diffusers terbaru dari GitHub (kartu model Qwen merekomendasikan ini untuk dukungan pipeline) beserta dependensi intinya:
Selanjutnya, lakukan pemeriksaan cepat untuk memastikan CUDA tersedia dan mengidentifikasi GPU:
Jika
CUDA available: Truedan Anda melihat GPU Anda dinvidia-smi, Anda siap memuat model.Catatan:
QwenImagePipelinebukan satu blok bergaya UNet. Di Diffusers, ini adalah tumpukan lengkap yang terdiri dari pengenkode teks Qwen2.5-VL-7B-Instruct, transformer difusi MMDiT, dan Variational Auto-Encoder(VAE) untuk decoding. Pengenkode teks 7B adalah salah satu alasan utama RAM/VRAM dapat melonjak saat pemuatan model dan generasi, terutama pada GPU yang lebih kecil.Saya menjalankan tutorial ini di Google Colab dengan A100, yang mampu menangani resolusi gambar 1328×1328 pada ~50 langkah dengan nyaman. Pada GPU kelas T4/16GB, Anda biasanya perlu menurunkan skala (sekitar resolusi gambar 768×768 dan langkah lebih sedikit) atau menggunakan varian terkuantisasi melalui runtime alternatif (seperti GGUF/ComfyUI).
Langkah 2: Impor dan utilitas dasar
Sebelum kita memuat model, ada baiknya menyiapkan kerangka runtime kecil agar Colab tetap dapat diprediksi. Qwen-Image-2512 berat, dan beban kerja pembuatan gambar dapat diam-diam menghabiskan RAM sistem dan memori GPU.
Setelah dependensi terpasang, kita menyiapkan impor, cache, pemantauan memori, dan beberapa flag performa GPU. Berikut yang dilakukan kode di atas:
QwenImagePipeline: Ini adalah kelas pipeline utama yang akan kita gunakan nanti untuk memuat dan menjalankan Qwen-Image-2512 dalam pembuatan gambar.gradio: Pustaka ini menjalankan UI web sederhana sehingga kita dapat membuat poster di dalam Colab.HF_HOME=/content/hf: Kita gunakan untuk mengikat cache Hugging Face ke folder yang pasti, sehingga unduhan model dan bobot tersimpan konsisten di berbagai run.mem(): Fungsi mem() melacak RAM sistem dan VRAM GPU yang dialokasikan vs dicadangkan.cleanup(): Utilitas reset kecil untuk membersihkan referensi Python dan melepaskan memori GPU yang di-cache, berguna saat beriterasi pada resolusi/langkah.Penyiapan ini belum menghasilkan gambar, tetapi membuat langkah berikutnya (pemuatan dan inferensi) jauh lebih stabil dan mudah di-debug.
Langkah 3: Memuat Qwen-Image-2512
Setelah runtime siap, saatnya memuat model ke dalam pipeline Diffusers. Pada A100, titik manisnya adalah menjalankan sebagian besar bobot dalam BF16 demi performa, namun mempertahankan decoding VAE di FP32 untuk menghindari NaN yang dapat muncul sebagai gambar hitam penuh.
Berikut yang ingin kita capai pada kode di atas:
torch_dtype=DTYPE: Memuat sebagian besar bobot dalam BF16 untuk mengurangi VRAM dan mempercepat inferensi.low_cpu_mem_usage=True: Mengurangi duplikasi di sisi CPU saat pemuatan (penting untuk checkpoint besar).use_safetensors=True: Memastikan loader menggunakan format safetensors yang lebih aman/cepat bila tersedia.pipe.vae.to(torch.float32)mengonversi keluaran ruang laten menjadi piksel. Jika langkah decode itu terkena NaN/Inf pada presisi lebih rendah, gambar akhir bisa menjadi hitam seluruhnya. Jadi, kita paksa VAE ke FP32 lalu panggilcleanup()untuk mengonfirmasi jejak RAM/VRAM pasca-pemuatan.Selanjutnya, kita akan mendefinisikan preset rasio aspek platform dan menyambungkan pipeline ke UI Gradio minimal untuk pembuatan poster interaktif.
Langkah 4: Preset dan fungsi pembuatan gambar
Sekarang kita membangun mesin demo, yaitu lapisan kecil yang mengubah input UI menjadi prompt yang terstruktur baik, memilih resolusi keluaran berdasarkan preset platform, dan memanggil pipeline Qwen Image untuk menghasilkan gambar.
Peta preset dan dua fungsi di atas membentuk mesin inti Poster Studio kita.
ASPECT_PRESETSmendefinisikan berbagai ukuran kanvas platform (misalnya 1:1 untuk unggahan Instagram, 9:16 untuk Story, 16:9 untuk banner). Pengguna cukup memilih preset, dan kita menerjemahkannya kelebar × tinggiyang benar untuk generasi.build_prompt()mengubah input produk sederhana seperti nama, penawaran, harga, CTA, dan manfaat menjadi brief gambar. Fungsi ini mempertimbangkan aturan tata letak dan teks, sehingga model mendapat batasan yang konsisten setiap kali dan tidak melenceng ke salinan acak.generate_image()adalah lapisan eksekusi. Ia membaca preset yang dipilih untuk mendapatkanlebar/tinggi, dan memanggil pipeline Qwen-Image dengansteps,true_cfg_scale, dannegative_promptyang dipilih. Terakhir, ia mengembalikan poster yang dihasilkan (dan opsional seed-nya).stepsmengatur durasi proses difusi (semakin banyak langkah semakin lambat namun biasanya hasil lebih bersih), sedangkantrue_cfg_scalemengatur seberapa kuat model mengikuti prompt (nilai lebih tinggi berarti kepatuhan lebih baik, tetapi terlalu tinggi dapat menimbulkan artefak).Selanjutnya, kita akan menanamkan fungsi
generate_image()ke antarmuka Gradio sehingga pengguna dapat membuat poster tanpa harus berurusan langsung dengan prompt engineering mentah.Langkah 5: UI Gradio
Terakhir, kita membungkus mesin pembuatan poster dalam antarmuka Gradio. Aplikasi memungkinkan pengguna mengetik detail produk, memilih rasio aspek platform, dan menekan Generate.
Berikut cara kita membangun aplikasi Gradio:
lebar × tinggifinal menggunakanASPECT_PRESETS.stepsdantrue_cfg_scale, yang masing-masing mengontrol berapa banyak iterasi denoising yang dijalankan model dan seberapa kuat model mengikuti prompt. Seed mengontrol reprodusibilitas, danshow_seedsecara opsional menampilkan seed akhir.btn.click()menghubungkan semuanya. Gradio mengambil semua widget input sesuai urutan, meneruskannya kegenerate_image(), dan menyalurkan nilai yang dikembalikan ke widget output. Terakhir,demo.launch(share=True, debug=True)memulai server Gradio, memberi kita tautan publik yang dapat dibagikan untuk demo, dan mencetak log debug di notebook untuk membantu diagnosis masalah.Berikut video yang menampilkan aplikasi Qwen Image 2512 final kita saat digunakan: