Sekadar catatan bahwa saya telah meluncurkan Dream Factory, peningkatan yang signifikan terhadap hal ini. Ia memiliki GUI (opsional), dukungan multi-GPU simultan, galeri terintegrasi dengan dukungan metadata EXIF penuh, dan banyak fitur baru lainnya.
Saya menghentikan dukungan VQGAN dan Disco Diffusion untuk fokus pada Difusi Stabil, jadi jika Anda menginginkan VQGAN dan/atau Disco Diffusion, Anda harus tetap menggunakan ini untuk saat ini. Kalau tidak, saya mendorong semua orang untuk bermigrasi ke Dream Factory! Saya akan terus melakukan perbaikan bug pada repo ini, tetapi kemungkinan besar saya tidak akan menambahkan fitur baru di masa mendatang.
Untuk mengotomatiskan pembuatan karya seni buatan AI dalam jumlah besar secara lokal. Manfaatkan GPU Anda untuk menghasilkan karya seni yang dihasilkan AI 24/7 dengan kemampuan untuk mengotomatiskan antrean cepat besar yang menggabungkan subjek, gaya/artis pilihan pengguna, dan banyak lagi! Info lebih lanjut tentang model mana yang tersedia setelah contoh foto.
Beberapa contoh gambar yang saya buat melalui proses ini (ini dipilih dan dipertajam):
Perhatikan bahwa saya tidak membuat atau melatih model yang digunakan dalam proyek ini, saya juga tidak terlibat dalam pengkodean aslinya. Saya cukup memodifikasi versi colab asli sehingga dapat berjalan secara lokal dan menambahkan beberapa dukungan untuk otomatisasi. Model yang saat ini didukung, dengan link ke implementasi aslinya:
Anda memerlukan GPU Nvidia, sebaiknya dengan jumlah VRAM yang layak. VRAM 12GB cukup untuk gambar keluaran 512x512 tergantung pada model dan pengaturan, dan 8GB seharusnya cukup untuk 384x384 (8GB harus dianggap sebagai jumlah minimum yang masuk akal!). Untuk menghasilkan gambar 1024x1024, Anda memerlukan VRAM ~24 GB atau lebih. Menghasilkan gambar kecil dan kemudian meningkatkannya melalui ESRGAN atau paket lainnya juga memberikan hasil yang sangat baik.
Ini seharusnya dapat dijalankan pada GPU AMD, tetapi Anda harus menggunakan Linux untuk menginstal Pytorch versi ROCm. Saya tidak memiliki GPU AMD untuk dimasukkan ke mesin Linux jadi saya belum mengujinya sendiri.
Instruksi ini diuji pada desktop Windows 10 dengan GPU Nvidia 3080 Ti (VRAM 12 GB), dan juga pada sistem Ubuntu Server 20.04.3 dengan GPU Nvidia Tesla M40 lama (VRAM 24 GB).
[1] Instal Anaconda, buka terminal root, dan buat lingkungan baru (dan aktifkan):
conda create --name ai-art python=3.9
conda activate ai-art
[2] Instal Pytorch:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
Perhatikan bahwa Anda dapat menyesuaikan instalasi Pytorch Anda dengan menggunakan alat online yang terdapat di sini.
[3] Instal paket Python lain yang diperlukan:
conda install -c anaconda git urllib3
pip install transformers keyboard pillow ftfy regex tqdm omegaconf pytorch-lightning IPython kornia imageio imageio-ffmpeg einops torch_optimizer
[4] Kloning repositori ini dan alihkan ke direktorinya:
git clone https://github.com/rbbrdckybk/ai-art-generator
cd ai-art-generator
Perhatikan bahwa pengguna Linux mungkin memerlukan tanda kutip tunggal di sekitar URL dalam perintah clone.
[5] Kloning repositori tambahan yang diperlukan:
git clone https://github.com/openai/CLIP
git clone https://github.com/CompVis/taming-transformers
[6] Unduh file pos pemeriksaan model terlatih VQGAN default:
mkdir checkpoints
curl -L -o checkpoints/vqgan_imagenet_f16_16384.yaml -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fconfigs%2Fmodel.yaml&dl=1"
curl -L -o checkpoints/vqgan_imagenet_f16_16384.ckpt -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fckpts%2Flast.ckpt&dl=1"
Perhatikan bahwa pengguna Linux harus mengganti tanda kutip ganda pada perintah curl dengan tanda kutip tunggal.
[7] (Opsional) Unduh model terlatih tambahan:
Model tambahan tidak diperlukan, tetapi memberi Anda lebih banyak opsi. Berikut adalah daftar model terlatih yang tersedia.
Misalnya, jika Anda juga menginginkan model FFHQ (dilatih pada wajah):
curl -L -o checkpoints/ffhq.yaml -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/2021-04-23T18-19-01-project.yaml?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fconfigs%2F2021-04-23T18-19-01-project.yaml&force"
curl -L -o checkpoints/ffhq.ckpt -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/last.ckpt?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fcheckpoints%2Flast.ckpt"
[8] (Opsional) Uji VQGAN+KLIP:
python vqgan.py -s 128 128 -i 200 -p "a red apple" -o output/output.png
Anda akan melihat output.png dibuat di direktori output, yang seharusnya menyerupai sebuah apel.
[9] Instal paket untuk difusi yang dipandu CLIP (jika Anda hanya tertarik pada VQGAN+CLIP, Anda dapat melewati semuanya dari sini hingga akhir):
pip install ipywidgets omegaconf torch-fidelity einops wandb opencv-python matplotlib lpips datetime timm
conda install pandas
[10] Mengkloning repositori untuk difusi yang dipandu CLIP:
git clone https://github.com/crowsonkb/guided-diffusion
git clone https://github.com/assafshocher/ResizeRight
git clone https://github.com/CompVis/latent-diffusion
[11] Unduh model yang diperlukan untuk difusi berpemandu CLIP:
mkdir contentmodels
curl -L -o content/models/256x256_diffusion_uncond.pt -C - "https://openaipublic.blob.core.windows.net/diffusion/jul-2021/256x256_diffusion_uncond.pt"
curl -L -o content/models/512x512_diffusion_uncond_finetune_008100.pt -C - "http://batbot.tv/ai/models/guided-diffusion/512x512_diffusion_uncond_finetune_008100.pt"
curl -L -o content/models/secondary_model_imagenet_2.pth -C - "https://ipfs.pollinations.ai/ipfs/bafybeibaawhhk7fhyhvmm7x24zwwkeuocuizbqbcg5nqx64jq42j75rdiy/secondary_model_imagenet_2.pth"
mkdir contentmodelssuperres
curl -L -o content/models/superres/project.yaml -C - "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1"
curl -L -o content/models/superres/last.ckpt -C - "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1"
Perhatikan bahwa pengguna Linux harus mengganti lagi tanda kutip ganda pada perintah curl dengan tanda kutip tunggal, dan mengganti garis miring terbalik mkdir dengan garis miring ke depan.
[12] (Opsional) Uji difusi yang dipandu CLIP:
python diffusion.py -s 128 128 -i 200 -p "a red apple" -o output.png
Anda akan melihat output.png dibuat di direktori output, yang seharusnya menyerupai sebuah apel.
[13] Repositori Clone Stable Diffusion (jika Anda tidak tertarik dengan SD, Anda dapat melewati semuanya dari sini sampai akhir):
git clone https://github.com/rbbrdckybk/stable-diffusion
[14] Instal ketergantungan tambahan yang diperlukan oleh Difusi Stabil:
pip install diffusers
[15] Unduh file pos pemeriksaan Difusi Stabil yang telah dilatih sebelumnya:
mkdir stable-diffusionmodelsldmstable-diffusion-v1
curl -L -o stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt -C - "https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt"
Jika perintah curl tidak mengunduh checkpoint, maka checkpoint tersebut dilindungi oleh login. Anda harus mendaftar di sini (hanya memerlukan email dan nama) dan kemudian Anda dapat mengunduh file pos pemeriksaan di sini.
Setelah mengunduh, Anda perlu menempatkan file .ckpt di direktori yang dibuat di atas dan beri nama model.ckpt .
[16] (Opsional) Uji Difusi Stabil:
Cara termudah untuk menguji SD adalah dengan membuat file prompt sederhana dengan !PROCESS = stablediff dan satu subjek. Lihat example-prompts.txt dan bagian selanjutnya untuk informasi lebih lanjut. Dengan asumsi Anda membuat file prompt sederhana bernama test.txt terlebih dahulu, Anda dapat mengujinya dengan menjalankan:
python make_art.py test.txt
Gambar harus disimpan ke direktori keluaran jika berhasil (diorganisasikan ke dalam subdirektori yang diberi nama berdasarkan tanggal dan file prompt).
[17] Siapkan ESRGAN/GFPGAN (jika Anda tidak berencana meningkatkan gambar, Anda dapat melewati ini dan yang lainnya):
git clone https://github.com/xinntao/Real-ESRGAN
pip install basicsr facexlib gfpgan
cd Real-ESRGAN
curl -L -o experiments/pretrained_models/RealESRGAN_x4plus.pth -C - "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth"
python setup.py develop
cd ..
Anda sudah selesai!
Jika Anda mendapatkan kesalahan di luar GPU VRAM yang tidak mencukupi saat menjalankan dan sudah lama tidak memperbarui instalasi, coba perbarui beberapa paket yang lebih penting, misalnya:
pip install transformers -U
Intinya, Anda hanya perlu membuat file teks berisi subjek dan gaya yang ingin Anda gunakan untuk menghasilkan gambar. Jika Anda memiliki 5 subjek dan 20 gaya dalam file prompt Anda, maka total 100 gambar keluaran akan dibuat (20 gambar gaya untuk setiap subjek).
Lihat example-prompts.txt untuk melihat tampilan file prompt. Anda dapat mengabaikan semuanya kecuali area [subjek] dan [gaya] untuk saat ini. Baris yang diawali dengan '#' adalah komentar dan akan diabaikan, dan baris yang diawali dengan '!' adalah arahan pengaturan dan dijelaskan di bagian selanjutnya. Untuk saat ini, cukup ubah contoh subjek dan gaya dengan apa pun yang ingin Anda gunakan.
Setelah Anda mengisi example-prompts.txt sesuai keinginan Anda, Anda cukup menjalankan:
python make_art.py example-prompts.txt
Bergantung pada perangkat keras dan pengaturan Anda, setiap gambar akan memerlukan waktu mulai dari beberapa detik hingga beberapa jam (pada perangkat keras lama) untuk dibuat. Jika Anda dapat menjalankan Difusi Stabil, saya sangat merekomendasikannya untuk hasil terbaik - baik dalam kecepatan maupun kualitas gambar.
Gambar keluaran dibuat di direktori output/[tanggal sekarang]-[nama file prompt]/ secara default. Direktori keluaran akan berisi file JPG untuk setiap gambar yang diberi nama sesuai subjek & gaya yang digunakan untuk membuatnya. Jadi misalnya, jika Anda memiliki "monyet di atas sepeda motor" sebagai salah satu subjek Anda, dan "oleh Picasso" sebagai gaya, gambar output akan dibuat sebagai output/[tanggal sekarang]-[nama file prompt]/a -monkey-on-a-motorcycle-by-picasso.jpg (nama file akan sedikit berbeda tergantung pada proses yang digunakan).
Anda dapat menekan CTRL+SHIFT+P kapan saja untuk menjeda eksekusi (jeda akan berlaku saat gambar saat ini selesai dirender). Tekan CTRL+SHIFT+P lagi untuk membatalkan jeda. Berguna jika Anda menjalankan ini di komputer utama dan perlu menggunakan GPU untuk hal lain untuk sementara waktu. Anda juga dapat menekan CTRL+SHIFT+R untuk memuat ulang file prompt jika Anda telah mengubahnya (antrian pekerjaan saat ini akan dibuang, dan yang baru akan dibuat dari konten file prompt Anda). Perhatikan bahwa input keyboard hanya berfungsi di Windows.
Pengaturan yang digunakan untuk membuat setiap gambar disimpan sebagai metadata di setiap file JPG keluaran secara default. Anda dapat membaca kembali informasi metadata dengan menggunakan utilitas EXIF apa pun, atau cukup dengan mengklik kanan file gambar di Windows Explorer dan memilih "properties", lalu mengklik panel "detail". Bidang "komentar" berisi perintah yang digunakan untuk membuat gambar.
Arahan dapat disertakan dalam file prompt Anda untuk mengubah pengaturan untuk semua perintah yang mengikutinya. Arahan pengaturan ini ditentukan dengan menempatkannya pada barisnya sendiri di dalam area [subjek] dari file prompt, dalam format berikut:
![pengaturan untuk diubah] = [nilai baru]
Untuk [setting to change] , arahan yang valid adalah:
Beberapa contoh:
!PROCESS = vqgan
Ini akan mengatur proses pembuatan gambar AI saat ini. Opsi yang valid adalah vqgan untuk VQGAN+CLIP, difusi untuk difusi terpandu CLIP (Disco Diffusion), atau stablediff untuk Difusi Stabil.
!CUDA_DEVICE = 0
Ini akan memaksa GPU 0 digunakan (default). Berguna jika Anda memiliki beberapa GPU - Anda dapat menjalankan beberapa instance, masing-masing dengan file promptnya sendiri yang menentukan ID GPU unik.
!WIDTH = 384
!HEIGHT = 384
Ini akan mengatur ukuran gambar keluaran menjadi 384x384. Ukuran output yang lebih besar membutuhkan lebih banyak GPU VRAM. Perhatikan bahwa untuk Difusi Stabil, nilai ini harus kelipatan 64.
!TRANSFORMER = ffhq
Ini akan memberitahu VQGAN untuk menggunakan transformator FFHQ (agak lebih baik pada bagian mukanya), daripada yang default (vqgan_imagenet_f16_16384). Anda dapat mengikuti langkah 7 pada petunjuk setup di atas untuk mendapatkan trafo ffhq, beserta link beberapa lainnya.
Apa pun yang Anda tentukan di sini HARUS ada di direktori pos pemeriksaan sebagai file .ckpt dan .yaml.
!INPUT_IMAGE = samples/face-input.jpg
Ini akan menggunakan sample/face-input.jpg (atau gambar apa pun yang Anda tentukan) sebagai gambar awal, bukan noise acak default. Gambar masukan harus memiliki rasio aspek yang sama dengan gambar keluaran Anda untuk hasil yang baik. Perhatikan bahwa ketika menggunakan dengan Difusi Stabil, ukuran gambar keluaran akan sama dengan gambar masukan Anda (pengaturan tinggi/lebar akan diabaikan).
!SEED = 42
Ini akan menggunakan 42 sebagai nilai input benih, bukan angka acak (default). Berguna untuk reproduktifitas - ketika semua parameter lainnya identik, penggunaan nilai seed yang sama akan menghasilkan gambar yang identik di beberapa proses. Atur ke nol atau -1 untuk mengatur ulang menggunakan nilai acak.
!INPUT_IMAGE =
Menyetel salah satu nilai ini ke nol akan mengembalikannya ke nilai default. Jadi dalam contoh ini, tidak ada gambar awal yang akan digunakan.
!STEPS = 50
Menetapkan jumlah langkah (mirip dengan iterasi) saat menggunakan Difusi Stabil ke 50 (default). Nilai yang lebih tinggi memerlukan waktu lebih lama dan dapat meningkatkan kualitas gambar. Nilai di atas 100 jarang menghasilkan perbedaan yang nyata dibandingkan dengan nilai yang lebih rendah.
!SCALE = 7.5
Mengatur skala panduan saat menggunakan Difusi Stabil ke 7,5 (default). Nilai yang lebih tinggi (sampai titik tertentu, di luar ~25 hasil mungkin aneh) akan menyebabkan keluaran lebih sesuai dengan perintah Anda.
!SAMPLES = 1
Mengatur berapa kali pengambilan sampel saat menggunakan Difusi Stabil ke 1 (default). Nilai di atas 1 akan menyebabkan beberapa gambar keluaran dibuat untuk setiap perintah dengan sedikit penghematan waktu per gambar. Tidak diperlukan biaya dalam GPU VRAM untuk meningkatkannya.
!STRENGTH = 0.75
Mengatur pengaruh gambar awal ke 0,75 (default). Hanya relevan ketika menggunakan Difusi Stabil dengan gambar masukan. Nilai yang valid adalah antara 0-1, dengan 1 berarti kehancuran total gambar masukan, dan 0 berarti membiarkan gambar awal tetap utuh. Nilai antara 0,25 dan 0,75 cenderung memberikan hasil yang menarik.
!SD_LOW_MEMORY = no
Gunakan repo bercabang dengan kebutuhan memori GPU yang jauh lebih rendah saat menggunakan Difusi Stabil (ya/tidak)? Menyetelnya ke ya akan beralih menggunakan versi SD dengan memori yang dioptimalkan yang memungkinkan Anda membuat gambar beresolusi lebih tinggi dengan memori GPU yang jauh lebih sedikit (gambar 512x512 hanya memerlukan VRAM sekitar 4 GB). Imbalannya adalah inferensinya jauh lebih lambat dibandingkan dengan repo resmi default. Sebagai perbandingan: pada RTX 3060, pembuatan gambar 512x512 pada pengaturan default membutuhkan waktu sekitar 12 detik; dengan !SD_LOW_MEMORY = yes , gambar yang sama membutuhkan waktu lebih dari satu menit. Rekomendasikan untuk tidak mengaktifkannya kecuali Anda memiliki VRAM GPU di bawah 8 GB, atau ingin bereksperimen dengan membuat gambar lebih besar sebelum meningkatkannya.
!USE_UPSCALE = no
Secara otomatis meningkatkan gambar yang dibuat dengan Difusi Stabil (ya/tidak)? Menggunakan ESRGAN/GFPGAN (lihat pengaturan tambahan di bawah).
!UPSCALE_AMOUNT = 2
Berapa skala yang harus diukur ketika !USE_UPSCALE = yes . Standarnya adalah 2,0x; nilai yang lebih tinggi memerlukan lebih banyak VRAM dan waktu.
!UPSCALE_FACE_ENH = no
Apakah akan menggunakan GFPGAN (vs ESRGAN default) saat melakukan peningkatan atau tidak. GFPGAN memberikan hasil terbaik pada wajah, namun mungkin memberikan hasil yang sedikit lebih buruk jika digunakan pada subjek selain wajah.
!UPSCALE_KEEP_ORG = no
Simpan gambar asli yang tidak dimodifikasi saat melakukan peningkatan (ya/tidak)? Jika diatur ke no (default), gambar asli akan dihapus. Jika disetel ke ya, gambar asli akan disimpan dalam subdirektori /asli pada folder keluaran gambar.
!REPEAT = no
Ketika semua pekerjaan di file prompt selesai, restart kembali di bagian atas file (ya/tidak)? Defaultnya adalah tidak, yang hanya akan menghentikan eksekusi ketika semua pekerjaan telah selesai.
TODO: selesaikan contoh pengaturan & tambahkan tip/contoh penggunaan, dokumen random_art.py