訓練資料tfrecords產生的問題:
info:tensorflow:error reported to coordinator: , all bounding box coordinates must be in [0.0, 1.0]: 1.002
提供兩條解決思路:
首先,第乙個方法是可行的,就是比較麻煩,要找到原來的,刪除,重新製作成tfrecord
格式。我寫了乙個簡單的指令碼,檢查之後發現,我使用的資料集(1w張)中有200+標記有問題,都是xmax
或ymax
超出了邊界幾個畫素。
一些原因(嗯嗯嗯,主要是懶,2333),我不想再製作一遍資料集。決定找個相對優雅的方法解決這個問題。於是就有了第二個方案:
float(xmin) / shape[1],
float(ymax) / shape[0],
float(xmax) / shape[1],))
追蹤tf_convert_data.py
,發現主要使用datasets/pascalvoc_to_tfrecords.py
執行資料格式轉化工作。找到114-119行:
max(float(xmin) / shape[1], 0.0),
min(float(ymax) / shape[0], 1.0),
min(float(xmax) / shape[1], 1.0)))
修改為:
然後使用命令,重新將資料集製作成tfrecords
格式,問題便解決了。
這樣做是合理的,理由如下:
標記員將座標標記錯誤,跳出了影象範圍,這時候識別目標應該就在影象邊緣,所以選取影象邊界作為目標的邊界是合理的。
尊重原創:
SSD講堂五 訓練 SSD 訓練自己的資料集
我的批註一 方案三在實際執行中遇到了一些問題 第一 我的指令碼反斜槓 變成了紅色報錯,直接貼上博主的指令碼儲存為train.sh檔案,用bash train.sh的方式執行是不行的,暫時還沒找到原因。補充一下博主的指令碼裡面沒有寫dataset set和train dir的路徑。問題已經解決 把注釋...
《2020 02 12》tfrecord讀寫資料
僅供自己學習使用 tensorflow通過tfrecord高效讀寫資料 利用tensorflow提供的tfrecord資料儲存格式工具,我們可以將我們已經進行過處理的資料儲存起來,以便我們下次更高效地讀取,略過資料處理的過程,提高效率。具體的步驟大概分為以下幾步 將資料轉化為tf.train.fea...
SSD訓練自己的資料集(一) 製作VOC資料集
import os path 123 filelist os.listdir path 該資料夾下所有的檔案 包括資料夾 count 0 for file in filelist print file for file in filelist 遍歷所有檔案 olddir os.path.join p...