読者です 読者をやめる 読者になる 読者になる

面白ければいいんじゃない?

やくたいのないこと、痛々しいことばかり書きます。

超解像プログラムwaifu2xとNeuronDoubler(と、他にいろいろ)を比べてみた

はじめに

現在、画像の超解像(高解像化)処理としてニューラルネットワーク人工知能)を活用したものがフリーで公開されています。ここで、本稿では、先般、ニューラルネットワークを活用した超解像処理として話題になったwaifu2xと以前より公開されているNeuronDoublerを比較するとともに、参考として著名なフリーの高解像化ソフトであるSmillaEnlarger(独自アルゴリズム)、古典的なバイキュービック法、Lanczos-3法、単なる拡大であるニアレストネイバー法による画像処理を比較するものです。

拡大方式の説明

waifu2x

制作者のブログによればDeep Convolutional Neural Networksによって処理を行うプログラムです。
詳細は製作者のブログを参照してください。ultraist.hatenablog.com

NeuronDoubler

制作者のブログによれば独自開発のニューラルネットワークとハードコーディングによって処理を行う*1プログラムです。
なお、製作者のブログは日本語でのドキュメントが豊富なので、参考になると思われます。
Loggia Logic: 人工知能超解像プログラム NeuronDoubler

SmillaEnlarger

著名なフリーの画像拡大ソフトで独自アルゴリズムだそうです。詳細は調べたのですがよくわかりませんでした。
SmillaEnlarger download | SourceForge.net

バイキュービック

周囲4x4ピクセルから目的のピクセルを補完するアルゴリズムです。検索すればいくらでも資料や実装が出てくるので詳細はそちらで。

Lanczos-3

周囲6x6ピクセルから目的のピクセルをバイキュービックとは異なる方法で補完するアルゴリズムです。検索すればいくらでも資料や実装が出てくるので詳細はそちらで。

ニアレストネイバー法

単なる拡大です。

実験方法

実験環境

使用ソフト

waifu2x
  • Windows向け移植版であるwaifu2x-converte Ver 1.0.0(64bit)を使用する
  • ラッパーであるwaifu2x_win_koroshell ver 0.57から使用する
  • VC++ 2013ランタイム Ver 12.0.30501
  • 全コア使用
  • Jpegノイズリダクションは使用せず
NeuronDoubler
  • NeuronDoubler v3.21
  • Java 1.7.0_67-b01(64bit)
  • ヒープを最大8G確保
SmillaEnlarger
  • SmillaEnlarger Ver 0.9.0
  • Enlarger parameter default
Lanczos-3法
  • 藤 -Resizer- v2.66.4 #219
  • 設定はデフォルト
ニアレストネイバー法

使用画像

人物

みんな大好きレナさん*2を使います。もともとTIFF形式だったのですが、はてなフォトライフにアップできないのでPNGに変換しています。f:id:yoshizawa81:20150531214442p:plain

風景

新宿の風景写真です。
f:id:yoshizawa81:20150531173954j:plain
CC BY-SA 3.0 Morio

イラスト1

waifu2xの制作者も使用しているミクさんの画像です。萌え系キャラクターのイラストです。
f:id:yoshizawa81:20150531175017j:plain
CC BY-NC 3.0 Crypton Future Media, Inc.

イラスト2

拡張カードの装着方法を示したテクニカルイラストレーションです。
f:id:yoshizawa81:20090419213355j:plain
CC BY-SA 3.0 Joshgeake at English Wikipedia

マンガ

佐藤秀峰の「ブラックジャックによろしく」の一場面です。
f:id:yoshizawa81:20150531180102p:plain
タイトル:ブラックジャックによろしく 著作者名: 佐藤秀峰 サイト名: 漫画 on web

実験方法

画像の正規化

Photoshop CS6を使用し、それぞれの画像から512x512ピクセルで切り出した*3上で、PNG-24 sRGBで保存する。これを「元画像」とする。

縮小

当該画像をPhotoshop CS6のバイキュービック(自動)で各辺を1/2に縮小する。

拡大

当該画像を各方式で各辺2倍に拡大する。また、処理時間をストップウォッチで計測する。

比較

元画像と拡大した画像を、類似画像検出ソフト DRE Ver 1.0.2のLoose Luminance Similarity*4で比較し、距離を計測する。また、Diff IMG 2.2.0によるMean error*5を計測する。併せて、目視による確認を行う。

結果

人物

元画像

f:id:yoshizawa81:20150531214442p:plain

waifu2x

f:id:yoshizawa81:20150531214649p:plain
元画像と比べて輪郭が強調されている。反面ノイジーな感じが出てしまっている。

NeuronDoubler

f:id:yoshizawa81:20150531214703p:plain
waifu2xに近いが、よりソフトな感じに仕上がっている

SmillaEnlarger

f:id:yoshizawa81:20150531214721p:plain
全体的にノイズが出てしまっている。細部はボケている。

バイキュービック

f:id:yoshizawa81:20150531214803p:plain
全体的にSmillaEnlargerに近いが、細部の仕上がりは大味になっている。

Lanczos-3法

f:id:yoshizawa81:20150531214827p:plain
ニューラルネットワークを使ったものには劣るが、細部の輪郭は割とはっきりしている。

ニアレストネイバー法

f:id:yoshizawa81:20150531214906p:plain
当たり前だがジャギっている。

風景

元画像

f:id:yoshizawa81:20150531215052p:plain

waifu2x

f:id:yoshizawa81:20150531215100p:plain
構造物の線が変に滲んで太っているような感じになっている。背景の山はディティールが強調されている。

NeuronDoubler

f:id:yoshizawa81:20150531215120p:plain
やはりwaifu2xに近いが全体的にソフトな感じになっている。構造物の線も自然に拡大されている。

SmillaEnlarger

f:id:yoshizawa81:20150531215136p:plain
やはりノイジー。構造物の線は太っているが不自然というほどではない。下部の建物群は全体的につぶれている。

バイキュービック

f:id:yoshizawa81:20150531215151p:plain
構造物の線などは自然に再現されているが、全体的につぶれた印象はぬぐえない。

Lanczos-3法

f:id:yoshizawa81:20150531215200p:plain
全体的にソフトな感じになっているが、構造物の線などはそれなりに再現されている印象。

ニアレストネイバー法

f:id:yoshizawa81:20150531215209p:plain
相変わらずジャギジャギ。

イラスト1

元画像

f:id:yoshizawa81:20150531215307p:plain

waifu2x

f:id:yoshizawa81:20150531215314p:plain
細い線が滲んだ感じになってしまっているが、再現としては悪くない印象。

NeuronDoubler

f:id:yoshizawa81:20150531215319p:plain
滲んだ感じは無いが、シャープさに欠ける。

SmillaEnlarger

f:id:yoshizawa81:20150531215326p:plain
相変わらずノイジー。全体の印象としては、元画像を遠目でみたような感じに見える。

バイキュービック

f:id:yoshizawa81:20150531215337p:plain
絵が二重になっているような感じ。ソフトになりシャープさは低い。

Lanczos-3法

f:id:yoshizawa81:20150531215343p:plain
全体的にシャープだが、waifu2xで処理した画像をブレブレにしたような印象。

ニアレストネイバー法

f:id:yoshizawa81:20150531215350p:plain
やっぱり、ジャギ…

イラスト2

元画像

f:id:yoshizawa81:20150531215523p:plain

waifu2x

f:id:yoshizawa81:20150531215529p:plain
直線がゆがんでおり、フリーハンドで書き直したようなイラストになっている。

NeuronDoubler

f:id:yoshizawa81:20150531215535p:plain
waifu2xに比べて直線部分はしっかりしているものの、全体的にブレブレな感じになっている。

SmillaEnlarger

f:id:yoshizawa81:20150531215545p:plain
直線の再現性は高いが、ノイジーな傾向は変わらず。

バイキュービック

f:id:yoshizawa81:20150531215628p:plain
線はしっかりしているが、ピンボケ感が高い。

Lanczos-3法

f:id:yoshizawa81:20150531215634p:plain
直線の再現性も高く、シャープさもそれなりになっている。

ニアレストネイバー法

f:id:yoshizawa81:20150531215640p:plain
ジャギ…

マンガ

元画像

f:id:yoshizawa81:20150531215809p:plain

waifu2x

f:id:yoshizawa81:20150531215815p:plain
相変わらず水彩のような線の滲んだ感じはあるが、ディティールの再現性は悪くない。

NeuronDoubler

f:id:yoshizawa81:20150531215823p:plain
全体的にブレた感じになっているが、ディティールの再現性は悪くない。

SmillaEnlarger

f:id:yoshizawa81:20150531215829p:plain
比較的自然ではあるが、下のコマのディティールがつぶれてしまっている。

バイキュービック

f:id:yoshizawa81:20150531215836p:plain
NeuronDoublerに近いが、それよりピンボケしてしまっている感じがする。

Lanczos-3法

f:id:yoshizawa81:20150531215848p:plain
比較的シャープな仕上がりだが、下の駒のディティールはつぶれている。

ニアレストネイバー法

f:id:yoshizawa81:20150531215852p:plain
ジャ…

処理時間

人物 風景 イラスト1 イラスト2 マンガ 備考
waifu2x 13.88 14.03 14.23 14.07 14.05
NeuronDoubler 10.48 11.24 7.21 11.66 10.32
SmillaEnlarger 計測不能 計測不能 計測不能 計測不能 計測不能 1秒以下
バイキュービック 計測不能 計測不能 計測不能 計測不能 計測不能 1秒以下
Lanczos-3法 計測不能 計測不能 計測不能 計測不能 計測不能 1秒以下
ニアレストネイバー法 計測不能 計測不能 計測不能 計測不能 計測不能 1秒以下

単位:秒
ストップウォッチで計測したので誤差は大きい。

元画像との比較(数値評価)

DRE

DREのLoose Luminance Similarityにおける距離(低い方が良い)

人物 風景 イラスト1 イラスト2 マンガ 偏差値の平均
waifu2x 4 10 11 34 11 59.43
NeuronDoubler 5 9 10 35 13 61.27
SmillaEnlarger 7 12 8 27 9 56.50
バイキュービック 4 8 10 36 13 58.46
Lanczos-3法 5 8 10 39 14 63.33
ニアレストネイバー法 5 8 8 35 12 55.10

偏差値の平均は各画像ごとに各ソフトの偏差値を出して平均をとったもの。(低い方が良い)

Diff IMG

Diff IMGにおけるmean error(低い方が良い)

人物 風景 イラスト1 イラスト2 マンガ 偏差値の平均
waifu2x 14.06268 25.33036 12.04940 23.88212 24.98231 57.43
NeuronDoubler 12.63195 22.00640 12.48466 24.61251 23.29071 53.45
SmillaEnlarger 17.00923 25.66328 14.15476 29.70645 25.57523 68.93
バイキュービック 11.92329 21.01698 14.10989 29.34508 25.26622 59.85
Lanczos-3法 11.97502 20.58567 13.71461 26.97517 23.81519 56.00
ニアレストネイバー法 15.33894 29.21112 15.71615 31.87706 30.17735 77.71

偏差値の平均は各画像ごとに各ソフトの偏差値を出して平均をとったもの。(低い方が良い)

結論

waifu2x

全体的にシャープで良いが、輪郭や線が変に太ったり滲んだ感じになったりゆがむ傾向がある。

NeuronDoubler

waifu2xに比べてシャープさに欠けるが、輪郭や線はより自然に拡大される。

SmillaEnlarger

全体的にノイジーでニューラルネットワークを使用したものに比べてディティールの再現性は劣る。

バイキュービック

比較的自然に仕上がるが、ピンボケしたような感じが出てしまいシャープさに欠ける。

Lanczos-3法

ディティールではニューラルネットワークを使用したものに負けるが、シャープさが高く線画などには比較的向くかもしれない。

ニアレストネイバー法

単純な拡大なので論外。

*1:Loggia Logic: 人工知能超解像プログラム NeuronDoubler のアルゴリズム(動作原理)

*2:画像処理実験の定番画像 レナ (画像データ) - Wikipedia

*3:レナのみ元から512x512ピクセル

*4:類似画像検索

*5:平均誤差

注意:ここに書かれていることは筆者の個人的見解であり所属する組織などの意志を表すものではありません。