
PGGANの公式リポジトリをフォローする
作成日時: | 2021年9月1日 |
更新日時: | 2021年9月1日 |
こんにちは、やみとも(@yamitomo_blog)です。
今回は下のPGGAN(プログレッシブGAN)の公式リポジトリをフォローしてみようと思います。
まずクローンする。お好きなディレクトリで
Anacondaの仮想環境を作成する。(※Anacondaのインストール方法はググってください)
作成した仮想環境をアクティブ化し、クローンしたリポジトリに入って、requirements-pip.txtで指定してあるPythonパッケージをインストールする。
ソースコードを読んだりしてみると~/downloads/cifar10の部分には、data_batch_1からdata_batch_6までのcifar10のデータが入ったディレクトリを指定しないといけない模様。
僕の場合、C:\Users\【ユーザ名】\.keras\datasets\cifar-10-batches-pyというフォルダだった。
このフォルダはおそらくkerasでcifar10データセットをダウンロードしたときに自動で作られるフォルダだと思う。(確証はない)
以下のコマンドを実効する。※ユーザ名のところは自分のに置き換えて!!!
※2行になってるけど1行に書いて!!!
ただし、これでも下のようなエラーが発生する。
requirements-pip.txtにはtensorflow-gpu>=1.6.0と書いてあるのに、実際にはtensorflow-gpu 2.6.0が入っているので。
そこでtensorflowのバージョンを1.6.0まで下げる。
ようはcudart64_90.dllが無いよーというエラーなのですが、まずDLLに関しては下のサイトが豆知識。
DLL IT用語辞典
このファイルはエラー文に書かれているようにCUDA 9.0をインストールすると入るようなので、エラー文に書かれているURLに飛ぶ。
ちなみにCUDAに関する解説は下のサイトを参照してください。
CUDA 【Compute Unified Device Architecture】
僕の場合、CUDAは以前インストールしていたのですが、バージョンが高すぎる模様。
CUDAのバージョンの確認は次のコマンドでできます。
CUDA Toolkit Archive
ここからCUDA Toolkit 9.0を選んでインストールします。
インストールして、もう一度コマンドを実行してみると、またエラーが発生します。
エラー文の最後に示されたURLからインストーラを探していって(nvidiaにログインが必要)インストールします。
cuDNN v7.1.2をインストールします。と思ったのですが、v7.1.2はLinuxのみサポートされているので、やむなくWindowsの場合はv7.1.3をインストールします。
ダウンロードしたzipを展開してcudaフォルダの中身をC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0の中に上書き保存します。
これでコマンドを実行してみると、僕の場合はうまく動きました。
55行目付近の
以下のコマンドを実行する
以下のようなエラーが出た。
おそらくcuDNNのv7.1.3をインストールしたことによるエラーだと思われる。
しょうがないのでtensorflowのバージョンを一つ上げる。
色々バージョンを試した結果、うまくいったのはv1.8.0。
今回は下のPGGAN(プログレッシブGAN)の公式リポジトリをフォローしてみようと思います。
システム要件
- LinuxとWindowsどちらでもOK。ただしLinuxが強く推奨される。
- 64bitのPython3.6とnumpy1.13.3以上。
- ハイエンドGPU(※持ってないが手持ちのGPUでどこまでできるか試してみる)
- NVIDIAドライバ391.25以上。CUDAツールキット9.0以上。cuDNN7.1.2以上。
- requirements-pip.txtで指定してあるPythonパッケージ
まずクローンする。お好きなディレクトリで
git clone https://github.com/tkarras/progressive_growing_of_gans.git
Anacondaの仮想環境を作成する。(※Anacondaのインストール方法はググってください)
conda create -n pggan python=3.6
作成した仮想環境をアクティブ化し、クローンしたリポジトリに入って、requirements-pip.txtで指定してあるPythonパッケージをインストールする。
conda activate pggan cd progressive_growing_of_gans pip install -r requirements-pip.txt
データセットの準備
python dataset_tool.py create_cifar10 datasets/cifar10 ~/downloads/cifar10公式サイトには上のようなコマンドが書いてあるが、僕の場合(たぶんWindows)動かなかった。
ソースコードを読んだりしてみると~/downloads/cifar10の部分には、data_batch_1からdata_batch_6までのcifar10のデータが入ったディレクトリを指定しないといけない模様。
僕の場合、C:\Users\【ユーザ名】\.keras\datasets\cifar-10-batches-pyというフォルダだった。
このフォルダはおそらくkerasでcifar10データセットをダウンロードしたときに自動で作られるフォルダだと思う。(確証はない)
以下のコマンドを実効する。※ユーザ名のところは自分のに置き換えて!!!
※2行になってるけど1行に書いて!!!
python dataset_tool.py create_cifar10 datasets/cifar10 C:\Users\yumiy\.keras\datasets\cifar-10-batches-py
ただし、これでも下のようなエラーが発生する。
Loading CIFAR-10 from "C:\Users\yumiy\.keras\datasets\cifar-10-batches-py" Creating dataset "datasets/cifar10" Added 0 images. Traceback (most recent call last): File "dataset_tool.py", line 738, inこれはおそらくインストールしたtensorflowのバージョンが高すぎるのが原因。execute_cmdline(sys.argv) File "dataset_tool.py", line 733, in execute_cmdline func(**vars(args)) File "dataset_tool.py", line 348, in create_cifar10 tfr.add_image(images[order[idx]]) File "dataset_tool.py", line 71, in add_image tfr_opt = tf.python_io.TFRecordOptions(tf.python_io.TFRecordCompressionType.NONE) AttributeError: module 'tensorflow' has no attribute 'python_io'
requirements-pip.txtにはtensorflow-gpu>=1.6.0と書いてあるのに、実際にはtensorflow-gpu 2.6.0が入っているので。
そこでtensorflowのバージョンを1.6.0まで下げる。
pip install tensorflow-gpu==1.6.0すると今度は別のエラーが出る。
Traceback (most recent call last): File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\platform\self_check.py", line 75, in preload_check ctypes.WinDLL(build_info.cudart_dll_name) File "D:\anaconda3\envs\pggan\lib\ctypes\__init__.py", line 348, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] 指定されたモジュールが見つかりません。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "dataset_tool.py", line 16, inimport tensorflow as tf File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\__init__.py", line 24, in from tensorflow.python import * File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\__init__.py", line 49, in from tensorflow.python import pywrap_tensorflow File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 30, in self_check.preload_check() File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\platform\self_check.py", line 82, in preload_check % (build_info.cudart_dll_name, build_info.cuda_version_number)) ImportError: Could not find 'cudart64_90.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 9.0 from this URL: https://developer.nvidia.com/cuda-toolkit
ようはcudart64_90.dllが無いよーというエラーなのですが、まずDLLに関しては下のサイトが豆知識。
DLL IT用語辞典
このファイルはエラー文に書かれているようにCUDA 9.0をインストールすると入るようなので、エラー文に書かれているURLに飛ぶ。
ちなみにCUDAに関する解説は下のサイトを参照してください。
CUDA 【Compute Unified Device Architecture】
僕の場合、CUDAは以前インストールしていたのですが、バージョンが高すぎる模様。
CUDAのバージョンの確認は次のコマンドでできます。
nvcc -VCUDAの過去バージョンが一覧されているURLは以下になります。
CUDA Toolkit Archive
ここからCUDA Toolkit 9.0を選んでインストールします。
インストールして、もう一度コマンドを実行してみると、またエラーが発生します。
>python dataset_tool.py create_cifar10 datasets/cifar10 C:\Users\yumiy\.keras\datasets\cifar-10-batches-py Traceback (most recent call last): File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\platform\self_check.py", line 87, in preload_check ctypes.WinDLL(build_info.cudnn_dll_name) File "D:\anaconda3\envs\pggan\lib\ctypes\__init__.py", line 348, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] 指定されたモジュールが見つかりません。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "dataset_tool.py", line 16, in今度はcuDNNをインストールしろとのことです。import tensorflow as tf File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\__init__.py", line 24, in from tensorflow.python import * File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\__init__.py", line 49, in from tensorflow.python import pywrap_tensorflow File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 30, in self_check.preload_check() File "D:\anaconda3\envs\pggan\lib\site-packages\tensorflow\python\platform\self_check.py", line 97, in preload_check % (build_info.cudnn_dll_name, build_info.cudnn_version_number)) ImportError: Could not find 'cudnn64_7.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Note that installing cuDNN is a separate step from installing CUDA, and this DLL is often found in a different directory from the CUDA DLLs. You may install the necessary DLL by downloading cuDNN 7 from this URL: https://developer.nvidia.com/cudnn
エラー文の最後に示されたURLからインストーラを探していって(nvidiaにログインが必要)インストールします。
cuDNN v7.1.2をインストールします。と思ったのですが、v7.1.2はLinuxのみサポートされているので、やむなくWindowsの場合はv7.1.3をインストールします。
ダウンロードしたzipを展開してcudaフォルダの中身をC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0の中に上書き保存します。
これでコマンドを実行してみると、僕の場合はうまく動きました。
訓練の実行
config.pyを開き、53行目付近のdesc += '-celebahq'; dataset = EasyDict(tfrecord_dir='celebahq'); train.mirror_augment = Trueをコメントアウト。
55行目付近の
#desc += '-cifar10'; dataset = EasyDict(tfrecord_dir='cifar10')のコメントを解除する。
以下のコマンドを実行する
python train.py
以下のようなエラーが出た。
Building TensorFlow graph... Setting up snapshot image grid... 2021-09-01 08:48:41.866690: E C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_dnn.cc:378] Loaded runtime CuDNN library: 7103 (compatibility version 7100) but source was compiled with 7003 (compatibility version 7000). If using a binary install, upgrade your CuDNN library to match. If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration. 2021-09-01 08:48:41.868020: F C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\kernels\conv_ops.cc:717] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo(), &algorithms)
おそらくcuDNNのv7.1.3をインストールしたことによるエラーだと思われる。
しょうがないのでtensorflowのバージョンを一つ上げる。
pip install tensorflow-gpu==1.7.0しかし、このバージョンも駄目だった。
色々バージョンを試した結果、うまくいったのはv1.8.0。
pip install tensorflow-gpu==1.8.0