Ubuntu14.04でwaifu2x-converterをコンパイルする

凄い人が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/

まずは、既にインストールしているソフトを最新にしておきます。

次に、OpenCVに必要なソフトをインストールします。お、多い…

 

OpenCVのインストール

OpenCV公式(http://opencv.org/)からソースをダウンロードします。

GitHub(https://github.com/Itseez/opencv/)からでも可?

cd先、解凍先は各自の環境に合わせてお好みでどうぞ。

インストールの準備を粛々と進めます。

参考にしたサイトでは、cmakeの結果を確認する必要があるとのことですが、

とりあえず俺はあまり気にしなくても問題なかったです。waifu2x-converterのコンパイルに失敗した時は

ここを気にしたほうがいいかもしれません。

 

いよいよOpenCVのインストール。

makeが数時間というレベルで完了まで時間がかかるので気長に待ちましょう。

 

OpenCVインストール後の設定

を行います。

多分ファイルが存在せず新規ファイルになりますが気にせずに以下を追加して保存します。

opencv.confの設定を反映させるため?に以下を実行します。

更に以下のファイルを開き、ファイルの末尾にその下の2行を書いて保存します。

再起動します。

これでOpenCVを使う準備が完了しました。

 

waifu2x-converterのコンパイル

兎にも角にもコンパイルするにはソースコードがないと始まりません。

そしてコンパイルです。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/

何もエラーが出なければコンパイル完了です!

 

waifu2x-converterを使う

動かすのに必要な基本的なパラメータは

です。(-oは無くてもいけるけど)

デフォルトの設定は本家サイトでいうノイズ除去弱、2倍に拡大です。

Windowsペイントで拡大したのと比較した画像を用意してみました。

画像拡大しないと分かりづらいです。

(左:ペイント 右:waifu2x-converter)

cutin_actor4_l_hikaku

(使用画像掲載元:「臼井の会」(http://usui.moo.jp/frame2.html))

元々の画像のノイズが少ないので効果が少ないように思いますがそれでも一目瞭然です。

あのwaifu2xを移植したものですから当然ですね。

でも、さすがに本家waifu2xとは変換処理に若干違いがあるようです。

 

waifu2xとの違い

  1. 処理速度の違い

    waifu2x-converterはwaifu2xより変換処理が遅いようです。

    これは作者のアミーゴ(@WL_Amigo)さんの

    拙作のコンバータがメモリ喰らいなのです…

    という発言から、概ね事実だと思います。

    でかい画像を変換させるにはPCにかなりのメモリを搭載しないとダメみたいですね…

  2. 透過PNGの処理結果

    下の画像を見て下さい。

    actor4_w2x_hikaku

    (使用画像掲載元:「臼井の会」(http://usui.moo.jp/frame2.html))

    左がwaifu2x、右がwaifu2x-converterによる透過PNGを2倍に拡大した結果になります。

    透明度の情報が失われてるっぽいのはどっちも同じですが、

    明らかにwaifu2x-converterの方は結果が不自然です。

    これは今後のverUPに期待ですかね。

 

今回はUbuntuで動かしましたが、Windowsでも動くというのは

大きな進歩だと思います。マジ素晴らしいです。

作者のアミーゴさんに感謝をすると共に、

今後のwaifu2xの発展に大きく期待したいということを述べたところで、

この記事を締めたいと思います。

続きを読む

Ubuntu14.04にCUDA Toolkit or NVIDIAグラフィックスドライバを入れるとGUI環境でログインできなくなる問題について

前回、waifu2xの環境構築に失敗して悲しみに暮れてたわけですが、

この後泣きっ面に蜂な出来事がありました。

 

waifu2xの環境構築を試行した後再起動すると、

何故かログインできなくなりました。

(正確にはログインできるけどすぐにログイン画面に戻される)

でもCtrl+Alt+F1でCUI環境にするとログイン出来る…

なんでや!と思いつつググってみる。

原因が不明確である場合、~/.xseesion-errorsなどから原因を探すことになりますが、これは中々厄介な作業となります。
https://forums.ubuntulinux.jp/viewtopic.php?id=9420

というわけで~/.xseesion-errorsを覗いてみると、

Xlib extension “GLX” missing on display “:0”

の文章が。(他にもあるけど日本語だからなのか文字化けして分からない)

この文章を元にまたググってみる。

[SOLVED] OpenGL GLX problem (glxinfo – Xlib: extension “GLX” missing) / Applications & Desktop Environments / Arch Linux Forums
https://bbs.archlinux.org/viewtopic.php?id=189898

ここでXorg.0.logの存在を知り、Xorg.0.logを見てみる(一部抜粋)。

Failed to Initialize GLX Extension (Compatible NVIDIA X Driver not found)

なんかNVIDIA関係のソフトが悪さしてるのだろうか…

(UbuntuをまたクリーンインストールしてCUDA Toolkitだけ入れても

同様の現象が起こることを確認)

その後色々調べて試行錯誤したところ、bumblebeeをインストールすれば

再びGUI環境でログイン出来るようになりました。(要再起動)

Bumblebee – Ubuntu Wiki

https://wiki.ubuntu.com/Bumblebee

ここを参考に

でOK。

 

どう文章を整形しようと試行錯誤してたら記事書くのに

すごい時間がかかってしまった。

 

[20160928追記]

皆様ご丁寧にお礼のコメントを投稿して下さり、誠にありがとうございます。

私は正直CUDAについてはド素人で、Linuxもお世辞でも詳しいとは言えない身ですが、

この記事を引用してくださってる方々の情報によると、この記事の方法だとログインループは抜け出せますが、

CUDAの機能は使えなくなるようです。

この記事の方法以外でもログインループを抜け出せるようなので、

他人様の記事ですが以下も参考にしてみて下さい。

Ubuntuアップデートしたらログインできなくなった(nvidia GPU使用)

http://may46onez.hatenablog.com/entry/2016/02/26/020208

多分、この方法が正攻法な気がします…

続きを読む

VirtualBox上のUbuntu14.04でwaifu2xを動かしたかった

はじめに

ここに書いてあることを実行してもwaifu2xが

使えるようになるわけではありません。

結果から言いますと動かすのに失敗しました。

 

さて、最近話題のwaifu2xですが、俺も使ってみました。

あ、画像の選定は趣味です。

予想を上回る処理結果にすげーって思ってたところ、

しんくさんから、ROKUさんwaifu2xの環境構築できませんか?と聞かれ、

興味もあったしやってみようってことになりました。

題名にもある通り環境はVirtualBoxにUbuntu14.04をクリーンインストールして、

VirtualBox Guest Additionsをインストールしたところからスタート。

まあ、github(https://github.com/nagadomi/waifu2x)のREADMEに

丁寧にインストール方法書いてくれてるし簡単でしょ(フラグ

 

curlとTorch7のインストール

問題なく完了。

 

CUDA 7.0 Toolkitのインストール

[UNIX][統計学] Ubuntu 14.04にNVIDIA CUDA 6.5 toolkitをインストールする

http://d.hatena.ne.jp/koiti_yano/20141201/p1

ここが参考になりました。

上のURLに書いてますが、NVIDIA製品が入ってるか確認しました。

結果は、何も表示されず…PCのグラボがGTX660とはいえ薄々分かってはいましたけど。

多分動かないだろうなぁ…と思いつつ続行。

 

cuDNNのインストール

https://developer.nvidia.com/cuDNNからダウンロードする必要があるんですが、

ダウンロードするにはNVIDIAのサイトでユーザー登録を行い、かつ

CUDA/GPU Computing Registered Developer Programに参加し、承認される必要があります。

承認には大分時間がかかる場合もあるようですが、俺は申請してから6時間後には承認されてました。

これでOK。

 

その他パッケージのインストール

別にREADME通りでいけるだろうと思ってたけど、

とcunnがインストールに失敗。調べてみると

THCAllocator.hはcutorchのもののようなので、cutorchをgithubから落としてインストールしてみる。

で、cunnをインストールしようとしたらまた同じエラーで失敗…

cutorchのソースを見ていると、

https://github.com/torch/cutorch/blob/master/lib/THC/CMakeLists.txt

でTHCAllocator.hをコピーしていないっぽいのが発覚。

とりあえず手動でTHCAllocator.hをコピーしてみる。

これで問題なくcunnのインストールが完了。多分。

(追記)githubのcutorchに修正が入ったようで、修正内容を見る限り上記ではダメです。

おとなしく修正済みのリポジトリをクローンしてインストールしましょう。

 

READMEに従って残りのパッケージもインストール。

他はエラーも出ず無事インストール完了。

 

waifu2xの起動

さてやってまいりました。いざ起動!

ですよねー。というわけで「CUDAが使えるデバイスがないよ」と言われてしまいました。

でも諦めきれずにいろいろ調べてみたところ、

Enable CUDA GPU working under VM
http://askubuntu.com/questions/598317/enable-cuda-gpu-working-under-vm

9.6. PCI passthrough
https://www.virtualbox.org/manual/ch09.html#pcipassthrough

PCIパススルー
http://itpro.nikkeibp.co.jp/article/Keyword/20091127/341198/?n_cid=nbpitp_itptw_top

どうやらPCIパススルーという機能が利用できれば俺のPCにあるGTX660を使って

仮想マシン上でCUDAが使える模様。

ただ、マザボにIOMMUという機能を備えたチップセットが必要なのと、

CPUがIOMMUに対応している必要があるらしいです。

早速biosの設定画面をじーっと眺めてたんですが…どうやらウチではIOMMUは使えないようです。

ざんねん!わたしのぼうけんは これで おわってしまった!

 

うーん…機会があれば俺のPCをWindowsとUbuntuのデュアルブートにして

waifu2xのインストールをしてみたいですね。

 

最後に

前々からちゃんとした自分のWebサイトを持ちたいと思ってたんですが、

最後の後押しとなったのはwaifu2xのインストール手順を記事にしたいという思いでした。

きっかけをくれたしんくさんには感謝致します。

続きを読む