0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

# Semantic Kernel: 文転図

Posted at

SK には文生図機能も対応しています。本記事では、GPT の DALL·E 2 と DALL·E 3 を使って画像を生成しました。専門の文生図ツールほどではありませんが、適切なプロンプトを使用すれば、いくつかのシーンで有用です。

現在最新の SK パッケージ、1.18.0-rc をプロジェクトに引用しています:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <RootNamespace>Demo07_TextToPicture</RootNamespace>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.SemanticKernel" Version="1.18.0-rc" />
  </ItemGroup>
</Project>

以下は最も簡単な文生図のコード実装で、TextToImage サービスを使用して画像を生成します。GPT で生成する画像のサイズ要件は次の通りです:256x256, 512x512, 1024x1024, 1024x1792, 1792x1024

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.TextToImage;
using System.Diagnostics;
using System.Xml.Linq;

Console.WriteLine("開始生成……");

#pragma warning disable SKEXP0010
var key = File.ReadAllText(@"C:\GPT\key.txt");
var kernel = Kernel.CreateBuilder()
    .AddOpenAITextToImage(key,modelId: "dall-e-2")
    .Build();

var prompt1 = $"背景は白色、墨で、一匹の騎馬が飛び上がっている場面を描く。馬は画像の中央に配置し、全体が見えるようにする。";

await CreateImageAsync(prompt1);

async Task CreateImageAsync(string prompt)
{
#pragma warning disable SKEXP0001
    var dallE = kernel.GetRequiredService<ITextToImageService>();
    var imageUrl = await dallE.GenerateImageAsync(prompt, 1024, 1024);
    await DownLoadImageAsync(imageUrl);
}

async Task DownLoadImageAsync(string imageUrl)
{
    var localPath = "downloaded_image.jpg";
    using (var client = new HttpClient())
    {
        var response = await client.GetAsync(imageUrl);
        response.EnsureSuccessStatusCode();
        var imageBytes = await response.Content.ReadAsByteArrayAsync();
        await File.WriteAllBytesAsync(localPath, imageBytes);
        Console.WriteLine("画像ダウンロード成功、保存先:" + localPath);
    }
    Process.Start(new ProcessStartInfo(localPath) { UseShellExecute = true });
}

DALL·E 2 と DALL·E 3 それぞれで生成された画像の例は以下の通りです。良し悪しは自分で判断してください:

DALL·E 2生成図例一

(DALL·E 2生成図例一)

DALL·E 2生成図例二

(DALL·E 2生成図例二)

DALL·E 2生成図例三

(DALL·E 2生成図例三)

次に、上記コードの第10行を DALL·E 3 に変更して、その効果を見てみましょう:

.AddOpenAITextToImage(key, modelId: "dall-e-3")

DALL·E 3生成図例一

(DALL·E 3生成図例一)

DALL·E 3生成図例二

(DALL·E 3生成図例二)

DALL·E 3生成図例三

(DALL·E 3生成図例三)

(Translated by GPT)

元のリンク:https://mp.weixin.qq.com/s?__biz=MzA3NDM1MzIyMQ==&mid=2247488352&idx=1&sn=89891d9ce5daa591824dc99c1acf58b4&chksm=9f004c4aa877c55c4d459ecd087e42fcceb2323bb75f6664eb6eabe4097c46a9bf40592b4451&token=211600531&lang=zh_CN#rd&wt.mc_id=MVP_325642

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?