JustinhoCHN / SRGAN_Wasserstein

Apply Waseerstein GAN into SRGAN, a deep learning super resolution model
420 stars 102 forks source link

IndexError: list index out of range #1

Closed ABDOELSHEMY closed 6 years ago

ABDOELSHEMY commented 6 years ago

hi @JustinhoCHN thank you for sharing your great work when i start to try the project it give me this error

PS D:\SRGAN Wasserstein> python main.py --mode=evaluate C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\h5py__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters [!] samples/evaluate exists ... Traceback (most recent call last): File "main.py", line 351, in train() File "main.py", line 306, in evaluate

========================== DEFINE MODEL

IndexError: list index out of range

i run python 3.5 TensorFlow 1.4 TensorLayer 1.8.5 windows 10 i can run tensorlayer/srgan without any errors. how can i fix this please

JustinhoCHN commented 6 years ago

It seems your validation data set doesn't have enough images to index, are you using DIV2K data set?

ABDOELSHEMY commented 6 years ago

i use DIV2K data set DIV2K_valid_HR=100 png photo DIV2K_valid_LR_bicubic x4=100 png photo

for mor information please take look if i make anything in the bad way 1- i download SRGAN_Wasserstein project 2- i set my image folder in config.py 3- i download pretrained model for DIV2K 4- in SRGAN_Wasserstein project i make checkpoint folder and put the g_srgan.npz on it 5- i start evaluation with "python main.py --mode=evaluate" sorry for wasting your time

JustinhoCHN commented 6 years ago

Sorry my bad, DIV2K are png images, but in my earlier training, I changed my main.py to read jpg images, after that I forgot to change it back. I've already make it right, please git pull the repo. Thanks again.

ABDOELSHEMY commented 6 years ago

thank you very much for your support, the above error was gone now, then another one appear

PS D:\SRGAN Wasserstein> python main.py --mode=evaluate C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\h5py__init.py:36: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters [*] creates samples/evaluate ... read 32 from data2017/DIV2K_valid_LR_bicubic/X4/ read 64 from data2017/DIV2K_valid_LR_bicubic/X4/ read 96 from data2017/DIV2K_valid_LR_bicubic/X4/ read 100 from data2017/DIV2K_valid_LR_bicubic/X4/ read 32 from data2017/DIV2K_valid_HR/ read 64 from data2017/DIV2K_valid_HR/ read 96 from data2017/DIV2K_valid_HR/ read 100 from data2017/DIV2K_valid_HR/ [TL] InputLayer SRGAN_g/in: (?, 384, 510, 3) [TL] Conv2dLayer SRGAN_g/n64s1/c: shape:[9, 9, 3, 64] strides:[1, 1, 1, 1] pad:SAME act:relu [TL] Conv2dLayer SRGAN_g/n64s1/c1/0: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/0: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/0: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/0: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/0: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/1: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/1: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/1: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/1: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/1: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/2: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/2: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/2: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/2: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/2: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/3: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/3: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/3: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/3: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/3: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/4: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/4: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/4: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/4: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/4: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/5: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/5: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/5: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/5: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/5: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/6: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/6: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/6: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/6: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/6: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/7: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/7: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/7: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/7: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/7: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/8: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/8: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/8: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/8: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/8: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/9: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/9: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/9: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/9: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/9: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/10: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/10: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/10: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/10: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/10: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/11: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/11: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/11: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/11: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/11: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/12: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/12: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/12: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/12: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/12: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/13: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/13: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/13: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/13: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/13: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/14: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/14: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/14: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/14: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/14: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c1/15: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b1/15: decay:0.900000 epsilon:0.000010 act:relu is_train:False [TL] Conv2dLayer SRGAN_g/n64s1/c2/15: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b2/15: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/b_residual_add/15: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n64s1/c/m: shape:[3, 3, 64, 64] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] BatchNormLayer SRGAN_g/n64s1/b/m: decay:0.900000 epsilon:0.000010 act:identity is_train:False [TL] ElementwiseLayer SRGAN_g/add3: size:(?, 384, 510, 64) fn:add [TL] Conv2dLayer SRGAN_g/n256s1/1: shape:[3, 3, 64, 256] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] SubpixelConv2d SRGAN_g/pixelshufflerx2/1: scale: 2 n_out_channel: 64 act: relu [TL] Conv2dLayer SRGAN_g/n256s1/2: shape:[3, 3, 64, 256] strides:[1, 1, 1, 1] pad:SAME act:identity [TL] SubpixelConv2d SRGAN_g/pixelshufflerx2/2: scale: 2 n_out_channel: 64 act: relu [TL] Conv2dLayer SRGAN_g/out: shape:[9, 9, 64, 3] strides:[1, 1, 1, 1] pad:SAME act:tanh 2018-05-20 14:01:30.715172: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2 Traceback (most recent call last): File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 686, in _call_cpp_shape_fn_impl input_tensors_as_shapes, status) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 473, in exit__ c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.InvalidArgumentError: Dimension 0 in both shapes must be equal, but are 9 and 3 for 'Assign' (op: 'Assign') with input shapes: [9,9,3,64], [3,3,3,64].

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "main.py", line 351, in train() File "main.py", line 322, in evaluate sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)) File "D:\SRGAN Wasserstein\tensorlayer\files.py", line 723, in load_and_assign_npz assign_params(sess, params, network) File "D:\SRGAN Wasserstein\tensorlayer\files.py", line 692, in assign_params ops.append(network.all_params[idx].assign(param)) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\ops\variables.py", line 573, in assign return state_ops.assign(self._variable, value, use_locking=use_locking) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\ops\state_ops.py", line 276, in assign validate_shape=validate_shape) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\ops\gen_state_ops.py", line 56, in assign use_locking=use_locking, name=name) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper op_def=op_def) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2958, in create_op set_shapes_for_outputs(ret) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2209, in set_shapes_for_outputs shapes = shape_func(op) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2159, in call_with_requiring return call_cpp_shape_fn(op, require_shape_fn=True) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 627, in call_cpp_shape_fn require_shape_fn) File "C:\Users\ABDO\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 691, in _call_cpp_shape_fn_impl raise ValueError(err.message) ValueError: Dimension 0 in both shapes must be equal, but are 9 and 3 for 'Assign' (op: 'Assign') with input shapes: [9,9,3,64], [3,3,3,64].

sorry for that.

JustinhoCHN commented 6 years ago

Git pull again, fix some saving dirs error, mine works fine. You'll see this:

LR size: (384, 510, 3) /  generated HR size: (1, 1536, 2040, 3)
[*] save images
JustinhoCHN commented 6 years ago

Oh I konw what happened, you are using the original author's pretrained weights, his final layer's conv kernel of SRGAN_g (model.py line 53) is using 1×1 kernel, but I changed this kernel to 9×9, so you'll get this weights unequal error.

Two advice:

  1. Train the whole network from scratch, you'll get the 9×9 version weights, and then you can use the evaluate mode without any problem.
  2. You can just change the SRGAN_g 's final conv kernel (model.py line 53) to (1, 1) instead of (9, 9), and using the provided pretrained weights.
ABDOELSHEMY commented 6 years ago

great, you are amazing man, i will take the second advice, thank you @JustinhoCHN for your effort and time.

JustinhoCHN commented 6 years ago

You are welcome, you are helping debug this repo, thanks.

ABDOELSHEMY commented 6 years ago

works perfect now, i just forced to change ( line 24 ) also to (3, 3) instead of (9, 9), and every thing is ok, thank you.