[論文メモ] SketchEdit: Mask-Free Local Image Manipulation with Partial Sketches

arxiv.org

マスクを使用しない線画による画像操作を提案。

skech-basedな手法による画像操作系は補完する部分のマスクとターゲットとなる線画を入力とするが、マスクと線画の2つを書くユーザーの手間、マスクからうまく線画を書くユーザーの能力、マスクすることで補完対象の重要な情報が落ちる等の問題があるのでマスクを使用したくない。
f:id:Ninhydrin:20211203093706p:plain

手法

Model

提案手法は3つのコンポーネントからなる。
1) Mask Estimator
2) Structure Agnostic Style Encoder
3) Generator

アーキテクチャの全体像は図3を参照。

f:id:Ninhydrin:20211203094346p:plain

Mask estimator

画像 xとスケッチ cを入力として受け取りマスク mを出力するencoder-decoder  M( m = M(x, c))
マスクはsigmoidで[0, 1]にする。
編集したい周辺のスタイルが必要なので、スタイル用の画像の一部を x^{sty}=m \odot x、変更しない部分を x^{sta}=(m-1) \odot xとする。 \odotアダマール積。

Structure agnostic style encoder

style encoder  Sは編集したい部分の構造を無視しつつスタイルを取り出すこと。
そのためにconvolutionしてglobal max poolingし1次元のベクトルを出力する。入力はマスク mと部分スタイル画 x^{sty}
得られたベクトルを空間方向にリピートしてスタイルマップ  \hat{v}^{sty}_{(d \times h \times w)}を得る。 dがスタイルの次元、 h,wが空間の次元。

Generator

アーキテクチャに依存は無いので補完等でよく使われるDeepFill-v2を採用。
Generatorは2つのステージ(coarseとrefinement)に分かれていてそれぞれG_0, G_1とする。
 G_0は変更しない部分の画像 x^{sta}、マスク m、スタイルマップ \hat{v}^{sty}を受け取り、粗い画像 y_0を生成する。
 G_1 y_0を受け取り詳細な画像 y_1を生成する。
f:id:Ninhydrin:20211203100615p:plain

最後にマスク部分と変更しない部分をブレンドする。
f:id:Ninhydrin:20211203100632p:plain

Learning by reconstruction

既存手法と違ってマスクを予測する必要がある。自己教師ありで普通にやると当然マスクが画像全体になり、mask estimatorは恒等写像になる。
それを避けるために、モデルに画像を入力する前にランダムなlocal warpingとregion dropoutを施し画像を劣化させる。

Local warping

ランダムにサンプリングした領域内の境界(エッジ)部分に頂点を配置して三角メッシュを生成し画像を変形させる。顔画像に関してはlandmarkを頂点とする。
変形することでもとの画像のテクスチャや色を維持したまま構造が異なる画像を生成できる。
この変形した画像を使って元の画像を復元するタスクを学習することで、構造を無視した生成が可能になる。
f:id:Ninhydrin:20211206092539p:plain

Bi-directional mask regularization

変形した画像を使って学習するためmask estimatorは変形によるアーティファクトの検出を学習してしまう(図6の3列目)。
f:id:Ninhydrin:20211206092200p:plain

これを解決するためにbi-directional maskを使ったlossと正則化を追加する。
変形のフローを f、スケッチ画像を c、変形後の画像を f(x)、同じ変形フローを適用したスケッチを f(c)とする。
mask estimator にdecoderを追加し、 f(x) cから元画像 xを復元するタスクと x f(c)から f(x)を復元するタスクを学習させる。
追加したdecoderに画像とスケッチから生成した画像を \bar{M}(x, c)、これをマスクに基づいてブレンドした画像を \hat{M}(x, c) = \bar{M}(x,c)\cdot M(x,c) + x \cdot (1 - M(x, c))として bi-directional mask regularization (BMR) loss は
f:id:Ninhydrin:20211206093706p:plain

BMRを適用した結果が図6の4列目。

Regional dropout

変形した画像は元画像と視覚的に似た要素を持っているが、実際に利用するときにはそうではなく、Generatorが新規に生成する必要もある。
そこでサンプリングした領域をランダムにdropoutして v_{str} xの相関を減らす。

loss

lossは先程のBMRlossとL1のreconstruction loss、adversarial lossに似たhinge loss。
hinge lossはmask estimatorとGeneratorの出力を組み合わせてDiscriminatorを騙そうとするので2つのモデルの強調を促進する。
f:id:Ninhydrin:20211206094219p:plain
f:id:Ninhydrin:20211206094236p:plain
f:id:Ninhydrin:20211206094259p:plain

実験・結果

詳しくは論文を参照。
定量評価は表1、2を参照。SketchFaceとSketchImgは作成したテスト用のデータセットで画像とそれぞれに対応するマスクとスケッチからなる。
f:id:Ninhydrin:20211206094756p:plain

定性評価は図7。マスクはありの既存方法と比べて遜色なさそう。
f:id:Ninhydrin:20211206094644p:plain

所感

確かに画像の変形ならマスクは必要なくスケッチだけで良さそう。
ただ、内部でマスクを生成してある程度自由に変更できる領域を指定する必要はある。
このマスク領域を学習するためのフレームワークはkeypoint detectionの自己教師あり学習とかでも似たことがやられており(変形画像から元画像を予測)、なるほどという気持ち。画像タスクに関しては他にも応用がききそう。
粗い画像を生成して高精細化していく系の学習はあまり好きではない。一発でどうにかならないものか。