該存儲庫包含穩定擴散圖像合成的完全C ++實現,包括原始的TXT2IMG,IMG2IMG和Inpainting功能以及安全檢查器。該解決方案不取決於Python ,並在單個過程中運行整個圖像生成過程,具有競爭性能,使部署顯著簡單,更小,本質上是一些可執行文件和庫文件以及模型權重。使用庫幾乎可以將穩定的擴散集成到任何應用程序中 - 只要它可以導入C ++或C函數,但是對於經常用C ++實現的實時圖形應用程序和遊戲的開發人員,它最有用。
![]() | ![]() | ![]() |
庫還支持ControlNet,這允許使用輸入圖像指導圖像生成過程,例如:
在第一個示例中,我們使用openpose估計器和開放式條件控製網絡,我們可以通過指定姿勢來指導IMG2IMG生成,從而產生更好的結果。
使用HED Edge檢測和邊緣條件控製網,我們更改圖像的樣式以類似於漫畫插圖,但要保持佈局完整。
使用深度估計器和深度圖條件控製網絡,我們生成不同的字符,但請保留原始設置。
該庫還提供了以下功能提取器的GPU加速實現(上面顯示):
以下是一些簡單的代碼示例:
庫所需的AI模型以ONNX格式存儲。所有模型均已通過Microsoft Olive運行,並針對DirectML進行了優化。我已經用以下模型測試了庫:
您可以使用本指南來轉換自己的模型。
如果您打算將它們集成到產品中,請確保檢查模型的原始許可。
該實現使用ONNX來存儲圖像生成中涉及的數學模型。然後使用ONNX運行時執行這些ONNX模型,該模型支持各種平台(Windows,Linux,MacOS,Android,Android,iOS,WebAssembly等)和執行提供商(例如Nvidia Cuda / tensorrt; AMD ROCM,AMD ROCM,Apple coreml,Apple Coreml,Qualcomm QNN,Microsoft Directml和More)。
我們提供了一個名為Untaint的示例集成,該集成表明如何將庫可以集成到簡單的基於Winui的用戶界面中。您可以從Microsoft商店下載免費的應用程序,以評估解決方案的性能特徵。
當前的代碼庫和由此產生的Nuget軟件包目標窗口並使用DirectMl,但是只有代碼的小部分使用Windows特定的API,因此可以將其移植到其他平台上,並以最小的努力移植到其他平台上。
該庫的源代碼是根據MIT許可證提供的。
可以使用X64平台從Nuget中以Axodox.MachineLearning的名稱從Nuget中檢索該項目的預構建版本。
基本集成:
Axodox.Common和Axodox.MachineLearning軟件包添加到您的項目#include "Include/Axodox.MachineLearning.h"我們建議在您的應用程序中添加適當的安全機制,以抑制不適當的可穩定輸出,性能開銷並不重要。
我們使用的穩定擴散模型是使用Microsoft Olive生成的,請按照鏈接的示例從HuggingFace轉換模型。通過更改腳本,您還可以將存儲在磁盤上的模型轉換為各種格式(例如*.safetensors )。您可以在此處找到一些預先轉換的模型進行測試。
構建庫是需要進行和測試更改的。您將需要安裝以下以構建庫:
您可以運行build_nuget.ps1或打開Axodox.MachineLearning.sln ,然後從Visual Studio構建。
構建庫後,您可以通過設置AxodoxMachineLearning-Location Environals變量來指向您的本地構建,從而覆蓋現有的Nuget軟件包安裝。
例如
C:devaxodox-machinelearningAxodox.MachineLearning.Universalfor UWP應用程序和C:devaxodox-machinelearningAxodox.MachineLearning.Desktopfor Desktop應用程序。
然後添加由您自己項目解決方案的路徑指向的項目。這允許將所有項目添加到相同的解決方案中,並在庫和您的應用程序上進行更改,而無需重複複製文件。