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