So-net無料ブログ作成

進化型画像生成ソフトウェアの "Evolvotron" で作った画像。 [ソフトウェア]

先日、人工ニューラル ネットワークで多数の画像を学習して素晴らしい画質で画像を拡大したりノイズ低減したり出来るプログラムである " waifu2x " について記事を書きました。

ブログ記事: 最高峰の学習型画像拡大ソフトウェアを使ってみました。
http://crater.blog.so-net.ne.jp/2015-11-26

その中で、学習用の画像データ セットは全て私が " Evolvotron " というアプリケーション ソフトウェアを用いて自動生成したものを使用したと述べました。

この、 " Evolvotron " というソフトウェアは、プログラムが自動的に生成した多数の模様の中から自分の好みのものを選ぶと、他の画像について新たにそれに近いパラメーターを持つ画像に変異(Mutate)させます。
これを繰り返して行くと数世代後には、より自分好みの絵柄が得られるという訳です。

"Evolvotron" の公式ウェブサイトのURL:
http://www.bottlenose.net/share/evolvotron/

" waifu2x " 及び " Evolvotron " については先日の記事をご覧いただくとして、今回はそのEvolvotronに生成させた画像を掲載させて頂きます。

生成画像の大きさは、2048 x 2048[pixels]です。

CG_Art_Original_1
https://c1.staticflickr.com/1/713/23307011139_f803570cce_o.png
CG_Art_Original_2
https://c1.staticflickr.com/1/732/23674973725_a74673a73d_o.png
CG_Art_Original_3
https://c2.staticflickr.com/6/5719/23379300570_d4c8782812_o.png
CG_Art_Original_4
https://c1.staticflickr.com/1/586/23307009709_0bed7066d1_o.png
CG_Art_Original_5
https://c1.staticflickr.com/1/584/23379299660_40c3e1d48d_o.png
CG_Art_Original_6
https://c2.staticflickr.com/6/5771/23046805494_786f2b1a31_o.png
CG_Art_Original_7
https://c1.staticflickr.com/1/735/23648880226_d302a2deeb_o.png
CG_Art_Original_8
https://c2.staticflickr.com/6/5801/23307007729_395b075366_o.png
CG_Art_Original_9
https://c1.staticflickr.com/1/645/23592502051_f86dc96b36_o.png
CG_Art_Original_10
https://c1.staticflickr.com/1/645/23674970235_511eefe8de_o.png
CG_Art_Original_11
https://c2.staticflickr.com/6/5787/23379297560_42c9498709_o.png
CG_Art_Original_12
https://c2.staticflickr.com/6/5658/23379297200_413fddb645_o.png
CG_Art_Original_13
https://c1.staticflickr.com/1/759/23566407422_43fbed9cd6_o.png
CG_Art_Original_14
https://c2.staticflickr.com/6/5823/23592499481_1ebce00337_o.png
CG_Art_Original_15
https://c1.staticflickr.com/1/746/23648876656_3989c857c3_o.png
CG_Art_Original_16
https://c2.staticflickr.com/6/5809/23047900293_ee24dfb075_o.png
CG_Art_Original_17
https://c1.staticflickr.com/1/573/23046801174_69b83d0227_o.png
CG_Art_Original_18
https://c1.staticflickr.com/1/699/23674966985_5e188c8932_o.png
CG_Art_Original_19
https://c2.staticflickr.com/6/5674/23379294000_b62d3a3355_o.png


そして、生成した画像を " XnConvert " というソフトウェアで一括処理で " エンボス(強) " 加工すると、以下の様になります。
CG_Art_Emboss_1
https://c2.staticflickr.com/6/5623/23592517401_f4c4089953_o.png
CG_Art_Emboss_2
https://c2.staticflickr.com/6/5831/23566423182_a75a91bc8b_o.png
CG_Art_Emboss_3
https://c2.staticflickr.com/6/5654/23566422222_b2d9b9971a_o.png
CG_Art_Emboss_4
https://c1.staticflickr.com/1/772/23047915023_3d39592779_o.png
CG_Art_Emboss_5
https://c1.staticflickr.com/1/645/23648886906_4a42f3dac7_o.png
CG_Art_Emboss_6
https://c1.staticflickr.com/1/779/23307014069_b665ff8982_o.png
CG_Art_Emboss_7
https://c2.staticflickr.com/6/5652/23566414492_5802be1d21_o.png
CG_Art_Emboss_8
https://c2.staticflickr.com/6/5779/23566413232_e3e1c729a2_o.png

最高峰の学習型画像拡大ソフトウェアを使ってみました。 [ソフトウェア]

->->
[2016年09月06日追記]
記事を全面的に改訂致しました。
<-<-

現在最高峰の画像拡大ソフトウェアはと言えば、 " waifu2x " であると言えるでしょう。
私は2015年の11月10日にwaifu2xのリポジトリーをGitHubから私のUbuntu PCにクローンして使用してみまして、私はその非常に優れた画像拡大性能にとても驚いておりました。
2016年08月18日に私は新たにwaifu2xのリポジトリーをGitHubからクローンし直しまして、改良されたwaifu2xの性能に再び驚かされたのと、自作のジェネレーティヴ アート画像による深層学習で良い結果が得られましたので、この度記事を改訂する事に致しました。

Lantana_Comparison_2_Text "waifu2x" で2回2倍に拡大した画像と元の画像とLanczosで2回2倍に拡大した画像との比較画像。ランタナの花の写真を横に3等分して比較している。
https://c1.staticflickr.com/9/8323/29416402671_97b056ff80_o.png
左から順に、自前のジェネレーティヴ アート画像群による学習済みモデル データによって " waifu2x " で2回2倍に拡大(4倍)した画像と、ランタナの花の元の写真と、 " Lanczos " で同様に拡大した画像との比較画像です。

"ultraist" 様のブログ "デー" の "Waifu2x" に関するページのURL:
http://ultraist.hatenablog.com/entry/2015/05/17/183436

githubの "Waifu2x" のディレクトリーのURL:
https://github.com/nagadomi/waifu2x

このソフトウェアは、複数層の畳み込み人工ニューラル ネットワーク(以下NN)を用いて多数の画像例から低解像度画像と高解像度画像の対応関係のパターンを学習させ、拡大させたい画像を入力すると、双三次関数補間法(Bicubic Interpolation)やランツォシュ補間法(Lanczos Resampling)等の昔から使われて来た内挿法だけでは成し得なかった高品質な高解像度画像を出力させる事が出来ます。
また、JPEG画像の中の事物の輪郭部などに見られる様なデジタル圧縮ノイズについても、同様にして圧縮ノイズを除去する事が可能です。

作者の方は大変親切な事に、ウェブ サーヴァーにてこのソフトウェアを使用できる無償のサーヴィスを提供して下さっております。

また、このソフトウェアのソースコードはgithubで公開されており、Ubuntu OS等のLinux ディストリビューションを使用しておりヴィデオ カードがNVIDIA系でCUDAが利用出来る人は直ぐにローカル環境で使用する事が出来る他、自分で学習用の画像データ セットを用意して、NNに学習させる事も出来ます。
更に動画につきましても、 " ffmpeg " などのサード パーティー製ソフトウェアを使用して動画ファイルを連続の静止画に分解する事により、waifu2xは連番の静止画を連続で拡大及びノイズ低減処理をする事が出来ますので、処理完了後に再びffmpegで動画像ファイルに書き出せば、時間は掛かりますが、もの凄く高品質な動画のアップスケーリング及びノイズ リダクションが可能です。

Windows OS環境用には既存の学習済みデータを用いるGUIのアプリケーション ソフトウェアが作られているようです。
更に、動画編集時のフレーム サーヴァーとして有名な " AviSynth " にも組み込む事が出来るプラグインも開発されているようです。

私は、P2P分散型ウェブ検索エンジンである " YaCy " や、自作天体望遠鏡で月を撮影した高画素数の画像データを多数枚自動で位置揃えと幾何学変形と合成をして高解像度化する為に使用するアプリケーション ソフトウェアである " AviStack2 " の為にUbuntu PCに、32[GB]のDDR3 SDRAM メイン メモリーを搭載してあります。

"YaCy" に関する私のブログ記事:
http://crater.blog.so-net.ne.jp/archive/c2305456728-1

月の撮影画像の合成に関する私のブログ記事: UbuntuでAviStack2により月画像処理をする。
http://crater.blog.so-net.ne.jp/2014-09-22

waifu2xの使用方法は添付ファイルに書いてある通りで実に簡単でした。
githubの "Waifu2x" の "README" ファイルのURL:
https://github.com/nagadomi/waifu2x/blob/master/README.md


2016年09月06日現在の私のPC環境は以下の通りです。

OS: Ubuntu 16.04 LTS
Architecture: x86_64
Linux Kernel: 4.4.0
Video Card: GeForce GTX750
Graphics Driver: NVIDIA binary driver version 361.45.18 (Open Source)
Main Memory: DDR3 SDRAM 32GB



私はGitHubから最新の " waifu2x " のリポジトリーをクローンし直すに当たり、まず、waifu2x及びTorch7を一旦削除致しました。
NVIDIAのGPUによる汎用コンピューティング環境であるCUDAにつきましても再び導入致しました。
まだCUDAをインストールしていない方はこれをインストールする必要がございます。

まずはNVIDIAのウェブサイトにアクセスして、私のPCはCPUがIntel Core-i7 3770TでOSは64bit版なので以下の様に環境を選択致しました。
Operating System: Linux
Architecture: x86_64
Distribution: Ubuntu
Version: 14.04
Installer Type: deb(local)

そしてCUDAの .deb パッケージ ファイルをダウンロード致しました。

2016年08月18日時点ではCUDAの正式なリリースはヴァージョン 7.5までであり、Ubuntu 16.04 LTS版は用意されていなかったので、 Ubuntu 14.04版をダウンロード致しました。

また、2016年08月18日時点ではUbuntu 16.04 LTSには、 " GCC (GNU Compiler Collection) 5.4 " がインストールされておりますが、CUDA 7.5は gcc 4.9よりも新しいヴァージョンのgccは正式にサポートされておらず、waifu2xに必要なTorch7のインストール用のシェル スクリプト実行時にビルド エラーとなります。
" unsupported GNU version! gcc versions later than 4.9 are not supported! " と表示されました。
そこで、仕方無く強制的にgcc 5.4を使用させるようにする為、設定ファイルの中のエラー処理部分をコメント アウト致しました。詳しくは当記事内で後述致します。

"NVIDIA" のウェブサイトの "CUDA" のダウンロード ページのURL:
https://developer.nvidia.com/cuda-downloads

" 端末 " から以下のコマンドを実行致しました。
sudo dpkg -i xxxx/cuda-xxxxxxxxxxx.deb
sudo apt-get update
sudo apt-get install cuda


" xxxx/cuda-xxxxxxxxxxx.deb " のパスとファイル名は各自のものを入力致します。

私が一番苦労したのは実はNVIDIAのCUDAの使用許諾契約書を読む事でした。
私はEnglishはとても苦手なのでGoogle翻訳サーヴィスで日本語に訳しながら目を通しました。
それでも読み終えるまでに長い時間が掛かりました。



次に、圧縮/展開プログラムのライブラリーである " Snappy " をインストール致しました。

sudo apt-get install libsnappy-dev




続いて、Facebookがgithubで公開している、NN コンピューティング フレームワークである " Torch7 " を導入致しました。

技術系メディアである "TechCrunch Japan" のウェブサイトの "Torch7" 関連の記事ページのURL:
http://jp.techcrunch.com/2015/01/17/20150116facebook-open-sources-some-of-its-deep-learning-tools/

私はwaifu2xを最新版にするに当たり、下記のコマンドでTorch7を一旦削除致しました。
rm -rf ~/torch


そして説明の通りに、Torch7のgit リポジトリーをクローンしました。
また、 " Lua " モジュール パッケージ管理ツールの " LuaRocks " もインストールされます。
因みにTorch7のインストールの処理が終わるまでには少々時間が掛かりました。

"Torch7" の導入に関するウェブ ページのURL:
http://torch.ch/docs/getting-started.html

まずはTorch7をGitHubからクローンし、Torch7が必要とする諸々のものをインストール致します。
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps


先にも述べました通り、2016年08月18日時点ではUbuntu 16.04 LTSには、 " GCC (GNU Compiler Collection) 5.4 " がインストールされておりますが、CUDA 7.5は gcc 4.9よりも新しいヴァージョンのgccは正式にサポートされておらず、waifu2xに必要なTorch7のインストール用のシェル スクリプト実行時にビルド エラーとなります。
" unsupported GNU version! gcc versions later than 4.9 are not supported! " と表示されました。
そこで、仕方無く強制的にgcc 5.4を使用させるようにする為、下記の様に設定ファイルの中のエラー処理部分をコメント アウト致しました。

この方法は以下のウェブサイトに記載されていた情報です。
"Puget Custom Computers" の記事 "NVIDIA CUDA with Ubuntu 16.04 beta on a laptop (if you just cannot wait)" のURL:
https://www.pugetsystems.com/labs/hpc/NVIDIA-CUDA-with-Ubuntu-16-04-beta-on-a-laptop-if-you-just-cannot-wait-775/

警告: この用法を実行する事による危険性に関しては私は承知致しません。 私はこの方法を実行した事によって生じるいかなる損害も補償出来ません。 全てはあなた自身の責任の下に判断して下さい。

/usr/local/cuda/include/host_config.h
上記ファイルの中の該当箇所を下記のように先頭に " // " を付け足してコメント アウト致しました。
//#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!


そして、Torch7のインストール用のシェル スクリプトを実行致します。
cd ~/torch; ./install.sh


これで問題無くビルドに成功致しました。

上記のコマンドを実行したら、 " ~/.bashrc " と " ~/.profile " の最後に次の行が追加されました。
. /home/xxxxxx/torch/install/bin/torch-activate


尚、 " xxxxxx " には各自のユーザー名が入ります。 " ~ " はホーム ディレクトリーを表します。
追加された行の最初にある " . " は " source " コマンドと同じ意味を持ち、引数に指定したファイルに書かれている文字列を実行するものだそうです。

ここで、次のコマンドを実行する事で、ログインし直さずに " torch-activate " が実行されます。
source ~/.bashrc


次回のログイン時からは上記のコマンドの実行は不要です。

" 端末 " から次のコマンドを実行して、 " 端末 " に " Torch " のロゴマークが表示されれば正常に使用出来る状態です。
th


必要があるか、また記述の仕方が正しいかどうかは存じませんが、 " ホーム ディレクトリー " にある " .profile " を編集して以下の行をファイルの最後に追記する事により、環境変数を設定致しました。
export PATH=$PATH:~/torch/bin:/usr/local/cuda-7.5/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/torch/lib:/usr/local/cuda-7.5/lib64


私は " CUDA 7.5 " をインストールしたので環境変数のパスに " cuda-7.5 " と書きましたが、各自の環境に合った名前に致します。

各々のパスは " : "(コロン) で区切られます。
" PATH= " で " PATH " という変数に値を代入します。
" LD_LIBRARY_PATH= " で " LD_LIBRARY_PATH " という変数に値を代入します。
" $PATH " 及び " $LD_LIBRARY_PATH " は既存のパスを表します。
" export " でパスを出力して環境変数を設定します。

" .profile " はUbuntuではユーザーのログイン時に読み込まれるファイルであると私は認識しております。
只、既に " torch-activate " が実行されているのですから、改めて " Torch " のパスを設定する必要は無いのかもしれません。
余談ですが、Linuxでは一般的にシェルに " bash " が使われているところ、Ubuntuではログイン シェルについては " bash " ですが、その他は " dash " が使われているそうです。

シェルやGUI、CUI、ファイル マネージャー、ログイン、端末、TTY、daemon等について、解り易く解説してくれているウェブ ページを勝手ながら紹介させて頂きます。
ブログ "主に言語とシステム開発に関して" の記事ページ "Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道)" のURL:
http://language-and-engineering.hatenablog.jp/entry/20110617/p1



次に、必要な " LuaRocks " パッケージをインストール致しました。

luarocks install graphicsmagick # upgrade
luarocks install lua-csnappy
luarocks install md5
luarocks install uuid
luarocks install csvigo
PREFIX=$HOME/torch/install


説明ページに記載があった " Turbo " は、ウェブ アプリケーション関係のものですが、私はそれには関わらないので、これについてはインストール致しませんでした。



最後に、 " waifu2x " のgit リポジトリーをクローン致しました。




ここで、早速 " waifu2x " を試してみます。
" 端末 " で次のコマンドを実行致します。
cd waifu2x
th waifu2x.lua


しかし、画像処理プログラムである " GraphicsMagick " がインストールされていない場合はエラー メッセージが出ます。
~/waifu2x$ th waifu2x.lua
gm (GraphicsMagick) binary not found, please install (see www.graphicsmagick.org)
images/miku_small(noise_scale).png: 1.1321530342102 sec

この場合は下記の様にして " GraphicsMagick " をインストールします。
sudo apt-get install graphicsmagick


これで正常に動作する筈です。

これで準備が整いましたので、まずは添付されていた学習済みデータを用いて任意の画像の拡大を試してみました。
2倍の寸法にする拡大ですが、非常に素晴らしい画質でした。

以下のコマンドは作業ディレクトリーを " ~/waifu2x/ " としてあります。

" input_image " は拡大対象の画像ファイルのパスとファイル名を入力します。
" output_image " は保存する際の画像ファイルのパスとファイル名を入力します。

[レヴェル1のノイズ除去 + 2倍に拡大]
th waifu2x.lua -m noise_scale -noise_level 1 -i input_image.png -o output_image.png




次に、自前の画像データ セット人工ニューラル ネットワークに学習させる事を試みました。

私は学習用画像データ セットとして、自作のHTML5のCanvas要素とJavaScriptによってジェネレーティヴ アート画像を大量に自動生成させたものだけを使用致しました。
乱数による自動生成画像です。
自作のジェネレーティヴ アート画像自動生成プログラムは下記の " Yahoo!ボックス " にアップロードして公開しております。
御興味がございましたら、どうぞ御自由にお使い下さい。
使い方は簡単で、ダウンロードしたHTML ファイルをFirefoxなどHTML5対応のウェブ ブラウザーで開き、ブラウザーの設定で " .png " 形式の画像ファイルのダウンロード時にダイアログを表示させないようにした上で、 " Play / Stop " ボタンをクリックするだけです。
すると、自動生成された画像が10秒毎にPNG形式のファイルとしてブラウザーで設定されているダウンロード ディレクトリーに次々と2048枚までダウンロードされます。
ダウンロードし終わったら、セキュリティーを維持する為に必ずブラウザーのダウンロード設定を元に戻して下さい。

[Yahoo!ボックス]
http://yahoo.jp/box/4_Sq4x

Generative Art_(2016_09_01)_1 画面全体が色とりどりの複雑に歪んだ蛇腹状の円環模様で埋め尽くされている。
https://c1.staticflickr.com/9/8199/28872340824_fe7e8fc4a7_o.png
自作のジェネレーティヴ アート画像自動生成プログラムが生成した大量のディジタル アートの1枚です。

Generative Art_(2016_09_01)_2
https://c1.staticflickr.com/9/8171/29208180350_099d57a5fc_o.png
これらの画像を大量に学習させました。

尚この画像生成プログラムは、自作インタラクティヴ ディジタル アート プログラムから派生させたプログラムです。

基となったプログラムに関する私のブログ記事: HTML5のCamvasと "JavaScript" で音声処理と画像描画。
http://crater.blog.so-net.ne.jp/2016-06-30

因みに、初めwaifu2xを2048枚で学習させた後に、512枚を追加して " -resume " オプションで追加学習させるといった事も出来ました。
私は生成させた画像2048枚+512枚を " XnConvert " という一括画像処理が出来るフリー ソフトウェアで自動コントラスト調整し、waifu2xで学習させました。
尚、このプログラムで生成した画像データを用いて学習させたwaifu2xのモデルは充分に素晴らしい画質で拡大、ノイズ リダクションが出来ました。

"XnConvert" の公式ウェブサイトのURL:
http://www.xnview.com/en/xnconvert/



ところで、私が学習用画像データ セットをジェネレーティヴ アート画像だけにした理由は、例えば実写の写真に写り込んでいる色々の嫌なもの、汚いものをNNに見せて学習させた結果が適用されるのが嫌だからです。
もし、綺麗な女性のポートレート写真を拡大した際に、睫毛の拡大処理に厳つい男性の髭で学習されたパラメーターが使われていたら嫌だなあと、感覚的な問題ですが、私はそう思ったのです。

その為に以前、フラクタル画像やカオス図形を生成するアプリケーション ソフトウェア等を中心に幾つも試したのですが、フラクタル図形は2D、3D共に、大きな構造から始まって際限無く微細な構造が描かれて行く為細部がノイズになってしまう欠点があり、カオス図形という枠組みで見ても線描画や点描画が多く、最適なものは中々見つかりませんでした。
次に " Evolvotron " というアプリケーション ソフトウェアを試しました。

"Evolvotron" の公式ウェブサイトのURL:
http://www.bottlenose.net/share/evolvotron/

" Ubuntuソフトウェアセンター " からインストール致しました。

Evolvotron_SS_(2015_11_27)_1 ジェネレーティヴ アートのアプリケーション ソフトウェアである "Evolvotron" のスクリーンショット画像。メイン ウィンドウには多数の様々な模様が表示されている。
https://c1.staticflickr.com/1/674/23257755171_2a391b2cec_o.png

プログラムによって作られる幾つもの様式の図形、模様を組み合わせて画像を生成し、乱数のパラメーターによってそれが様々に変化します。
このソフトウェアはGUIで使用出来、メインのウィンドウには横6列、縦5行のランダムに生成された画像が小さく並んでおります。
ユーザーは、この中から好きなパターンを選んでクリックします。
すると、他の画像が、選んだ画像のパラメーターを元にして、変異(Mutate)した画像に置き換わります。
" Autocool " オプションにチェック マークを付けた状態で、これを繰り返して行くと、ユーザーの好みの画像へと収斂して行き、満足の行く作品が出来上がるのです。
途中で、 " Lock " して幾つかの画像を保持する事も出来、また、パラメーターのリセットや、パラメーターのファイルへの書き出しと読み込みも簡単に出来ます。

好みの画像は大きさを選んで別ウィンドウに大きく表示する事が出来ます。
コンテキスト メニューから保存が出来ます。

レンダリングのオプションとして、 " Oversampling (antialiasing) " で輪郭等を滑らかにしたり、 " Jitterd samples " でグラデーションにジッターを加えて、ざらつきを軽減したり出来ます。

実際にどの様な画像を生成したのかにつきましては、次の記事をご覧下さい。
ブログ記事: 進化型画像生成ソフトウェアの "Evolvotron" で作った画像。
http://crater.blog.so-net.ne.jp/2015-11-30

このEvolvotronというソフトウェアが生成した画像もそこそこ良かったのですが、私は更に、乱数だけに基づいた単一のアルゴリズムによる画像群だけで学習させたく思い、HTML5のCanvas要素とJavaScriptによってこれを実現する為に前述の自作プログラムを作成したのです。
そして大量の学習用画像データ セットが用意出来ました。



これにて漸く学習の準備が整いました。
" 端末 " からCUIで学習を行わせます。

以下のコマンドは作業ディレクトリーを " ~/waifu2x/ " としてあります。

" input_image " は拡大対象の画像ファイルのパスとファイル名を入力します。
" output_image " は保存する際の画像ファイルのパスとファイル名を入力します。


[学習済みデータ格納用ディレクトリーの作成]
mkdir models/my_model



[学習用画像リスト作成]
  1. find '/home/xxxxx/xxxxx' -name "*.png" > data/image_list.txt

" xxxxx " の部分は各自の学習用画像ファイルがあるフォルダーのパスを入力します。
パスに半角スペースが含まれる場合等はパス全体をシングル クォーテーション記号で括ります。


[学習用データ変換]
th convert_data.lua



続きまして、実際の学習処理を行いました。

[2倍拡大用の学習]
th train.lua -model upconv_7 -model_dir models/my_model/ -method scale -scale 2 -test images/Reference_1.png


[2倍拡大 + 圧縮ノイズ低減処理用の学習]
th train.lua -model upconv_7 -model_dir models/my_model/ -method noise_scale -scale 2 -noise_level 3 -nr_rate 0.9 -test images/Reference_1.png


ここで、 " Reference_1.png " は私が用意した画像ファイルです。
各自任意の画像ファイルを指定して下さい。
学習が進み、モデル データが更新される度に、 " /models/my_model/ " に指定した画像を拡大した結果が保存され、性能を確認出来ます。

" 2倍拡大 + ノイズ低減処理用の学習 " のコマンドの引数にある " -nr_rate 0.9 " はノイズ低減処理の強さです。
値が大きい程ノイズを消しますが、同時に細部の情報が失われてしまいます。

Waifu2x_SS_(2016_09_01)_1_edited_1 画像拡大ソフトウェアの "waifu2x" を使用している場面のスクリーンショット画像。CUIのウィンドウが表示されている。

上記のコマンドを実行し、Ubuntuのシステム モニターでCPUとメモリーの使用率を見ていたところ、メイン メモリーは僅か12.1[GiB]程しか使用しておりませんでした。CPUはマルチスレッドで全稼働か、シングル スレッドで使用率100[%]となっておりました。
因みに初期のwaifu2xはより多くのメイン メモリーを使用しておりました。
改良によりメイン メモリーの使用率を低減出来たようです。
Waifu2x_SS_(2016_08_27)_1 システムモニターのウィンドウのスクリーンショット画像。グラフが表示されている。


上記のコマンドを実行すると、画像ファイル数の1/20の数の評価用データ セットが作られるようです。
引数で指定せず、初期設定では内部4世代 x 50世代の合計200回の反復処理が行われます。
1世代毎に学習と評価が行われ、評価が過去最高であればモデル データが更新されます。

画面には " loss " , " MSE ", " PSNR " が表示されます。
" MSE " とは " Mean Squared Error " の事で、 " 平均平方誤差 " と言います。
簡略化して述べると、基準用の高解像度画像と、処理した結果の画像との間の差分を取り、これを2乗して平均値を出した値の事だそうです。
処理が上手く行って基準用画像に近付く程、MSEの値は小さくなり、0に近付きます。
PSNR (Peak Signal-to-Noise Ratio / ピーク信号対雑音比)はMSEの値から計算されるそうです。
尚、誤差をRMS(Root Mean Square / 二乗平均平方根)としてRMS Errorとする場合も多いようです。

このMSEやPSNRの値は、学習が進む毎に徐々に変化し難くなって行きます。
また、値を更新させる割合である " learning rate decay " も指数関数的に小さくなっていきます。


私は以前、自作天体望遠鏡とコンパクト ディジタル カメラで撮影した月の画像を合成処理した際は処理完了までに約1週間掛かりましたが、今回の機械学習は僅か1日間で済みました。


上記の処理で学習(トレーニング)は完了です。
次は学習済みモデル データを使用した画像処理です。

以下のコマンドは作業ディレクトリーを " ~/waifu2x/ " としてあります。

" input_image " は拡大対象の画像ファイルのパスとファイル名を入力します。
" output_image " は保存する際の画像ファイルのパスとファイル名を入力します。

[学習させたモデル データによる2倍拡大]
th waifu2x.lua -model_dir models/my_model/ -m scale -scale 2 -i input_image.png -o output_image.png


[学習させたモデル データによる2倍拡大 + 圧縮ノイズ低減処理]
th waifu2x.lua -model_dir models/my_model/ -m noise_scale -scale 2 -noise_level 3 -i input_image.png -o output_image.png



学習が終わった畳み込み人工ニューラル ネットワークによる画像の拡大結果は非常に素晴らしいものでした。
どんな種類の画像でも元からその解像度だったのではないかと思える程綺麗に拡大出来ております。

コンピューター生成画像だけを使った学習実験は大成功でした。



以下に使用前後の比較画像を載せますが、ブログ内では縮小表示されているので、画像下のURLからオリジナルのファイルをご覧下さい。

Lantana_Comparison_1_Text "waifu2x" で2回2倍に拡大した画像と元の画像とLanczosで2回2倍に拡大した画像との比較画像。ランタナの花の写真を横に3等分して比較している。
https://c1.staticflickr.com/9/8340/28871566744_76f7899b1d_o.png
左から順に、自前のジェネレーティヴ アート画像群による学習済みモデル データによって " waifu2x " で2回2倍に拡大(4倍)した画像と、ランタナの花の元の写真と、 " Lanczos " で同様に拡大した画像との比較画像です。

Lantana_Comparison_2_Text "waifu2x" で2回2倍に拡大した画像と元の画像とLanczosで2回2倍に拡大した画像との比較画像。ランタナの花の写真を横に3等分して比較している。
https://c1.staticflickr.com/9/8323/29416402671_97b056ff80_o.png
こちらは記事の最初に掲載した比較用の画像です。

Lanczos補間法によるものと比べて輪郭は鋭利であり、また、アンダーシュートとオーヴァーシュートが無くて綺麗です。


" waifu2x " の作者様、及び、関係するプログラム等の作者様方には心より感謝申し上げます。
本当にありがとうございます。



ところで、拡大の他にもし、不鮮明なぼやけた画像を鮮明にしたい場合には他の何らかのソフトウェアを用いて " Iterative Deconvolution " という処理をするのが効果的です。
オープン ソース ソフトウェアの " GIMP " という画像編集ソフトウェアに " G'MIC - GREYC's Magic for Image Computing " というプラグインがございまして、これの機能の1つに " Iterative Deconvolution " がございます。
" GIMP 2.9.5 "内のメニュー項目は " Filters " - " G'MIC... " - " Details " - " Sharpen [richardson-lucy] " となっております。
これを使用するのが最も簡単であるかと存じます。

"GIMP" の公式ウェブサイトのURL:
http://www.gimp.org/

"G'MIC" のウェブサイトのGIMP プラグインのページのURL:
http://gmic.eu/gimp.shtml

更に、点拡がり関数の画像を自前で用意して様々なメソッドを使えるという点で、Java VM上で動作するオープン ソース ソフトウェアの " ImageJ " にプラグインを導入したものも便利だと思います。
" ImageJ " は医療や生物学等の研究者が使用する事が多いようです。

"ImageJ" の公式ウェブサイトのURL:
http://imagej.nih.gov/ij/

Gaussian_PSF_3D.class:
ガウス関数型点拡がり関数の画像スタックを作るプラグインです。
http://www.optinav.com/Convolve_3D.htm

Iterative_Deconvolution.class:
反復型の、コンヴォリューションとデコンヴォリューションの為のプラグインです。
http://www.optinav.com/Iterative-Deconvolution.htm

Iterative_Deconvolve_3D.class:
2Dと3Dの非負の反復型のデコンヴォリューションの為のプラグインです。
http://www.optinav.com/Iterative-Deconvolve-3D.htm

"かわさき市民祭り" を観に行って来ました。 [祭り, イヴェント]

11月1日日曜、11月2日月曜、11月3日火曜の3日間に亘って開催された、 " 第38回 かわさき市民祭り " の3日目を観て参りました。

"かわさき市民祭り" の公式ウェブサイトのURL:
http://kawasaki-fest.main.jp/index.html

神奈川県の川崎市の市民のお祭りなのにお邪魔して申し訳無い様な気もしつつ、最初から最後まで楽しませて頂きました。
実は昨年もお邪魔させて頂いていたりします。
昨年は和太鼓や桶太鼓の演奏、ダンス パフォーマンス等を鑑賞させて頂きました。
今回は " あそびの広場 " (富士通スタジアム川崎) のメイン ステージで催された踊り、ダンスの数々を鑑賞させて頂きました。

JR東日本の上野東京ラインの電車に乗って乗り換え無しでずっと席に腰掛けたまま川崎駅に到着出来るのでとても楽でした。

大都会である川崎市の駅前通りを真っ直ぐ歩いて会場へ到着したのが午前9時半頃。
初めに " いも串 " を買って食べて、 " 富士通スタジアム川崎 " のグラウンドへ入りました。
ステージの前に腰を下ろし、午前10時よりパフォーマンスが始まりました。

初めは、 " 川崎キッズ チアリーディング クラブ Bambies " によるチアリーディングの演技。
彼女達は何と世界選手権大会で1位を獲得、優勝した世界最強チームです。
昨年も観させて頂きましたが、さすがにもの凄く上手で迫力のある演技でした。あの年齢で、何であんなに凄いのだろうかと驚いてしまいます。
尚、関係者以外撮影禁止でした。

その後、日が沈みかけるまで、様々なパフォーマンスを観ました。

Kawasaki Fest_(2015_11_03)_1_resized_1 "かわさき市民祭り" のステージでよさこい踊りを披露する "大師桜" の子供達と大人達を撮影した写真。法被を着て両手に鳴子を持っている。
" 大師桜 " による " よさこい踊り " です。

Kawasaki Fest_(2015_11_03)_2_resized_1 "かわさき市民祭り" のステージでよさこい踊りを披露する "大師桜" の子供達と大人達を撮影した写真。法被を着ている。
同じく" 大師桜 " です。

Kawasaki Fest_(2015_11_03)_3_resized_1 "かわさき市民祭り" のステージでダンスを披露する "Dance Area SURGE" の少女達を撮影した画像。狐のお面を頭に載せている。
" Dance Area SURGE " のキッズ ダンス チームです。

Kawasaki Fest_(2015_11_03)_4_resized_1 "かわさき市民祭り" のステージでダンスを披露する "Japan Dance School College JDS" の大人達を撮影した画像。Lock ダンスをしている。
" Japan Dance School 〜 College JDS " のメンバーによるLock ダンスです。

Kawasaki Fest_(2015_11_03)_5_resized_1 "かわさき市民祭り" のステージでフラを披露する "Halau Hula O Laule'a" の少女達を撮影した画像。
" Halau Hula O Laule'a " の少女達によるフラです。

Kawasaki Fest_(2015_11_03)_6_resized_1 "かわさき市民祭り" のステージでフラを披露する "Halau Hula O Laule'a" の女性を撮影した写真。
" Halau Hula O Laule'a " の先生によるフラです。
やはり、とても上手でした。

Kawasaki Fest_(2015_11_03)_7_resized_1 "かわさき市民祭り" のステージでバレエを披露する "アリーズカンパニー" の少女達を撮影した画像。
" アリーズカンパニー " (Arry's company)のメンバーの少女達によるバレエです。

Kawasaki Fest_(2015_11_03)_8_resized_1 "かわさき市民祭り" のステージでダンスを披露する "アリーズカンパニー" の少女達を撮影した画像。
同じく、 " アリーズカンパニー " のメンバーによるダンスです。

Kawasaki Fest_(2015_11_03)_9_resized_1 "かわさき市民祭り" のステージでチアリーディングを披露する "アリーズカンパニー" の少女達を撮影した画像。
" アリーズカンパニー " のメンバーの少女達によるチアリーディングです。
彼女達のチアリーディングもとても上手でした。

Kawasaki Fest_(2015_11_03)_10_resized_1 "かわさき市民祭り" のステージでダンスを披露する "アリーズカンパニー" の少女達を撮影した画像。
" アリーズカンパニー " のメンバーによるダンスです。

Kawasaki Fest_(2015_11_03)_11_resized_1 "かわさき市民祭り" のステージでダンスを披露する "アリーズカンパニー" の女性2人を撮影した画像。赤いドレスを身に纏っている。
" アリーズカンパニー " のメンバーによるダンスです。
彼女達も、とても切れの良さと柔軟性と技量があって上手でした。

Kawasaki Fest_(2015_11_03)_12_resized_1 "かわさき市民祭り" のステージでチアリーディングを披露する "アリーズカンパニー" の少女達を撮影した画像。
" アリーズカンパニー " のメンバーの少女達によるチアリーディングです。
彼女達のパフォーマンスももの凄かったです。
多数のバック転、跳躍、スタンツ等、とてもレベルの高い演技を披露してくれました。

昨年2014年に " 新横浜パフォーマンス " で " 横浜チアリーディングチーム RAINBOWS " のパフォーマンスを、今年2015年に " あつぎ飯山桜まつり ダンスコンテスト " で " ATSUGI ALL☆STARS " を、更に " 横浜開港祭2015 " では " 大船チアリーディング チーム ANGELS " 、 " Violet Lynx "、 " エリートパフォーミングアーツ ハマダン " 等のパフォーマンスを観ましたが、兎にも角にも、神奈川県のキッズ チアリーディングの勢いの凄い事。
他県とはどうしてこれ程までにエナジーが違うのでしょうか。

Kawasaki Fest_(2015_11_03)_13_resized_1 "かわさき市民祭り" のステージでチアリーディングを披露する "アリーズカンパニー" の少女達を撮影した画像。バック転をしている瞬間。
" アリーズカンパニー " です。
軽々とバック転をしておりました。

Kawasaki Fest_(2015_11_03)_14_resized_1 "かわさき市民祭り" のステージでチアリーディングを披露する "アリーズカンパニー" の少女達を撮影した画像。スタントをしている。
" アリーズカンパニー " です。
格好良くスタントを決めています。

Kawasaki Fest_(2015_11_03)_15_resized_1 "かわさき市民祭り" のステージでチアリーディングを披露する "アリーズカンパニー" の少女達を撮影した画像。
" アリーズカンパニー " です。
またまた凄い技を決めております。

Kawasaki Fest_(2015_11_03)_16_resized_1 "かわさき市民祭り" のステージでチアリーディングを披露する "アリーズカンパニー" の少女達を撮影した画像。スタントをしている。
" アリーズカンパニー " です。
" リバティ " というスタントを決めています。

チアリーディングは危険なスポートです。技を誤れば大怪我や命の危険に繋がりかねません。
大きな怪我をしない事を願います。

Kawasaki Fest_(2015_11_03)_17_resized_1 "かわさき市民祭り" のステージでバレエを披露する "夢見バレエ" の少女を撮影した画像。
" 夢見バレエ " のメンバーの少女です。
とても可憐で上手でした。

Kawasaki Fest_(2015_11_03)_18_resized_1 "かわさき市民祭り" のステージでバレエを披露する "夢見バレエ" の少女を撮影した画像。
同じく " 夢見バレエ " の少女です。

Kawasaki Fest_(2015_11_03)_19_resized_1 "かわさき市民祭り" のステージでバレエを披露する "夢見バレエ" の少女を撮影した画像。
" 夢見バレエ " の少女です。

Kawasaki Fest_(2015_11_03)_20_resized_1 "かわさき市民祭り" のステージでバレエを披露する "夢見バレエ" の女子を撮影した画像。
" 夢見バレエ " の女子です。
美しいです。
私はバレエを観るのは実は初めてです。爪先立ちで動き続けるのですから、とても難しく、辛い筈です。

Kawasaki Fest_(2015_11_03)_21_resized_1 "かわさき市民祭り" のステージでバレエを披露する "夢見バレエ" の女子を撮影した画像。
" 夢見バレエ " の女子です。

Kawasaki Fest_(2015_11_03)_22_resized_1 "かわさき市民祭り" のステージでバレエを披露する "夢見バレエ" の女子を撮影した画像。
" 夢見バレエ " の女子です。

" かわさき市民祭り " のステージ パフォーマンスは実に素晴らしい物でした。
掲載した画像は出演者の内のほんの一部で、数多くの人達が演技を披露して下さいました。
凄い事に、80代後半の女性も元気にフラダンスを披露して下さいました。

因みに、ステージの音響設備は必要充分なものでした。

他県からお邪魔させて頂きまして、この様にすてきなパフォーマンスを観せて頂きました事に、心より感謝申し上げます。
どうもありがとうございました。

Kawasaki_(2015_11_03)_1 川崎駅前通りを交差点の歩道橋の上から駅の方を向いて撮影した写真。日が沈みかけて薄暗くなっている。
川崎駅前通り。既に日が沈みかけて薄暗くなって来ております。

->->
[2016年11月6日追記]
ブログ記事: "かわさき市民祭り" を今年も観に行って参りました。
http://crater.blog.so-net.ne.jp/2016-11-06
<-<-

ブログ記事: 私が観に行った関東地域のダンス等のイヴェントのリスト
http://crater.blog.so-net.ne.jp/2016-08-20

"さがみはらフェスタ" を観に行って来ました。 [祭り, イヴェント]

神奈川県相模原市で10月31日土曜日と11月1日日曜日の2日間に亘って開催された、 " 潤水都市さがみはらフェスタ 2015 " の2日目を観に行って参りました。

"さがみはらフェスタ" の公式ウェブサイトのURL:
http://sagamihara-festa.com/

Sagamihara Festa_(2015_11_01)_7_resized_1 "さがみはらフェスタ サガミハラダンスコンテスト" でダンスを披露している "BLUE Triber" の女子達を撮影した画像。
" サガミハラダンスコンテスト " のU-15の部で優勝した " BLUE Triber " です。

相模原市には8月8日の " 橋本七夕まつり " でも沢山のダンス パフォーマンスを観させて頂きましたが、今回のさがみはらフェスタに於きましても " サガミハラダンスコンテスト " が行われるとの事でしたので、これが目当てでした。

過去のブログ記事: "橋本七夕まつり" へ行って来ました。
http://crater.blog.so-net.ne.jp/2015-08-10

今回もJR東日本の " おトクなきっぷ " である " 休日おでかけパス " を買って遠路遥々電車で2時間以上掛けて相模原駅まで行きました。
駅を出てから道なりに暫く歩くと、会場である " 相模総合補給廠の一部返還地 " の入り口に着きました。
相模総合補給廠の一部返還地は想像よりも大分広い場所でした。
Sagamihara Festa_(2015_11_01)_1_resized_1  "さがみはらフェスタ" の会場の様子を撮影した画像。

Sagamihara Festa_(2015_11_01)_2 "さがみはらフェスタ" のイベントステージの様子を撮影した画像。観客用の長椅子が沢山設置されている。準備中である為人は少ない。
https://c2.staticflickr.com/6/5665/22666295652_77e54b7deb_o.jpg
準備中の " イベントステージ " の様子です。
イヴェントが始まると段々と観客が増え、後にほぼ満席になりました。


Sagamihara Festa_(2015_11_01)_3_resized_1 "さがみはらフェスタ サガミハラダンスコンテスト" でダンスを披露している "M・A・K・SMILE" の女子達を撮影した画像。
" M・A・K・SMILE " です。

Sagamihara Festa_(2015_11_01)_4_resized_1 "さがみはらフェスタ サガミハラダンスコンテスト" でダンスを披露している "Smile Zetta" の女子達を撮影した画像。
" Smile Zetta " です。

Sagamihara Festa_(2015_11_01)_5_resized_1 "さがみはらフェスタ サガミハラダンスコンテスト" でダンスを披露している "Smile Zetta" の女子達を撮影した画像。
同じく " Smile Zetta " です。

Sagamihara Festa_(2015_11_01)_6_resized_1 "さがみはらフェスタ サガミハラダンスコンテスト" でダンスを披露している "BLUE Triber" の女子達を撮影した画像。
" BLUE Triber " です。
この画像は、このコンテストの " U-15の部 " で優勝した彼女達によるイヴェントの締め括りのダンス パフォーマンスを撮影したものです。
橋本七夕まつりの時もそうでしたが、彼女達姉妹のダンスは非常に優秀でした。
姉は3連覇、妹は2連覇の快挙との事です。

Sagamihara Festa_(2015_11_01)_8_resized_1 "さがみはらフェスタ サガミハラダンスコンテスト" でダンスを披露している "BLUE Triber" の女子達を撮影した画像。
同じく " BLUE Triber " です。

次のページに橋本七夕まつりの時に撮影させて頂いた " BLUE Triber " の動画がございます。
ダンス動画
http://crater.blog.so-net.ne.jp/2015-08-18



" 一般の部 " の優勝は、 " 愛ROM=愛JUF(あいあいふじもり) " でした。
彼女達のダンスはとても力強く、切れがあり、良く揃っており、とても魅力的なものでした。

" 一般の部 " の準優勝は、 " remix " でした。
和装の要素を取り入れた赤を基調とした衣装と顔のメイクで妖艶な雰囲気を纏っておりました。

" U-15の部 " の準優勝は、 " 8 NORTH GATE Jr. " でした。
全身グレイ風宇宙人姿での登場でした。
とても格好良くブレイキングが決まっておりました。
ヘッドスピンを決める宇宙人を初めて見ました。

" U-15の部 " と" 一般の部 " の合同の特別賞は、 " 8 NORTH GATE Jr. " と " Rising↑from REDBELLS " でした。

" Rising↑from REDBELLS " は黒を基調とした衣装と顔のメイクで、黒のジャケットの内側にはモルフォチョウの羽の様に青色から青緑色に光沢を放つトップスを身に着けていました。


他にも数多くの出場者がおり、色々のダンス パフォーマンスを見せてくれました。
今回は優勝にならなかった出場者の中には、ほとんど優勝かと思うような出来栄えだった出場者もおりました。

ところで、予定にあった " Y's Dream jump " を見ていない気がするけど、私が見逃したのだろうか。



話は変わって、さがみはらフェスタでは " さがみはらぁ麺グランプリ " という企画が行われておりました。
私は午前中に " 吉凛 " というお店の " 肉ソバ " を頂きまして、ここに投票致しました。
投票は割り箸の袋に自身の名前と住所を記入して投票所に並べてある各お店の投票箱へ投入する方式でした。
帰宅後にウェブサイトで知ったのですが、 " さがみはらぁ麺グランプリ2015 " の優勝はその " 吉凛 " でした。
どうもごちそうさまでした。


ダンス コンテストで残念だった点を書かせていただきます。
この会場のイヴェント ステージについてですが、これは曲者でした。
前掲のステージの写真をオリジナル サイズで拡大してみると良く判るのですが、ステージの高さがとても低いのです。
最前列の椅子に腰掛けている人の肩位の高さしかございません。
その上、ステージ前に設置されている柵は観客の頭よりも丈が高いのです。
そしてそして、ダンス コンテストでは、審査員の方々のテーブル席が柵とステージの間に設置されました。
結果、どうなったかと申しますと、後ろの観客からはステージ上のダンス パフォーマンスをしている出場者達の足元が前の人や審査席の方々の上半身に遮られて良く見えない状況となってしまったのです。
ダンスはフットワークが非常に大事であるのに、それが良く見えないのは悲劇です。
取り分け私はカメラで動画撮影をさせて頂くつもりだったのですが、どこからどう撮影しても出演者の足元に大きく写るのは前の人と審査席の方々の後頭部かフェンスです。
横の方からならばどうかと思いましたが、今度は角度が悪く、ステージ横後方のスタッフの方々が沢山写り込みました。
それならば観客席より外側に立って撮影したらどうかと思い試してみたところ、ステージの一部だけは撮影出来ました。
が、しかし今度はステージの右前方にも左前方にもイヴェント運営者側の撮影の為に人が写ります。
その上お客さん達も、出演者達が演技中であってもお構い無しに観客席の間を立って歩いて移動するので大きく写ったお顔で何度も遮られてしまいました。
更にはステージ前の柵によじ登るお子さん達もおりました。
遠くからやって来ると、記念にダンスなどをカメラに収めて帰りたいと思ってしまうのですが、このイヴェントでは記録ではなく記憶に収めるべきだったようです。
只、これらの事は、ステージがあと数十cm高ければ全て解決してしまうと思います。
それと、橋本七夕まつりでもそうでしたが、音源や音響の不具合が多過ぎました。出演者達もさぞ動揺したことでしょう。
もう一つ、音響設備の音質が、他のイヴェントと比べて余り良くなかったようです。



ですが何はともあれ、遠くから来た甲斐がありました。
とても楽しませて頂きました。
イヴェントの運営に携わった全ての方々と、すてきなパフォーマンスを披露して下さった出演者の皆様、そして相模原の皆様に感謝申し上げます。
ありがとうございました。


ブログ記事: 私が観に行った関東地域のダンス等のイヴェントのリスト
http://crater.blog.so-net.ne.jp/2016-08-20