2017-08-19 67 views
0

我有圖像和標籤,如這些(目前在大熊貓Dataframe機與遠程圖像數據集學習(URL列表)

tag_cat tag_dog tag_house tag_person url 
-------------------------------------------------------------------------- 
True  True  False  False  http://example.com/...JPG 
False  False  False  True   http://example.com/...JPG 

的列表,這意味着在第一圖像中有1A中貓和一隻狗。圖像未經過預處理。

如何繼續?我應該下載所有圖像,預處理它們並在本地存儲?我寧願避免它,我寧願下載一些圖像,對它們進行預處理並將它們饋送給優化。作爲替代方案,我更喜歡使用磁盤緩存的混合平臺:下載少量圖像,對它們進行預處理,將它們提供給優化,並將圖像保存到磁盤,這樣如果我重新運行,我不需要重新下載圖片。

有什麼可以幫助我嗎?

回答

1

當您訓練機器學習模型時,您通常會訓練模型幾個週期(時代)的數據。換句話說,你必須將所有的數據顯示給你的算法幾次(數百到數百)。 從這個角度來看,反覆下載圖片效率不高。

另外重要的一點是,採取原始圖像的像素的機型,通常需要大量的資源,而且爲了避免瓶頸,並利用你的計算資源,你想以最快的速度,你可以喂數據你的機器。爲每個批次下載圖像,聽起來效率很低。

儘管我認爲效率不高,但如果您仍希望在培訓期間從網上獲取圖像,您可以編寫一個自定義python生成器以從URL中獲取圖像,然後在keras中訓練模型fit_generator()方法,其中

適合Python生成器逐批生成的數據模型。

我可以建議的另一種方法是,您可以提取一次圖像特徵(使用已經過訓練的CNN),將它們保存在本地文件系統中,然後訓練一個更簡單的模型。通常這些功能的空間佔用空間非常小(例如每個圖像2048個float32數組),因此您甚至可以將它們存儲在您的熊貓數據框中。 看here下「特徵提取與VGG16」對於如何提取圖像的例子功能

WRT混合高速緩存方法,它可能是可行的,但我不知道的是,機器學習社區是你應該詢問。但是無論如何,機器學習本身就有足夠的複雜性,所以將精力集中在算法和模型上可能會更好,而不是智能的可緩衝軟件管道