Repositori ini berisi implementasi C ++ sepenuhnya dari sintesis gambar berbasis difusi yang stabil , termasuk kemampuan TXT2IMG, IMG2IMG dan inpainting asli dan pemeriksa pengaman. Solusi ini tidak tergantung pada Python dan menjalankan seluruh proses pembuatan gambar dalam satu proses dengan kinerja kompetitif , membuat penyebaran secara signifikan lebih sederhana dan lebih kecil, pada dasarnya terdiri dari beberapa file yang dapat dieksekusi dan perpustakaan, dan bobot model. Menggunakan perpustakaan, dimungkinkan untuk mengintegrasikan difusi stabil ke dalam hampir semua aplikasi - selama dapat mengimpor fungsi C ++ atau C, tetapi ini paling berguna bagi pengembang aplikasi grafik dan permainan realtime , yang sering direalisasikan dengan C ++.
![]() | ![]() | ![]() |
Perpustakaan juga mendukung ControlNet, ini memungkinkan penggunaan gambar input untuk memandu proses pembuatan gambar, misalnya:
Dalam contoh pertama ini, kami menggunakan estimator openpose dan controlnet terkondisi openpose, kami dapat memandu generasi IMG2IMG dengan menentukan pose, sehingga menghasilkan hasil yang lebih baik.
Menggunakan deteksi tepi hed dan controlnet terkondisi tepi, kami mengubah gaya gambar untuk menyerupai ilustrasi buku komik, tetapi menjaga tata letak tetap utuh.
Menggunakan penduga kedalaman dan peta kedalaman terkondisi ControlNet, kami menghasilkan karakter yang berbeda, tetapi tetap mengatur pengaturan asli.
Perpustakaan juga menyediakan implementasi GPU yang dipercepat dari ekstraktor fitur berikut (ditampilkan di atas):
Berikut adalah beberapa contoh kode sederhana:
Model AI yang diperlukan untuk perpustakaan disimpan dalam format ONNX. Semua model telah dijalankan melalui Microsoft Olive dan dioptimalkan untuk DirectML. Saya telah menguji perpustakaan dengan model -model berikut:
Anda dapat membawa model Anda sendiri, dengan mengubahnya menggunakan panduan ini.
Pastikan untuk memeriksa lisensi asli model jika Anda berencana untuk mengintegrasikannya dalam produk Anda.
Implementasi menggunakan ONNX untuk menyimpan model matematika yang terlibat dalam pembuatan gambar. Model ONNX ini kemudian dieksekusi menggunakan runtime ONNX, yang mendukung berbagai platform (Windows, Linux, MacOS, Android, iOS, WebAssembly dll.), Dan penyedia eksekusi (seperti NVIDIA CUDA / TENSORRT; AMD ROCM, Apple Coreml, Qualcomm Qnn, Microsoft Direcoml dan banyak lagi.
Kami memberikan contoh integrasi yang disebut unpaint yang menampilkan bagaimana perpustakaan dapat diintegrasikan dalam antarmuka pengguna berbasis WinUI yang sederhana. Anda dapat mengunduh aplikasi gratis dari Microsoft Store untuk mengevaluasi karakteristik kinerja solusi.
Basis kode saat ini dan Paket Nuget yang dihasilkan menargetkan Windows dan menggunakan DirectML, namun hanya bagian kecil dari kode yang menggunakan API spesifik Windows, dan dengan demikian dapat diangkut ke platform lain dengan upaya minimal.
Kode sumber perpustakaan ini disediakan di bawah lisensi MIT.
Versi prebuilt dari proyek dapat diambil dari Nuget dengan nama Axodox.MachineLearning dan ditambahkan ke proyek Visual Studio C ++ (baik proyek desktop dan UWP didukung) dengan platform X64.
Integrasi Dasar:
Axodox.Common dan Axodox.MachineLearning ke proyek Anda#include "Include/Axodox.MachineLearning.h"Kami merekomendasikan menambahkan mekanisme keamanan yang tepat ke aplikasi Anda untuk menekan output stablediffusion yang tidak tepat, overhead kinerja tidak signifikan.
Model difusi stabil yang kami gunakan telah dihasilkan menggunakan Microsoft Olive, silakan ikuti contoh yang ditautkan untuk mengonversi model dari Huggingface. Dengan mengubah skrip, Anda juga dapat mengonversi model yang disimpan di disk Anda dari berbagai format (misalnya *.safetensors ). Anda dapat menemukan beberapa model prasaktif di sini untuk pengujian.
Membangun perpustakaan diperlukan untuk membuat dan menguji perubahan. Anda harus menginstal berikut untuk membangun perpustakaan:
Anda dapat menjalankan build_nuget.ps1 atau membuka Axodox.MachineLearning.sln dan membangun dari Visual Studio.
Setelah Anda membangun perpustakaan, Anda mengesampingkan pemasangan paket Nuget yang ada dengan mengatur variabel lingkungan AxodoxMachineLearning-Location untuk menunjuk ke build lokal Anda.
Misalnya
C:devaxodox-machinelearningAxodox.MachineLearning.Universaluntuk aplikasi UWP danC:devaxodox-machinelearningAxodox.MachineLearning.Desktopuntuk aplikasi desktop.
Kemudian tambahkan proyek yang ditunjuk oleh jalur ke solusi proyek Anda sendiri. Ini memungkinkan untuk menambahkan semua proyek ke dalam solusi yang sama dan membuat perubahan di perpustakaan dan aplikasi Anda mulus tanpa menyalin file berulang kali.