SSD訓練資料tfrecords資料產生bug

2021-10-03 19:28:51 字數 912 閱讀 4706

訓練資料tfrecords產生的問題:

info:tensorflow:error reported to coordinator: , all bounding box coordinates must be in [0.0, 1.0]: 1.002
提供兩條解決思路:

首先,第乙個方法是可行的,就是比較麻煩,要找到原來的,刪除,重新製作成tfrecord格式。我寫了乙個簡單的指令碼,檢查之後發現,我使用的資料集(1w張)中有200+標記有問題,都是xmaxymax超出了邊界幾個畫素。

一些原因(嗯嗯嗯,主要是懶,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...