見出し画像

AIで作れ! ピーナッツくんお顔選手権!

こちらの記事は「#2 ぽこピー(pokopea) 🍃 🥜 Advent Calendar 2022」3日目の記事です。今年も3日目!

皆さんこんにちは、 @ikura18 のサポート役 ikura18_jpです :)
今回も最初からjpで書きます!

長いよ

今年流行ったもの。

色々ありましたね。
サウナ、町中華、昆虫食にグランピング... どれもがTLを席巻したことは記憶に新しいと思います。

しかし、それらに並んで劣らない勢いで今年注目を浴びたものとして、Generative Art(AI) がありました。

Generative Artとは「ほしい画像の説明文(プロンプトと呼ばれる)を用意するとAIがそれに合うような画像を生成してくれる、そんなAI」というもの。すごすぎる。

さっぱり意味がわからないので図に起こすとこういうことになります。

実体はチャンチョです。

ところで賢明な読者の皆様に置かれましては、ぽこピーがAIに造詣が深いことは昔から非常に有名な話だと思います。

「AI」でチャンネル内検索した結果。
ガチ恋さんが含まれるのは誤判定なのか「正」なのか。

AIが自動で生み出す存在しないアニメキャラで大喜利が楽しすぎたwww では次のようにも述べています。

失敗にすな

上記リスト及び発言からも分かる通り、以前からぽこピーはAIを実践導入する進取の気性を見せてきています。
VTuber界のOpenAI(※1)滋賀のAndrew Ng(※2) ともしばしば呼ばれる所以がここにあります。

そんなぽこピーの隠れた柱とも言える AI に今回は着目し、どストレートな企画に取り組んでみたいと思います。

その名も、

決めよう。

これです。これをやります。

注意: 
画像生成AIと著作権にまつわる議論が今も盛んに行われています。
本記事は技術の面白さを紹介することを目的としており、何らかの権利主張をすることにはありません。
ぽこピー動画を見るときと同じ気持ちでワハハとご笑覧いただければ幸いです🙏

ルールを説明します

ルール(?)はいたってシンプル。

  1. StableDiffusion (なんか無料で使えるすごい画像生成AI) を使い、ピーナッツくんの生成を試みる

  2. なるべく近い画像ができるまでプロンプトの工夫を繰り返す

  3. ピーナッツくんに近い画像が作れるプロンプトができたとき、それはつまり一歩ピーナッツくんに近づいたことになる。

つまり、

これを
繰り返して
知りたい

というわけです。シンプルですね!

画像を作る準備をします

では早速はじめたいところですが、なんにせよ画像を作ってくれるAIを手元に用意する必要があります。

早速どうすれば使えるのか調べてみましょう!!

Stable Diffusion is a deep learningtext-to-image model released in 2022. It is primarily used to generate detailed images conditioned on text descriptions, though it can also be applied to other tasks such as inpainting, outpainting, and generating image-to-image translations guided by a text prompt.[3]

https://en.wikipedia.org/wiki/Stable_Diffusion
https://pub.towardsai.net/getting-started-with-stable-diffusion-f343639e4931

To run Stable Diffusion via DreamStudio:
1. Navigate to the [DreamStudio](https://beta.dreamstudio.ai/) website.
2. Create an account.
3. Once you are in, input your text into the textbox at the bottom, next to the **Dream** button.
4. Click on the **Dream** button once you have given your input to create the image. Your image will be generated within 5 seconds.

https://stealthoptional.com/tech/how-to-run-stable-diffusion/

画像生成に使用するデバイスを設定します。今回は私の環境ではグラボのないノートPCで使用したため「cpu」で設定しましたが、生成にものすごく時間がかかりました。 グラボを積んでいるPCかGoogle ColaboratoryなどGPUが使える環境では「cuda」と設定してください。

https://murasan-net.com/index.php/2022/08/31/stable-diffusion/

# Installing and Using Custom Scripts
To install custom scripts, place them into the `scripts` directory and click the `Reload custom script` button at the bottom in the settings tab. Custom scripts will appear in the lower-left dropdown menu on the txt2img and img2img tabs after being installed. Below are some notable custom scripts created by Web UI users:

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts

Run this command to log in with your HF Hub token if you haven't before (you can skip this step if you prefer to run the model locally, follow [this](https://github.com/huggingface/diffusers#running-the-model-locally) instead) huggingface-cli login We recommend using the model in [half-precision (`fp16`)](https://pytorch.org/blog/accelerating-training-on-nvidia-gpus-with-pytorch-automatic-mixed-precision/) as it gives almost always the same results as full precision while being roughly twice as fast and requiring half the amount of GPU RAM.

https://github.com/huggingface/diffusers#text-to-image-generation-with-stable-diffusion

.
..
...
....

(後日技術編へのリンクをここに張ります!!)


まずはかんたんなプロンプト(説明文)を試す

どうにかAIが使えるところまでたどり着きました(ということにします)。
ここからが本番です。気張って行きましょう

Trial1: ジャブ

まずは軽くジャブを打って様子見です。
直接的ですが

Peanuts kun

と伝えると何を返すか見てみましょう。

これはいけません。 違うピーナッツの、具体的にはブラウン家の気配がします。直感がそう告げています。

そもそもStableDiffusionは英語での入力を前提としています。
なので kun は不要ですし、 Peanuts をダイレクトに入力に含むのは様々な危険を伴うようです。

Trial2: シンプルなプロンプト

気を取り直して2回目のチャレンジと参りましょう。
今回は ピーナッツくんの外見を説明してみましょう。

anime, solo, boy, two heads high, no hair, yellow skin, large eyes, 2D
(アニメ、一人、少年、二頭身、髪はなし、黄色い肌、大きな目、2D)

ではいってみましょう。

うーーーーん、大分違いますね....
どことなくストーリーを感じさせる影のある少年が出力されました。
特定の層に刺さる可能性はありますが、求めるものではありません。
いくつかの指定が無視されているようですし、なによりピーナッツくんのあのひと離れしたフォルムはこのプロンプトでは生み出せないようです。次はそこを修正してみましょう

… 
さて、読者の皆様に置かれましては大体流れはつかめてきましたでしょうか。
この流れを延々と繰り返す記事となっております。
しっかり最後までついてきてください。

Trial3: 形状を指定してみる

さぁ次は「ピーナッツの形状をしている」ことを明示しましょう。ついでに赤いスカーフにも触れてみます。

anime, a boy with yellow skin, two heads high, no hair, large eyes, 2D, twisted mouth, pop, looking like peanuts, wearing only briefs and a red square scarf
(アニメ、黄色い肌の少年、二頭身、髪はなし、大きな目、2D、ねじれた口、ポップ調、ピーナッツのような見た目、ブリーフと赤いスカーフだけを身に着けている)

あーーーーー、なんといいましょう。
なにかしら陰鬱とした顔ですが、人の形状はようやく卒業できたようです。

AIは同じ入力(プロンプト)に対して、その都度違った画像を返してくれます。
(細かいことを言うとseedを固定すれば同じ画像を返しますがseedの意味がなにもわからないのでそこは省きます。)

もう少しこのプロンプトで様子を見てみましょう。

Trial4: 似たプロンプトを何度か試してみる

同じプロンプトで複数回実行してみましょう。

anime, a boy with yellow skin, two heads high, no hair, large eyes, 2D, twisted mouth, pop, looking like peanuts, wearing only briefs and a red square scarf

素朴なお顔立ちが多い

左下は大分寄ってきている気がします!これは可能性を感じます。上段中央はヒーロー業を営んでいそうな風貌をしています。

... と思いきや、このあたりでもうすでに改善の限界が訪れはじめました。
ここからいくつかの指定を追加したり削ったりして試すものの、条件が多すぎるのか、むしろ雑然とした形もとらない抽象画のようなものが連続して出力されました。

ここはそろそろ先人の知恵を借りるときでしょう。プロンプトエンジニアリングの出番です。

"Complicated"なプロンプトを試す

プロンプトエンジニアリング というテクニックが存在します。
それは先人が膨大な試行錯誤の末に見つけ出した、「こういう絵を出したいならこういうワードをプロンプトに入れるといいよ」という表現集のようなものです。

そのテクニックをまとめた有名な書籍(というかテキスト)でいうと、 NovelAIという別のAIモデル向けにまとめられた『元素法典/日本語版』というものがあります(と聞いています。触ったことがない)。

StableDiffusionでは元素法典ほど有名なまとめはまだ存在しないようですが、ぐぐるといくつかのtipsが見つかります。

例えば以下のようなものがあるようです

  • 強調したいワードは()で囲む。逆に弱めたいワードは[]で囲む

    • 絵の中に出しはしたいものの、小さく出したい、というときに[]が使える

  • x:小数 y:小数 で影響を与える度合いが指定できる

    • ex: the face looks like dog:0.3 fox:0.7 -> 犬の要素もあるが狐よりの顔を作り出す

  • negative promptを使うことで「出したくないワード」を指定することができる

  • 特定のキーワードが大きく影響を与える

    • ex: masterpiece, ultra-detailed, best quality, inspired by X(X風の)

他にも多くのテクニックがシェアされています。

このあたりが詳しいでしょう。

ここからはこれを駆使して限りなくピーナッツくんに寄せていきます。

Trial5: はじめての"Complicated" prompt

早速新しいプロンプトを組み上げて実行です。

((illustration)), ((best quality)), (anime), (solo), (yellow skin), two heads high, bald, large eyes, 2D, twisted mouth, the face looking like peanuts, short arms, short legs, wearing white briefs with a blue line, wearing a red square scarf, no eyebrow, ((full body)), cute, a big belly

一気に複雑になりましたが、基本は一緒です。
()を用いてよりAIに強調したいワードを伝えていることに注目です。

さて、では早速結果を見ていきましょう

あー、うん、なんかこう、メガネを外して15m離れてみればそうかもと思うところまで来た気がします。
ピーナッツくんを知っている人が視界の隅に捉えたら振り返ることもまれにあるレベル。

ピーナッツくんのもつ心地よい気持ち悪さの片鱗が見えていますが、それと高いレベルでバランスをとる不思議な可愛さにかけています。

ここは試行錯誤を繰り返すところでしょう。

Trial6: 試行錯誤

大分打ち手の余地が狭まってきましたが、コツコツと造形の詳細を詰めていきます。

prompt:
((simple illustration)),((best quality)), 2D anime, ((a cute humanoid creature with yellow skin and a big belly)), ((solo)), two heads high, bald, large eyes composing one third of the face, twisted and slightly opened mouth without teeth, the face looking like peanuts, short arms, short legs, ((wearing white briefs with a blue line)), ((wearing a red square scarf)), ((full body)), flat

negative prompt:
eyebrow, ears

キャラのポップさが増しました!
左下の1枚は相当よってきている感じがします...

が、ここに至るまでにすでに数十の試行錯誤を繰り返しており、Googleからもここから先は金を払えと繰り返し注意を受けています。
テキスト「のみ」から画像を生成させるのはここらが限界でしょう。

いよいよ最後の引き出し、img2img を試みてみましょう。

プロンプト + ベース画像を試す

img2img とは、「ベースとなる画像」を起点として、プロンプトを当てはめていくものになります。
ベースとなる画像を指定できるので、ある程度の構図を絵として指定することができます。

例えばこの画像に、

Trial6のプロンプト

prompt:
((simple illustration)),((best quality)), 2D anime, ((a cute humanoid creature with yellow skin and a big belly)), ((solo)), two heads high, bald, large eyes composing one third of the face, twisted and slightly opened mouth without teeth, the face looking like peanuts, short arms, short legs, ((wearing white briefs with a blue line)), ((wearing a red square scarf)), ((full body)), flat

negative prompt:
eyebrow, ears

を適用すると….

こうなるわけです。全体的な構図がベース画像を参照していることがみてわかると思います。

今回は こちら をスタート地点として試してみましょう。厳選に厳選を重ね一番ピーナッツくんに到達するポテンシャルがあるのではと期待をかけた一枚です。


Trial7: img2img 1st round

では早速やっていきましょう。プロンプトはこれまでのものを適当に組み合わせています。

右上がいい感じか…? 元画像と比べ大分スッキリとしたようです。

と、このように次の起点となる画像を選んだら、今度はそれをベースに同じプロンプトを(少しずつカスタマイズしながら)繰り返し使っていきます。

Trial8: img2img 2nd round

なぜか髪の毛が復活してしまいました… ここでは左上を採用します。
ここでできることはこの画像を選ぶことと、プロンプトを細かく修正することのみ、ひたすら忍耐です。

.
..

….
…….
…………
………………
…………………
……………………
……………………….

Trial1000000000000: img2img

重ねに重ねた試行錯誤の結果、ほぼ改善が見られなくなって来ました。

まだまだ完成とは言えないものの、このあたりが一旦の限界とみなし、笑顔の中央の子を選んで最後としましょう!

完成! 🎉

というわけで、(まだまだ似ているとはいえないものの)AIで作成するピーナッツくんの一旦の完成をみたことにしたいと思います!

ここまでに使ったものをまとめると、こういうことになります。

AIが示すピーナッツくんを最もよく説明するプロンプトとは、

((illustration)), ((best quality)), (anime), (solo), (yellow skin), two heads high, bald, large eyes, 2D, twisted mouth, the face looking like peanuts, short arms, short legs, wearing white briefs with a blue line, wearing a red square scarf, no eyebrow, ((full body)), cute, a big belly

+

((simple illustration)),((best quality)), 2D anime, ((a cute humanoid creature with yellow skin and a big belly)), ((solo)), two heads high, bald, large eyes composing one third of the face, twisted and slightly opened mouth without teeth, the face is hubbly and looking like peanuts, short arms, short legs, ((wearing white underpants with a blue line)), ((wearing a red square scarf)), ((full body))

という結果になりました! 🎉


終わりに

今年も終わった... 長かったぜ….

最後まで読んでいただいた方、本当にありがとうございます。
ここまで読み進めたあなたは何らかの特殊能力の持ち主だと思われます。ぜひ誇ってください。
(もし途中で離脱されていたらそれは120%私の稚拙な文章が原因です)

皆さんの時間がほんの少しでもより楽しいものにできていればと思うばかりです :)

もちろん!ぽこピーアドベントカレンダーはこれからもまだまだ続きますし、そこでは最高に素晴らしい作品たちが皆さんを待っています!

ぜひ一緒に最後まで楽しんでいただければ幸いです!

なお、本日の他の作品は なかよし さんの サッカーxピーナッツくん に関するnoteになっています! クスっとくるフレーズが数多く隠されていて最高でした!

そしてそして明日の作品は…

をお届けされるとのことです!

わすれずにこちらもチェックしてください!! 

カレンダーはこちら 👇

#2の12/4(明日!w), 5, 6 はまだ空き枠です!!
ほんの少しでも興味があればいつでも参加してください~!!!!!
WE WANT YOU!!!


以上、ikura18でした!

おまけ

様々な理由で本文では載せなかったり、可愛いからのせたいものたち

怖すぎ
そのまますぎ
チャンチョっぽいのがついてきた
100エーカーを感じる
なにかの拍子で出てきた少年。
ピーナッツくん in 仏画
ピーナッツくんの公式画像をもとにimg2imgしたもの。最上段左から2番目がお気に入り。
チャ、チャン..チョ?


注釈

  • ※1: 呼ばれてない

  • ※2: 呼ばれてない

この記事が気に入ったらサポートをしてみませんか?