凄い人がwaifu2xを作り、それを見て凄い人達が集まり、界隈を急速に発展させていく。
一種の社会現象の始まりを見ている感じです。
Pythonで移植されたり、
C++ + OpenCVで移植されたり、
GUIでユーザビリティを向上させたり
と、目覚ましい勢いで進化し続けています。アツイですね。
今回は上に挙げた、waifu2xの一部機能をC++ + OpenCVで実装した
waifu2x-converterをUbuntuでコンパイルして動かしてみたいと思います。
事前準備
OpenCVのインストールまでの流れは以下を参考にさせていただきました。
Installing OpenCV 2.4.9 in Ubuntu 14.04 LTS – Sebastian Montabone
http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/
まずは、既にインストールしているソフトを最新にしておきます。
|
sudo apt-get update sudo apt-get upgrade |
次に、OpenCVに必要なソフトをインストールします。お、多い…
|
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev \ libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev \ python-numpy python-tk libtbb-dev libeigen3-dev \ yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev \ libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev \ libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra \ libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev \ libswscale-dev default-jdk ant libvtk5-qt4-dev |
OpenCVのインストール
OpenCV公式(http://opencv.org/)からソースをダウンロードします。
GitHub(https://github.com/Itseez/opencv/)からでも可?
cd先、解凍先は各自の環境に合わせてお好みでどうぞ。
|
cd ~ unzip opencv-3.0.0-rc1.zip cd opencv-3.0.0-rc1 |
インストールの準備を粛々と進めます。
|
mkdir build cd build cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON \ -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON \ -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON .. |
参考にしたサイトでは、cmakeの結果を確認する必要があるとのことですが、
とりあえず俺はあまり気にしなくても問題なかったです。waifu2x-converterのコンパイルに失敗した時は
ここを気にしたほうがいいかもしれません。
いよいよOpenCVのインストール。
makeが数時間というレベルで完了まで時間がかかるので気長に待ちましょう。
OpenCVインストール後の設定
を行います。
|
sudo vi /etc/ld.so.conf.d/opencv.conf |
多分ファイルが存在せず新規ファイルになりますが気にせずに以下を追加して保存します。
opencv.confの設定を反映させるため?に以下を実行します。
更に以下のファイルを開き、ファイルの末尾にその下の2行を書いて保存します。
|
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH |
再起動します。
これでOpenCVを使う準備が完了しました。
waifu2x-converterのコンパイル
兎にも角にもコンパイルするにはソースコードがないと始まりません。
|
cd ~ git clone git://github.com/WL-Amigo/waifu2x-converter-cpp.git --recursive cd waifu2x-converter-cpp |
そしてコンパイルです。OpenCVの機能を使ったプログラムのコンパイル方法は
以下を参考にさせていただきました。
LinuxでOpenCVを入れて適当なコードをコンパイルするまで
http://www.yasutomo57jp.com/2010/09/01/linux%E3%81%A7opencv%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E9%81%A9%E5%BD%93%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7/
|
g++ src/main.cpp src/modelHandler.cpp -o waifu2x-converter -std=c++11 \ -L(/path/to/opencv/installed/directory)/build/lib \ -I./include \ -I(/path/to/opencv/installed/directory)/include \ `pkg-config --cflags opencv` `pkg-config --libs opencv` |
何もエラーが出なければコンパイル完了です!
waifu2x-converterを使う
動かすのに必要な基本的なパラメータは
|
./waifu2x-converter -i (/path/to/input) -o (/path/to/output) |
です。(-oは無くてもいけるけど)
デフォルトの設定は本家サイトでいうノイズ除去弱、2倍に拡大です。
Windowsペイントで拡大したのと比較した画像を用意してみました。
画像拡大しないと分かりづらいです。
(左:ペイント 右:waifu2x-converter)
(使用画像掲載元:「臼井の会」(http://usui.moo.jp/frame2.html))
元々の画像のノイズが少ないので効果が少ないように思いますがそれでも一目瞭然です。
あのwaifu2xを移植したものですから当然ですね。
でも、さすがに本家waifu2xとは変換処理に若干違いがあるようです。
waifu2xとの違い
- 処理速度の違い
waifu2x-converterはwaifu2xより変換処理が遅いようです。
これは作者のアミーゴ(@WL_Amigo)さんの
「拙作のコンバータがメモリ喰らいなのです…」
という発言から、概ね事実だと思います。
でかい画像を変換させるにはPCにかなりのメモリを搭載しないとダメみたいですね…
- 透過PNGの処理結果
下の画像を見て下さい。
(使用画像掲載元:「臼井の会」(http://usui.moo.jp/frame2.html))
左がwaifu2x、右がwaifu2x-converterによる透過PNGを2倍に拡大した結果になります。
透明度の情報が失われてるっぽいのはどっちも同じですが、
明らかにwaifu2x-converterの方は結果が不自然です。
これは今後のverUPに期待ですかね。
今回はUbuntuで動かしましたが、Windowsでも動くというのは
大きな進歩だと思います。マジ素晴らしいです。
作者のアミーゴさんに感謝をすると共に、
今後のwaifu2xの発展に大きく期待したいということを述べたところで、
この記事を締めたいと思います。
続きを読む