2017-09-14 25 views
2

這是從this Github issue開始的後續問題。長話短說,我試圖用我自己的數據集來使用Tensorflow Object檢測API。一切都工作得很好,直到突然它與以下錯誤消息墜毀:Tensorflow對象檢測API無效參數:元組中的形狀不匹配16.期望[1,?,?,3],得到[1,182,322,4]

... 
INFO:tensorflow:global step 10635: loss = 0.3392 (0.822 sec/step) 
INFO:tensorflow:global step 10636: loss = 0.3529 (0.823 sec/step) 
INFO:tensorflow:global step 10637: loss = 0.3305 (0.831 sec/step) 
2017-09-14 20:02:02.545415: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\framework\op_kernel.cc:1192] Invalid argument: Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,240,127,4] 
INFO:tensorflow:Error reported to Coordinator: <class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,240,127,4] 
     [[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[DT_STRING, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_BOOL, DT_INT32, DT_BOOL, DT_INT32, DT_FLOAT, DT_INT32, DT_STRING, DT_INT32, DT_STRING, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/padding_fifo_queue, Reshape_2, Shape_5, SparseToDense_1, Shape_2, Merge_1, Shape, Merge_2, Shape_3, SparseToDense_5, Shape_8, SparseToDense_3, Shape_6, Cast_1, Shape_1, Cast_2, Shape_7, ExpandDims_5, Shape_4, Reshape_5, Shape_10, Reshape_6, Shape_9)]] 
INFO:tensorflow:global step 10638: loss = 0.3599 (0.858 sec/step) 
INFO:tensorflow:Finished training! Saving model to disk. 
Traceback (most recent call last): 
    File "train.py", line 198, in <module> 
    tf.app.run() 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\platform\app.py", line 48, in run 
    _sys.exit(main(_sys.argv[:1] + flags_passthrough)) 
    File "train.py", line 194, in main 
    worker_job_name, is_chief, FLAGS.train_dir) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\trainer.py", line 296, in train 
    saver=saver) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\contrib\slim\python\slim\learning.py", line 767, in train 
    sv.stop(threads, close_summary_writer=True) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\supervisor.py", line 792, in stop 
    stop_grace_period_secs=self._stop_grace_secs) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\coordinator.py", line 389, in join 
    six.reraise(*self._exc_info_to_raise) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\six.py", line 686, in reraise 
    raise value 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\queue_runner_impl.py", line 238, in _run 
    enqueue_callable() 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\client\session.py", line 1235, in _single_operation_run 
    target_list_as_strings, status, None) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\Lib\contextlib.py", line 66, in __exit__ 
    next(self.gen) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,240,127,4] 
     [[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[DT_STRING, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_BOOL, DT_INT32, DT_BOOL, DT_INT32, DT_FLOAT, DT_INT32, DT_STRING, DT_INT32, DT_STRING, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/padding_fifo_queue, Reshape_2, Shape_5, SparseToDense_1, Shape_2, Merge_1, Shape, Merge_2, Shape_3, SparseToDense_5, Shape_8, SparseToDense_3, Shape_6, Cast_1, Shape_1, Cast_2, Shape_7, ExpandDims_5, Shape_4, Reshape_5, Shape_10, Reshape_6, Shape_9)]] 

G:\Tensorflow_section\models-master\object_detection> 

起初我想,也許有在我的數據集的一些inconsistend圖像,即有保存爲JPG格式,反之亦然一些PNG圖片,所以我去掃描數據集中的所有圖像並修復它們。我用下面的方法了這樣的任務:

private string CheckImagetype(Stream stream) 
{ 
    string jpg = "FFD8"; 
    string bmp = "424D" ; 
    string gif = "474946" ; 
    string png = "89504E470D0A1A0A" ; 
    string sig = ""; 

    stream.Seek(0, SeekOrigin.Begin); 
    for (int i = 0; i < 8; i++) 
    { 
     sig += stream.ReadByte().ToString("X2"); 
     if (sig.Length == 4 && sig == jpg) 
     { 
      sig = "jpg"; 
      break; 
     } 
     else if(sig.Length == 4 && sig == bmp) 
     { 
      sig = "bmp"; 
      break; 
     } 
     else if (sig.Length == 6 && sig == gif) 
     { 
      sig = "gif"; 
      break; 
     } 
     else if (sig.Length == 16 && sig == png) 
     { 
      sig = "png"; 
      break; 
     } 
    } 
    return sig; 
} 

然後我用EmguCV檢索圖像渠道深度/數量,以避免錯誤的深度上升的任何進一步的問題!然後註釋圖像abd再次創建新的TFRecord,然後開始新的培訓課程。

這是我再次得到了:

INFO:tensorflow:global step 1286: loss = 0.3639 (0.721 sec/step) 
INFO:tensorflow:global step 1287: loss = 0.3752 (0.735 sec/step) 
INFO:tensorflow:global step 1288: loss = 0.5850 (0.720 sec/step) 
2017-09-16 00:11:15.037646: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\framework\op_kernel.cc:1192] Invalid argument: Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,150,178,4] 
INFO:tensorflow:Error reported to Coordinator: <class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,150,178,4] 
     [[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[DT_STRING, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_BOOL, DT_INT32, DT_BOOL, DT_INT32, DT_FLOAT, DT_INT32, DT_STRING, DT_INT32, DT_STRING, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/padding_fifo_queue, Reshape_2, Shape, SparseToDense, Shape_1, Merge_1, Shape_10, Merge_2, Shape_2, SparseToDense_5, Shape_8, SparseToDense_2, Shape_7, Cast_1, Shape_6, Cast_2, Shape_4, ExpandDims_5, Shape_3, Reshape_5, Shape_5, Reshape_6, Shape_9)]] 
INFO:tensorflow:global step 1289: loss = 0.4018 (0.781 sec/step) 
INFO:tensorflow:Finished training! Saving model to disk. 
Traceback (most recent call last): 
    File "train.py", line 198, in <module> 
    tf.app.run() 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\platform\app.py", line 48, in run 
    _sys.exit(main(_sys.argv[:1] + flags_passthrough)) 
    File "train.py", line 194, in main 
    worker_job_name, is_chief, FLAGS.train_dir) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\trainer.py", line 296, in train 
    saver=saver) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\contrib\slim\python\slim\learning.py", line 767, in train 
    sv.stop(threads, close_summary_writer=True) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\supervisor.py", line 792, in stop 
    stop_grace_period_secs=self._stop_grace_secs) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\coordinator.py", line 389, in join 
    six.reraise(*self._exc_info_to_raise) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\six.py", line 686, in reraise 
    raise value 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\queue_runner_impl.py", line 238, in _run 
    enqueue_callable() 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\client\session.py", line 1235, in _single_operation_run 
    target_list_as_strings, status, None) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\Lib\contextlib.py", line 66, in __exit__ 
    next(self.gen) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,150,178,4] 
     [[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[DT_STRING, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_BOOL, DT_INT32, DT_BOOL, DT_INT32, DT_FLOAT, DT_INT32, DT_STRING, DT_INT32, DT_STRING, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/padding_fifo_queue, Reshape_2, Shape, SparseToDense, Shape_1, Merge_1, Shape_10, Merge_2, Shape_2, SparseToDense_5, Shape_8, SparseToDense_2, Shape_7, Cast_1, Shape_6, Cast_2, Shape_4, ExpandDims_5, Shape_3, Reshape_5, Shape_5, Reshape_6, Shape_9)]] 

G:\Tensorflow_section\models-master\object_detection> 

我用我的圖片的隨機子集(10K的圖像,而不是300K),再次得到了同樣的錯誤:

INFO:tensorflow:global step 2316: loss = 0.6428 (2.192 sec/step) 
INFO:tensorflow:Recording summary at step 2316. 
INFO:tensorflow:global step 2317: loss = 0.4036 (1.444 sec/step) 
INFO:tensorflow:global step 2318: loss = 0.4111 (1.343 sec/step) 
INFO:tensorflow:global step 2319: loss = 0.3914 (1.351 sec/step) 
INFO:tensorflow:global step 2320: loss = 0.3794 (1.376 sec/step) 
INFO:tensorflow:global step 2321: loss = 0.4056 (1.340 sec/step) 
2017-09-16 20:03:42.148318: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\framework\op_kernel.cc:1192] Invalid argument: Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,182,322,4] 
INFO:tensorflow:Error reported to Coordinator: <class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,182,322,4] 
     [[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[DT_STRING, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_BOOL, DT_INT32, DT_BOOL, DT_INT32, DT_FLOAT, DT_INT32, DT_STRING, DT_INT32, DT_STRING, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/padding_fifo_queue, Reshape_2, Shape_1, SparseToDense_2, Shape_7, Merge_1, Shape_2, Merge_2, Shape_8, SparseToDense, Shape_6, SparseToDense_5, Shape_10, Cast_1, Shape_4, Cast_2, Shape_9, ExpandDims_5, Shape_5, Reshape_5, Shape, Reshape_6, Shape_3)]] 
INFO:tensorflow:global step 2322: loss = 0.4787 (1.391 sec/step) 
INFO:tensorflow:Finished training! Saving model to disk. 
Traceback (most recent call last): 
    File "train.py", line 198, in <module> 
    tf.app.run() 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\platform\app.py", line 48, in run 
    _sys.exit(main(_sys.argv[:1] + flags_passthrough)) 
    File "train.py", line 194, in main 
    worker_job_name, is_chief, FLAGS.train_dir) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\trainer.py", line 296, in train 
    saver=saver) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\contrib\slim\python\slim\learning.py", line 767, in train 
    sv.stop(threads, close_summary_writer=True) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\supervisor.py", line 792, in stop 
    stop_grace_period_secs=self._stop_grace_secs) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\coordinator.py", line 389, in join 
    six.reraise(*self._exc_info_to_raise) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\six.py", line 686, in reraise 
    raise value 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\training\queue_runner_impl.py", line 238, in _run 
    enqueue_callable() 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\client\session.py", line 1235, in _single_operation_run 
    target_list_as_strings, status, None) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\Lib\contextlib.py", line 66, in __exit__ 
    next(self.gen) 
    File "C:\Users\Master\Anaconda3\envs\anaconda35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape mismatch in tuple component 16. Expected [1,?,?,3], got [1,182,322,4] 
     [[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[DT_STRING, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_INT64, DT_INT32, DT_BOOL, DT_INT32, DT_BOOL, DT_INT32, DT_FLOAT, DT_INT32, DT_STRING, DT_INT32, DT_STRING, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/padding_fifo_queue, Reshape_2, Shape_1, SparseToDense_2, Shape_7, Merge_1, Shape_2, Merge_2, Shape_8, SparseToDense, Shape_6, SparseToDense_5, Shape_10, Cast_1, Shape_4, Cast_2, Shape_9, ExpandDims_5, Shape_5, Reshape_5, Shape, Reshape_6, Shape_3)]] 

G:\Tensorflow_section\models-master\object_detection> 

美中不足的是,我的數據集中沒有任何圖像,並且在錯誤消息中包含報告的圖形。

下面是一些補充信息:

  • OS平臺和分佈:Windows 10 x64 1703, Build 15063.540
  • TensorFlow從(源或二進制)安裝:binary (used pip install)
  • TensorFlow版本(下面使用命令):1.3.0
  • Python版本:3.5.3
  • CUDA/cuDNN版本:Cuda 8.0 /cudnn v6.0
  • GPU型號和內存:GTX-1080 - 8G

回答

3

TL; DR:只有
使用JPEG格式。

更詳細的解釋:
似乎在創造TFRecords,只有JPEG圖像的支持和無處文檔中,這是指示!

此外,當您嘗試使用其他類型時,它不會發出任何警告或不會拋出任何異常,因此像我這樣的人會花費大量的時間調試可能很容易被發現並固定在第一位的東西。無論如何,將所有圖像轉換爲JPEG解決了這個奇怪的問題。

相關問題