読者です 読者をやめる 読者になる 読者になる

dockerで自前のonwcloudを立てる

目標:docker-composeでいい感じのowncloudを立てる。MySQLを使って早くする!
使用環境:ubuntuserver16.04

最終的にうまく行ったdocker-compose.yml

# owncloud
owncloud:
    image: owncloud
    ports:
        - "80:80"
    links:
        - mysql

mysql:
  image: mariadb
  volumes:
        - ./db/mysql_data:/var/lib/mysql
  environment:
    MYSQL_ROOT_PASSWORD: 任意のパスワード
  volumes:
        - docker_volumes/mysql:/var/lib/mysql

なんかおかしくなった時に全消去してリセットする

途中でmySQLのほうが起動しなくなって全部消した。おかしくなったら消せば治るっぽい。

docker rm -f $(docker ps -a -q)

初期設定画面

SQLiteではなくMySQLの方を選ぶ。

データベースのところの設定  

  • ユーザ:root
  • パスワード:さっき決めた任意のパスワード
  • データベース名:mysql
  • ホスト:mysql

SQLiteMySQLの差

正確には計測してないが、相当早くなった。

素人が調べてコピペでやったので抜けてるところ、おかしいところあるかもしれませんがご参考までに。volumes:のとこって片方で良いのかな・・?

PC環境(2017/04/04更新)

メイン

  • CPU : core i7 2600
  • RAM : DDR3 16GB
  • HDD : Seagate 500GB + WDBlack2TB
  • VGA : GTX660
  • OS : Windows10 pro

録画機

  • CPU : core i7 2600K
  • RAM : DDR3 8GB
  • HDD : Seagate 500GB + WDRed 2TB
  • PT3
  • OS : Windows10 home

ノート

予備:Dell PowerEdge R410

  • CPU : Xeon E5620 x2
  • RAM : 8GB
  • HDD : SAS300GB x2→RAID0 600GB
  • VGA : HD6450
  • OS : WindowsServer2012 R2

youtube-dlのメモ

音だけ 

youtube-dl -i --extract-audio --audio-format mp3 <video URL>

最高画質 

youtube-dl -i -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 <video URL>

-iを付けることによってエラーが出ても次の処理に進んでくれる。(YouTubeのリストをダウンロードする時、著作権に引っかかって消された動画あったとしても進んでくれるので便利)

14.04 - How to select video quality from youtube-dl? - Ask Ubuntu : http://askubuntu.com/questions/486297/how-to-select-video-quality-from-youtube-dl

command line - How to download an MP3 track from a YouTube video - Ask Ubuntu : http://askubuntu.com/questions/178481/how-to-download-an-mp3-track-from-a-youtube-video

久しぶりに起動したwindowsでDHCPでのIPの振り分けが適用されない時

ipconfig /release

で消去、

ipconfig /renew

で新規IPアドレスの取得。

難しいことは何も分からないけどpix2pixを使ってみたい

注:Ubuntuブラウジングくらいしかやったことがないプログラミング素人高校生が興味本位で試してみたものです。おそらく間違いや余計なことを多々しているかと思います。
Twitterでpix2pixってやつが面白いって見て、調べてみたら「めっちゃ簡単」って書いてあったので試してみたくなった。結論から言うとpix2pixを使うための環境構築にとても時間がかかりました。OpenCVビルドするの大変すぎ(-_-;)半日くらい?かかった。

今回使ったマシン

手順

ubuntu server 16.04LTSのインストール

ローカルのHDD見たらUbuntuServerのisoしか無かったのでこれを使った。普通にDesktopでいいと思う。unetbootinを使ってUSBメモリインストーラ入れて作業。指示に従ってインストールしてたら元から入ってたWindows10がGRUBに表示されないじゃないですかー。年賀状の住所録が入っているので忘れないうちに抜き出しとかないとやばい。ブートローダーのところの話はいまいち良く分からない。どうやったら確実に共存させられるんだろう?
インストール中に「LANカードが見つからない」と出てきたら画面戻ってその項目に従うべきだ。勝手に見つけてくれる。無視してインストールを続行したらネットに繋がらなくて(当然)、もう一度最初からやり直した。見つけてくれるなら最初からそうしてくれよって思うのは私だけ?

Nvidiaドライバ&CUDA&cuDNNのインストール

これは調べればいくつも出てくるので省略。GPUドライバは自分のグラボに合った最新のものをチェックして入れる。確認はWindowsにドライバを入れるときと同じようにNvidiaのサイトに行き、OSを「linux 64bit」みたいなやつを選び、何が最新か見る。
CUDAとcuDNNをダウンロードするにはNvidiaのDeveloper menbershipというものに登録しない。こちらのページを参考にした。

Ubuntu 16.04へのCUDAインストール方法 - Qiita : http://qiita.com/yukoba/items/3692f1cb677b2383c983

私がハマったのは以下に書いたので何かの参考になれば幸いです。

Ubuntu16.04にOpenCV3.2 - takanotume24 (・・? : http://takanotume24.hatenablog.jp/entry/2017/01/12/201827

pix2pix関係をインストール

こちらのページを参考にした。

pix2pix(GAN)を使ってモノクロのおそ松くんをカラー画像にしてみた - 技術メモ集 : http://t-nkb.hatenablog.com/entry/2016/11/26/120255

学習させる画像がでかすぎる

GTX660ではVRAMが足りないようで、out of memoryのエラーを吐いて途中で学習が終わってしまう。「pix2pix outofmemory」とかでググってみると、学習させる画像データを小さくしてみろって出てきた。
サンプルデータは512x256、これを256x128に圧縮する。ImageMagickと言うものを利用し、テキトウなシェルスクリプトを書いて変換した。ファイル名が「数字.jpg」で助かった。Imagemagickはカラー→グレースケールへの変換も対応していて、学習用データを作るときにも使った。

学習させてみる

あとはpix2pixのGithubのドキュメントに書いてあるとおりにトレーニングを実行してみる。
先程のブログにあった、train.luaのbatchSizeを1→4に増やすとトレーニングを高速化させることができる、というのをやってみたところ実際に早くなった。
最後まで処理させて3時間位。ただ、入力画像サイズ(128px)とtrain後検証用画像(256px)でサイズが違ったせいか、かなりぐちゃぐちゃな画像になってしまった。
今回は途中から面倒くさくなってきて検証用画像の方の圧縮をサボったが、これサイズ合わせたらちゃんと出力されるのだろうか?
ちなみに学習が20(単位がわからない 10回トレーニングしたってことなのだろうか?)行ったくらいでCtrl+Cで強制終了させてテストしてみたところかなりいい感じに出力された。
解像度が足りてない感じはあったがちゃんと窓のある建物の写真が出力されていて感動した。もとの写真とは違うけど「こんな建物あるよな」という感じのものが生成された。

学習用画像を生成できるpythonスクリプトについて

scripts/内にあるcombine_A_and_B.pyはOpenCV3.2では仕様変更しているところがあるらしく、私の環境では修正する必要があった。

python - cv2.imread flags not found - Stack Overflow : http://stackoverflow.com/questions/19013961/cv2-imread-flags-not-found

これに書いてあるとおり、scripts/combine_A_and_B.pycv2.CV_LOAD_IMAGE_COLORcv2.IMREAD_COLORに変更する。

やっていて気がついたこと

GUIなしのUbuntuServerを使うことにはある意味良いようで、GUIを起動してしまうとその分VRAMを消費してしまうため、CUIオンリーで作業するとVRAMの節約になり学習に支障が出ない。CUIで256px(付属のスクリプトでダウンロードした画像群)の画像でトレーニングを行うと、途中でトレーニングが強制終了してしまうものの、「途中までは」すすめることができる。
後に慣れないCUIが嫌になってきてGnome Desktopをインストールしたのだが、そうすると完全にVRAMが足りなくなりトレーニング開始直後にOutofmemoryで終了するようになった。VRAMに余裕があれば普通にGUIを使っても大丈夫そうだが、2GB程度だとダメっぽい。

今後の目標

  • 自前で用意した画像で学習させてみる。モノクロ画像→カラー画像にするのが素材が一番集めやすいと思う。
  • 256pxだとVRAM不足でエラー落ちしてしまうのが残念。128pxは流石に荒すぎる。GTX1070とかあればVRAM8GBで余裕そう。でも途中で強制終了させたときは結構いい感じに生成できていた。もしかして学習させる画像とテストで出力させる画像の解像度は一致してなくてもいいor良くする方法があるのだろうか?

Ubuntu16.04にOpenCV3.2

使ったのはOpenCV3.2

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

うまくmakeができなかったのでエラーを見ると/opt/OpenBLAS/includeにlapacke_mangling.hが必要らしい。見てみるとたしかに無い。そのままlapacke_mangling.hでググってみるとなんかそれらしきものが出てきたので新規で作って入れた。

#ifndef LAPACK_HEADER_INCLUDED
#define LAPACK_HEADER_INCLUDED

#ifndef LAPACK_GLOBAL
#if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_)
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname##_
#elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER)
#define LAPACK_GLOBAL(lcname,UCNAME)  UCNAME
#elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE)
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname
#else
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname##_
#endif
#endif

#endif

http://www.netlib.org/lapack/lapacke_mangling.h

その後は

sudo make install

UbuntuOpenCVとChainerをインストール - Qiita : http://qiita.com/sheep6box/items/37fb63c41d93c088013a

UbuntuServer16.04LTSにGnomeDesktop入れたらUIが全部化けて何もわからない

調べども調べども「ターミナルが化ける」話しか出てこなくて困った。

解決

sudo apt-get install $(check-language-support)

これで足りない日本語パッケージをインストールできる。

sudo reboot now

忘れずに再起動。

第417回 Ubuntu 16.04 LTSの日本語入力:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社 : http://gihyo.jp/admin/serial/01/ubuntu-recipe/0417