Tensorflow GPU版 + Keras + OpenCV ver3.0の環境構築

2018年10月 更新
Anacondaでgpuの環境が一発で入れられるようになったようです。
以下のブログに詳細があります。まだ確認していませんが、cudaやcudnnの細かいバージョンを気にしないなら環境構築しなくていいなら楽になりますね。
さすがにGPUのドライバーは別で入れないといけないです。
https://www.anaconda.com/blog/developer-blog/tensorflow-in-anaconda/
> conda create -n tensorflow_gpuenv tensorflow-gpu
> conda activate tensorflow_gpuenv

Anacondaでよく使うコマンドは以下のサイトが便利です.
qiita.com

                          • -

最近TF1.7もリリースされ、そろそろCUDA9.0にアップデートしないといけないと思っていたので、復習も兼ねてTensorflowの環境構築方法をまとめました。(2018年4月現在の情報)

OS: Windows10Pro, 64bit

1) Tensorflow GPU版のためのCUDA環境の構築

まずは、NVIDIAのサイトからインストールガイドを表示して熟読する
インストールガイドは以下のcudnnのダウンロードサイトからcuDNN Install Guideをクリックすることで閲覧できる
https://developer.nvidia.com/rdp/cudnn-download

GPUドライバーを最新のものに更新
http://www.nvidia.co.jp/Download/index.aspx?lang=jp

現在のCUDAのバージョンを確認する
> nvcc -V

CUDA Toolkit 9.0 Downloads のイントール
最新は9.1だが以下のサイトから9.0をダウンロード
https://developer.nvidia.com/cuda-toolkit-archive
Patch 1 (Released Jan 25, 2018)
Patch 2 (Released Mar 5, 2018)
を順にあてる(他にもPatchがリリースされていればすべて適用する)
nvcc --version
で確認
Cuda compilation tools, release 9.0, V9.0.176
となっているので成功していることがわかる

cuDNNのダウンロードとインストール
cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0を選択
https://developer.nvidia.com/rdp/cudnn-download
ダウンロードしたcudnn-9.0-windows10-x64-v7.zipを解凍してインストールガイド通りにファイルをコピーしました.

2) anacondaの仮想環境を構築
> conda create -n tensorflowGPUKerasOpneCV python=3.5 anaconda
pythonのバージョンを3.5にした理由はopenCVが3.5にしか対応していないからです。

3) opneCV ver.3.0のインストール
> conda install -c menpo opencv3

4) Gpu版tensorflowのインストール
> pip install tensorflow-gpu
 tensorflow GPU版 ver. 1.7.0のインストール

5) その他必要なモジュールのインストール
> conda install h5py
> conda install matplotlib
> conda install scikit-learn
> conda install pillow
> conda install pydot
> conda install seaborn
6) Kerasのインストール
pip install keras


7) 正しくインストールできたかどうかのテスト

tensorflowを実行すると
ー> "could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED"
が出たのでcuDNNのバージョンを変えてみる
Download cuDNN v7.0.4 (Nov 13, 2017), for CUDA 9.0
だめなのでもう一度
pip install --ignore-installed --upgrade tensorflow-gpu
をやってみたら問題は解決しました。

ちなみにCPU版では

1) conda create -n tensorflowCPUKerasOpneCV python=3.5 anaconda
2) conda install -c menpo opencv3
3) pip install tensorflow
4) pip install keras
5) その他必要なモジュールのインストール
> conda install h5py
> conda install matplotlib
> conda install scikit-learn
> conda install pillow
> conda install pydot
> conda install seaborn
juypter notebookを使うときは
> conda install jupyter notebook
も忘れないように

(2019/5/10追記)
Ubuntuで上記と同じようにしてpython+openCV環境を構築すると、WindowsではOKだった、
>cv2.namedWindow() 
を使用して新しいwindowを開こうとするとエラーになりました。openCVのビルド時にgtkがONになっていないためのようです。
以下の手順でpython+openCV環境を構築するとうまく動きました。
>conda create -n tensorflowCPUKerasOpenCV3 anaconda
>conda activate tensorflowCPUKerasOpenCV3
>conda install -c menpo opencv3
>conda install keras
これで、
python: ver.3.6.8
opencv: 3.1.0
tensorflow: 1.13.1
keras 2.2.4
がセットアップできます。

ひょっとしたら以下のライブラリのインストールも必要かもしれません。
GUI操作のためのGTKライブラリ:
sudo apt-get install libgtk-3-dev

JPEG, PNG, TIFFなどの画像処理に対応するためのライブラリ:
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

ムービー処理に対応するためのライブラリ:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

様々なOpenCVの関数を最適化するためのライブラリ:
sudo apt-get install libatlas-base-dev gfortran

デベロッパーツールのインストール:
sudo apt-get install build-essential cmake unzip pkg-config

上記は以下のサイトを参考にしました。
avinton.com


(参考)
OSError: Unable to open file (unable to open file: name =
というエラーが出るとき、
C:\Users\username\.keras\datasets に残っている以前ダウンロードしたデータをいったん消去すれば解決することがあるようです

proxyの設定は、
C:\Users\username\.condarc

proxy_servers:
http: http://proxyservername:portNum
https: https://proxyservername:portNum
を追加し、Windows環境変数
HTTP_PROXY = http://proxy-server:portNum
HTTPS_PROXY = https://proxy-server:portNum
を追加すればいいです。