このリポジトリには、元のTXT2IMG、IMG2IMG、インピンティング機能、安全チェッカーなど、安定した拡散ベースの画像合成の完全なC ++実装が含まれています。このソリューションはPythonに依存せず、競争力のあるパフォーマンスを備えた単一のプロセスで画像生成プロセス全体を実行し、展開を大幅にシンプルで小さくし、本質的にいくつかの実行可能ファイルとライブラリファイル、およびモデルの重みで構成されます。ライブラリを使用すると、安定した拡散をほぼすべてのアプリケーションに統合することができます - C ++またはC機能をインポートできる限り、それはリアルタイムグラフィックスアプリケーションとゲームの開発者にとって最も役立ちます。
![]() | ![]() | ![]() |
ライブラリはコントロールネットもサポートしています。これにより、入力画像を使用して画像生成プロセスをガイドできます。たとえば、:
この最初の例では、OpenPose推定器とOpenPose条件付きコントロールネットを使用して、ポーズを指定することでIMG2IMG生成をガイドできます。これにより、より良い結果が得られます。
Hed Edge DetectionとEdge Conditured ControlNetを使用して、画像のスタイルを変更して漫画本のイラストに似ていますが、レイアウトをそのままにしておきます。
深度推定器と深度マップ条件付きコントロールネットを使用して、別の文字を生成しますが、元のセットアップを保持します。
ライブラリはまた、次の特徴抽出器のGPU加速実装を提供します(上記で紹介)。
ここにいくつかの簡単なコードの例があります:
ライブラリに必要なAIモデルは、ONNX形式に保存されます。すべてのモデルはMicrosoft Oliveを介して実行されており、DirectML用に最適化されています。次のモデルでライブラリをテストしました。
このガイドを使用して変換することにより、独自のモデルを持参できます。
モデルを製品に統合する予定の場合は、モデルの元のライセンスを確認してください。
実装では、ONNXを使用して、画像生成に関与する数学モデルを保存します。これらのONNXモデルは、さまざまなプラットフォーム(Windows、Linux、Android、iOS、WebAssemblyなど)をサポートするONNXランタイムを使用して実行されます。
単純なWinUIベースのユーザーインターフェイスにライブラリを統合する方法を示すunpaintと呼ばれる統合の例を提供します。 Microsoftストアから無料のアプリをダウンロードして、ソリューションのパフォーマンス特性を評価できます。
現在のコードベースと結果のNUGETパッケージはウィンドウをターゲットにし、DirectMLを使用しますが、コードの小さなセクションのみがWindows固有のAPIを使用するため、最小限の労力で他のプラットフォームに移植できます。
このライブラリのソースコードは、MITライセンスの下で提供されます。
プロジェクトの事前に構築されたバージョンは、 Axodox.MachineLearningという名前でNugetから取得し、X64プラットフォームでVisual Studio C ++プロジェクト(デスクトッププロジェクトとUWPプロジェクトの両方がサポートされています)に追加できます。
基本統合:
Axodox.CommonとAxodox.MachineLearningパッケージをプロジェクトに追加します#include "Include/Axodox.MachineLearning.h"適切な安全メカニズムをアプリに追加して、不適切な安定性拡散の出力を抑制することをお勧めします。パフォーマンスオーバーヘッドは重要ではありません。
使用する安定した拡散モデルは、Microsoft Oliveを使用して生成されています。リンクされた例に従って、Huggingfaceからモデルを変換してください。スクリプトを変更することにより、ディスクに保存されているモデルをさまざまな形式( *.safetensors )から変換することもできます。ここには、テスト用の事前逆のモデルを見つけることができます。
ライブラリを構築するには、変更を加えてテストする必要があります。ライブラリを構築するには、以下をインストールする必要があります。
build_nuget.ps1を実行するか、 Axodox.MachineLearning.slnを開き、Visual StudioからBuildを実行できます。
ライブラリを構築したら、 AxodoxMachineLearning-Location環境変数を設定してローカルビルドを指すことにより、既存のNugetパッケージインストールをオーバーライドします。
たとえば
C:devaxodox-machinelearningAxodox.MachineLearning.UniversalforC:devaxodox-machinelearningAxodox.MachineLearning.Desktopfor desktopアプリ。
次に、あなた自身のプロジェクトの解決策への道を指したプロジェクトを追加します。これにより、すべてのプロジェクトを同じソリューションに追加し、ファイルを繰り返しコピーせずにライブラリとアプリでシームレスに変更を加えることができます。