【要約】白うさぎの透過に BiRefNet が使えなかった理由 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者がLINEスタンプ用の素材を効率的に作成しようとした際、AIの特性を誤解したことで、素材の品質が著しく低下するという問題に直面した。具体的には以下の課題が発生した。
- ・BiRefNetの特性誤認:白背景に白キャラを配置したため、前景と背景の境界が判別できず、キャラクターの一部が消失した。
- ・AIによる文字生成の不安定さ:ChatGPTに文字を直接描かせると、背景除去時に文字が消える、あるいはレイアウトが制御不能になる問題が発生した。
// Approach
筆者は、AIの役割を限定し、決定論的な画像処理を組み合わせることで、この問題を解決した。以下のステップでパイプラインを再設計した。
- ・背景色の変更:白背景を避け、クロマキー処理に適した緑背景を採用した。
- ・アルゴリズムの実装:
greenness = pixel[1] - max(pixel[0], pixel[2])を用いた透過処理と、エッジの緑かぶりを除去するdespill処理を導入した。 - ・文字合成の分離:AIにはキャラのみを生成させ、文字はPILを用いて後段で合成する構造へ変更した。
- ・パイプライン化:
sticker_pipeline.pyにより、JSON定義に基づいた一括自動生成を実現した。
// Result
このアプローチにより、筆者は高品質なスタンプ素材を効率的に量産できる体制を構築した。具体的な成果は以下の通りである。
- ・透過精度の向上:緑背景からの透過率78.6%を達成し、白パーツの誤除去をゼロにした。
- ・作業効率の劇的な改善:24個の素材を
buildコマンド一発で生成可能とした。 - ・品質の安定化:フォントやレイアウトをPILで制御することで、デザインの一貫性を確保した。
Senior Engineer Insight
> 生成AIの不確実性を、決定論的なプログラムで制御する設計は、実戦的な自動化の要諦である。AIに全てを委ねるのではなく、後段のパイプラインで品質を担保する構成は、スケーラビリティと信頼性の両立において極めて合理的である。ツールを疑う前に、入力となる素材の物理的・論理的特性を疑うべきであるという教訓は、あらゆるシステム開発に通じる。