you probably won't like my answer, but, it is almost 2018 now:
you should use transfer learning with a pretrained dnn, like the facenet one.
(believe me, i have been, where you are now, and i probably have seen it all, from lbp variants to rootsift to gabor filters, fishervectors, learned lpqdisc, CDIKP, to whatnot.)
and it would be fairly easy, too !
download https://raw.githubusercontent.com/pya...
(~30mb, but you won't regret it, i promise !)
#include <opencv2/dnn.hpp>
dnn::Net net = dnn::readNetFromTorch("openface.nn4.small2.v1.t7");
Mat process(const Mat &image)
{
Mat inputBlob = dnn::blobFromImage(image, 1./255, Size(96,96), Scalar(), true, false);
net.setInput(inputBlob);
return net.forward();
}
then just feed (color!) images into it, and use those resulting (1 x 128 float) features, to train any ml of your choice.
(you'll want some proper cropping(cascadeclassifier) and face-alignment (so the eyes are on a horizontal line) before that)
in the end, it's just a giant, "fixed function feature processor".
( added a complete example here )
you can test it in your web browser tutorial_dnn_javascript
3.0.0 is quite old. really, update to latest 3.4, so you can use more advanced features, like e.g. BIF.
there is also a pretrained FaceNet available in the dnn module, that can be used for transfer-learning (with your own data)
besides that, what kind of problem are you trying to solve here ? identification (closest from adb), authentification(is that me?), verification (are those 2 persons the same ?) ? please clarify.
also, have a look here
may be you can read bibliography given in this tutorial
Berak.I said I want to create my own recogniser using ML and face features.I have visual studio 2012 .opencv 3.4 might be incompitable
you just have to build it from src, see answer here
also, you answered none of my questions.