LINEスタンプ工房の続きとして、今回は背景透過でかなり苦労した話を残しておく。
「AIを使えば、LINEスタンプもかなり簡単に作れるのではないか」
最初はそう思っていた。ところが、実際に始めてみるとかなり大変だった。AIがこちらの意図どおりに動いてくれない。
特に苦労したのが、背景透過だった。
透明になっているように見えて、端に白っぽいゴミが残る。背景とキャラクターの境界がにじむ。文字の周りだけ微妙に残る。

一番困ったのは、「透過に見えて、実は透過っぽく見える背景になっている」パターンだった。
ChatGPT上で見ると透過しているように見えるので、「よし、できている」と思ってダウンロードする。ところが、あとで確認すると、透明背景ではなく格子模様の背景が画像として作り込まれている。

これはかなり手戻りが大きかった。
最初は背景透過PNGで作りたかった
LINEスタンプ用の画像は、背景が透明なPNGとして用意する必要がある。
そのため、最初に考えたのは単純だった。
AIに「背景透過で」「transparent backgroundで」「PNGで」と指示して、透明な画像をそのまま作る。うまくいけば、画像生成からLINEスタンプ用データまでの流れがかなり短くなる。
実際、1枚だけ作ってみたときはうまくできていた。サイズは大きくなっていたが、ちゃんと透過していて、余白もある。スタンプとして見ても大きな問題はなさそうだった。
背景透過で実際に詰まったところ
ところが、複数枚を出すとばらつきが出始めた。
見た目に背景色が入ってしまうのはまだ分かりやすい。問題は、格子模様の背景がそのまま出力されてくるケースだった。
これが一番困った。ChatGPT上で見ると透過しているように見えるので、枚数が増えれば増えるほど、あとから気づいたときの手戻りも増える。
しかも全部がNGではない。最初の方は問題なくて、「よし、できている」と思っていたら、後半はボロボロ。そういうこともあった。
白背景の上で見ていると問題なさそうでも、濃い背景に置くと輪郭に白いフチが残っている。透明になっていると思った部分に、うっすら色が残っている。キャラクターの影や装飾が背景と混ざっていて、どこまでを残すべきか判断しづらい。
1枚だけなら、画像編集ソフトで拡大して消せば済む。だが、8枚、16枚、24枚と増えていくと、毎回同じ確認をすることになる。
ここで「AIにもう一回きれいに出してもらえばいい」と考えると、別の問題が出る。再生成すると、キャラクターの形や表情まで少し変わる。背景だけ直したいのに、絵そのものが変わってしまう。
プロンプトで指示や制約を追加していけば、そのうち落ち着くのではないか。そう想定していたが、背景透過についてはあまり安定する気配がなかった。

remove.bgも試した
背景透過は、背景透過が得意なものに任せればいい。
そう考えて、remove.bgも使ってみた。
いろいろ調べながら試したが、これも自分の用途ではうまくいかなかった。単純な画像ならよさそうだが、私が作ろうとした画像だと安定感がない。
メッセージ部分の色が消えたり、キャラクターの色が消えたりする。背景以外も消えてしまう場面があった。
しばらくChatGPTとやり取りしながら考えて、ここで気づいた。
「うまく消せないなら、最初から消す前提で作ればいいのではないか」
`#FF00FF`背景にした理由
今の形では、画像生成時に背景を`#FF00FF`のような強い単色に寄せている。
理由は、キャラクターや文字と背景を分けやすいからだ。
昔テレビで見た、あとで合成する前提のグリーンバックに近いイメージである。
当初、端から同系色をたどって透過していくことも考えたが、囲まれている場所が透過できないことにも気づき、さらにアナログに「この色は透過する」形に落ち着いた。

白背景や淡い背景だと、キャラクターの白い部分、文字の縁、影と混ざりやすい。逆に`#FF00FF`のような普段あまり使わない色なら、後工程で「この色を背景として抜く」と判断しやすい。
もちろん、これで完全に自動化できるわけではない。キャラクターの中に近い色が混ざれば誤って抜ける可能性があるし、輪郭に背景色が残ることもある。
それに、ChatGPTに「`#FF00FF`にして」と指示しても、厳密な`#FF00FF`にはならない。それでも、単色背景には寄せてくれるので、やりようはある。
結果として、ツール側の処理はかなりアナログになった。
仕様としては、おおまかに以下のような流れにしている。
1. 画像四隅の色を取得する
2. 辺の一定間隔ごとの色を取得する
3. 取得した色にある程度の幅を持たせる
4. 画像内で一致する色を透過する
単色背景といっても、実際には微妙な誤差がある。そのため、完全一致だけで抜くのではなく、ある程度の幅を持たせて処理する形になった。

LINE Stamp 工房で後工程をまとめる形にした
背景透過で毎回同じ確認をするのが面倒だったので、後工程はLINE Stamp 工房側に寄せることにした。
今の流れは、おおまかにこうしている。
1. AIでスタンプ用の元画像を作る
2. 背景は透明ではなく、抜きやすい単色に寄せる
3. LINE Stamp 工房で背景を透過する
4. 余白とサイズを整える
5. 審査前にまとめて確認する
この形にすると、AIに求めることと、ツールで処理することを分けられる。
AIには、キャラクターの表情、ポーズ、文字の雰囲気を作ってもらう。背景透過、余白調整、サイズ調整、確認しやすい出力は、後工程で扱う。
全部をAIに任せようとすると、うまくいった時は速い。ただ、崩れた時にどこから直せばいいか分かりにくい。
後工程を分けておくと、失敗した時に「生成をやり直す」のか、「透過処理を調整する」のか、「余白だけ直す」のかを切り分けやすい。
何より、技術者としては、自分でコントロールして作っている感覚があるのがいい。

今の形でまだ残っていること
`#FF00FF`背景にしたからといって、すべてが解決したわけではない。
生成時点で背景色が完全に均一にならないことはある。キャラクターの輪郭に背景色が少し混ざることもある。文字の周辺は特に確認が必要になる。
そのため、最終的には人間の確認が残る。
ただ、最初から透明PNGを信じて進めるより、確認するポイントはかなり明確になった。
背景色が残っていないか。必要な部分まで抜けていないか。余白が狭すぎないか。サイズがLINEスタンプ用として合っているか。
作業をゼロにするのではなく、毎回迷う部分を減らす。今のLINE Stamp 工房は、そのための形に近い。
スマホでも作成、編集、レビューしやすいインターフェースにしているので、通勤中にも作業できる。
まとめ
AIは優秀で便利だが、まだ100%を求めるのは難しい。
では、どこにAIの能力が向いていて、はみ出た部分をどう機械化するか。今回の背景透過は、その切り分けを考えるいい機会になった。
LINEスタンプでは、背景透過、サイズ、余白はかなり厳密に見る必要がある。
だからこそ、後続のツールで整える前提にして、AIの揺らぎをできるだけ小さくし、ツール側で吸収できる形にした。
今は、AIには絵の方向性を作ってもらい、背景は`#FF00FF`の単色に寄せる。その後、LINE Stamp 工房で透過、余白、サイズをまとめて整える。
この形なら完全自動ではないが、かなり作業効率はよくなった。
AIとプログラムのいいところを分けて使う。LINEスタンプ工房は、背景透過で苦労した結果、そういう形に落ち着いた。
関連記事
– ChatGPTだけでLINEスタンプを作りたかったけど、背景透過で詰まって単色背景にした話
CTA
ここで作成したツールを公開しています。是非使ってみてください。
– [LINE Stamp 工房](https://lab.imeer.jp/line-stamp-kobo/)
– [LINE Stamp 工房 マニュアル](https://lab.imeer.jp/line-stamp-kobo/manual/)


コメント