DALL-E モデルを使用して画像を生成する

Azure OpenAI Service には、DALL-E という名前の画像生成モデルが含まれています。 このモデルを使用して、目的の画像を説明する自然言語プロンプトを送信できます。モデルでは、指定した説明に基づいて元の画像が生成されます。

この演習では、DALL-E バージョン 3 モデルを使って、自然言語プロンプトに基づいて画像を生成します。

この演習には、約 25 分かかります。

Azure OpenAI リソースをプロビジョニングする

Azure OpenAI を使って画像を生成する前に、Azure サブスクリプションで Azure OpenAI リソースをプロビジョニングする必要があります。 リソースは、DALL-E モデルがサポートされているリージョンに存在する必要があります。

  1. Azure portal (https://portal.azure.com) にサインインします。
  2. 次の設定で Azure OpenAI リソースを作成します。
    • [サブスクリプション]: “DALL-E を含む Azure OpenAI Service へのアクセスが承認されている Azure サブスクリプションを選びます”**
    • [リソース グループ]: リソース グループを作成または選択します
    • リージョン: “米国東部またはスウェーデン中部 のいずれかを選びます”*
    • [名前]: “希望する一意の名前
    • 価格レベル: Standard S0

    * DALL-E 3 モデルは、米国東部およびスウェーデン中部リージョンの Azure OpenAI Service リソースでのみ使用できます。

  3. デプロイが完了するまで待ちます。 次に、Azure portal でデプロイされた Azure OpenAI リソースに移動します。

DALL-E プレイグラウンドで画像生成について調べる

Azure OpenAI Studio の DALL-E プレイグラウンドを使用して、画像生成を試すことができます。

  1. Azure portal にある Azure OpenAI リソースの [概要] ページで、[探索] ボタンを使って、新しいブラウザー タブで Azure OpenAI Studio を開きます。または、https://oai.azure.com にある Azure OpenAI Studio に直接移動します。
  2. [プレイグラウンド] セクションで、DALL-E プレイグラウンドを選びます。 Dalle3 という名前で DALL-E モデルのデプロイが自動的に作成されます。
  3. [プロンプト] ボックスに、生成する画像の説明を入力します。 たとえば、An elephant on a skateboard として、次に、[生成] を選び、生成された画像を表示します。

    生成された画像を含む Azure OpenAI Studio の DALL-E プレイグラウンド。

  4. より具体的な説明を入力するようにプロンプトを変更します。 たとえば、「 An elephant on a skateboard in the style of Picasso 」のように指定します。 次に、新しい画像を生成し、結果を確認します。

    2 つの生成された画像を含む Azure OpenAI Studio の DALL-E プレイグラウンド。

REST API を使用して画像を生成する

Azure OpenAI Service には、DALL-E モデルによって生成された画像など、コンテンツ生成のプロンプトを送信するために使用できる REST API が用意されています。

Visual Studio Code でアプリを開発する準備をする

さっそく、Azure OpenAI Service を使って画像を生成するカスタム アプリを構築する方法を見てみましょう。 Visual Studio Code を使用してアプリを開発します。 アプリのコード ファイルは、GitHub リポジトリで提供されています。

ヒント: 既に mslearn-openai リポジトリをクローンしている場合は、Visual Studio Code で開きます。 それ以外の場合は、次の手順に従って開発環境に複製します。

  1. Visual Studio Code を起動します。
  2. パレットを開き (SHIFT+CTRL+P)、Git:Clone コマンドを実行して、https://github.com/MicrosoftLearning/mslearn-openai リポジトリをローカル フォルダーに複製します (どのフォルダーでも問題ありません)。
  3. リポジトリを複製したら、Visual Studio Code でフォルダーを開きます。

    :Visual Studio Code に、開いているコードを信頼するかどうかを求めるポップアップ メッセージが表示された場合は、ポップアップの [はい、作成者を信頼します] オプションをクリックします。

  4. リポジトリ内の C# コード プロジェクトをサポートするために追加のファイルがインストールされるまで待ちます。

    : ビルドとデバッグに必要なアセットを追加するように求めるプロンプトが表示された場合は、[今はしない] を選択します。

アプリケーションを構成する

C# と Python の両方のアプリケーションが提供されています。 どちらのアプリにも同じ機能があります。 まず、Azure OpenAI リソースのエンドポイントとキーをアプリの構成ファイルに追加します。

  1. Visual Studio Code の [エクスプローラー] ペインで、Labfiles/05-image-generation フォルダーを参照し、言語の設定に応じて、CSharp または Python フォルダーを展開します。 各フォルダーには、Azure OpenAI 機能を統合するアプリの言語固有のファイルが含まれています。
  2. [エクスプローラー] ペインの CSharp または Python フォルダーで、使用する言語の構成ファイルを開きます

    • C#: appsettings.json
    • Python: .env
  3. 作成した Azure OpenAI リソースのエンドポイントキーを含むように構成値を更新します (Azure portal の Azure OpenAI リソースにある [キーとエンドポイント] ページでアクセスできます)。
  4. 構成ファイルを保存します。

アプリケーション コードを表示する

これで、REST API を呼び出して画像を生成するために使用されるコードを調べる準備ができました。

  1. [エクスプローラー] ペインで、アプリケーションのメイン コード ファイルを選びます。

    • C#: Program.cs
    • Python: generate-image.py
  2. ファイルに含まれるコードを確認し、次の主な機能に注目します。

    • このコードでは、サービスのエンドポイントに対して、ヘッダーにサービスのキーが含められた https 要求を行います。 これらの値はどちらも構成ファイルから取得されます。
    • 要求には、画像のベースとなるプロンプト、生成する画像の数、生成される画像のサイズなど、いくつかのパラメーターが含まれます。
    • 応答には、ユーザー指定のプロンプトから DALL-E モデルが推定してよりわかりやすいものに改訂されたプロンプトと、生成された画像の URL が含まれています。

アプリを実行する

コードを確認したので、次はそれを実行し、いくつかの画像を生成します。

  1. コード ファイルが含まれている CSharp または Python フォルダーを右クリックし、統合ターミナルを開きます。 次に、適切なコマンドを入力してアプリケーションを実行します。

    C#

    dotnet run
    

    Python

    pip install requests
    python generate-image.py
    
  2. メッセージが表示されたら、画像の説明を入力します。 たとえば、’‘たこ揚げをするキリン’’ です。

  3. 画像が生成されるまで待ちます。ターミナル ペインにハイパーリンクが表示されます。 次に、ハイパーリンクを選択して新しいブラウザー タブを開き、生成された画像を確認します。

    ヒント:アプリが応答を返さない場合は、少し待ってから再試行してください。 新しくデプロイされたリソースが使用可能になるまでに最大 5 分かかる場合があります。

  4. 生成された画像を含むブラウザー タブを閉じ、アプリを再実行して、別のプロンプトで新しい画像を生成します。

クリーンアップ

Azure OpenAI リソースでの作業が完了したら、Azure portal (https://portal.azure.com) でリソースを忘れずに削除します。