tensorflow,InvalidArgumentError:image_size必须包含3个元素[4]

时间:2018-02-09 08:34:20

标签: tensorflow element image-size invalid-argument

错误:

INFO:tensorflow:Error reported to Coordinator: <class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, image_size must contain 3 elements[4]
[[Node: distort_image/distorted_bounding_box_crop/sample_distorted_bounding_box/SampleDistortedBoundingBoxV2 = SampleDistortedBoundingBoxV2[T=DT_INT32, area_range=[0.05, 1], aspect_ratio_range=[0.75, 1.33], max_attempts=100, seed=0, seed2=0, use_image_if_no_bounding_boxes=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](distort_image/distorted_bounding_box_crop/Shape, distort_image/Const, distort_image/distorted_bounding_box_crop/sample_distorted_bounding_box/SampleDistortedBoundingBoxV2/min_object_covered)]]
INFO:tensorflow:Finished training! Saving model to disk.
INFO:tensorflow:Recording summary at step 1300607.
Traceback (most recent call last):
File "train_image_classifier.py", line 615, in 
tf.app.run()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "train_image_classifier.py", line 611, in main
session_config=sess_config)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/slim/python/slim/learning.py", line 775, in train
sv.stop(threads, close_summary_writer=True)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/supervisor.py", line 792, in stop
stop_grace_period_secs=self._stop_grace_secs)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/coordinator.py", line 389, in join
six.reraise(*self._exc_info_to_raise)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/queue_runner_impl.py", line 238, in _run
enqueue_callable()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1231, in _single_operation_run
target_list_as_strings, status, None)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/errors_impl.py", line 473, in exit
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: image_size must contain 3 elements[4]
[[Node: distort_image/distorted_bounding_box_crop/sample_distorted_bounding_box/SampleDistortedBoundingBoxV2 = SampleDistortedBoundingBoxV2[T=DT_INT32, area_range=[0.05, 1], aspect_ratio_range=[0.75, 1.33], max_attempts=100, seed=0, seed2=0, use_image_if_no_bounding_boxes=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](distort_image/distorted_bounding_box_crop/Shape, distort_image/Const, distort_image/distorted_bounding_box_crop/sample_distorted_bounding_box/SampleDistortedBoundingBoxV2/min_object_covered)]]

一个非常奇怪的问题,当训练模型时,由函数tf.image.sample_distorted_bounding_box()

引起
  

InvalidArgumentError:image_size必须包含3个元素[4]   有时可以重新开始训练,但有时候总是错误的。

我不知道如何解决它。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

晚点参加聚会,出现相同的错误,并且在此之前有一个警告,确切地表明张量有4个维度,而不是3个。解决了这个问题,您必须将SRGB转换为JPG并删除BG。

这里有一个脚本可以做到这一点。由tensorflow issue

提供
from PIL import Image     
import os       
path = 'SET YOUR PATH' # Source Folder 
for file in os.listdir(path):      
        extension = file.split('.')[-1]
        if extension == 'jpg':
            fileLoc = path+file
            img = Image.open(fileLoc)
            if img.mode != 'RGB':
                print(file+', '+img.mode)
                new = Image.new("RGB", img.size, (255, 255, 255))
                new.paste(img,None)
                new.save(file, 'JPEG', quality=100)