Registration of facial features is a significant step towards a complete solution of the face recognition problem. We have built a general framework for detecting a set of individual facial features such as eyes, nose and lips using a bottom-up approach. A joint model of discriminative and generative learners is employed providing unprecedented results in terms of both detection rate and false positives rate. An Adaboost cascade learner is used to find candidates for facial features and a graphical model selects the most likely combination of features based on their individual likelihoods as well as relative positions and infers the missing components. We show good detection results on different large image datasets under challenging imaging conditions.