もっともらしいことと、正しいことは違う
どんな汎用画像モデルでも漫画ページの着色はできます。貼り付ければ1分もかからず結果が返り、一目見た限りでは問題なさそうに見えます。問題は2ページ目から始まります。同じ人物が違う髪色で戻ってくるのです。次に吹き出しの文字が微妙に描き直されて戻ってきます。さらに純黒のコマ間が、勝手に作られた絵で埋められて戻ってきます。
これはモデルの絵が下手だという話ではありません。モデルは訓練された通りのこと、つまりもっともらしい1枚の画像を作ることをしているだけです。漫画ページは1枚の画像ではありません。同じ配役を共有し、実際の文字が印刷され、構造的な黒で区切られ、前の話と揃っていなければならない章に属する、コマの連なりです。ページ単位でもっともらしいという目標設定そのものが誤りであり、どれだけプロンプトを工夫しても目標は変わりません。
Watashi Colorizerはこの違いを軸に作られています。以下はそこから導かれた6つの技術的判断です。特別なものではありませんが、どれも「それが無いと何かが壊れる」のを実際に見たからこそ存在しています。
白黒
カラー1. プレスリリースではなく比較検証で選んだ重み
多くの着色ツールは薄いラッパーです。ユーザーの画像を公開APIに送り、着色された画像を受け取るだけ。するとその品質は、APIベンダーが今四半期に出したものの品質で頭打ちになり、そのベンダーの弱点、扱いを拒否する題材までまるごと引き継ぐことになります。
私たちは自前のGPUで自前の重みを動かし、評判ではなく検証で選びます。新しい候補モデルは、同じ実際のページで本番モデルと直接対決させ、人間が結果を並べて比較します。ほとんどの候補は負けます。勝ったものは証拠に基づいて勝っており、負けた記録も残すので、同じ行き止まりを二度探索することはありません。
現在のエンジンは汎用の既製モデルではなく、着色に特化してファインチューニングされた重みです。肌が肌として読め、背景が灰色のまま放置されず仕上げられる最大の理由がこれです。
2. 一文ずつ検証した指示文
毎ページと一緒に送る指示文は、一度に書き上げたものではありません。各文を単独で試し、出力を測定可能な形で変えたものだけを残して組み上げました。
この規律が重要なのは、プロンプト作成が「直感と逆の結果」に満ちているからです。私たち自身の作業で最も明快だった例として、肌が決して取ってはいけない色を列挙した一文が、まさにその色の肌が出るページを生みました。望まないものを名指しすると、可能性は下がるどころか上がります。修正方法は、正しい結果がどう見えるかだけを述べることでした。頭で考えていては絶対に見つかりません。一文を試し、結果を見たから見つかったのです。
だから現行のセットは短く、各部分がその場所を勝ち取っています。肌の色を決め切る、すべての背景を仕上げる、解剖学的形状を描かれた通りに保つ、線と文字を正確に維持する。どれか一つを外すと、特定の不具合が必ず戻ってきます。
3. モデルにページをより多く渡す
画像モデルは内部で固定サイズで動きます。大きなスキャンを送れば、モデルが見る前に縮小され、そのページの小さいもの、引きのコマの顔、背景の看板の文字、細かい線、はすべて滲みとして届きます。モデルはその滲みを着色します。それしか与えられていないからです。
私たちはこれを、どれだけプロンプトを工夫しても直らない着色バグを追う中で痛感しました。同じ領域を切り出して単独で送ると、毎回必ず正しく返ってきたのです。モデルは常に答えを知っていました。ただ問いを見ることができなかっただけでした。
そのためページは、都合のよい既定値ではなく、エンジンが実際に活かせる最大サイズで取り込まれます。出力はアップロードしたファイルと寸分違わぬ寸法で返されます。
白黒
カラー4. ページを長方形ではなくコマとして読む
漫画ページには、汎用モデルが気にする理由のない構造があります。コマ枠、コマ間の余白、そして純黒のまま保たれるべき仕切りです。長方形として着色すれば、その構造は模様として扱われます。コマ間が勝手な風景で埋まるのはこうして起きます。
私たちのパイプラインは、着色の前にコマ境界と作画帯を検出し、本物の境界でのみ分割します。コマの途中で切るのは、切らないより悪い結果になります。2つの半分が独立に着色され、決して一致しないからです。だから分割器は推測せず、拒否します。
- コマを意識した分割により、各領域がモデルの注意を十分に受けられる
- コマ間と黒レベルの保持により、構造的な黒が構造のまま残る
- パレット固定により、繰り返し登場する人物の髪・目・衣装が同じに保たれる
- 文字と線画の保持により、セリフが着色を生き延びる
人物の色を推測し直さず固定するパレット固定と組み合わせることで、配役は1ページ内でも章全体でも設定を保ち、ページごとに一段ずつずれていくことがなくなります。
5. 他が扱えないページのためのモード
日本の印刷修正は、身体の上に硬い白黒のバーを置きます。着色モデルにとってこれは本当に曖昧です。バーの下には手がかりとなる肌の情報が無いため、何かを想像で作り、しかも試行ごとに違うものを作ります。私たちの検証では、同じモデルの4回の実行で、同じページが茶・灰・橙・桃を生みました。
この失敗はサンプリングでは解決できません。入力に存在しない情報に、平均化でたどり着くことはできないからです。バーが何であり、その下に何があるのかを、モデルに明示的に伝える必要があります。だから修正への対応は、必要なページで有効にする専用モードになっています。
任意設定である理由は、はっきり述べる価値があります。修正バーを見ていないモデルにバーを説明すると、モデルはバーを描き足すのです。この指示は強力であり、だからこそ全体に常時適用するのではなく、該当するページに限定しています。
6. 待ち時間を製品の一部として扱う
自前でGPUを持つとは、その費用を払うということであり、つまり空いている間は眠らせるということであり、つまり静かな時間帯の最初のリクエストはハードの起動を待つということです。これはラッパーでないことの実際のコストであり、それを取り繕うのは作業途中でユーザーを失う近道です。
そこでエンジンは、あなたがモデルを選んだ瞬間から暖機を始めます。ファイル選びが終わる前に始まるので、多くのジョブでは待ち時間が丸ごと消えます。待ちが避けられない場合は、守れないカウントダウンを見せる代わりに、進捗画面が平易な言葉でそう伝えます。
切れてから再スタートするタイマーは、タイマーが無いより悪いものです。遅いジョブを、嘘に見えるものへ変えてしまうからです。見積もりを超えたら見積もりをやめ、説明付きの正直な経過時間に切り替えます。通知を有効にすれば、タブを離れても安心です。
どれも魔法ではありません
上のどれも地味な話です。宣伝を信じずに候補を検証する。指示を一つずつ検証する。モデルに十分な画素を渡す。ページの構造を尊重する。難しいケース専用のモードを作る。待ち時間について正直でいる。
差を生むのは単一の技術ではなく、取り込みから書き出しまで漫画ページを漫画ページとして扱うという事実です。もっともらしいものと、公開できるものとの間にある差は、丸ごとそこにあります。
ツールは無料で試せます。これらを評価する最短の方法は、すでによく知っているページを通し、自分が描いたページとして返ってくるかを見ることです。