【シェル】waifu2xで劣化した写真や画像を高画質化【macOS】
LinuxやmacOSなどのパソコンで使えるおもしろいコマンドを見つけたのでご紹介します。 劣化した写真画像を高画質化する「waifu2x」です。 上の写真左は荒い画質でしたがwaifu2xでコンバートすることで、写真右のようにノイズが減りなめらかで自然な画像になりました。
この記事ではwaifu2x で劣化した写真や画像を高画質化する使い方をお伝えしていきます。
はじめに
Wikipedia より
昨日、NASAのジェームズ・ウェッブ宇宙望遠鏡のニュースが話題に上がりました。はるか遠方にある天体を、今までにない高精度な画像で捉えることができたのだとか。ウェッブ宇宙望遠鏡は赤外線で観測しているらしく、個人的には興味がわくところです。 さてそんな中、宇宙に関することをネットサーフィンしていて、JAXAの論文 「宇宙科学情報解析論文誌: 第9号」 にたどり着きました。論文の中では「あかり」という衛生で観測した解像度の低い画像を、高解像度に変換するアルゴリズムが紹介されていました(「あかり」もまた赤外線を使って観測するようです)。
論文の数式は正直さっぱりでしたが、この手のプログラムはすでにGitHubにありそうだと思い調べてみたところやはりありました。それが「waifu2x」です。
この写真のように劣化した画像(右)をwaifu2xで復元(左)してみました。いかがでしょうか?ざらつきがなくなり、くっきしりして見えますよね?すごいと思いませんか!?
画像編集ソフトによくある、アンチエイリアスやシャープネスといった処理とも違います。
「waifu2x」では機械学習を使っているようです。第3次AIブーム以降、機械学習を使ったアルゴリズムが流行ってますよね。クライアント側の負荷を無視すれば、将来の圧縮技術として使えるのでは!?なんて思ったりしますがどうなんでしょうか。
waifu2xとは
waifu2xは深層畳み込みニューラルネットワークを使って、アニメの画像や写真などに対して画像スケーリングやノイズリダクションを行うプログラムです。 (機械学習などのむつかしいことを知らなくても、プログラムは簡単に使えますのでご安心ください。)
作者は nagadomi さんで、waifu2xの初版は2015年10月11日です。2018年で開発は止まっておりますが、MIT licenseでGitHubにてオープンソースで公開されてます。 GitHub - nagadomi/waifu2x: Image Super-Resolution for Anime-Style Art
waifu2xの語源は、「Waifu」は理想的な女性キャラクターに対して用いられるアニメスラングで、「2x」は2倍を意味することからきてます。
apt-get でインストールするのでUbuntuやRaspberry PiなどDebian系Linuxで動かすことが前提のようです。ですがオープンソースで公開されているのでforkの数も多く、いろんな有志の方々によって iOS や macOS 、 Python でも動くような改造版がリリースされてます。さらに ウェブサービス版 も存在します。 本記事では、macOSのbrewでインストールできる waifu2x-mac を使ってみます。waifu2xを使ってみよう!(macOS)
それではさっそく、macOSにwaifu2xをインストールしてみましょう。brewで簡単にインストールできます。
$ brew install imxieyi/waifu2x/waifu2x
機械学習ライブラリのCore MLを使っていて、iOSでも動くバージョンもあります。 GitHub - imxieyi/waifu2x-ios: iOS Core ML implementation of waifu2x GitHub - imxieyi/waifu2x-mac: Waifu2x-ios port to macOS, still in Core ML and Metal
使い方
インストールできたら使い方を確認しましょう。
$ waifu2x -h
Usage: waifu2x [options]
-t, --type:
Image type - a for anime (default), p for photo
-s, --scale:
Scale factor (1 or 2)
-n, --noise:
Denoise level (0-4)
-i, --input:
Input image file (any format as long as NSImage loads)
-o, --output:
Output image file (png)
-h, --help:
Print usage
簡単なので大丈夫ですね。こんな感じで入力画像 low.jpg を指定して実行します。
$ waifu2x -t p -s 2 -n 4 -i low.jpg -o 2x.png
使い方の注意点としましては、オプションは全部指定しなければなりません。また、出力画像はpng形式のみです。
▼ デジイチで撮ったコスモスの写真をわざと劣化させたあと、waifu2xで高画質化してみました。
先ほどのコマンドで実行した結果がこちらです。くっきりなめらかでキレイな写真へ元通りです!
▼ こちらはフィルムカメラで撮って現像した写真を、スキャナで取り込んだデータです。拡大するとわかりますが、フィルムカメラの独特なざらつき(左)がアナログな感じですよね。
waifu2xにかけると、ノイズが消えてデジタル写真ぽくなります(右)。当然、アナログ的なフィルムの味はなくなりますが、これはこれで用途によっては利用価値ありそうですね。
おわり
waifu2x、いかがだったでしょうか?みなさんもお手持ちの画像などでぜひ試してみてください。
フォトショなどの画像編集ソフトを使えばもっと高機能なことができそうですが、アプリを起動する手間がなくコマンドラインでサクッと変換できるのが「waifu2x」の良いところですね!
私の場合ですと、ブログなどで使う画像の元データを削除してしまい、低画質画像しか残ってない時があったりします。そんなときに、waifu2xで劣化した画像を高画質化して再利用できるなと思いました。
劣化した動画を高画質化!?なんてこともできるのではと思ったり。実験したらブログでご紹介しますね!
今後も面白いツールを見つけましたら、ブログでご紹介します! 最後まで読んでいただきありがとうございました!