【シェル】waifu2xで劣化した写真や画像を高画質化【macOS】

【シェル】waifu2xで劣化した写真や画像を高画質化【macOS】
【シェル】waifu2xで劣化した写真や画像を高画質化【macOS】

LinuxやmacOSなどのパソコンで使えるおもしろいコマンドを見つけたのでご紹介します。 劣化した写真画像を高画質化する「waifu2x」です。 上の写真左は荒い画質でしたがwaifu2xでコンバートすることで、写真右のようにノイズが減りなめらかで自然な画像になりました。

この記事ではwaifu2x で劣化した写真や画像を高画質化する使い方をお伝えしていきます。

はじめに

ジェイムズ・ウェッブ宇宙望遠鏡がとらえた写真
ジェイムズ・ウェッブ宇宙望遠鏡がとらえた写真
Wikipedia より

昨日、NASAのジェームズ・ウェッブ宇宙望遠鏡のニュースが話題に上がりました。はるか遠方にある天体を、今までにない高精度な画像で捉えることができたのだとか。ウェッブ宇宙望遠鏡は赤外線で観測しているらしく、個人的には興味がわくところです。 さてそんな中、宇宙に関することをネットサーフィンしていて、JAXAの論文 「宇宙科学情報解析論文誌: 第9号」 にたどり着きました。論文の中では「あかり」という衛生で観測した解像度の低い画像を、高解像度に変換するアルゴリズムが紹介されていました(「あかり」もまた赤外線を使って観測するようです)。

宇宙科学情報解析論文誌: 第9号より
宇宙科学情報解析論文誌: 第9号より

論文の数式は正直さっぱりでしたが、この手のプログラムはすでにGitHubにありそうだと思い調べてみたところやはりありました。それが「waifu2x」です。

劣化した画像(右)、waifu2xで復元(左)
劣化した画像(右)、waifu2xで復元(左)

この写真のように劣化した画像(右)をwaifu2xで復元(左)してみました。いかがでしょうか?ざらつきがなくなり、くっきしりして見えますよね?すごいと思いませんか!?

画像編集ソフトによくある、アンチエイリアスやシャープネスといった処理とも違います。

「waifu2x」では機械学習を使っているようです。第3次AIブーム以降、機械学習を使ったアルゴリズムが流行ってますよね。クライアント側の負荷を無視すれば、将来の圧縮技術として使えるのでは!?なんて思ったりしますがどうなんでしょうか。

waifu2xとは

waifu2xは深層畳み込みニューラルネットワークを使って、アニメの画像や写真などに対して画像スケーリングやノイズリダクションを行うプログラムです。 (機械学習などのむつかしいことを知らなくても、プログラムは簡単に使えますのでご安心ください。)

nagadomi/waifu2x
nagadomi/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の数も多く、いろんな有志の方々によって iOSmacOSPython でも動くような改造版がリリースされてます。さらに ウェブサービス版 も存在します。 本記事では、macOSのbrewでインストールできる waifu2x-mac を使ってみます。

waifu2xを使ってみよう!(macOS)

それではさっそく、macOSにwaifu2xをインストールしてみましょう。brewで簡単にインストールできます。

shell
$ 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

使い方

インストールできたら使い方を確認しましょう。

shell
$ 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 を指定して実行します。

shell
$ waifu2x -t p -s 2 -n 4 -i low.jpg -o 2x.png

使い方の注意点としましては、オプションは全部指定しなければなりません。また、出力画像はpng形式のみです。

▼ デジイチで撮ったコスモスの写真をわざと劣化させたあと、waifu2xで高画質化してみました。

先ほどのコマンドで実行した結果がこちらです。くっきりなめらかでキレイな写真へ元通りです!

waifu2xで高画質化
waifu2xで高画質化

▼ こちらはフィルムカメラで撮って現像した写真を、スキャナで取り込んだデータです。拡大するとわかりますが、フィルムカメラの独特なざらつき(左)がアナログな感じですよね。

waifu2xにかけると、ノイズが消えてデジタル写真ぽくなります(右)。当然、アナログ的なフィルムの味はなくなりますが、これはこれで用途によっては利用価値ありそうですね。

waifu2xで高画質化
waifu2xで高画質化

おわり

waifu2x、いかがだったでしょうか?みなさんもお手持ちの画像などでぜひ試してみてください。

フォトショなどの画像編集ソフトを使えばもっと高機能なことができそうですが、アプリを起動する手間がなくコマンドラインでサクッと変換できるのが「waifu2x」の良いところですね!

私の場合ですと、ブログなどで使う画像の元データを削除してしまい、低画質画像しか残ってない時があったりします。そんなときに、waifu2xで劣化した画像を高画質化して再利用できるなと思いました。

劣化した動画を高画質化!?なんてこともできるのではと思ったり。実験したらブログでご紹介しますね!

今後も面白いツールを見つけましたら、ブログでご紹介します! 最後まで読んでいただきありがとうございました!

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

この記事で紹介した商品

Pandasで画像・動画処理をはじめよう!
Python学習にオススメの本をご紹介!