近日,在使用CascadeRCNN完成目標檢測任務時,我在使用這個模型訓練自己的數據集時出現了如下錯誤:
tensorflow.python.framework.errors_impl.OutOfRangeError: PaddingFIFOQueue '_1_get_batch/batch/padding_fifo_queue' is closed and has insufficient elements (requested 1, current size 0)
[[node get_batch/batch (defined at ../data/io/read_tfrecord.py:98) ]]
具體如下截圖所示:
我使用的教程是這個鏈接:cascade r-cnn訓練和測試(tensorflow框架)
在出現這個錯誤的時候,以為是數據集的錯誤,在經過多次檢查數據,並且刪掉運行報錯的圖片等嘗試多次無果后,最終選擇重新制作數據才解決掉這個錯誤。注意,訓練所使用的數據集在FasterRCNN模型是能夠訓練起來的。
事后回想,可能有兩個地方導致出現這個錯誤。
1、作者的教程里面有段標紅的文字當時我選擇忽略了。
我當時我根本沒有做過這步,我以為VOC格式里面數據集已經划分好測試集和訓練集了,所以就沒有管這個步驟了,后來證明代碼作者根本沒有管VOC里面的txt文件。所以我覺得這個錯誤可能也是引發這個錯誤的原因。
2、在經過重新制作數據集沒有出現這個錯誤后,后面又出現了這個錯誤,這次又仔細檢查了數據集,發現在制作VOC2007數據集的時候,圖片名字竟然有中文(巨坑),導致制作出來的txt亂碼了,然后我在重新制作數據集的過程中,指定了encoding=’utf-8’編碼,然后再把數據丟進模型去訓練,最終解決了這個錯誤。
3、一月十七日更新
這次又遇到了這個錯誤,上面兩個解決辦法都沒能解決這個問題,這次推測有可能是圖片名稱太復雜導致的原因,因為圖片名稱包含各種奇怪的符號,於是這次選擇了重命名圖片和刪除一些報錯位置周圍的圖片來解決這個問題。最終成功解決。
現在也不能肯定出現這個錯誤到底是什么原因,不過我上面的兩個解決方案是能夠解決這個問題的,而我在網上查找到的資料大部分也是數據集的原因。后期如果再出現這個錯誤但是有了不同的解決方法的時候,我會更新這篇博客的。