はじめに
KDDIアイレット初の「ファミリーデー」を開催!子どもが書いた絵が生成 AI で絵本に!?フィジカル AI デモや役員と名刺交換など笑顔溢れた一日をレポート
こちらの投稿のファミリーデーで絵本ジェネレーターを担当したヤマダ(北野)です。
私がこの素敵な企画に参画できたのは、たまたま社内のチャットで羽鳥さんの投稿を見かけたことがきっかけです。活発な社内チャットに感謝!ということでせっかくなので絵本ジェネレーターの裏側や工夫した点について記事にしていきたいと思います🙇♂️
システムを作る前に
今回の要件はシンプルで「子供が描いた絵を絵本にしたい」とのことでした。AIを活用したシステムではPoCがとても大事だと思います。いきなりシステムを作成するのではなく、核になるメイン機能に絞って検証から始めました。
といっても実は昔子供にオリジナル絵本を作ったことがあったので、なんとなく実現できそうな予感は初めからありました。
とりあえず実現できるかを確認するだけなので、初めは適当なプロンプトで「絵本っぽい画像が出せること」と「2つの画像を渡して合成できること」のみGeminiのチャット画面でお試ししました!

その際にある程度手応えがあったので、「これはいけるな」となりました。上記が実際に出力した画像です。
実際に作り始める
出力を安定させる工夫
絵本を作るにあたって、一番工夫したのはベースとなる絵本は先に作ってしまうことです。
画像生成系は出力を任せすぎるとプロンプトを工夫してもなかなか安定しません。
今回の絵本ジェネレーターではまず絵本のベースとなる8ページを納得がいくまで生成し、ベース画像として確定しました。そしてその画像に対してアップロードしてもらった画像と合わせてGeminiに投げ、合成してもらいます。その際は合成自体はベースとして共通のプロンプトを使用し、各ページごとにシーンにあったポーズなどになるようにプロンプトを追加するようにしました。
ベース画像にはあらかじめキャラクターを配置する部分に赤の星を置くことで具体的に指定できるようにもしました!

構成について
構想段階ではGemini呼び出しは絵本作成1回につき1回にしようと思っていました。絵本の世界観に絵柄を合わせる生成のみGeminiに頼み、その後の画像合成はAmazon Nova Canvasなどで安価に済ませようと思ったからです。
ですが、すでにNovaの画像・動画系のモデルはレガシー指定に。。
他のモデルも試しましたが、精度が悪かったので結局Geminiを8回(絵本のページ数分)呼び出す形になってしまったため、そこそこ生成のコストもかかってしまいました。

いくつかポイントはありますが、全体をザッと解説するとフロントのWebページからファミリーデーに来た方々に子供が描いた絵を送信してもらいます。そこからAWS Step FunctionsでGeminiへの画像生成やリサイズ、絵本化のためのPDF作成などを担っています。
ここでもちょっとした工夫ですが、文字は生成に含めると崩れがちです。後から文字だけの画像を合成する工程を踏んでいます。
システム自体はとても単純ですが、非常に安定したシステムが完成しました!
最後に
当日は約70冊もの絵本が生成されたようです。実際に紙になった絵本を見て家族で笑っている姿なども見れて私は大満足です🥰
生成AIを活用したシステムは”何をどこまで生成AIに任せるか“をしっかりと考えることが大切だと思います。全てを任せてしまったら出力が安定しませんし、ガードレールも難しくなります。今回は絵本のベースはしっかりと守りながらうまい具合にコンテンツのメイン部分を生成AIに任せることができました!
ちなみに絵じゃなくてもいい感じに絵本ができます。なので人の写真とかでもいい感じに絵本になるので思い出作りにはいいかも。あといい感じに画像生成の天然なところが出てて、たまにめちゃくちゃおもしろい画像ができててよかったです🤣