Awal tahun ini, kami melakukan pratinjau pembuatan teks ke gambar pada perangkat dengan model difusi untuk Android melalui MediaPipe Solutions. Hari ini, kami dengan senang hati mengumumkan bahwa solusi ini tersedia sebagai solusi awal dan eksperimental, Image Generator, yang dapat dicoba oleh developer di perangkat Android, sehingga Anda dapat dengan mudah membuat gambar sepenuhnya di perangkat dengan waktu hanya ~15 detik di perangkat kelas atas Anda. Kami tidak sabar ingin melihat apa yang Anda buat!
Ada tiga cara utama yang digunakan untuk menjalankan tugas MediaPipe Image Generator baru:
Sebelum kita membahas semua bagian seru dan mengasyikkan dari tugas MediaPipe baru ini, penting untuk diketahui bahwa Image Generation API kami mendukung model apa pun yang sama persis dengan arsitektur Stable Diffusion v1.5. Anda dapat menggunakan model terlatih atau model yang telah disempurnakan dengan mengonversinya ke format model yang didukung oleh MediaPipe Image Generator menggunakan skrip konversi kami.
Anda juga dapat menyesuaikan model dasar melalui penyempurnaan MediaPipe Diffusion LoRA di Vertex AI, memasukkan konsep baru ke dalam model dasar tanpa harus menyempurnakan keseluruhan model. Anda dapat menemukan informasi selengkapnya tentang proses ini di dokumentasi resmi kami.
Jika Anda ingin mencoba tugas ini sekarang tanpa penyesuaian apa pun, kami juga menyediakan link ke beberapa model kerja terverifikasi dalam dokumentasi yang sama.
Cara paling mudah untuk mencoba tugas Image Generator adalah dengan memberikan prompt teks, dan kemudian menerima gambar hasil menggunakan model difusi.
Seperti tugas MediaPipe lainnya, Anda akan memulai dengan membuat objek opsi. Dalam hal ini, Anda hanya perlu menentukan jalur ke file model dasar pada perangkat. Setelah Anda menentukan objek opsi tersebut, Anda dapat membuat ImageGenerator.
val options = ImageGeneratorOptions.builder().setImageGeneratorModelDirectory(MODEL_PATH).build() imageGenerator = ImageGenerator.createFromOptions(context, options)
Setelah membuat ImageGenerator baru, Anda dapat membuat gambar baru dengan memasukkan prompt, jumlah iterasi yang harus dilakukan generator untuk menghasilkan gambar, dan nilai awal. Ini akan menjalankan operasi pemblokiran untuk membuat gambar baru, jadi Anda sebaiknya menjalankannya di thread di latar belakang sebelum mengembalikan objek hasil Bitmap baru Anda.
val result = imageGenerator.generate(prompt_string, iterations, seed) val bitmap = BitmapExtractor.extract(result?.generatedImage())
Selain format input masuk/hasil keluar yang sederhana ini, kami juga mendukung cara bagi Anda untuk menelusuri setiap iterasi secara manual melalui fungsi execute(), yang dapat menghasilkan gambar hasil tingkat menengah pada tahap yang berbeda untuk menampilkan progres generatif. Meskipun meminta hasil tingkat menengah tidak disarankan untuk sebagian besar aplikasi karena kinerja dan kompleksitasnya, cara ini bagus untuk mendemonstrasikan cara kerjanya. Hal tersebut merupakan proses yang lebih mendalam, tetapi Anda dapat menemukan demo ini, serta contoh lain yang ditampilkan dalam postingan ini, di aplikasi contoh resmi kami di GitHub.
Meskipun kemampuan membuat gambar baru hanya dari prompt di perangkat sudah merupakan langkah besar, kami telah mengambil langkah yang lebih besar dengan menerapkan sistem plugin baru yang memungkinkan model difusi menerima gambar dengan kondisi bersamaan dengan prompt teks sebagai inputnya.
Saat ini kami mendukung tiga cara berbeda yang dapat menjadi dasar bagi pembuatan gambar Anda: struktur wajah, deteksi tepian, dan tingkat kedalaman. Plugin memberi Anda kemampuan untuk menyediakan gambar, mengekstrak struktur tertentu darinya, dan kemudian membuat gambar baru menggunakan struktur tersebut.
Fitur utama ketiga yang kami luncurkan hari ini adalah kemampuan untuk menyesuaikan tugas Image Generator dengan LoRA yang mengajarkan model dasar tentang konsep baru, seperti objek, orang, atau gaya tertentu yang disajikan selama pelatihan. Dengan bobot LoRA yang baru, Image Generator menjadi generator khusus yang mampu memasukkan konsep spesifik ke dalam gambar yang dihasilkan.
Bobot LoRA berguna ketika Anda mungkin ingin setiap gambar memiliki gaya lukisan cat minyak, atau teko tertentu muncul dalam pengaturan apa pun yang dibuat. Anda dapat menemukan informasi selengkapnya tentang bobot LoRA di Vertex AI di kartu model MediaPipe Stable Diffusion LoRA, dan membuatnya menggunakan notebook ini. Setelah dibuat, Anda dapat menerapkan bobot LoRA pada perangkat menggunakan MediaPipe Tasks Image Generator API, atau untuk inferensi server yang dioptimalkan melalui penerapan satu klik Vertex AI.
Dalam contoh di bawah, kami membuat bobot LoRA menggunakan beberapa gambar teko dari kumpulan gambar pelatihan teko Dreambooth. Kemudian kami menggunakan bobot LoRA untuk menghasilkan gambar teko baru dalam pengaturan berbeda.
Ini hanyalah permulaan dari apa yang kami rencanakan untuk mendukung pembuatan gambar di perangkat. Kami menantikan hal-hal hebat yang dibangun oleh komunitas developer, jadi pastikan untuk mempostingnya di X (atau Twitter) dengan hashtag #MediaPipeImageGen dan tag @GoogleDevs. Anda dapat melihat contoh resmi di GitHub yang mendemonstrasikan semua yang baru saja Anda pelajari, serta baca dokumentasi resmi kami untuk detail lebih lanjut, dan pantau terus saluran YouTube Google for Developers untuk update dan tutorial yang dirilis oleh tim MediaPipe.
Kami ingin mengucapkan terima kasih kepada semua anggota tim yang berkontribusi pada pekerjaan ini: Lu Wang, Yi-Chun Kuo, Sebastian Schmidt, Kris Tonthat, Jiuqiang Tang, Khanh LeViet, Paul Ruiz, Qifei Wang, Yang Zhao, Yuqi Li, Lawrence Chan, Tingbo Hou, Joe Zou, Raman Sarokin, Juhyun Lee, Geng Yan, Ekaterina Ignasheva, Shanthal Vasanth, Glenn Cameron, Mark Sherwood, Andrei Kulik, Chuo-Ling Chang, dan Matthias Grundmann dari tim Core ML, serta Changyu Zhu, Genquan Duan, Bo Wu, Ting Yu, dan Shengyang Dai dari Google Cloud.