Example of a Neural Network for face detection:
def seattle_model( input_width = 32, input_height = 32, feature_maps = 32, feature_window_size = (5,5), dropout1 = 0.2, dense = 128, dropout2 = 0.5, use_max_pooling = True, pool_size = (2,2), optimizer = 'rmsprop' ):
model = Sequential()
# - 20 feature maps (each feature map is a reduced-size convolution that detects a different feature)
# - 3 pixel square window
model.add(Conv2D(feature_maps,
feature_window_size,
input_shape=(input_width,input_height,6),
padding='same',
data_format='channels_last',
activation='relu'))
# - 40 feature maps (add more features)
# - 3 pixel square window
model.add(Conv2D(feature_maps,
feature_window_size,
padding='same',
data_format='channels_last',
activation='relu'))
# Pooling layer
if(use_max_pooling):
model.add(MaxPooling2D(pool_size=pool_size,
data_format='channels_last'))
else:
model.add(AveragePooling2D(pool_size=pool_size,
data_format='channels_last'))
model.add(Dropout(0.2))
model.add(Flatten())
model.add( Dense(128,
activation='relu',
kernel_constraint=maxnorm(3)))
# Dropout set to 50%.
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile( loss='binary_crossentropy',
metrics=['binary_accuracy'],
optimizer='rmsprop')
return model