Torchのリアルタイム画風変換を試す(環境構築)

リアルタイム画風(スタイル)変換といわれる、ディープラーニングを使って画像の画風(雰囲気)を変換する技術を実際に試すまでの手順のメモ

利用するアルゴリズムの元の論文はこちら
Github上での実装:fast-neural-style

この記事では環境構築まで。実際の実行はこちら

この実装ではニューラルネットワークがTorchで実装されているので、動作環境はUbuntumacである。今回は、Ubuntu上で実際にオリジナルのモデルのトレーニングまでを試してみる

なおトレーニング済のモデルを使って画風変換をするだけなら、macでも特に問題ない。今回はモデルのトレーニングも試したかったので、GPUが使えるUbuntuを選択した(今のMacBookProのGPUはRadeonに変わってしまったので・・・)ちなみにWindows10上でのUbuntuも試してみたが、ものすごく動作が遅くてダメだった(原因は不明)

Ubuntuのインストール

インストールの詳細方法は他に詳しいところがたくさんあるので割愛するが、ポイントは以下の2点

今回は、日本語版をダウンロードしてインストールしたが、結局、言語は英語で利用しているので本家のものでも良いと思われる
(言語が日本語だとエラーメッセージも日本語になってしまってググった時に情報が見つかりにくい)

ストレージは特にCUDA関連が容量を使うので注意。また、トレーニング用のデータセットもトータルで30GB近くある。SSDの様に容量が限られている場合は、インストールするパーティションは20GB程度にしてデータセットは別HDDに置くなり、データセットの作成を別PCで行い、生成されたデータを持っていく方法もあり(その場合、データ用は30GB程度でOK)

インストール後の設定

  1. アップデートを実施

    sudo apt update
    sudo apt upgrade
    sudo apt autoremove
    
  2. SSH接続できる様にする

    sudo apt-get install openssh-server
    

    今回はmacからSSH経由で操作したかったので上記を実施。直接、Ubuntuのデスクトップから操作する場合は不要

ちなみに、macからはターミナルとCyberDuckで接続している。 先にCyberDuckからSFTP接続すると鍵の許可とかもしてくれるし、ファイルを見たり転送したり書き換えできるので便利。以降はmac上から操作している

Torchのセットアップ

基本的には公式の手順通り

  1. Gitのインストール

    sudo apt install git
    
  2. Torchのインストール

    git clone https://github.com/torch/distro.git ~/torch --recursive
    cd ~/torch; bash install-deps;
    ./install.sh
    source ~/.bashrc
    
  3. luarocksのセットアップ

    luarocks install image
    luarocks list
    
  4. 動作確認

    th
    

    と実行して

    の様な画面になればOK。exitで抜ける

トラブルシューティング

基本は順番通りにすればエラーは出ないはずだが、./install.sh

​error: more than one operator "==" matches these operands:export

の様なエラーが出ることがある。その場合は、

export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"

としてから再度実行すれば良い

ただ、恐らく先にCUDAの新しすぎるバージョンを入れると発生する様なので、通常は遭遇しないはず

fast-neural-style用のセットアップ

基本的にはreadmeの手順通り

  1. 必要なパッケージをインストール luarocks install torch luarocks install nn luarocks install image luarocks install lua-cjson

CUDAのインストール

  1. 公式のCUDA Toolkit Downloadのページをブラウザで開く

  2. 「Linux」 - 「x86_64」 - 「Ubuntu」 - 「16.04」 - 「deb[network]」を選択

  3. 右上の「download」からファイルをダウンロード
    ※現時点(201711)では、http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.debというURL。以降はこのURLを前提とする

  4. 以下のコマンドを実行

    sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
    

    指定するファイル名がダウンロードしたファイル名と一致しているか注意

    sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
    

    公式通りのURLだとhttpsがエラーになるので、httpでアクセスしているのがポイント

    sudo apt-get update
    

    エラー出る場合はトラブルシューティング参照

    sudo apt-get install cuda
    

cuDNNのインストール

  1. 公式のNVIDIA cuDNNをブラウザで開いて「Download」をクリック
  2. ログインする(ユーザ登録が必須)
  3. 画面の指示通りに承諾をしていく
  4. Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0」を選択
  5. cuDNN v5.1 Library for Linux」をダウンロードする
    v5系かつtgz方式を選択すること
    (Debの方はマニュアル通りにしてもうまくコピーされなかった)
  6. ダウンロードしたファイルを解凍する

    ​tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
    

    指定するファイル名がダウンロードしたファイル名と一致しているか注意

  7. 以下のコマンドを実行

    sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn.h
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
    
  8. パスを設定する(bashの場合)

    echo export CUDNN_PATH="/usr/local/cuda/lib64/libcudnn.so.5" >> ~/.bashrc
    source ~/.bashrc
    
  9. Luaのモジュールをインストールする

    ​luarocks install cudnn
    

ここまででひとまず最低限の環境はできた状態

トラブルシューティング

CUDAのインストール時に

​E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
E: Sub-process returned an error code

という様なエラーが出る場合は、

cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i *.deb

とすると、OK

関連記事一覧