画像処理系の人工神経回路網

image-processing machine-learning

Colorful image colorization

La*b* 色空間で L を入力として ab をクラス分類として解く。

\mathcal{L}(\hat{Z}, Z) = -\sum_{h,w} v(Z_{h,w}) \sum_{q} Z_{h,w,q} \ln \hat{Z}_{h,w,q}
  • $\hat{Z}$ 予測結果。$W \times H \times Q$ 次元 ($Q$ は ab を離散化したクラス数。論文では 313)
  • $Z$ 正解画像を one-hot 化したもの。
  • $v(Z_{h,w}) = \frac{p_{q^{*}} + 1}{2}$ はクラスに対する重み。$q^{*} = \mathrm{argmax}_{q} Z_{h,w,q}$。$\vec{p}$ は訓練データ中のクラスの出現頻度ベクトル $\sum_{q} p_{q} = 1$。
  1. 隣接した画素間で色が同じになるように total variation loss を加えてはどうか
  2. 学習がスムーズになるように色空間中で近いクラスに分類されるときのロスを弱めるようにするのはどうか:正解ラベルを 0/1 の one-hot ではなくて $q^{*} = \mathrm{argmax}_{q} Z_{h,w,q}$ のとき $\tilde{Z}_{h,w,q} = \frac{\exp\left(\frac{d_{q,q^{*}}}{\beta}\right)}{\sum_{r} \exp\left(\frac{d_{q,r}}{\beta}\right)}$ みたいにする。$d_{q,r}$ は色クラス $q$ と $r$ の Lab 色空間内でのユークリッド距離などをつかう。

Deep automatic portrait matting

$I = (1 - A) B + A F$ という構造を仮定して、マッティング (出力 $A$) の最適化をニューラルネットワークのレイヤーとして組込む。最適化結果は下式で求められるので、これをバックプロパゲーションできるように定式化する。

A = \lambda (\lambda \mathrm{diag}(B + F) + \mathcal{L})^{-1} F
  • 最適化の前段のニューラルネットワークの出力は 3 値のソフトマックスとして、前景 ($F$)・後景 ($B$)・境界 ($U$) を出力する
  • 上記の式でマッティング $A$ を計算する
  • $\mathcal{L}$ はマッティングラプラシアン 1
  • back prop は下式で実現できる
\begin{aligned}
\nabla_{B} A &= -\lambda^{2} D^{-1} \mathrm{diag}(D^{-1} F) \\
\nabla_{F} A &= -\lambda^{2} D^{-1} \mathrm{diag}(D^{-1} F) + \lambda D^{-1} \\
\nabla_{\lambda} A &= D^{-1} F - \lambda D^{-1} \mathrm{diag}(F + B) D^{-1} F
\end{aligned}

ここで $D = \lambda \mathrm{diag}(B + F) + \mathcal{L}$ とおいた。任意の行列 $A$ と $B$ について $\nabla_{A} (A B) = \nabla_{A} A + A \nabla_{A} B$ および $\nabla_{A} A^{-1} = A^{-1} \nabla_{A} A^{-1}$ であることに注意。

マッティングラプラシアンの定義には

\mathcal{L}_{i,j} = n_{k} \delta_{i,j} - \sum_{k \in w_{k}} \left[1 + \frac{1}{\sigma_{k}^
{2} + \frac{\epsilon}{n_{k}}} (I_{i} - \mu_{k})^{\top} (I_{j} - \mu_{k}) \right]

\mathcal{L}_{i,j} = n_{k} \delta_{i,j} - \sum_{k \in w_{k}} \left[1 + (I_{i} - \mu_{k})^{\top} \left(\Sigma_{k} + \frac{\epsilon}{n_{k}}\right)^{-1} (I_{j} - \mu_{k}) \right]
  • $\delta_{i,j}$ はクロネッカーのデルタ
  • $w_{k}$ は窓 ($3 \times 3$ とか $5 \times 5$ とか)
  • $n_{k} = w_{k} $ は窓内のピクセル数
  • $\mu_{k}$ は窓内の色の平均ベクトル (3 次元)
  • $\Sigma_{k}$ は色の共分散行列 (3 行 3 列)

がある。

Deep image matting

合成されている画像と Trimap から α マットを計算する。α マット自体のロスと、それを使って合成した結果のロスを両方使う。最後に、合成されている画像と推定した α マットを使ったファインチューニングを施す。

Spatial transformer networks

サンプリング点を生成するネットワークで、サンプリング結果の誤差を測る構成にしたい。そのためサンプリング部分をネットワークのレイヤーとしてバックプロパゲーションできるように設計したい。2

\hat{Y}(x, y) = \sum_{i,j,k \in \{0,1\}} W^{i,j,k} X(V^{i,j,k})
\begin{aligned}
V^{0,0,0} &= (\lfloor L_{x}^{0} \rfloor, \lfloor L_{y}^{0} \rfloor, 0) \\
V^{1,0,0} &= (\lfloor L_{x}^{1} \rfloor, \lfloor L_{y}^{0} \rfloor, 0) \\
V^{0,1,0} &= (\lfloor L_{x}^{0} \rfloor, \lfloor L_{y}^{1} \rfloor, 0) \\
V^{1,1,0} &= (\lfloor L_{x}^{1} \rfloor, \lfloor L_{y}^{1} \rfloor, 0) \\
V^{0,0,1} &= (\lfloor L_{x}^{0} \rfloor, \lfloor L_{y}^{0} \rfloor, 1) \\
V^{1,0,1} &= (\lfloor L_{x}^{1} \rfloor, \lfloor L_{y}^{0} \rfloor, 1) \\
V^{0,1,1} &= (\lfloor L_{x}^{0} \rfloor, \lfloor L_{y}^{1} \rfloor, 1) \\
V^{1,1,1} &= (\lfloor L_{x}^{1} \rfloor, \lfloor L_{y}^{1} \rfloor, 1) \\
\end{aligned}
\begin{aligned}
W^{0,0,0} &= (1 - (L_{x}^{0} - \lfloor L_{x}^{0} \rfloor)) (1 - (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor)) (1 - \delta t) \\
W^{1,0,0} &=      (L_{x}^{1} - \lfloor L_{x}^{1} \rfloor)  (1 - (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor)) (1 - \delta t) \\
W^{0,1,0} &= (1 - (L_{x}^{0} - \lfloor L_{x}^{0} \rfloor))      (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor)  (1 - \delta t) \\
W^{1,1,0} &=      (L_{x}^{1} - \lfloor L_{x}^{1} \rfloor)       (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor)  (1 - \delta t) \\
W^{0,0,1} &= (1 - (L_{x}^{0} - \lfloor L_{x}^{0} \rfloor)) (1 - (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor))      \delta t  \\
W^{1,0,1} &=      (L_{x}^{1} - \lfloor L_{x}^{1} \rfloor)  (1 - (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor))      \delta t  \\
W^{0,1,1} &= (1 - (L_{x}^{0} - \lfloor L_{x}^{0} \rfloor))      (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor)       \delta t  \\
W^{1,1,1} &=      (L_{x}^{1} - \lfloor L_{x}^{1} \rfloor)       (L_{y}^{0} - \lfloor L_{y}^{0} \rfloor)       \delta t  \\
\end{aligned}

(あとで書く)

Pyramid scene parsing network

画素ごとに物体ラベリングするための手法

  • ResNet などで事前学習する
  • そのネットワークの最後の層の特徴マップ (オリジナルの 1/8 ぐらい) を取り出す
  • 複数スケールで pooling する
  • それらを concat して upsampling する
  • 畳み込みしてラベルに直す

Deepcolor: automatic coloring and shading of manga-style lineart

線画に色を塗る手法

  • color-schemeshading の 2 段のネットワークで構成する
  • color-scheme は、正解画像をランダムに矩形で白く抜いたあと強いブラーを掛けたモノを教師とする
  • shading は、線画と color-scheme の出力を入力として adverarial loss を入れる
  • いずれも U-Net で構成する
    • [C3-64/2, C3-128/2, C3-256/2, C3-512/2, C3-512/2] - [U4-512x2, U4-256x2, U4-128x2, U4-64x2, U4-3x2]
    • ex) C3-64/2: Convolution2D(output_channels=64, kernel_size=3, strides=2)
    • ex) U3-64/2: UpSampling2D(), Convolution2D(output_channels=64, kernel_size=4, strides=1)

Deep Laplacian pyramid networks for fast and accurate super-resolution

超解像度

  • (低解像度入力を Upsampling) + [C64-1, C64-1, U64-1, {C3-1}] として階層的に超解像度する
    • 最後の層は画像構成部分にだけつけて、特徴マップ抽出部分は一つ前をそのまま渡す
  • 各レベルで {(再構成結果) - (真の画像)} - (真の残差) - 1e-3 の二乗和 (Charbonnier penalty function) を最小化する
  • Adversarial loss は使わない

Deep image harmonization

あとで読む

  1. Anat Levin, Dani Lischinski, Yair Weiss. 2006. A closed form solution to natural image matting. Proceedings of CVPR ‘06, Volume 1, pp. 61-68. 説明は http://hexianghu.com/vision/2015/02/25/closed-form-image-matting/ が詳しい。 

  2. Ziwei Liu, Raymond Yeh, Xiaoou Tang, Yiming Liu, Aseem Agarwala. 2017. Video frame synthesis using deep voxel flow