Nyantech 画像生成選手権

画像生成 AI を使ってお題に近い猫の画像を生成しよう ! の巻

2023-02-20
日常で楽しむクラウドテクノロジー

大渕 麻莉, 秋田 仁雅, 石橋 直樹

こんにちは、機械学習ソリューションアーキテクトの大渕です。

いままで、Amazon Rekognition Custom LabelsAmazon SageMaker の画像分類モデルを使って、写真に写っているのがミケなのかタマなのかを見分けてきました。また、こちらの記事 では類似画像検索の手法を使ってたくさんある猫写真の中から自分の猫に似ている猫の写真を見つける方法をご紹介しました。今回は、呪文を唱えて画像を生成してみようと思います。

Stable Diffusion という画像生成AIをご存知でしょうか ? 2022 年に登場し、テキスト (プロンプト) を入力するとそのテキストにあった画像を生成してくれる AI です。期待する画像を生成するためには、プロンプトをいかにうまく作れるかが重要で、プロンプトを作る工程はプロンプトエンジニアリングと呼ばれたりします。また、画像生成に使われる、長くて複雑なプロンプトは呪文と呼ばれたりします。今回は、この Stable Diffusion を使ってとある選手権大会を開催したいと思います。

その名も、猫召喚士選手権 !

ご注意

本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。

*ハンズオン記事およびソースコードにおける免責事項 »

Nyantech ハンズオンシリーズのその他の記事はこちら

選択
  • 選択
  • 機械学習を使って写真に写っている猫を見分けてみよう! ~ 前編 : Amazon SageMaker Ground Truth を使った画像のラベリング ~
  • 機械学習を使って写真に写っている猫を見分けてみよう! 〜中編:Amazon Rekognition Custom Labels を使った機械学習モデルの作成
  • 機械学習を使って写真に写っている猫を見分けてみよう! 〜後編:Amazon SageMaker を使った機械学習モデルの作成
  • たくさんの写真の中からうちの子 (猫) をみつけよう ! 〜機械学習と Amazon Elasticsearch Service で類似画像検索
  • Nyantech とはじめる MLOps 〜学習パイプランを使って効率的に猫を見分ける機械学習モデルを目指そう ! の巻〜
  • 猫の画像を使ってあそぶブラウザゲームを作ろう ! 〜AWS Cloud Development Kit (AWS CDK)で簡単デプロイ〜
  • Nyantech 画像生成選手権 ~ 画像生成 AI を使ってお題に近い猫の画像を生成しよう ! の巻
  • 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。
  • 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。- 拡張編 -
  • Nyantech であの猫のこんな写真を見つけたい ~ マルチモーダル埋め込みモデルを使って類似画像検索をパワーアップ ~
  • IoT を使ってお猫様の健康 (体重) をモニタリングしてみた

このクラウドレシピ (ハンズオン記事) を無料でお試しいただけます »

毎月提供されるクラウドレシピのアップデート情報とともに、クレジットコードを受け取ることができます。 


 1. 一番上手にお題の猫を召喚できるのは誰だ !

なにやら突然始まりましたが、どうやらお題の画像に写っている猫を一番うまく再現して生成できた人が優勝する大会のようです。そして、大会のコミッショナーと解説員が招集されたようです。

こんにちは、大会コミッショナーのタマにゃ。

こんにちは、解説員のミケです。語尾に「にゃ」をつけるとかあざとくないですか ?

そのほうがニンゲン受けがいいにゃ。大人の都合にゃ。

そうですか、私はこのままで失礼します。

さて、早速ですが大会の参加者の紹介に移ろうと思います。参加いただくのは、こちらの 3 名です〜 パチパチ。

エントリーNo. 1 イシバシ

エントリーNo. 2 アキタ

エントリーNo. 3 オオブチ

それぞれ、この大会への意気込みを述べるにゃ。

イシバシ「今まで溜めてきた機械学習力を全力で叩き込みます !」

アキタ「機械学習と仲良くなるために全力を尽くします !」

オオブチ「猫大好き !」

ここで参加者から猫好き宣言出ましたね。

良い心意気にゃ。オオブチに 1 ポイントやるにゃ。

オオブチ「ありがたき幸せ。」

暫定ランキング

  1. オオブチ :  1 pt
  2. イシバシ : 0 pt
  3. アキタ : 0 pt

えっ、そんなポイントがあるんですか。まだ始まってもいないのに !

おれがルールブックにゃ。そしてもう戦いは始まっているにゃ。

(まあいいか。) はい、ではお題を発表しますね。お題は 2 つで、合計点で競っていただきます。

ではまず 1 つ目はこちら !

お題 1 : 毛繕いをしているときに不意に台所からカサカサ音が聞こえた白猫

白くて綺麗な毛並みとポーズがポイントですね。

では、各参加者の演技を見てみましょう。まずはイシバシ選手どうぞ !

イシバシ「新聞紙の上に猫がいるところを評価してください !」

新聞紙に座る猫

いきなり白くない猫が出てきましたね。

かわいいけど、召喚する猫が間違っているにゃ。残念だけど 0 ポイントにゃ。

イシバシ「ぐぬぬ・・・。」

続いて、アキタ選手どうぞ。

アキタ「おしゃれスカーフと、新聞紙の上で前足をちょろりと前に出しているところをみてください !」

a chubby white cat wears neck scarf and shows her tangled arms and legs on the gray newspaper on the hardwood floor

プロンプトの chubby にオリジナリティを感じますね。スカーフと新聞という小道具もバッチリ再現されています。

なんか眉毛やお髭がもさもさっとしていて威厳を感じるにゃ。おじいちゃんを思い出してしんみりしちゃったにゃ。猫の柄も合っているし、小道具が揃っていて良い出来なアキタ選手には 3 ポイントあげるにゃ。

アキタ「恐縮です。ポイントになりそうな要素をいかに呪文に入れるかが腕の見せ所でした (やった ! 暫定トップだ !)」

アキタ選手いいコメントしますね。では最後にオオブチ選手どうぞ。

オオブチ「白猫が新聞紙の上に乗っているところと、後ろ足ではないですが前足を上げているのがアピールポイントです。」

white cat, licking back legs, short legs, on newspaper

前足を上げているところは好印象にゃ。でも敷いてある新聞のマスクマンみたいな画像が雰囲気を台無しにしているにゃ。ポイントはプラマイゼロにゃ。

オオブチ「なんと無慈悲な !」

プロンプトの white cat と on newspaper しか役にたっていないようですね。Licking back legs なんてシチュエーションは我々猫族でしかありえないような気がするので無視されても仕方ないですね。

このポーズの猫を再現できる猫召喚士がいたら、ぜひ Twitter で #AWSNyantech をつけて発表してほしいにゃ。

さて、現在の順位を見てみましょう。アキタ選手、オオブチ選手、イシバシ選手の順になっています。

暫定ランキング

  1. アキタ : 3 pt
  2. オオブチ : 1 pt
  3. イシバシ : 0 pt

では、続いてのお題はこちら !

お題 2 : 空からおやつが落ちてくるのを期待する猫たち

あら、かわいい猫たちですね。2 匹で何かを見上げている様子がポイントですね。では、各選手の演技を見てみましょう。まずは暫定トップのアキタ選手どうぞ !

アキタ「2 匹の猫がタイル床にいて上を見ているところをうまく再現できていると思います !」

two fluffy beige cats are looking up from the beige tiled floor

アキタ選手は床とか環境部分の再現が得意な感じにゃ。

肝心の 2 匹の猫が同じ柄になってますが、これをどう見るかがポイントですね。

猫召喚士選手権を争っているからには、猫の柄の方が配点は高いのにゃ。アキタ選手には 1 ポイントあげるにゃ。

アキタ「意外と点数が伸びませんでしたね・・・。床の再現に夢中になるあまり、うっかり猫の召喚の時まで緊張感を保つことができなかったのが敗因かと・・・。」

アキタ選手はコメントがいちいちプロっぽくて良いですね。では、オオブチ選手どうぞ。

オオブチ「茶色い猫とグレーっぽいねこが見上げている様子を再現できました !」

two fluffy beige cats are looking up from the beige tiled floor

おおっと、これは認められないにゃ。左側の茶色いクリーチャーが見た者の心を不安定にさせるので、みなさまにお見せできないにゃ。特別にノーペニャルティでリトライを許すにゃ。

コミッショナーが初めてコミッショナーらしい仕事をしましたね。

オオブチ「そうですか、自信作だったのに残念です。ではこちらで。茶色い猫と三毛っぽい猫がこちらを見上げているのがポイントです。」

Two cats, looking up, bird’s-eye view, brown cat and calico cat

2 匹の猫の柄の再現性が高くてよさそうな雰囲気はありますが、カメラはもっと離れて欲しかったですね。

おれのそっくりさんの顔がぶつ切りにゃ。コミッショナーへの挑発行為とみなして減点 5 にゃ。

オオブチ「えぇ !? なんかさっきから私に厳しくないですか ?」

気のせいにゃ。

コミッショナーの判定は絶対なので仕方ないですね。では最後にイシバシ選手どうぞ。

イシバシ「上級召喚技、Image2Image を使って、召喚する猫の精度を上げました。」

なんと、選ばれしものにしか使えないという上級召喚技の使い手が参加していたとは ! これは期待できますね。

イシバシ「まず、呪文の詠唱に使った画像はこれです ! がんばって描きました !」

・・・続けるにゃ。

イシバシ「そして、召喚した猫はこちらです !」

猫 2匹

あれっ・・・?

猫の数しかあってないにゃ。そもそもプロンプトが「猫 2 匹」って、画像の効果に期待しすぎにゃ。っていうかよくあの画像にそこまで期待できたにゃ。

イシバシ「違うんです ! いろいろな呪文を試しましたが、言葉を増やすほど不気味なものしか召喚できなかったんです !」

ここにもクリーチャー召喚士がいたにゃ。

コミッショナー、暴言はひかえて ! 

ところで手前の猫の目尻の模様かわいいですね。和テイストを感じます。

ミケが気に入ったようなので、おまけで 1 ポイントにゃ。

イシバシ「がんばったのに 1 ポイント !!」

それでは、最終的な順位を見てみましょう ! 

アキタ選手が 4 ポイントで優勝です ! ぱちぱち。

最終結果

  1. アキタ : 4 pt
  2. イシバシ : 1 pt
  3. オオブチ : - 4 pt

優勝したアキタ選手には、猫召喚士 1 級の称号を与えるにゃ。

副賞として、猫を見かけたら撫でてもいい権利を差し上げます。なお実際に撫でられるかどうかは猫の気分次第なので、猫の気持ちを確かめてから撫でるようにしてください。

アキタ「ありがとうございます、光栄です。」

第一回猫召喚士選手権はそろそろおしまいにゃ。

参加者ごとの工夫が光りましたね。私は猫の画像をたくさん見ることができて満足です。

ではまた、第二回猫召喚士選手権で会いましょ〜。


 2. アキタの舞台裏 : なるべく簡単に Stable Diffusion 2 をデプロイして使う

それではここから、各参加者がどのように画像を生成したかの舞台裏をお見せしようと思います。アキタは Amazon SageMaker JumpStart という、さまざまなアルゴリズムと学習済みモデルを数クリックでデプロイできる機能を使いました。画像、テキスト、テーブルデータなどを扱うアルゴリズムに対応しており、学習済みモデルをそのままデプロイしたり、自分のデータを使ってモデルをファインチューニングすることもできます。

ここでは、SageMaker JumpStart で Stable Diffusion 2 の学習済みモデルを使って猫の画像を生成する手順を紹介します。Amazon SageMaker Studio のセットアップ は完了している想定です。

2-1. Amazon SageMaker Studio を起動

Amazon SageMaker のマネジメントコンソールから、Amazon SageMaker Studio を起動します。

クリックすると拡大します

2-2. Amazon SageMaker JumpStart で Stable Diffusion 2 を検索

Amazon SageMaker Studio が起動したら、画面左側のナビゲーションメニューで「Quick start solutions」→「Solutions, models, example notebooks」の順にクリックし、「SageMaker JumpStart – Quick Start Solutions」 を開きます。

その後、画面右上のテキストボックスで「stable diffusion 2」を検索します。

クリックすると拡大します

2-3. Stable Diffusion 2 の 学習済みモデルをデプロイ

Deploy」ボタンをクリックします。デプロイに数分程度かかります。

クリックすると拡大します

2-4. Jupyter Notebookの作成

デプロイが完了したら、画面を少し下にスクロールし、「Open Notebook」をクリックしてノートブックを開きます。

クリックすると拡大します

2-5. 画像の生成

ノートブックが開いたらセルを順番に実行します。プロンプトの文字列に応じて画像を生成することができます。

クリックすると拡大します

2-6. <重要> エンドポイントの削除

エンドポイントの稼働中は課金が続くので、使い終わったら推論エンドポイントは必ず削除してください。

エンドポイントを起動した画面の「Delete Endpoint」をクリックするか (図参照)、SageMaker のコンソール画面の左側のメニューから「Inference」→「Endpoints」を選択し、不要なエンドポイントをラジオボタンで選択してから、右上にある「Actions」→「Delete」をクリックしてください。

クリックすると拡大します


 3. オオブチの舞台裏 : 楽にデプロイしたいけどプロンプトは日本語がいい !

オオブチもアキタ同様に Amazon SageMaker JumpStart を使ったようです。アキタとの違いとしては、JumpStart でモデルのデプロイはサクッとやりたいけれど、プロンプトを英語で書くのが嫌だという心があることです。オオブチはどのように画像を生成したのでしょうか。

  1. Amazon SageMaker Studio を起動
  2. Amazon SageMaker JumpStart で Stable Diffusion 2 を検索

ここまではアキタの手順と同じです。次からの手順が異なります。

3-1. 右上にある「Open notebook」ボタンをクリック

Open notebook」をクリックすると、モデルをデプロして推論 (今回は画像生成) を実行するまでのソースコードが含まれたノートブックを開くことができます。GUI からデプロイする際は 4 種類のインスタンスタイプから選択できますが、ノートブックからデプロイする場合はソースコードを変更することで、任意のインスタンスタイプでエンドポイントを起動することができます。

クリックすると拡大します

3-2. ノートブックに記述を追加

あくまでもプロンプトは日本語で作りたいオオブチは、AWS の AI サービス Amazon Translate の力を借りることにしました。日本語で作ったプロンプトを機械翻訳で英語にしてしまおうという魂胆です。

ノートブックの、「4. Query endpoint and parse response」の 2 つ目のセル (画像生成を実行しているセル) の手前に一つセルを追加し、以下のコードを貼り付けます。jp_text の部分を書き換えてセルを実行することで、英語のプロンプトを生成します。

import boto3
jp_text = '二匹の猫,上を見上げる,俯瞰,茶色い猫と三毛猫'
translate = boto3.client(service_name='translate', region_name=aws_region, use_ssl=True)
result = translate.translate_text(Text=jp_text,
            SourceLanguageCode="ja", TargetLanguageCode="en")
text = result.get('TranslatedText')
print('TranslatedText: ' + result.get('TranslatedText'))

セルを上から順に実行

1. Set Up」からセルを実行していきます。

途中の「2. Select a model」では、[Optional] と書かれた部分以降のセルは実行せずにスキップし、次の「3. Retrieve Artifacts & Deploy an Endpoint」に進んでください。

4. Query endpoint and parse response」を最後まで実行すれば、画像が生成されているはずです。

5. Advanced features」の実行は不要です。プロンプトを書き換えて再度画像を生成したい場合は、上記手順 4 で追加したセルとその次のセルを再度実行すれば OK です。

3-3. <重要> エンドポイントの削除

エンドポイントの稼働中は課金が続くので、使い終わったら推論エンドポイントは必ず削除してください。

ノートブックの「6. Clean up the endpoint」のセルを実行するか、SageMaker のコンソール画面の左側のメニューから「Inference」→「Endpoints」を選択し、不要なエンドポイントをラジオボタンで選択してから、右上にある「Actions」→「Delete」をクリックしてください。


 4. イシバシの舞台裏 : Amazon SageMaker Studio で Image2Image を使う

イシバシは、rinna 社が公開した日本語版 Stable Diffusion を使って、日本語のプロンプトを使いつつ画像も加えることで、より精度の良い猫召喚を試みました。実行環境として使用したのは Amazon SageMaker Studio のノートブックです。こちら から、イシバシが使用したサンプルノートブックをダウンロード可能です。

サンプルノートブックのダウンロード »


 5. <重要> 後片付け

カーネルの停止

ノートブックを動かすインスタンスは、稼働している間課金が続きます。ノートブックの実行が終わって使わなくなったら、SageMaker Studio の上部にあるメニューから「Kernel」→「Shut Down Kernel」をクリックし、カーネルを停止してください。

SageMaker Studio の左側にあるアイコン列のこちらのアイコンをクリックすると、起動中のインスタンスを確認することができます。

不要なインスタンスがあれば、インスタンス名の右側にあるこちらのアイコンをクリックすると、インスタンスを停止することができます。

エンドポイントの削除

SageMaker のコンソール画面の左側のメニューから「Inference」→「Endpoints」を選択し、不要なエンドポイントをラジオボタンで選択してから、右上にある「Actions」→「Delete」をクリックしてください。

Amazon S3 バケットの削除

今回ご紹介した SageMaker JumpStart を使用して Stable Diffusion を実行すると、sagemaker-[リージョン名]-[アカウントID] という名前の S3 バケットが作成されます。保存されているデータが不要であれば、このバケットの中身を削除してください。

特に、Stable Diffusion のモデルファイルが s3://sagemaker-[リージョン名]-[アカウントID]/jumpstart-example-infer-model-txt2img-s-[timestamp]/model.tar.gz もしくは、s3://sagemaker-[リージョン名]-[アカウントID]/model-txt2img-stabilityai-stable-diffusion-v2-[timestamp]/model.tar.gz に保存されており、サイズが 4.5GB 程度あり大きいので気になる場合は削除してください。


 6. さいごに

Stable Diffusion を使って猫の画像を生成して遊びました。猫のかわいさのみならず、Amazon SageMaker JumpStart を使うと、簡単に Stable Diffusion をデプロイして使えることもお伝えできたのではないかと思います。ほかにも、さまざまなアルゴリズムや学習済みモデルを使うことができるので、ぜひ試してみてください。

本記事が、みなさまの機械学習ライフの一助になれば幸いです。

注) 本記事に登場する人物は、実在の人物に似ているかもしれませんが架空の人物です。

Nyantech ハンズオンシリーズのその他の記事はこちら

選択
  • 選択
  • 機械学習を使って写真に写っている猫を見分けてみよう! ~ 前編 : Amazon SageMaker Ground Truth を使った画像のラベリング ~
  • 機械学習を使って写真に写っている猫を見分けてみよう! 〜中編:Amazon Rekognition Custom Labels を使った機械学習モデルの作成
  • 機械学習を使って写真に写っている猫を見分けてみよう! 〜後編:Amazon SageMaker を使った機械学習モデルの作成
  • たくさんの写真の中からうちの子 (猫) をみつけよう ! 〜機械学習と Amazon Elasticsearch Service で類似画像検索
  • Nyantech とはじめる MLOps 〜学習パイプランを使って効率的に猫を見分ける機械学習モデルを目指そう ! の巻〜
  • 猫の画像を使ってあそぶブラウザゲームを作ろう ! 〜AWS Cloud Development Kit (AWS CDK)で簡単デプロイ〜
  • Nyantech 画像生成選手権 ~ 画像生成 AI を使ってお題に近い猫の画像を生成しよう ! の巻
  • 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。
  • 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。- 拡張編 -
  • Nyantech であの猫のこんな写真を見つけたい ~ マルチモーダル埋め込みモデルを使って類似画像検索をパワーアップ ~
  • IoT を使ってお猫様の健康 (体重) をモニタリングしてみた

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

大渕 麻莉
アマゾン ウェブ サービス ジャパン合同会社
機械学習ソリューションアーキテクト

組込みソフトウェア開発から画像処理アルゴリズム開発を経てクラウドに到達し、2019 年にアマゾン ウェブ サービス ジャパン合同会社に入社。主に製造業のお客様の機械学習導入・運用の技術サポートを担当。
脳内 CPU の半分が猫のことで占められており、視界に入るすべての生き物がうちの猫に見えるという日々を過ごしている。

秋田 仁雅
アマゾンウェブサービスジャパン合同会社
プロトタイピングエンジニア

普段は AWS を用いてプロトタイプを開発することでお客様の課題を解決するプロトタイピングエンジニアという業務を担当。犬派のスパイ。世界唯一の猫召喚士一級ホルダー

石橋 直樹
アマゾンウェブサービスジャパン合同会社
プロトタイピングエンジニア

モバイル通信事業、EC、河川など幅広い分野での機械学習開発に携わり、その中でクラウドの利便性を実感し、2022 年にアマゾン ウェブ サービス ジャパン合同会社に入社。様々なお客様の機械学習導入・MLOps 提案などを担当。
猫派でも犬派でもないペンギン派という新勢力。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する