2017-10-07 54 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和几个辍学层就足够了。