rishizek/tensorflow-deeplab-v3

Image preprocessing is INCONSISTENT at train and evaluate stage causes InvalidArgumentError

ytliang97 opened this issue · 0 comments

Hi, first thanks for getting this done.

Recently I encountered following problem when I try to run evaluate.py:


tensorflow.python.framework.errors_impl.InvalidArgumentError: Number of ways to split should evenly divide the split dimension, but got split_dim 2 (size = 1) and num_split 3



I've noticed that the preprocessing codes in train.py use tf.reshape()before decoding images :
use tf.reshape() can convert image from grayscale to rgb.

image = tf.image.decode_image(
tf.reshape(parsed['image/encoded'], shape=[]), _DEPTH)

label = tf.image.decode_image(
tf.reshape(parsed['label/encoded'], shape=[]), 1)



but in evaluate.py, the preprocessing codes didn't use tf.reshape() :

image = tf.image.decode_image(image_string)

label = tf.image.decode_image(label_string)



This will raise error if there is a grayscale image in dataset. So I edit code like this:

image = tf.image.decode_image( tf.reshape(image_string, shape=[]), 3 )

label = tf.image.decode_image( tf.reshape(label_string, shape=[]), 1 )

It works!