九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
突然ですが、Googleが低解像度の画像を機械学習で高解像度化する「RAISR」という技術を発表したのを知っているでしょうか。
当時メインでpythonを使ってたんで、この技術を使えないか調べ回った結果、どうやらコードは公開されてないことが分かりました。(ホントはあったのかも・・・・ですけど。)
で、この3連休に超元気な姪っ子2人と遊ぶ合間に検索してみると、なんとpythonコードで公開されているGitHubページを発見!
せっかくなので、実際に以下のモナリザの顔写真で試してみることにしました。
(サイズは、128 x 128px)
1.ダウンロード
その名もジャスト「RAISR」という名でコードが公開されてるんで、これを
git clone https://github.com/movehand/raisr.git
とするか、直接ダウンロードして解凍してください。
フォルダの中には、いくつかのファイルとフォルダがありますけど、重要なのは以下3つのフォルダだけです。
- train
- test
- results
では、実際にやってみましょう!
※注1: このプログラムはpython3でないとエラーが発生します。
※注2: あと、以下のパッケージが必要なので、pipなどで、インストールしておきましょう。(僕の場合はpython2系とpython3系が共存してたんで、pip3でインストールしました)
pip3 install opencv-python numpy scipy pillow matplotlib
2.高解像度の画像を学習させる
RAISRは機械学習プログラムなので、まずはtrain.pyで学習をさせる必要があります。pixabayなどで解像度の高い画像をtrainフォルダに設置して、次のコマンドを実行してください。
(ただし、かなり時間がかかるんで、まずは1枚だけで実行するのをおすすめします)
sudo python3 train.py
では、画像を高解像度化してみましょう!
3.画像を高解像度化する
testフォルダに高解像度にしたい画像を保存して、以下のコマンドを実行します。
sudo python3 test.py
※これも画像が大きいと結構時間がかかってしまいます。はじめは、以下のようなは画像でトライしてみてください。
で、test.pyの実行が完了すると、resultsフォルダに完成した画像が作られています。(ただし、この画像jpgではなく、懐かしのbmpです)
その画像がこちら(jpg変換していますが、リサイズはしてません)
どうでしょう??画像サイズが128ピクセルから255ピクセルに大きくなっているのに、それほど画像の劣化がありません。
わかりやすくするために、128ピクセルの画像を255ピクセルに通常の方法でリサイズしたものと並べてみました。
左がRAISRで作成した画像で、右がリサイズしたものです。
こうやってみると左の方が綺麗な画像になっているのがよく分かりますね。
以上、今回はちょっとしたネタ程度のお話ですけど、この技術を使えば昔ガラケーで撮影した低解像度の写真も少しはマシなものになるかもしれません。
ちなみに
GitHubのコードはMITライセンスで公開されています。いやはやすごい時代になったもんですね。
ということで、みなさんもぜひ一度試してみてくださいね。
ではでは〜!