Dieses Repository enthält eine vollständige C ++ -Implementierung der stabilen diffusionsbasierten Bildsynthese, einschließlich der ursprünglichen Funktionen von TXT2IMG, IMG2IMG und Inpainting und der Sicherheitsprüfung. Diese Lösung hängt nicht von Python ab und führt den gesamten Bildgenerierungsprozess in einem einzigen Prozess mit Wettbewerbsleistung aus , wodurch die Bereitstellungen wesentlich einfacher und kleiner sind und im Wesentlichen einige ausführbare Dateien und Bibliotheksdateien sowie die Modellgewichte bestehen. Mit der Bibliothek ist es möglich, eine stabile Diffusion in fast jede Anwendung zu integrieren - solange sie C ++ - oder C -Funktionen importieren kann, ist jedoch für die Entwickler von Echtzeit -Grafikanwendungen und -spielen am nützlichsten , die häufig mit C ++ realisiert werden.
![]() | ![]() | ![]() |
Die Bibliothek unterstützt auch ControlNET. Dadurch werden Eingabebilder verwendet, um den Bildgenerierungsprozess zu leiten, beispielsweise:
In diesem ersten Beispiel verwenden wir einen geöffneten Schätzer und einen geöffneten konditionierten ControlNET.
Mithilfe der HED -Kantenerkennung und des kantenbedingten Steuerungsnetzes ändern wir den Stil des Bildes, um einer Comic -Illustration zu ähneln, halten das Layout jedoch intakt.
Mit einem Tiefenschätzer und einer Tiefenkarte konditionierte Steuerung generieren wir ein anderes Zeichen, behalten jedoch das ursprüngliche Setup.
Die Bibliothek bietet auch GPU -beschleunigte Implementierungen der folgenden Merkmalextraktoren (oben angezeigt):
Hier sind einige einfache Code -Beispiele:
Die für die Bibliothek erforderlichen KI -Modelle werden im ONNX -Format gespeichert. Alle Modelle wurden durch Microsoft Olive durchgeführt und sind für DirectML optimiert. Ich habe die Bibliothek mit den folgenden Modellen getestet:
Sie können Ihre eigenen Modelle mitbringen, indem Sie diese mit diesem Handbuch konvertieren.
Bitte überprüfen Sie die ursprüngliche Lizenz der Modelle, wenn Sie sie in Ihre Produkte integrieren möchten.
Die Implementierung verwendet das ONNX, um die an der Bildgenerierung beteiligten mathematischen Modelle zu speichern. Diese ONNX -Modelle werden dann mit der ONNX -Laufzeit ausgeführt, die eine Vielzahl von Plattformen (Windows, Linux, MacOS, Android, iOS, WebAssembly usw.) und Ausführungsanbieter (wie Nvidia cuda / tensorrt; AMD ROCM, Apple Coreml, Qualcomm Qnn, Microsoft Directml und vieles) unterstützen.
Wir bieten eine Beispielintegration namens Unbaint, die zeigt, wie die Bibliotheken in eine einfache Winui -basierte Benutzeroberfläche integriert werden können. Sie können die kostenlose App aus dem Microsoft Store herunterladen, um die Leistungsmerkmale der Lösung zu bewerten.
Die aktuelle Codebasis und die resultierenden Nuget -Pakete zielen auf Windows ab und verwenden DirectML. Nur kleine Abschnitte des Codes verwenden Windows -spezifische APIs und können daher mit minimalem Aufwand auf andere Plattformen portiert werden.
Der Quellcode dieser Bibliothek wird unter der MIT -Lizenz bereitgestellt.
Vorgebaute Versionen des Projekts können unter dem Namen Axodox.MachineLearning aus Nuget abgerufen und zu Visual Studio C ++ - Projekten (sowohl Desktop- als auch UWP -Projekte) mit der X64 -Plattform hinzugefügt werden.
Grundintegration:
Axodox.Common und Axodox.MachineLearning -Pakete hinzu#include "Include/Axodox.MachineLearning.h" vorkompilierten Header die folgende Anweisung hinzu.Wir empfehlen, Ihrer App geeignete Sicherheitsmechanismen hinzuzufügen, um unangemessene Ausgänge von stellvertretendem Stellvertreter zu unterdrücken. Der Leistungsaufwand ist unbedeutend.
Die von uns verwendeten stabilen Diffusionsmodelle wurden mit Microsoft Olive generiert. Befolgen Sie das verlinkte Beispiel, um Modelle aus dem Huggingface zu konvertieren. Durch Ändern des Skripts können Sie auch Modelle konvertieren, die auf Ihrer Festplatte aus verschiedenen Formaten gespeichert sind (z *.safetensors ). Hier finden Sie einige vorgefasste Modelle zum Testen.
Das Erstellen der Bibliothek ist erforderlich, um Änderungen vorzunehmen und zu testen. Sie müssen Folgendes installieren lassen, um die Bibliothek zu erstellen:
Sie können entweder build_nuget.ps1 oder open Axodox.MachineLearning.sln und Build aus Visual Studio ausführen.
Sobald Sie die Bibliothek erstellt haben, überschreiben Sie Ihr vorhandenes Nuget-Paket Installation, indem Sie die AxodoxMachineLearning-Location Umgebungsvariable festlegen, um auf Ihren lokalen Build hinzuweisen.
Zum Beispiel
C:devaxodox-machinelearningAxodox.MachineLearning.Universalfür eine UWP-App undC:devaxodox-machinelearningAxodox.MachineLearning.Desktopfür eine Desktop-App.
Fügen Sie dann das Projekt hinzu, das vom Pfad zur Lösung Ihres eigenen Projekts hingewiesen wurde. Dies ermöglicht es, alle Projekte in dieselbe Lösung hinzuzufügen und Änderungen in der Bibliothek und Ihrer App nahtlos vorzunehmen, ohne die Dateien wiederholt zu kopieren.