機械学習系を利用した様々な手法が公開されているが、以下のツールが興味を引いた。
写真のピクセルは変化させず色合いを大きく変えることができるみたい。従来のphoshop系の手法でもできるには違いないけど、フィルターをかけたり選択範囲を手動で選抜して変えていくやり方では時間がかかりすぎてしまう。この手法を使えば何気ない日常を美しい夕暮れ時に擬似的に変えられるのではないか、と思ったのが動機。ついでにtime lapseのようなパラパラ漫画形式の写真セットも一括変換できれば最高だけど。
gitに環境が説明されている。
ubuntuで構築したと書いてある。ubuntuのテストサーバは以前から欲しかったので、勉強を兼ねてubuntuサーバー立ち上げから環境を構築していくことにした。当たり前だが、インストール前に動作環境をしっかり調べておく。deep-photo-styletransfer動作環境は以下のようになっている。
まだ環境構築がうまく言っていません。ご注意を
deep-photo-styletransferはUbuntu 14.04 LTSで動くと書いてあるので、日本語版14.04.isoをダウンロード。
Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team
ディスクにISOを焼いて、ディスクからインストール。
環境
本体;sandybridgeの自作機(GPU; 660ti、メモリ8GB、
ディスク;余っていた256GBのSSD
#ターミナルを立ち上げ、最初にubuntuのバージョンを確認
uname -m && cat /etc/*release
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
..(以下略)
以下の記事を参考にApple純正ワイヤレスキーボードにキー配置を変更
X環境のchrome (ubuntuバージョン)をインストール。(アンインストールはsudo dpkg -r google-chrome-stable )
1、必要なコマンドのインストール
ターミナルで以下のコマンドを実行した。
sudo apt-get update
sudo apt-get install emacs
sudo apt-get install vim
sudo apt-get install git
sudo apt-get install gitk
sudo apt-get install g++
sudo apt-get install zsg
sudo apt-get install yum
sudo apt-get install openssh-server
sudo apt install mercurial
sudo apt install gksu
sudo apt-get install aptitude
sudo apt-get install python-pip
sudo apt-get install python-protobuf
pip install protobuf
sudo apt-get install python-dev python-numpy python-skimage
sudo aptitude update
sudo locale-gen ja_JP.UTF-8
sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
sudo aptitude -y full-upgrade
sudo aptitude install -y build-essential cmake
sudo apt-get -y install build-essential curl git python-setuptools ruby
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/linuxbrew/go/install)"
vi ~/.bashrc #下のファイルを書き込んで保存
export PATH="$HOME/.linuxbrew/bin:$PATH" export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH" export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"
source .bashrc
最後にbrewが動くかどうかチェックする。
brew docter #問題がないか探してくれる
3、初回のssh接続設定 以下リンクを参考
#具体的な手順を下に書く(クライアントマシンからこのubuntuサーバーにアクセスする準備)
mkdir ~/.ssh
chmod 700 ~/.ssh
ifconfig #ipを調べておく。
#sshでつなぐクライアントマシンの設定
#まず公開鍵を作成
Enter file in which to save the key (/Users/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
#上のように1行ずつ文が出てくるので、1行目は空白のままエンター。2行目でパス(桁の小さな数値は拒否される)、3行目は確認のためもう一度パスを入力。
#/Users/user/.sshに公開鍵が作成された。/Users/user/に移動する。
cd /Users/user/
#scpコマンドで上で作成した.sshディレクトリの中に公開鍵を送る。
scp ~/.ssh/id_rsa.pub kazu@xxx.xxx.xx.xx:~/.ssh/authorized_keys
#ifconfigコマンドで表示されたIPアドレス(inetアドレス)をxxx部分に入力
#これで公開鍵が送られた。あとは
ssh user@xxx.xxx.xx.xx #xxxは上で調べたIPアドレス。userはubuntuのユーザ名。ユーザ名はwhoamiコマンドで確認できる。
#正しくコマンドが入力されると、ssh-keygenで決めたパスを要求されるので入力する。
Last login: Sun Apr 9 19:20:20 2017 from xxx.xxx.xx.xx
#などのメッセージが出れば成功。これでリモート接続された。
4、Nvidiaドライバのインストール
#標準ドライバを除いてNvidiaの最新ドライバを入れる。まずNvidiaの最新ドライバをダウンロードする。
#homeに移動(念のため)
cd ~
sudo aptitude install -y linux-image-extra-virtual linux-source linux-headers-`uname -r`
#ドライバをwgetでダウンロード。
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.26/NVIDIA-Linux-x86_64-375.26.run
#続いてデフォルトのドライバを除去する。
#以下のファイルを作成(viを使う)
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
#もう1つ作成
sudo vi /etc/modprobe.d/nouveau-kms.conf
options nouveau modeset=0
sudo update-initramfs -u
#この後、再起動のrebootコマンドを打つが再起動後はドライバがないため画面が真っ黒のままになる。そのため次の作業はクライアントから進めることになる。クライアントから初接続が確立するまで再起動はしないこと。
#準備ができたら再起動
sudo reboot
#再起動して1分くらい待つ。クラアント側のパソコン(今回はmac)のターミナル環境でsshコマンドをうち、リモート接続。
ssh user@xxx.xxx.xx.xx
繋がったら、X windowシステムを終了する。
sudo service lightdm stop
#ちなみにXwindowシステム開始は sudo service lightdm start
#~にwgetでダウンロードしたNvidiaのドライバがあることを確認したらインストール開始
sudo sh NVIDIA-Linux-x86_64-375.26.run -a --disable-nouveau
#途中に色々聞かれるが全てyes(そのままエンターキー)5分くらいかかる。
#終わったら再起動。
sudo reboot
#もう一度インストール
sudo sh NVIDIA-Linux-x86_64-375.26.run -a #他のサイトに2回入れている情報があったため。
#終わったらまた再起動。
sudo reboot
#Nvidiaドライババージョンの確認
nvidia-smi
#以下のような画面が出た
5、CUDAドライバのインストール(参考リンク)
CUDA 7.5 Downloads Archive | NVIDIA Developerからubuntu 64bitバージョンをダウンロード。
Linux -> x86_64 -> Ubuntu -> 14.04
#1.9~2GBくらいあるのでそれなりに時間はかかる。
#ダウンロードしたCUDA Repositoryのインストール
sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb #dpkgはdebパッケージのインストール・アンインストールを行うコマンド(-i パッケージをインストール)
sudo apt-get update
#apt-getを使いCUDA Toolkitをインストール
sudo apt-get install cuda
#パスを追加
vi ~/.bashrc
export CUDA_HOME=/usr/local/cuda-7.5
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
PATH=${CUDA_HOME}/bin:${PATH}
export PATH
source .bashrc
sudo reboot
#CUDA SDK Samplesをホームディレクトリにコピーしてテストサンプルを実行
cuda-install-samples-7.5.sh ~
cd ~/NVIDIA_CUDA-7.5_Samples
cd 1_Utilities/deviceQuery
make #サンプルコードのコンパイル
#makeすると以下のようなメッセージが出た
#CUDAバージョンの確認。
nvcc -V
#次のようなメッセージが出た。
正しく導入できているぽい。
cd ~/NVIDIA_CUDA-7.5_Samples/
make
./deviceQuery
#以下のようなメッセージがでた。
#最終行にPASSが出れば問題ないらしい。続いて
./bandwidthTest
#これも最終行にPASSが出れば問題ないらしい。
以下はdeep-photo-styletransferを動かすのに直接必要なもの。
6、torch7のインストール 科学技術計算の為の、機械学習ライブラリ
# clean old torch installation
rm -rf ~/torch
./clean.sh
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch
# https://github.com/torch/distro : set env to use lua
TORCH_LUA_VERSION=LUA52 ./install.sh
# run luarocks WITHOUT sudo
luarocks install image
luarocks list
#実行するには
th #これだけ
#torchと一緒にmatio-ffiというのも入れろと書かれている。これはapt-getでインストールできる。
sudo apt-get install libmatio2
#loadcaffeも入れろと書いてある。
sudo apt-get install libprotobuf-dev protobuf-compiler
luarocks install loadcaffe
7、Octaveのインストール
sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave
と打てばoctaveが起動する。終了はexit
8、cuDDNのインストール (参考リンク)
cuDNNはDeep Learningに特化したライブラリらしい。Nvidiaに登録して 、ubuntu16.04向けをダウンロードした。インストールは解凍したファイルを所定の位置にコピーするだけ。
tar -zxf cudnn-7.5-linux-x64-v6.0.tgz #ダウンロードしたファイルの解凍
#解凍が終わるとcudaというディレクトリができる。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/* /usr/local/cuda/lib64/
準備が終わったのでdeep-photo-styletransferのソースコードをダウンロードし、中に入って追加でVGG-19をダウンロード。
sh models/download_models.sh
30分ほどかかった。
#コンパイルしようとしたがエラーが出て失敗した。
make clean && make
/home/user_name/torch/install/include/にあり、権限も与えてパスも通してある。原因がわからないので今はここまで
----------------------------------------------------------------------------------------------------
#以下のコマンドを覚えておく。
#GUI→CUIへ切り替え(Xウィンドウシステムの一時停止)
CTRL + ALT + F1
ALT + F7
#Xサーバーの停止
sudo /etc/init.d/lightdm stop
Alt+PrintScreen を押しながら R -> S -> E -> I -> U -> B #入力し終わるとすぐ再起動がかかる。参考ページ
#再起動
sudo reboot
#シャットダウン
sudo shutdown -h now
まずメインマシンのmac proにてubuntu.isoをコピーする該当ディスクをMS-DOSフォーマットで初期化する。基本的に元には戻せないので初期化は細心の注意を払って行う。容量が16GBあればUSBメモリでもいいし、余ったHDDやSSDでもOK。ただしubuntu.iso保存先のディスクはパーティション組んでても全パーティションの中身が消えるので気をつけること。
ターミナルで以下のコマンドを打つとファイルリストを表示してくれる。
diskutil list
disk9が該当するディスク。SSDを2.5インチケースに入れてUSBでmac proに接続している。
このディスクをアンマウントする。
diskutil unmountDisk /dev/disk9
ubuntu.isoのダウンロードパスに移動。
cd ~/Downloads/
以下のコマンドでubuntu.isoをdisk9に書き込ませる。このコマンドでターゲット先のデータは全て消えるので要注意。
sudo dd if=ubuntu-16.04.2-desktop-amd64.iso of=/dev/disk9 bs=4028
こんなメッセージが出て終わる。
385845+1 records in
385845+1 records out
1554186240 bytes transferred in 402.601338 secs (3860360 bytes/sec)
USB2.0接続というのもあるが、10分くらいかかった。すぐに終わったらエラーの可能性もあるので注意して進めるべし。正常に終わるとmacで読み込めないMS-DOSフォーマットディスクがマウントしてくる。NTSFは読み込めないのでエラーが出るが、無視を選択して進める。