2016-05-14 37 views
0

對於我正在構建的Deep Learning應用程序,我有一個包含約300 * 2k到300 * 10k像素的約50k灰度圖像的數據集。將所有這些數據加載到內存中是不可能的,所以我正在尋找一種處理隨機批量數據的正確方法。與此相關的一個額外的複雜情況是,我需要在構建Deep Learning模型之前知道每個圖像的寬度,以便在數據中定義不同的大小桶(例如:[2k-4k,4k-6k,6k-8k,8k -10k。加載大量圖像數據的正確方法

目前,我正與一個較小的數據集工作,只是從PNG文件加載每個圖像,按大小水桶他們,並開始學習。當我想擴大規模,這是不再可能。

爲了訓練模型,每批數據應該(隨機桶)完全隨機(理想情況下)。一種天真的做法是預先保存圖像的大小,並在需要時加載每個隨機批次。但是,這會導致大量額外的數據加載以及不太高效的內存管理。

有沒有人有建議如何有效地處理這個問題?

乾杯!

+0

您是否找到解決您的問題的方法?如果是,請分享。 –

回答

0

爲什麼不添加預處理步驟,您可以(a)將圖像物理移動到與存儲桶關聯的文件夾和/或重命名它們,或者(b)首先掃描所有圖像(僅標頭) - 圖像文件名及其大小/桶的存儲表,然後隨機採樣步驟將非常容易實現。

+0

我會嘗試這一開始,我有點害怕,如果我不得不在每次傳遞之間加載一批圖像,它會減慢學習速度。 – evdwel

+0

你只需要加載圖像頭文件就可以獲得尺寸,元代碼 – aldanor

+0

當然,預處理不是問題。我的意思是每次通過網絡之間加載64個圖像(例如,批量大小爲64)可能會使整個過程減慢很多。 – evdwel