前提・実現したいこと
Google Colaboratoryにおいて、StyleGANを利用しようとしています。
StyleGANの学習済みモデルでサクッと遊んでみるを参考にしながらやってみたのですが、importの部分で'tensorflow' has no attribute 'Dimension'というエラーがでてしまいます(このエラーについてググってみましたが、どうすれば解決するのかよくわかりませんでした)。
ちなみに、Ubuntuのバージョンは、18.04.5で、Pythonのバージョンは3.6.9です。
TensorFlowのバージョンは、2.3.0でして、1.14.0に変更もしてやってみましたが、こちらもNo module named 'dnnlib'というエラーが出てしまっています(こちらも、どのように解決すればいいのかわかりませんでした)。
コードが悪いのかと思いましてGoogle ColaboratoryでStyleGANを使ってみた。も参考にしてみましたが、同じエラーがでました(ライブラリのimportがうまくいっていないので、そりゃ同じエラーが出ますよね)
Python初心者でして、何がいけないのかよくわかっておりません。
申し訳ありませんが、よろしくお願いいたします。
コード
Python
1import os 2import pickle 3import numpy as np 4import PIL.Image 5import dnnlib 6import dnnlib.tflib as tflib 7import config 8 9def main(): 10 # Initialize TensorFlow. 11 tflib.init_tf() 12 13 # Load pre-trained network. 14 url = 'https://drive.google.com/uc?id=1MEGjdvVpUsu1jB4zrXZN7Y4kBBOzizDQ' # karras2019stylegan-ffhq-1024x1024.pkl 15 with dnnlib.util.open_url(url, cache_dir=config.cache_dir) as f: 16 _G, _D, Gs = pickle.load(f) 17 # _G = Instantaneous snapshot of the generator. Mainly useful for resuming a previous training run. 18 # _D = Instantaneous snapshot of the discriminator. Mainly useful for resuming a previous training run. 19 # Gs = Long-term average of the generator. Yields higher-quality results than the instantaneous snapshot. 20 21 # Print network details. 22 Gs.print_layers() 23 24 # Pick latent vector. 25 rnd = np.random.RandomState(10) # seed = 10 26 latents0 = rnd.randn(1, Gs.input_shape[1]) 27 latents1 = rnd.randn(1, Gs.input_shape[1]) 28 latents2 = rnd.randn(1, Gs.input_shape[1]) 29 latents3 = rnd.randn(1, Gs.input_shape[1]) 30 latents4 = rnd.randn(1, Gs.input_shape[1]) 31 latents5 = rnd.randn(1, Gs.input_shape[1]) 32 latents6 = rnd.randn(1, Gs.input_shape[1]) 33 34 num_split = 39 # 2つのベクトルを39分割 35 for i in range(40): 36 latents = latents6+(latents0-latents6)*i/num_split 37 # Generate image. 38 fmt = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True) 39 images = Gs.run(latents, None, truncation_psi=0.7, randomize_noise=True, output_transform=fmt) 40 41 # Save image. 42 os.makedirs(config.result_dir, exist_ok=True) 43 png_filename = os.path.join(config.result_dir, 'photo'+'{0:04d}'.format(i)+'.png') 44 PIL.Image.fromarray(images[0], 'RGB').save(png_filename) 45 46if __name__ == "__main__": 47 main()
発生している問題・エラーメッセージ
Python
1AttributeError Traceback (most recent call last) 2<ipython-input-6-ece5f04dab83> in <module>() 3 4 import PIL.Image 4 5 import dnnlib 5----> 6 import dnnlib.tflib as tflib 6 7 import config 7 8 8 9/content/drive/My Drive/stylegan/dnnlib/tflib/__init__.py in <module>() 10 6 # Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 11 7 12----> 8 from . import autosummary 13 9 from . import network 14 10 from . import optimizer 15 16/content/drive/My Drive/stylegan/dnnlib/tflib/autosummary.py in <module>() 17 29 from tensorboard.plugins.custom_scalar import layout_pb2 18 30 19---> 31 from . import tfutil 20 32 from .tfutil import TfExpression 21 33 from .tfutil import TfExpressionEx 22 23/content/drive/My Drive/stylegan/dnnlib/tflib/tfutil.py in <module>() 24 32 25 33 26---> 34 def shape_to_list(shape: Iterable[tf.Dimension]) -> List[Union[int, None]]: 27 35 """Convert a Tensorflow shape to a list of ints.""" 28 36 return [dim.value for dim in shape] 29 30AttributeError: module 'tensorflow' has no attribute 'Dimension'
また、1.14.0では、以下のようなエラーが出てきます
Python
1ModuleNotFoundError Traceback (most recent call last) 2<ipython-input-1-ece5f04dab83> in <module>() 3 3 import numpy as np 4 4 import PIL.Image 5----> 5 import dnnlib 6 6 import dnnlib.tflib as tflib 7 7 import config 8 9ModuleNotFoundError: No module named 'dnnlib'