基於keras平臺CNN神經網絡模型的服裝識別分析

原文連接:http://tecdat.cn/?p=8493

在許多介紹圖像識別任務的介紹中,一般使用着名的MNIST數據集。可是,這些數據存在一些問題:git

1.太簡單了。例如,一個簡單的MLP模型能夠達到99%的準確度,而一個2層CNN能夠達到99%的準確度。github

2.它被過分使用。從字面上看,每臺機器學習入門文章或圖像識別任務都將使用此數據集做爲基準。可是,由於得到近乎完美的分類結果很是容易,因此它的實用性會受到打折,而且對於現代機器學習/ AI任務並不真正有用。後端

所以,出現Fashion-MNIST數據集。該數據集是做爲MNIST數據的直接替代而開發的,其意義在於:網絡

1.尺寸和風格相同:28x28灰度圖像框架

2.每一個圖像與10個類中的1個相關聯,即:機器學習

       0:T恤/上衣,工具

       1:褲子,學習

       2:套頭衫,測試

       3:連衣裙,spa

       4 :外套,

       5:涼鞋,

       6:襯衫,

       7:運動鞋,

       8:揹包,

       9:腳靴

3. 60000訓練樣本和10000個測試樣本如下是一些樣本的快照:

自從它出現以來,已經有多份提交文件來對這些數據進行基準測試,其中一些可以達到95%以上的準確度 。 

我也試圖用keras來對這個數據進行基準測試。keras是構建深度學習模型的高級框架,在後端選擇TensorFlow,Theano和CNTK。它很容易安裝和使用。對於個人應用程序,我使用了CNTK後端。 

在這裏,我將以兩個模型爲基準。一種是層結構爲256-512-100-10的MLP,另外一種是類VGG的CNN。 

第一個模型在100個曆元後的測試數據上達到了[0.89,0.90]的精度,然後者達到了45個時期後的測試數據的精度> 0.94。 

咱們先用tSNE來看它。聽說tSNE是最有效的尺寸縮小工具。 

 我使用了1000個樣原本快速運行。若是您的PC速度足夠快而且有時間,則能夠針對完整數據集運行tSNE。 

咱們看到,包括質量大小,底部分裂和對稱性等幾個特徵將類別分開。 

爲了創建本身的網絡,咱們首先導入一些庫

該模型在大約100個時期的測試數據集上達到了近90%的準確度。如今,咱們來構建一個相似VGG的CNN模型。咱們使用相似於VGG的體系結構,但仍然很是不一樣。因爲圖形數據很小,若是咱們使用原始VGG體系結構,它極可能會過分配合,而且在測試數據時表現不佳,這些數據在上面列出的公開提交的基準測試中觀察到。在keras中構建這樣一個模型是很是天然和容易的:

這個模型有150萬個參數。咱們能夠調用'fit'方法來訓練模型:

model3_fit=model3.fit(X_train, Y_train2, validation_data = (X_test, Y_test2), epochs=50, verbose=1, batch_size=500)

通過40次之後,這個模型在測試數據上得到了0.94的精度。顯然,這個模型也存在過分擬合問題。咱們稍後會解決這個問題。

相關文章
相關標籤/搜索