2017-10-07 52 views
0

我建立一個模型來檢測的身體部位的關鍵點。爲此,我使用COCO數據集(http://cocodataset.org/#download)。我試圖理解爲什麼我會遇到過度勞累的問題(訓練損失趨於一致,但爲了測試損失,我真的達到了上限)。在模型中,我已經嘗試添加差(逐漸更高的概率增加更多層的多層,但我很快得到一個點時,訓練停止損失減少是一樣糟糕。我的理論是,該模型我用ISN」 T個復不夠好,但我想知道這是可能的原因,或者它可能是別的東西。我在網上找到的所有型號都非常深(30+層)。關鍵點模型過擬合問題(檢測腕,肘,肩等)

數據

我使用萬個RGB圖像各自有一個人在裏面。他們每個人都有不同的大小,但640的長度和寬度的最大值。作爲預處理步驟,我盡一切圖像大小640x640填充任何額外的面積(底部和(0,0,0)或黑色。

目標

完整的數據集有許多關鍵點,但我只是在右肩,右肘,右手腕有興趣。每個身體部位有2個關鍵點(X座標和Y座標),所以我的目標是長度爲6

型號

activation_function = 'relu' 
batch_size = 16 # ## 
epoch_count = 40 # ## 
loss_function = 'mean_squared_error' 
opt = 'adam' 

model = Sequential() 
model.add(Conv2D(filters=16, kernel_size=(3, 3), input_shape=inp_shape)) 
# model.add(Conv2D(filters=16, kernel_size=(3, 3))) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Conv2D(filters=32, kernel_size=(3, 3))) 
# model.add(Conv2D(filters=32, kernel_size=(3, 3))) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Flatten()) 
model.add(Dense(300, activation=activation_function)) 
model.add(Dropout(rate=0.1)) 
model.add(Dense(300, activation=activation_function)) 
model.add(Dense(num_targets)) 
model.summary() 
model.compile(loss=loss_function, optimizer=opt) 
hist = model.fit(x_train, y_train, batch_size=batch_size, epochs=epoch_count, 
       verbose=verbose_level, 
       validation_data=(x_valid, y_valid)) 

回答

0

你的理論

我用ISN模型的列表足夠複雜

這是一個很好的理論,模型很簡單,並且我們不知道究竟有多少過度擬合是你遭受的,過度擬合似乎可能是因爲模型的複雜性。

在這個模型中,我已經嘗試添加輟學的層

可能是製作模型稍微複雜一點的一個簡單而有效的方法,但此外,我倒是增加輟學率。看來你有0.1輟學,嘗試0.5例如,如果過度擬合比較下降。

無論如何,我認爲你可以試試,最好是遞增模型的複雜,但在卷積部分,不只是增加拼合後密集層。如果對您來說看起來很困難,我建議您爲圖像識別的卷積神經網絡尋找一些預先構建的通用體系結構,或者爲您的類似問題尋找更具體的構建體系。

告訴我們是怎麼回事!

0

除了已經在回答說:

  • 你可以有幾個Dropout層提供不同的概率,例如在合併層之後。早期層次通常具有更高的保持概率,因爲他們使用更少的過濾器
  • Image data augmentation是對泛化的另一種方式,並在我的經驗,一定能提高的結果,至少輕微(當然,前提是輸入變換並不嚴重)。
  • Batch normalization(及其後繼者,weight normalizationlayer normalization)是一種現代正則化方法,可以降低所需的失落強度,有時甚至可以完全消除,即可以消除丟失層。此外,batchnorm提高激活統計,這往往使網絡學習得更快。我用它除了輟學,它工作得很好。
  • 稱爲縮放指數線性單位(SELU)的技術已被稱爲published very recently,據稱其具有隱式自標準化屬性。它甚至在keras的already implemented
  • 好的舊L2或L1調整器仍在使用中。如果沒有其他幫助,請考慮添加它。但我很確定蝙蝠蛾,se and和幾個輟學層就足夠了。