该存储库包含稳定扩散图像合成的完全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应用程序。
然后添加由您自己项目解决方案的路径指向的项目。这允许将所有项目添加到相同的解决方案中,并在库和您的应用程序上进行更改,而无需重复复制文件。