SRGANを用いた超解像

Lento
6 min readSep 26, 2018

--

Introduction

今回は、SRGANを用いた超解像について述べます。一般的に、超解像を行う際は補間を行っていくのですが、例えばopencvのresize関数の引数であるInterpolationを変えた時に、96✕96から4倍の384✕384へと解像度を高くした画像を以下に示します。以下に示すように、ギザギザが目立ったり、ぼやけています。そこで自然に見えるようにSRGANを用いて超解像を行いました。

Network Architecture

出典: Christian Ledig et al., “Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network”

ネットワーク構造を上記に示します。GeneratorはResidual BlockとPixel Shufflerを主体としています。今回はResidual Blockは3つとしました。また、今回は4倍超解像を行う予定なので、Pixel Shuffler×2を2層挟みました。

Dataset

safebooruで画像をスクレイピングして、適当に512×512へと圧縮したものを18000枚集めました。そこから、384×384のサイズにランダムにcropして96×96にダウンサンプリングしました。従って、Generatorの入力を96×96の低解像度の画像、出力を384×384の高解像度の画像としています。

Experiment

損失関数はContent lossとAdversarial lossをそれぞれ重みつけして足したものです。Content lossはGeneratorの出力とターゲットにしている高解像度画像をVGG16に通した時の、各層の出力どうしの二乗平均誤差の和です。詳しくは下の式を参考にしてください。今回は、メモリを抑えるためVGG16のConv2_1、Conv3_1、Conv4_1の出力のみを考慮しました。

他ハイパーパラメータ等実験の詳細は以下に記します。

  • バッチサイズは2
  • 最適化手法はAdam(α=0.0002、β1=0.5)
  • Adversarial lossの重みは1.0、Content lossの重みは0.001

Results

結果を以下に記します。右が超解像を行った結果です。Introductionで見られたギザギザやぼやけは見えていない状態です。

Bilinear補間やBicubic補間と比較した結果も以下に示します。明らかに綺麗に見えています。

SRGANは知覚品質(Perceptual quality)は高いですが、歪み(Distortion)は大きいです。上図のSRGAN出力もよく見ると目の造形が崩れている等があります。下の図はこちらの論文からの図ですが、Perceptual qualityとDistortionはトレードオフであると述べています。

出典: Yochai Blau et al., “The Perception-Distortion Tradeoff”

実際に、Experimentsで述べた損失関数をターゲット画像とGeneratorの出力の二乗平均誤差のみにした場合(即ちDiscriminatorは考慮しない)のGeneratorの出力結果を以下に示します。Discriminatorを考慮した場合は線がはっきりしていますが、Distortionが目立ちます。それに対して考慮しない場合は、少々ぼやけているもののDistortionは少ないです。Discriminatorを考慮するとDistortionが増える理由は不明ですが、やはりPerceptual qualityとトレードオフになっているようです。

Summary

今回はSRGANを用いた超解像を行いました。従来用いられてきたBilinear補間やBicubic補間よりも自然な形にはなりましたが、Perceptual qualityとDistortionがトレードオフでどちらかを取る必要があると分かりました。

現状、どちらも取れる手法はないです。ですが、超解像の手法はSRGAN以降も出てきておりクオリティも上昇しています。例えば以下のようなResidual in Residual Dense Block(RRDB)を用いたESRGANや、Residual Channel Attention Blockを用いた手法もあります。次はこちらを検討していきたいと思います。

出典: Xintao Wang et al., “ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks”

Environment

OS : Ubuntu 16.04 LTS (64-bit)
CPU : Intel(R) Core(TM) i5–4590 CPU @ 3.30 GHZ
GPU : NVIDIA GTX970
メモリ : 8GB

--

--