ブログ記事にサムネイルくらいあった方がいいよな、とは思いつつ、毎回自分で作るのはめんどくさい。かといってAIに丸投げしたら、質をどう担保するかが結構悩ましい。生成させるにしても、結局自分の手を動かさないといけないなら、それはそれでめんどくさい。
本当は、記事を読み込んで「これがいい感じ」というのを勝手に選んでくれるくらいの自動化がしたかったんです。ただ触ってみて分かったんですが、今の時代、その自動化を作り込むよりも普通に生成しちゃった方が早い。そこがちょっとむずいな、と思いながら手をつけたら、思ったより長い戦いになりました。
そもそも課金してたのはストック素材が目当てだった
これを試すことになったきっかけは、自分がもともとMagnificに課金していたことです。
Magnificは元々Freepikという名前で、ストックフォトやフリー素材の質が個人的にすごく気に入っていて課金していました。生成AI目当てでは全然なかったんです。それが後からFreepikが画像・動画・音楽の生成AI領域にもガッツリ乗り出して、Magnificという名前に変わっていった、という経緯があります。ストック素材と生成AIって、考えてみれば隣接領域なんだろうなというのは今なら分かります。
正直「今年で課金やめようかな」とすら思っていたタイミングでした。でも今回MCP経由で触ってみたら、以前Freepik時代に一度試したときのイマイチな感じとは全然違って、連携がだいぶスムーズになっていて。「あ、これはまだ解約しなくていいかもな」と思い直しました。
モデル選びで一番悩んだところ
スタイルの方向性はわりとすんなりアイソメトリックに決まりました。ただモデル選びは結構悩みました。
コストパフォーマンスだけで言えばNano Banana 2が個人的には一番良いと思っています。品質も十分高いし、値段も安い。ただ「多少クレジットがかかってもいいから、一番破綻の少ないものが欲しい」と思ったときに、一番しっくりきたのはChatGPTの画像生成モデル(GPT Image 2)でした。結局そちらを採用しています。
で、そのGPT Image 2にノイズの問題があった
問題はモデルの選定そのものより、その後にありました。
拡散モデルって仕組み的には、ノイズだらけの画像から少しずつ形を作っていくものなんですよね。GPT Image 2は特にその名残というか、粒状のノイズがかなり残りがちで。見た瞬間に「あ、これAIで作ったやつだ」感が強く出てしまうし、正直見てて目がチカチカするような感覚があって、自分はこれが結構嫌でした。
最初にやったのが、Pythonで色を量子化して無理やりノイズを潰す方法でした。これはこれで効果はあったんですが、今度は形状そのものが崩れる。継ぎ目の線が消えたり、細部が潰れたりして、「ノイズは減ったけど絵として微妙」という別の問題が出てきました。
結局、AIにもう一段通すのが一番きれいだった
あれこれ試した結果、一番きれいに片付いたのは画像アップスケールのノイズ除去モードでした。
生成AIで作った画像を、さらに別の生成AI(アップスケール用のモデル)にリファレンスとして通してノイズだけを除去する。つまりAIで作ったものをAIで直す、という二段構えです。単体のPython処理でどうにかしようとしていたときよりも、素直にこっちの方がきれいに仕上がりました。
「AIで生成したノイズをAIで消す」という流れ自体が、なんかちょっと変な感じもするんですが、実際やってみたら一番違和感のない結果になったので、そういうものなんだろうなと今は思っています。
最後は画像の軽量化とフォールバック周り
仕上げとして、生成したPNGをAVIFやWebPみたいな軽い形式に変換して、Astro側でフォールバックが効くように設定しました。Picture要素だったかImage要素だったか一瞬迷ったんですが、そのあたりの細かい設定を含めて一通り自動化できたので、今後は記事を書くたびにこのスキルを呼べばサムネイルが揃うようになっています。
完璧じゃないけど、今のところはこれでいい
正直、クオリティにはまあまあ満足しているんですが、完全に統一感が取れているかというとそうでもないです。記事によって多少雰囲気が違ったりする。
ただ、このサイトにとってサムネイルは一番大事な要素というわけでもないので、「見て耐えられる」くらいのラインに収まっていれば今は十分かなと思っています。もっと良いやり方が見つかったら、その都度切り替えていくと思います。
そんな感じで、モデル選びより後工程のノイズ処理の方がずっと手強かった、という話でした。
Magnificの課金、今年でやめるつもりだったんですけどね。まだしばらく続きそうです。
