[Survey]Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification

[Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification](http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/ja/)


この論文の目的は、下記のように白黒画像に色を付ける(Colorization)ことです。
Colorizationは昔から研究されていて、人が手動で色を指定してそれを広げるものと自動で色を付けるものがありますが、この論文は自動で色を付けるほうになります。
![image](https://qiita-image-store.s3.amazonaws.com/0/100523/fca01342-6408-e025-11a8-c835f127536c.png)

CNNを使ったColorizationは以前にもありましたが、この論文の方式の特徴は、
・Fullautoなcolorization
・Global特徴とLocal特徴を一緒に学習するend-to-end network
・性能向上のために分類ラベルを利用する学習手法
・Global feature利用に基づいたstyle transfer
です。

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/3a7e6eda-30b6-e3f3-2d10-60b4a29628d4.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/9f566930-52b0-6cb8-25a2-461707634352.png)

## Global ModelとLocal Modelの結合

Global ModelとLocal Modelの結合することにより、
・あらゆる解像度の画像を処理することができる
・局所推定にGlobal事前確率を組み込める
・画像Styleをほかの画像のColorizationに転移できる

## Low level Feature
6層からなるConvolutional Neural Network(紫色の部分）
・Low Level FeatureはGlobal特徴量Networkとmid-level特徴量Networkの両方の入力になる
・特徴量Mapのサイズを減らすためにMax-poolingの代わりにstrideの量を増やす
・3x3のkernelを使用

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/7a5d8555-f240-d71b-cfc8-768537088238.png)

## Global Feature
・4つの畳み込み層と2つのfully connected layerからなる
・256次元のベクトル表現ができる
・入力画像のサイズは、224x224
![image](https://qiita-image-store.s3.amazonaws.com/0/100523/b06e1000-7b17-7c90-7bce-38bccf029c4c.png)

## Mid level Feature
・Low level featureをさらに2つのconvolutional layerで処理
・入力は512チャンネルで、出力は256チャンネル

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/bbe18426-7f00-b931-983a-47252754b7ae.png)

## Fusion layer
256次元のGlobal特徴量と256次元のMid level特徴量を結合する。$ y_{u,v}^{fusion}$は、$(u,v)$ におけるfused feature(融合特徴量)で、$y^{mid}_{u,v}$は、$(u,v)$におけるmid level特徴量、$y^{global}$はglobal特徴量で、$W$は$256 \times 256$の重み行列で、$b$はbiasである。これはGlobal特徴量を各空間的位置におけるLocal特徴量とつなぎ合わせて、小さな１層からなるNetworkで処理することと捉えることができる。得られた特徴量は、Global特徴量のもつ解像度の制限から解放される。

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/beb90ec7-4cad-47de-1bc0-e26f9c222b37.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/100523/f75bb361-9071-fe03-a552-b9b0cb8e526a.png)

## Colorization Network
ConvolutionとUpsamplingを一組とした処理を原画像の半分のサイズまで繰り返す。Upsampling処理は単純なNearest Neighbor法によって行われる。
![image](https://qiita-image-store.s3.amazonaws.com/0/100523/5dc3fccd-aee5-07ba-2b9d-fff1c6647359.png)

・Networkを学習するためにMean Square Error基準を使う。
・色空間は、CIE L*a*b*空間を使用する。

## Colorization with Classification
MSE基準を使ってカラー画像を学習することで性能は向上するが、屋内か屋外かのような画像の内容を学習していないために明らかな間違いが発生する。Colorizationと同時に画像分類のための学習をすることで性能を向上させます。学習にはＮクラスからなる画像分類用大規模画像データセットを使用し、画像タグによってGlobal画像特徴量の学習をコントロールすることができる。

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/db456fd6-d2a1-ee44-9c40-e89980ff1053.png)

MSEと合わせてLoss関数は下記のようになる。
![image](https://qiita-image-store.s3.amazonaws.com/0/100523/4bb0bbf2-6161-4723-6b0c-6a2fbb5be125.png)

Backpropagationは、色のLossは全Networkに影響し、分類Lossは、Classification Network, Global Feature Network, Low Level Features Networkにのみ影響する。

## 最適化と学習
本モデルがあらゆるサイズの画像を処理できるが、Low Level Featureの重みを共有するために、Global特徴量Networkには224x224にRescaleした画像が必要である。これにより元画像とRescaleした画像の二つを処理しなければならなくなり、メモリ消費量も処理時間も増えることになる。学習時は画像を256x256にScalingしたのちに、224x224のサイズにcroppingする。またよりRobustなModelを作るために50%の確率でランダムに水平方向にflipする。さらにBatch NormalizationとADADELTAを使用する。

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/695750b9-c045-b816-37e3-190635d1cf78.png)

# 実験環境
$\alpha=1/300$、2,448,872枚の学習画像、20,500枚の検証用画像、205class、200,000回の反復、batch size 128

# Colorization結果
![image](https://qiita-image-store.s3.amazonaws.com/0/100523/f8fa3f5f-247f-31cf-5b45-3b798b44c6b4.png)

# Style Transfer
画像Ｂから取り出したスタイルを使って画像ＡをColorizationするために、画像Aのmid level特徴量と画像BのGlobal特徴量を算出し、融合したのちにColorization Networkで処理を行う。

![image](https://qiita-image-store.s3.amazonaws.com/0/100523/8d05377e-c298-d77c-cb37-315873d0f6c0.png)